2022. 12. 2. 01:28ㆍ카테고리 없음
Virtual memory 첫번째 과제 : supplemental page table 구현하기
pml4라는 페이지 테이블 = 가상메모리와 물리 메모리간의 매핑을 관리
+ supplemental page table 필요(SPT)
: 페이지폴트 발생했을 때의 핸들링과 자원관리를 위해 각 페이지마다의 추가정보를 들고 있는 페이지 테이블을 말함
두 가지 역할은 아래와 같음
1) 페이지폴트 발생 시, 커널이 SPT에서 오류가 발생한 가상페이지를 조회하여 어떤 데이터가 어디에 있는지 확인
2) 프로세스가 종료될 때, 어떤 리소스를 free 시킬 시 결정하기 위해 커널이 참조
void supplemental_page_table_init (struct supplemental_page_table *spt);
✔️ SPT 초기화하는 함수
- 새로운 프로세스가 시작될 때 (initd)
- 프로세스가 fork 될 때 (do_fork)
struct page *spt_find_page (struct supplemental_page_table *spt, void *va);
✔️ 주어진 SPT에서 가상주소 va에 대응하는 struct page를 찾는 함수 (실패 시 NULL 리턴)
bool spt_insert_page (struct supplemental_page_table *spt, struct page *page);
✔️ struct page를 주어진 spt에 삽입하는 함수 ( 가상주소가 주어진 SPT에 존재하지 않음을 체크 필수 )
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 권영진 교수님 강의 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
우리가 구현해야 될 데이타스트럭쳐
1. SPT
✔️ ( 프로세스당 데이터스트럭쳐 - (프레임, 디스크, 스왑) 등 데이터의 위치, 커널 가상주소를 가리키는 포인터)
페이지폴트 발생했을 때의 핸들링과 자원관리를 위해 각 페이지마다의 추가정보를 들고 있는 페이지 테이블을 말함
2. Frame table
✔️ 전역 데이타 스트럭쳐 - 할당되거나, 프리된 피지컬 프레임을 저장
- 희생자페이지를 찾기 위해 알고리즘이 있어야 함 (LRU 방식이나 clock algorithm 필요)
3. Swap table
✔️ 스왑 슬롯을 저장
4. File mapping table
✔️ 여기에서 메모리에 매핑된 파일들이 각각의 페이지와 어떻게 매핑되어있는지 기록되어 있음