PintOS의 꽃? Virtual Memory
이번엔 Virtual Memory를 직접 만들어 메모리 할당을 Layz 하게 해야 했다.
알아야 할 개념이 한두개가 아니었다. 보조 페이지(SPT), 물리 메모리, 디스크, swap in/out, 프레임 등등...
그래도 과제는 끝까지 해내긴 하였으나, 정확히 이해 하였다고는 말하지 못할 듯하다.
힘들었던 점들과 어떻게 극복 하려 했는지에 대해 정리하겠다.
1. 많은 이론에 대한 공부 부담
- 난 공부 속도가 빠른편이 아니다. 그래서 많은 양은 부담이 더 크게 되었다.
- 파트를 총 5파트로 나눴다. 그리고 그 안에서도 주제별로 나눴다. 그리고 하나씩 보면서 밟아갔다.
- 특히 CSAPP를 꾸준히 읽었던 것이 아주 도움이 되었다.
2. 수학적 계산들에 대한 부분
- 가상주소와 스택 포인터, 바이트 단위로의 관리 등 많은 계산식들이 들어간다.
- 알고리즘때도 느꼈던 부분이었고 남들보다 더 시간을 들여 극복할 수밖에 없었다.
3. 코드 양에 대한 압박
- 수정해야 할 코드 파일이 8~12개 정도 되었던거 같다. project 1부터 작성해왔던 코드도 다시 확인하고 수정해야 했다.
- 내가 지금까지 작성했던 코드의 전반적인 흐름도 다시한번 생각해야 했다.
- 하지만 이 부분은 위 두 사항에 비해서는 큰 문제는 아니였다.
그래서 무엇을 배웠고 남겼나
1. 인터럽트에 대한 정확한 이해
- 인터럽트는 OS뿐만 아니라 웹, 앱, 심지어 가전제품까지 우리 생활 모든 부분에 적용되는 개념이다.
- 동시성의 개념도 함께 습득하며, 앞으로 내가 개발자로 성장하는 동안 큰 도움이 될 것 같다.
2. CPU와 RAM이 어떻게 일하는지, 컴퓨터가 어떻게 일하는지
- 정말 넓은 개념이라 모든것을 이해했다고는 당연히 말 못 한다.
- 하지만 이제 큰 그림을 그릴 수 있으며, 내가 컴퓨터에서 어떤 행동을 했을 때 그 명령이 어떻게 작용되어 적용되는지까지 볼 수 있게 되었다.
- 이부분에 대해서는 개인적으로 정말 흥미롭게 공부했으며, 정글이 끝나고도 좀 더 깊게 공부할 것 같다.
3. 웹 공부를 위한 튼튼한 발판
- 이부분은 지금 React를 공부하면서 매우 크게 느끼고 있다.
- 특히 React코드에서도 C에서 사용하는 많은 개념들이 비슷하게 적용되며, 덕분에 생각보다 쉽고 재밌게 배우고 있다.
- 더불어 웹상에서 데이터를 주고받는 방식들에 대해서도 한층 더 깊은 이해를 하게 되었다.
소감
좋은 커리큘럼이였다.
어떠한 목표를 이룸에 있어 다양한 방법이 있겠으나, 이전에 나와는 다른 방법으로 목표를 이룬 기분이 들었다.
나는 큰 그림을 먼저 그리고 조금씩 깊게 탐구했던 스타일이었다.
이 방법의 단점은 너무 큰 그림이 주어졌을 때 깊게 들어가다가 지쳐 포기하게 된다는 점이다.
하지만 이번 핀토스 프로젝트를 통해 깊게 탐구하는 경험을 하게 되었고 배우게 된 점들이 정말 많다.
이젠 아무리 큰 그림이라도 포기하지 않고 목표를 달성할 수 있는 자신감이 생겼다.
'Develop > SW사관학교 정글5기' 카테고리의 다른 글
[WEEK10~13]_Pintos_Project3_Virtual Memory (0) | 2022.12.06 |
---|---|
[SW사관학교정글]5기_WEEK10_회고 (0) | 2022.12.02 |
[WEEK09]Pintos_Project2_User Program (0) | 2022.11.29 |
[WEEK08]PintOS_Project1_Threads (0) | 2022.11.17 |
[WEEK07]웹 서버 구축(Tiny서버, Proxy)_C언어 (0) | 2022.11.11 |