Paging system
- 프로그램을 같은 크기의 블록으로 분할하여 관리
- 필요한 page만 page frame에 적재하여 사용
용어 표현
- page : 프로그램의 분할된 block
- page frame : page 크기로 분할된 메모리 영역
특징
- 논리적 분할이 아닌 단지 크기로 분할
- segmentation 대비 page 공유 및 보호 과정이 복잡
- segmentation 대비 simple 및 efficient
- 내부 단편화 발생 : 프로그램을 page로 잘랐을 때, 마지막 꼬투리는 page의 크기보다 작을 수 있으므로 page frame에 넣으면 내부 단편화 발생
- 외부 단편화 발생 안함 : 메인 메모리와 프로그램 모두 page 크기로 분할되어 있기 때문에
문제점
- 단지 크기로 분할하기 때문에 공유하기 어려움
- 단지 크기로 분할하기 때문에 보호하기 어려움
실제 사용
- 경로 : 제어판 => 시스템 -> 고급 시스템 설정 => 고급 => 성능
- 오른쪽 사진에서, 맨 위 자동 관리 체크를 해제하면 가상 메모리를 수동으로 변경 가능
- 어떤 디스크를 가상 메모리로 사용할 것인지, 크기는 얼마로 할 것인지 설정 가능
Address mapping
- 가상 주소 : v = (p, d)
- PMT(page map table) 사용
- 방법
* Direct mapping
* Associative mapping
* Hybrid direct/associative mapping
1) Direct mapping
- block mapping과 유사
- PMT를 커널 안에 저장
- 동작 : 해당 프로세스의 PMT가 저장되어 있는 주소 b에 접근 => 해당 PMT에서 page p에 대한 entry를 찾음(위치 : b + p * entrySize) =>
residence bit = 0 인 경우(page fault), swap device에서 해당 page를 메모리로 적재 => PMT 갱신 후, residence bit = 1와 동일
residence bit = 1 인 경우, 해당 entry에서 page frame 변호 p'를 확인 => p'와 가상 주소의 변위 d를 사용하여 실제 주소를 찾음(위치 : p' * pageSize + d) => 실제 주소로 메인 메모리 접근
- page fault : 프로그램이 메모리에 적재되어 있지 않은 상태에서 접근하는 경우를 말함
- 방법 : 프로세스는 asleep/block 상태 => 메모리에 적재하여 ready 상태 => 프로세스 running 상태가 되어 작업 진행
- 문제 : context switching이 발생하여 overhead 발생
- 실제 예시 : 작업 관리자에서 확인 가능
- 단점
* 메모리 접근 횟수 2배 : 메모리에 있는 PMT에 접근하고 다시 메모리에 접근 => 성능 저하
* 메모리에 PMT를 위한 공간 필요
- 해결 방법
* Associative mapping(TLB) : 메모리 접근 횟수 해결
* Hierarchical paging
* Hashed page table
* Inverted page table
2) Associative Mapping
- TLB(translation look-aside buffer)에 PMT 적재
- TLB : PMT 적재 전용 HW
- 하드웨어적으로 PMT 병렬 탐색 가능
- 장점
* low overhead
* high speed
- 단점
* expensive HW
* 비싸서 큰 PMT를 다루기 어려움
- 동작
3) Hybrid Direct/Associate Mapping
- Direct와 Associate 기법을 혼합
- 전체 PMT는 메모리(kernel)에 저장
- TLB에는 PMT의 일부 entry들을 적재
* 최근에 사용된 page들에 대한 entry 저장
* 최근? locality(지역성) 활용 : 프로그램의 수행과정에서 한 번 접근한 영역을 다시 접근 또는 인접 영역을 다시 접근할 가능성이 높음
- 동작
* TLB에 적재되어 있는 경우 : residence bit를 검사하고 page frame 번호 확인하여 메인 메모리에 접근
* TLB에 적재되어 있지 않은 경우 : Direct mapping으로 page frame 번호를 확인하고 해당 PMT entry를 TLB에 적재한 뒤에 메인 메모리에 접근
Page 관리
- FPM 기법과 유사
Frame table
- page frame을 관리하기 위한 자료구조
- page frame 당 하나의 entry
- 구성
* allocated/available field : 할당되었는지/사용할 수 있는지
* PID field : page의 ID
* Link field : 빈 공간을 관리하기 위한 연결 리스트
* AV : 빈 공간을 관리하기 위한 해더
Page sharing
- 여러 프로세스가 특정 page를 공유
* 가능한 이유 : Non-continuous allocation으로 프로그램을 부분적으로 잘라서 사용하기 때문에
- 공유 가능한 page
* procedure(function) page
* data page : read-only data, read-write data
- 예시 : word 프로그램 3개를 띄워 놓고 작업을 한다고 할 때, editor 1~3은 같은 기능임으로 공유해서 사용하고 데이터만 다른 곳에 저장
- Data sharing(PMT 관점에서)
- Procedure page sharing(PMT 관점에서)
* 이해가 안되서 다시 보기 https://youtu.be/B_QLTChsi04 (10:20)
Page protection
- page를 공유하므로 보안이 필요
- protection bit 사용
본 내용은 한국기술교육대학교 김덕수 교수님의 유튜브 강의를 듣고 정리한 내용입니다.
'Software Courses > Operating System' 카테고리의 다른 글
[Memory] Hybrid paging segmentation system (0) | 2020.12.10 |
---|---|
[Memory] Segmentation system (0) | 2020.12.10 |
[Memory] Memory allocation : Non-continuous memory allocation (0) | 2020.12.09 |
[Memory] Memory allocation : Continuous memory allocation (0) | 2020.12.09 |
[Memory] Memory Basic (0) | 2020.12.07 |