[OS] Virtual Memory : Hybrid Paging/Segmentation

parkheeddong·2023년 5월 30일
0

Operating System

목록 보기
48/63
post-thumbnail

🔔 왜 믹스하는가?

각각의 장점을 모두 취하기 위해!

📌 페이징 시스템

장점
메모리 관리가 심플하고, 오버헤드가 적다.

단점
프로그램을 논리없이 분할한다.
복잡한 sharing 메커니즘

📌 Segment 시스템

장점
프로그램을 논리적으로 분할한다.
단순하고 쉬운 sharing 메커니즘

단점
메모리 관리가 어렵고, 오버헤드가 크다.


1. Hybrid Paging/Segmentation

user program은 logical segment로 분할한다.

각각의 segment는 페이지 단위로 다시 분할한다.

즉 프로세스는 결국 최종적으로는 페이지 단위로 분할된다.
따라서 메모리 로딩 단위도 페이지이다.

메모리 관리 역시 페이징 시스템처럼 쉽게 할 수 있다.

다섯개의 segment로 logically 분할하고, 각 segment는 3개, 4개, 2개, 3개, 5개로 같은 크기의 페이지로 분할한다.


2. Address Mapping

Virtual Address = (s, p, d)
segment 번호, page 번호, displacement가 된다.

SMT와 PMT를 모두 이용한다.

각 프로세스는 ✔ SMT 하나만 ✔ 있으면 된다.
각 Segment에 대해서는 PMT가 하나씩 필요하다.

즉 프로세스가 5개의 Segment로 갈라졌다면 SMT 하나, PMT 5개가 있다.

N개의 Segment로 분할되어 있으며, protection bit, segment length, secondary storage address, pmt address가 있다.

👇 주의점
residence bit이 없다 ! segment 단위로 메모리에 들어가는 것이 아니니까 !
segment의 메모리 적재 주소도 없다. 대신 page map table의 주소가 있다.


3. Segment Map Table


4. segment K에 대한 Page Map Table


페이지는 총 9개로 분할되어 있으며, residence bit과 secondary storage address, page frame number가 있다.


5. 실제 Address Mapping 메커니즘

1) cpu에서 실행중인 pa가 virtual address (s, p, d)를 generation한다.

2) SMT에서 s에 해당하는 PMT address를 찾는다.

3) segment s에 대한 PMT에서 페이지 번호 p를 찾는다.

4) 페이지 번호 p에 대응하는 page frame nubmer p'를 찾는다.

5) 따라서 real address nubmer = P' * PageSize + d가 된다

0개의 댓글