페이징(Paging)
배경
- 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법이다. 외부 단편화와 압축 작업을 해소 하기 위해 생긴 방법이다.
개념
- 고정크기 할당과 비슷하지만, 나눠진 물리 메모리는 고정 크기의 Frame 이라는 블럭 단위로 분리되며, 논리 메모리(프로세스가 점유하는)는 페이지라 불리는 고정 크기의 블록으로 분리된다.
특징
- 하나의 프로세스가 여러개의 프레임을 할당받을 수 있습니다.
- 운영체제는 프로세스의 메모리 접근을 관리하기 위해 프레임을 직접적으로 사용하지 않고
페이지
라는 논리적인 블럭을 사용합니다.
- 둘은 1:1로 대응되는 개념이므로
프레임과 페이지의 단위 크기는 같아야 함
에 주의해주세요.
장점
- 외부 단편화를 해결
- 페이징 기법을 사용함으로써 하나의 프로세스가 사용하는 공간은 여러개의 페이지로 나뉘어서 논리 메모리에서 관리되고 개별 페이지는 순서에 상관없이 물리 메모리에 있는 남는 프레임에 적절히 mapping 되어 저장된다.
단점
- 내부 단편화 문제의 비중이 늘어나게 된다.
- 예를 들어 페이지 크기가 1,024B 이고 프로세스 A 가 3,172B 의 메모리를 요구한다면 3 개의 페이지 프레임(1,024 * 3 = 3,072) 하고도 100B 가 남기때문에 총 4 개의 페이지 프레임이 필요한 것이다. 결론적으로 4 번째 페이지 프레임에는 924B(1,024 - 100)의 여유 공간이 남게 되는 내부 단편화 문제가 발생하는 것이다.
작동 예시
위 그림과 같이 프로세스 P1은 5개의 페이지로 나눌 수 있다. 이를 메인 메모리 5곳에 나눠서 할당하였다. 프로세스를 정상적으로 사용하기 위해 CPU는 논리 주소로 프로그램이 설정한대로 연속적인 주소값으로 명령을 내리고, 이를 위해 메모리로 가기전에 각 페이지의 실제 메모리 주소가 저장되어 있는 페이지 테이블에서, MMU의 재배치 레지스터를 여러개 사용해서 위의 그림과 같이 각 페이지의 실제 물리 주소로 변경되어야 한다.
페이지 테이블
페이지는 페이지 테이블
을 통해 자신이 어느 프레임을 가르키고 있는지 알아낼 수 있습니다.