Page Type
페이지 타입은 크게 두 가지로 나뉜다. 익명 페이지(Anomymous page)와 파일 기반(File backed page) 페이지로 나뉘는데, 차이는 디스크 안에 있는 파일이 매핑된 페이지인지 아닌지의 여부로 나뉜다.
Zero & Eviction
Zero
익명 페이지는 페이지를 물리 메모리를 할당할 때 반드시 내용물을 0으로 초기화해주어야 하고, 파일 기반 페이지는 그럴 필요가 없다.
Q 왜 메모리를 지워야 하는가?
A 메모리는 여러 프로세스 간에 global하게 shared되는데, 만약 내용물을 지우지 않는다면 다른 프로세스의 메모리 내역을 보게 될 수 있다. 이는 OS의 기본 원칙인 isolation을 위반한다.
따라서 페이지 할당 시 다음과 같은 상황이 발생한다.
No | 주체 | 벌어지는 일 |
0 | Page Fault 발생 | |
1 | application pause | |
2 | Page Fault handler | 페이지 할당 |
3 | 물리 메모리 관리자 | 가용 페이지 리스트(free page list)로부터 페이지를 가져온다. |
4 | 물리 메모리 관리자 | 페이지 값을 0으로 초기화(Zero the pages) |
5 | Page Fault handler | 초기화한 페이지를 page table과 mapping |
6 | application resumes |
Page Fault Handling
Q 실제 물리 메모리는 언제 할당되는가?
#page fault, #demand paging
application이 처음으로 할당되지 않은, 즉, 페이지 테이블에 매핑되지 않은 물리 메모리에 처음 접근할 때 할당된다. 프로세스/application이 페이지를 요구할 때 OS가 page fault handler를 통해 할당 해준다. 이 기법은 요구 페이징(Demand Paging) 이라 불리며, CPU가 요청할 때나 정말 필요할 때에만 메인 메모리에 페이지가 할당하는 기술이다.
OS는 전체 프로그램을 전부 메모리에 로드하지 않고, 런타임에 프로그램에 필요한 페이지만 로드한다. 만약 로드해두지 않은 부분에 접근한다면 페이지 폴트(page fault)를 발생시킨다. page fault 발생시 OS가 이때 필요한 페이지를 disk에서 메모리를 로드한다.
Swap In / Out
(노션에서 옮기는 중)
--
오늘의 pintOS 진도 : copy, 테이블 정리, kill, pml4 & spt
'공부기록 > OS' 카테고리의 다른 글
[TIL][Project 3] Segmentation | Paging | Page Table (0) | 2023.12.22 |
---|---|
[TIL][Project 3] Virtual Memory | Address Translation (Static/Dynamic) (0) | 2023.12.21 |
[TIL][OS] OS review Summary: Abstractions (0) | 2023.12.20 |
[TIL] [Project 2 보충] Filesystem, Buffer, syn-read issue (0) | 2023.12.19 |
[TIL][Setting] ubuntu Setting for PintOS (0) | 2023.12.18 |