CS/운영체제
#15 가상 메모리(Virtual Memory) - 하이브리드(Hybrid)
Scala0114
2022. 1. 18. 16:28
1. 하이브리드 시스템(Hybrid Paging/Segmentation System)
- 페이징 시스템과 세그멘테이션 시스템의 장점을 결합
- 프로그램을 논리적인 단위인 세그먼트(segment)로 분할한 뒤 각 세그먼트를 다시 고정된 크기의
page로 분할하여 메모리에 적재할 때는 page 단위로 적재하는 방식 - sharing, protection 문제를 해결하기 위해 프로세스 자체는 세그먼트 단위로 분할했지만 결국
메모리에 적재되는 것은 page이기 때문에 메모리 관리 방식은 FPM과 유사 - SMT, PMT를 모두 사용하기에 테이블 수가 증가하여 메모리 사용량이 증가하고 주소 매핑 과정이
복잡해진다. - SMT, PMT를 모두 참조하기 위해 메모리 액세스 횟수가 3번(SMT, PMT, 목적 주소)으로 증가하기 때문에
직접 매핑 방식으로는 성능이 저하되는 문제가 있음(TLB 사용이나 다른 여러 기법으로 극복 가능)
2. 주소 매핑(Address Mapping)
- (segment number, page number, offset)의 쌍으로 이루어진 가상주소를 사용
- SMT와 PMT를 모두 사용
- 프로그램은 세그먼트 단위로 분할되었기 때문에 각 프로그램(프로세스)마다 SMT를 가짐
- 세그먼트는 페이지 단위로 분할되었기 때문에 각 세그먼트마다 PMT를 가짐
- 주소 변환 과정
- SMT의 시작 주소가 bs 이고 세그먼트 번호 s, 페이지 번호 p, offset d가 주어졌을 때,
해당 세그먼트의 엔트리 탐색 (= bs + s * SMT_entrysize), PMT의 시작주소인 bp를 구한다. - PMT에서 해당 페이지의 엔트리를 탐색(= bp + p * PMT_entrysize)하고 residence bit를 체크,
메모리에 적재되어있지 않을 경우 page fault를 발생시켜 메모리에 적재하는 과정을 거친다. - PMT를 참조하여 페이지 프레임 번호를 구하고 offset을 더해 메모리상의 실제 주소를 계산
(= page frame number * page_size + d)
- SMT의 시작 주소가 bs 이고 세그먼트 번호 s, 페이지 번호 p, offset d가 주어졌을 때,
- 메모리 적재 단위는 page이기 때문에 SMT에는 residence bit 이 존재하지 않음