#Paging
- Segmentaion과 비교:
1. 할당과 스왑이 더 쉬움
2. 외부 단편화(fragmentation)가 없음
- 각 프로세스는 페이지라고 불리는 여러개의 작고 고정된 크기의 파티션으로 나뉨
> 물리 메모리는 프레임이라는 많은 작고 고정된 크기의 파티션으로 나뉨
> 페이지는 세그먼트와 아무 관련 없음
> 페이지 크기 = 프레임 크기
> 일반적으로 512B ~ 16KB
> 전체 프로세스는 여전히 메모리에 로드되지만, 프로세스의 페이지는 연속된 프레임 집합에 로드되지 않아도 됨
> 가상 주소는 페이지 번호와 해당 페이지의 시작부터의 오프셋으로 구성됨
#Implementing Paging

- 페이지 테이블은 특정 프로세스의 모든 페이지를 추적
> 각 항목은 주 메모리(물리 메모리)에 해당하는 프레임을 포함
> 보호 비트를 추가할 수도 있지만 세그먼트와는 달리 그렇게 유용하지는 않음
- 세그멘테이션보다 필요한 추가 하드웨어 지원은 약간 적음
> 제한(limit)을 추적하고 비교할 필요가 없음
-> 페이징에서는 세그먼트와 달리 페이지 크기가 고정되어 있기 때문에, 각 페이지의 프레임을 페이지 테이블에 직접 매핑 가능 -> 따라서 프로세스의 각 페이지에 대한 제한을 따로 추적하고 비교할 필요가 없음
- 페이지가 커지면: 페이지 테이블이 작아져 가벼워짐, internal fragmentation이 커짐
- 작아지면: internal fragmentation 작아짐 but table 너무 커져 처리가 복잡해짐
- 보통 32bit 주소체계에서 1KB 씩 페이지를 설정하면 페이지 테이블은 약 400만개(2^22개)
#Paging Example


#Managing Pages and Frames
- OS는 일반적으로 비트맵을 사용하여 메모리의 빈 프레임을 추적
> 비트맵은 비트의 배열
> 1은 해당 프레임이 빈 상태를 나타냄
> 0은 해당 프레임이 페이지에 할당되어있는 상태
> 빈 프레임을 찾기 위해 첫 번째 1을 찾는다
> 대부분의 현대 명령어 세트는 레지스터의 첫 번째 1의 오프셋을 반환하는 명령어를 가짐
- 페이지 테이블 베이스 포인터(특수 레지스터)는 활성 프로세스의 페이지 테이블을 가리킴
> context switching의 일부로 저장되고 복원됨
> 페이지 테이블에는 다음과 같은 내용도 포함:
> 유효 비트(valid bit): 페이지가 프로세스의 가상 주소 공간에 있는지 여부를 나타냄
> 요구 페이징(demand paging)을 위한 기타 비트
* Demand Paging: 캐싱이랑 비슷한 개념. 미리 로드된 demand page에서 데이터를 찾고 없으면 디스크 -> hit 안됐을 때 약 25만배정도 속도 차이남
#Evaluation of Paging
- 장점:
1. 메모리 할당이 쉬움 - 사용 가능한 프레임의 목록을 유지, 가장 먼저 사용 가능한 프레임을 할당하기만 하면 됨
2. 스왑이 쉬움 - 페이지, 프레임, 종종 디스크 블록도 모두 동일한 크기
3. 한 프레임이 다른 프레임과 동일한 가치를 가짐. 즉, 어떤 프레임이라도 상관 없음
- 단점:
1. 페이지 테이블은 상당히 큼
> 대부분의 페이지 테이블은 레지스터에 저장하기에 너무 크기 때문에, 물리적 메모리에 저장
> 이 테이블 조회는 모든 주소 변환마다 추가적인 메모리 참조를 필요로 함
2. 내부 단편화가 발생
> 1 바이트를 위해서라도 항상 전체 페이지를 얻어야 함
> 페이지 크기가 크면 이 문제가 악화
> 평균적으로는 프로세스 당 페이지의 절반을 사용
'CS > 컴퓨터운영체제' 카테고리의 다른 글
OS-0606: File system imporved, Disk Management(L32, 33) (0) | 2023.06.06 |
---|---|
OS-0606: File System(L29, 30, 31) (0) | 2023.06.06 |
OS - 0523: Segmentation (1) | 2023.05.23 |
OS 0523 - Dynamic Relocation (0) | 2023.05.23 |
OS(0516) - Memory Management (1) | 2023.05.16 |