[회고록] Kaist-PintOS Project 3: Virtual Memory

emplam27·2021년 3월 10일
0

프로젝트

목록 보기
5/5

학사측의 요청으로 코드는 공개하지 않습니다!

21.02.18 ~ 21.03.01

Kaist-PintOS 중 Virtual Memory 프로젝트의 Anonymous Page, Memory Mapped Files, Swap In/Out을 구현하는 프로젝트였습니다. OS의 정수라고 할 수 있는 가상메모리에 대해 음미할 수 있는 시간이었습니다.


어려웠던점

  1. 가상메모리와 그에 따라오는 방대한 양의 개념을 단시간에 익혀야만 하는 과정이 어려웠습니다. 머리속에 지식들이 쏟아져 들어오는 기분이었습니다.. 쏟아져 들어오는 지식들을 정리하고, 코드를 짜면서 머리속에 저장하는 과정을 거치며 점차 지식들을 이해할 수 있었습니다.

  2. 이전에 요구하던 하드웨어 지식의 확장판이 펼쳐진 느낌이었습니다. 더 많은 하드웨어적인 지식을 요구하였고, 이해하지 못하면 코드를 짤 수 없는 상황이 되어서 확실히 지식을 익히고 지나가는 과정이 있었습니다. 역시나 이번에도 OS는 너무나 많은 일을 하는구나를 다시 깨닫는 시간이었습니다.

  3. 간헐적으로 동시성 문제에 의해서 채점 결과가 다르게 나오는 경우가 있었습니다. 동시성을 고려하여 Lock, Semaphore를 사용해 코드를 짜는 과정이 정말 어려웠습니다. 결국 동시성 문제를 완전히 해결하지 못한 부분이 있습니다.


배운점과 성과

  1. 가상 메모리에 대해 공부하게 되면서 하드웨어에 대한 깊은 부분까지 공부할 수 있었습니다. OS에서는 어떠한 방법으로 CPU, Memory, Disk간의 데이터들을 주고 받는지지를 알 수 있는 기회였습니다. 또한 OS는 왜 가상메모리를 도입하였는지, 어떤 역할을 하는지 등을 공부하며 가상메모리의 필요성과 프로세스에게 주는 환상(?)에 대해 공부할 수 있었습니다. 부족한 메모리는 디스크에서 스왑한다는 개념 역시 신선하였습니다.

  2. Page, Frame, Segment, Sector, Cluster 등 메모리와 디스크를 관리하는 단위에 대해 공부할 수 있었습니다. 또한 매우 중요한 개념인 Page fault의 역할을 통해 Lazy loading, Page table, PML4, TLB 등 메모리 관리를 효율적으로 하기 위해서 얼마나 많은 소프트웨어적, 하드웨어적 도구들이 사용되는지 공부할 수 있었습니다. 이렇게 짧은 시간에 어려운 지식을 흡수할 수 있었다는게 신기할 정도입니다.


앞으로 해보고 싶은 공부

OS의 정수를 맛본 기분입니다. 동시성 문제를 해결하지 못한 부분이 가장 아쉬웠고, 이후 시간이 된다면 동시성 문제를 해결해보고 싶습니다.

profile
내가 다시 보고 싶은 글이어야 남들도 보고 싶은 글이라 생각하며 작성합니다. 공부한 내용들을 건강하게 공유하며 함께 성장하고자 합니다😊😊

3개의 댓글

comment-user-thumbnail
2021년 5월 9일

안녕하세요! 이번에 프로젝트 2를 끝내고 3 가상메모리를 시작하려는 한 학생입니다. 사실 코드가 전혀 없어서 메뉴얼을 읽고, 개념을 공부했지만, 아직 잘 감이 오지 않는데, 혹시 과제를 하는 과정에서 어떻게 공부하고 감을 잡으셨는지 알 수 있을까요? 자료 추천해주시면 감사하겠습니다.

1개의 답글
comment-user-thumbnail
2022년 12월 1일

오늘 명강의 감사합니다!

답글 달기