Project3 요약 정리
정말 빠르게 지나간 2주였다. 새로운 팀으로 변경되고나서 2주간의 어렵다는 VM 주제를 시작하였다. 막상 개념을 공부할땐 그렇구나.. 하면서 배웠던 것 같은데 코드 구현에선 정말 멘붕이 왔었다.. 그래도 잘 보낸 2주였던 것 같다..
시작 전 개념 정리
과제
Project2 고민한 것들
SPT 이 기존의 plm4를 완전히 대체하는 page table인줄 알았다.
→ pml4 page table을 같이 사용하여 문제 해결
pintos에서 제공하는 hash table을 정확히 이해하지 못함
page, frame 구조체를 malloc이냐 palloc_get_page로 할당해주어야 할지 헷갈림
palloc_get_page
로 할당해줌page fault 발생 시 SPT
에서 해당 page를 찾지 못하는 문제
page table number
로 사용된다.→ 해결: page fault가 발생한 주소의 뒤 offset부분을 0으로 만들어서 SPT
에서 찾으면 해결할 수 있다.
vm_alloc_page_with_initializer
함수에서 uninit_new 함수의 호출이 끝나고 new_page에 값을 넣어주어야 정상 동작하고 uninit_new 전에 구조체 안의 값을 할당해주면 제대로 동작하지 않았다. ???이유를 잘 모르겠음
어려웠던 점과 느낀점
이번 프로젝트에서는 핀토스 프로젝트 중에서 제일 긴 2주간의 시간 동안 목표를 향해 달려갔다. 2주란 정말 긴 시간이지만 핀토스를 하면서 2주는 정말 짧은 시간이였구나..를 많이 느꼈던 것 같다.
초반에는 많이 해맸던 것 같다. 개념을 공부하고 코드를 익히는 과정이 혼돈이 많았던 시간이였다. 마지막 남은 프로젝트 4 그리고 정글에서의 마지막 프로젝트 "나만의 무기 갖기" 프로젝트 발제가 되고 반 분위기도 새로워졌다..
남은 1주일 어떻게 될지 잘 모르겠지만 열심히 해야겠다..
PintOS Project3 GIthub 주소 PintOS