[SW사관학교정글]5기_WEEK10~13_회고

반응형

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에서 사용하는 많은 개념들이 비슷하게 적용되며, 덕분에 생각보다 쉽고 재밌게 배우고 있다. 

  -  더불어 웹상에서 데이터를 주고받는 방식들에 대해서도 한층 더 깊은 이해를 하게 되었다. 

 


소감

좋은 커리큘럼이였다. 

어떠한 목표를 이룸에 있어 다양한 방법이 있겠으나, 이전에 나와는 다른 방법으로 목표를 이룬 기분이 들었다. 

나는 큰 그림을 먼저 그리고 조금씩 깊게 탐구했던 스타일이었다. 

이 방법의 단점은 너무 큰 그림이 주어졌을 때 깊게 들어가다가 지쳐 포기하게 된다는 점이다. 

 

하지만 이번 핀토스 프로젝트를 통해 깊게 탐구하는 경험을 하게 되었고 배우게 된 점들이 정말 많다. 

이젠 아무리 큰 그림이라도 포기하지 않고 목표를 달성할 수 있는 자신감이 생겼다. 

반응형