[OS] Lecture 9. Virtual Memory (2_5) - kibitzing/EnGrow GitHub Wiki
진구
- page: 책의 페이지가 페이지마다 크기가 다르지 않은 것을 생각하면 쉽다. 같은 크기로 프로세스 메모리를 잘라서 관리한다.
- 페이지를 알아도 어디서 부터 시작할지가 중요. 책의 시작을 찍어주는게 b (base address)
- real memory address = b + p * p_size + d
- paging은 크기 위주로 잘라서 공유나 보안에는 약하다고 함
- 다이렉트는 그냥 하면 되고, associate mapping은 하드웨어의 도움을 받음. 페이지 체크를 병렬처리해주는 하드웨어 (TLB), 비싸다고 함
- 하이브리드는 그냥 최근에 본 친구들을 TLB에 얹어두는 것
- page 가 메모리에 없고 스왑 메모리에 있으면 page fault가 난다고 함. 이게 성능에 안 좋다고.. 자주 보던 segmentation fault 가 생각나네.
세영
Paging system: 프로그램을 같은 크기의 블록(page)으로 분할
- Page: 프로그램이 분할된 block
- Page frame: 메모리의 분할, page의 크기와 같음
- 물리적인 분할으로, 공유 및 보호 과정이 복잡
- 간단하고 효율적
- Internal fragmentation이 발생할 수 있음
- Direct Mapping, Associative Mapping 방법이 있음
Direct Mapping
- 프로세스의 PMT (Page map table)가 저장되어 있는 주소에 접근
- PMT에서 page의 entry 획득
- residence bit 검사
- 0일 경우 page fault이므로 swap device에서 페이지를 메모리에 적재한 후 bit를 1로 변경
- 1일 경우 page frame 번호 확인
- page frame 번호와 offset을 사용하여 physical address 획득
- 단점:
- 메모리 접근 횟수가 2배
- PMT를 위한 공간 필요
Associative Mapping
- TLB (Translation Look-aside Buffer, 전용 하드웨어) 활용
- PMT를 병렬 탐색하는 방법
- 다 좋은데 비쌈
Hybrid Mapping
- 지역성을 활용(최근에 사용된 페이지 가져오기)해서 TLB 에다가 PMT 중 일부 entry들만 적재