정글 사관학교 W10[핀토스]_WIL

정나린·2022년 12월 5일
0

[10주차 개괄]

10주차 요약: 몸관리를 잘하자!

[Project 3-1: Virtual Memory]

😳 지금까지는 virtual memory가 없었다.

그 전까지의 핀토스 프로젝트를 하면서 User VM, Kernel VM이라는 단어를 깃북에서도, 여러 설명에서도 자주 봤어서 당연히 virtual memory개념을 이미 사용하고 있다고 생각했다.

하지만 그렇지 않았다.
그래서 프로젝트 초반에 어떻게 virtual memory를 구현해야 한다는 것인지 더 감이 잡히지 않았다. (이미 있다고 생각했기 때문에)
그래서 virtual memory에 대한 개념을 잡을 때 저번 기수의 Q&A가 큰도움이 되어서 이 부분을 공유하려고 한다.

[Project 3-2: 은행같은 메모리]

(찰떡같은 비유를 해주신 정글 B반 토끼님께 감사의 말씀 드리며 설명 큐!)
그림에서도 볼수 있듯이 virtual memory는 RAM이라고도 불리는 physical memory보다 크다.

어떻게 process 하나마다 있는 virtual memory가 physcial memory보다 클 수 있을끼?

이 개념을 은행에 비유하면 쉽게 이해할 수 있다.
A가 은행에 100만원을 저축했다고 하자. 이후 B가 은행에서 100만원을 빌렸다고 하자.
이 상황에서 A와 B 모두 자신의 자산이 100만원이라고 생각할 것이다.

virtual memory는 physical memory 영역뿐만 아니라 swap 영역모두 다루고 있으므로 크기가 클 뿐이고 여러 개의 process에 대한 virtual memory가 physcial memory 영역을 공유함으로써 위와 같은 그림이 일어날 수 있게 된다.

[Project 3-2: alias]

핀토스에서는 2개의 alias가 있다.

physical memory는 모두 kernel virtual address와 매핑되어 있다.
따라서 vtop, ptov라는 연산을 통해 virtual address와 physical address를 알 수 있는 것이다.

이러다 user virtual address에 대해 paging이 일어나고 그로 인해 physical memory의 frame과 매핑이 되면 위에서와 또 다른 va->pa 관계가 만들어진다.

user_VA --------> PA
               /
kernel_VA------

이 점을 이해한다면 핀토스에서의 virtual memory를 이해하는데 덜 어려울 것 같다.

다음주부터는 팀 프로젝트에 참여해서 내 몫을 잘 해내고 싶다.

0개의 댓글