목차
페이징
페이징은 가상 주소를 일정한 크기의 페이지로 나누고, 각 페이지를 물리적 메모리의 프레임에 매핑하는 기법입니다.
페이징 작동 방식
페이징에서는 가상 주소 공간을 고정 크기의 페이지로 분할합니다.
각 페이지는 물리적 메모리(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에 해당할 경우, 이 페이지는 현재 디스크에 있으므로 페이지 폄트가 발생합니다. 운영체제는 디스크에서 페이지를 로드하여 메모리로 스와핑합니다.
•
메모리 공간 확보
◦
스와핑을 위해 메모리 공간이 부족하다면, 오래된 페이지를 디스크로 옮기고, 새로운 페이지를 메모리로 로드합니다.
•
페이지 테이블 업데이트
◦
페이지가 메모리에 로드되면, 페이지 테이블은 해당 페이지의 프레임 번호를 업데이트하고, 상태를 "사용"으로 변경합니다.