Search

페이징

class
운영체제
상태
완료
날짜
목차

페이징

페이징은 가상 주소를 일정한 크기의 페이지로 나누고, 각 페이지를 물리적 메모리의 프레임에 매핑하는 기법입니다.

페이징 작동 방식

페이징에서는 가상 주소 공간을 고정 크기의 페이지로 분할합니다.
각 페이지는 물리적 메모리(RAM)의 프레임에 매핑되며, 페이지 테이블은 가상 주소와 물리적 주소 간의 매핑 정보를 관리합니다.
페이지와 프레임
페이지는 가상 주소 공간의 고정된 크기 단위이며, 프레임은 물리적 메모리에서 페이지가 저장되는 단위입니다. 페이지와 프레임의 크기는 일반적으로 4KB, 8KB, 16KB 등으로 고정되어 있습니다.
예를 들어, 16KB 크기의 가상 주소 공간이 있다고 가정하면, 이 공간은 4KB 크기의 4개의 페이지로 나눌 수 있습니다. 각 페이지는 물리적 메모리의 특정 프레임에 매핑됩니다.
페이지 테이블
페이지 테이블은 각 페이지의 물리적 위치를 추적하는 역할을 합니다. 페이지 테이블은 페이지 번호와 프레임 번호의 매핑 정보를 포함하며, 이를 통해 가상 주소를 물리적 주소로 변환합니다.
예를 들어, 페이지 번호 2가 물리적 메모리의 프레임 5에 매핑되었다고 가정합니다. 페이지 테이블은 이 매핑 정보를 저장하고, 가상 주소를 물리적 주소로 변환할 때 사용됩니다.
주소 변환
가상 주소 0x1234를 예시로 들어보겠습니다. 4KB 크기의 페이지를 사용하는 시스템에서는, 상위 비트를 사용하여 페이지 번호를 결정하고, 나머지 비트로 오프셋을 계산합니다.
페이지 번호를 통해 페이지 테이블에서 프레임 번호를 찾습니다. 예를 들어, 페이지 번호 2가 프레임 5에 매핑되어 있으면, 물리적 주소는 프레임 5의 시작 주소에 오프셋을 더하여 계산됩니다.

페이징 장단점

페이징의 장점

외부 단편화가 적음
페이징은 고정된 크기의 페이지와 프레임을 사용하므로, 외부 단편화가 적습니다. 이는 세그먼테이션에서 발생할 수 있는 메모리 공간의 비효율적인 사용을 방지합니다.

페이징의 단점

내부 단편화
페이징에서는 페이지와 프레임의 크기가 고정되어 있습니다. 따라서 프로세스에 필요한 메모리 크기가 페이지 크기보다 작거나 정확히 일치하지 않을 때, 내부 단편화가 발생할 수 있습니다. 이는 메모리 공간의 낭비로 이어질 수 있습니다.

페이징 실제 예시

페이징 테이블(Page Table) 예시

페이지 번호
프레임 번호
크기
상태
0
5
4KB
사용
1
3
4KB
사용
2
8
4KB
사용
3
-
4KB
디스크
페이지 번호 0 은 물리적 메모리의 프레임 5에 매핑되어 있으며, 크기는 4KB입니다. 상태는 "사용" 중입니다.
페이지 번호 1 은 프레임 3에 매핑되어 있고, 역시 4KB 크기입니다. 상태는 "사용" 중입니다.
페이지 번호 2 는 프레임 8에 매핑되어 있고, 크기는 4KB입니다.
페이지 번호 3 은 디스크에 저장되어 있어, 프레임에 매핑되지 않았습니다. 이는 해당 페이지가 현재 메모리에 없음을 의미하며, 접근 시 페이지 폴트가 발생할 수 있습니다.

주소 변환 과정

페이징에서는 가상 주소를 페이지 번호와 페이지 내의 오프로 분할하고, 이를 통해 물리적 주소로 변환합니다. 가상 주소 0x1234에 대해 페이징 테이블을 사용하여 물리적 주소를 계산하는 과정을 살펴보겠습니다.
1.
페이지 번호 추출
4KB 크기의 페이지를 사용하는 시스템에서, 가상 주소의 상위 비트를 사용하여 페이지 번호를 결정합니다. 예를 들어, 가상 주소 0x1234의 상위 비트를 통해 페이지 번호를 결정합니다.
페이지 번호는 1로 결정되었다고 가정합니다.
2.
페이지 테이블 조회
페이지 번호 1에 대한 정보를 페이지 테이블에서 조회합니다. 프레임 번호는 3으로 확인됩니다.
3.
오프셋 계산
가상 주소의 하위 비트를 사용하여 페이지 내의 오프셋을 계산합니다. 0x1234에서 페이지 내 오프셋은 0x234(십진수 564)입니다.
4.
물리적 주소 계산:
프레임 번호 3의 시작 주소에 오프셋을 더하여 물리적 주소를 계산합니다. 프레임 3의 시작 주소가 0x3000이고, 오프셋이 0x234이면, 물리적 주소는 0x3000 + 0x234 = 0x3234입니다.
이러한 과정을 통해 가상 주소 0x1234를 물리적 주소 0x3234로 변환할 수 있습니다.

페이지 폴트와 스와핑

가상 주소를 물리적 주소로 변환할 때, 해당 페이지가 메모리에 없으면 페이지 폴트가 발생합니다. 페이지 폴트가 발생하면 운영체제는 해당 페이지를 디스크에서 메모리로 스와핑합니다.
페이지 폴트 발생
가상 주소 0x1234가 페이지 번호 3에 해당할 경우, 이 페이지는 현재 디스크에 있으므로 페이지 폄트가 발생합니다. 운영체제는 디스크에서 페이지를 로드하여 메모리로 스와핑합니다.
메모리 공간 확보
스와핑을 위해 메모리 공간이 부족하다면, 오래된 페이지를 디스크로 옮기고, 새로운 페이지를 메모리로 로드합니다.
페이지 테이블 업데이트
페이지가 메모리에 로드되면, 페이지 테이블은 해당 페이지의 프레임 번호를 업데이트하고, 상태를 "사용"으로 변경합니다.