2022.11.30 SW정글 ~ 73일차 / Virtual Memory 연습장

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 

✔️ 여기에서 메모리에 매핑된 파일들이 각각의 페이지와 어떻게 매핑되어있는지 기록되어 있음