ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SW 정글 9 ~ 10주차 회고
    기타/SW 사관학교 정글 2021. 10. 14. 10:28

    [9 ~ 10주차 회고]

    2021년 10월 14일 목요일, 10주차가 마무리 되는 날이고 9주차부터 10주차까지는 전체적으로 어땠는지 이 글을 쓰면서 돌아보려고 한다.

     

    9주차와 10주차에는 project 1(8주차 진행)과는 다른 점은 user program을 하나의 process로 만들면서 커널과 인터렉트할 수 있는 system call을 구현하는 것이였다.

     

    일단은 첫번 째 과제인 argument passing을 하면서 CLI환경에서 내가 어떠한 program을 실행시키고자 할 때 쓰는 명령어들이 OS입장에서는 어떻게 받아들이고 process로 만들기 위해 어떠한 과정을 거치는지 알 수 있었다.

    띄어쓰기를 기준으로 tokening을 한 후에 arugment 1byte 단위로 차곡차곡 user stack에 쌓은 후에 각각의 arguments의 시작주소를 저장하면서 다음에 어디서부터 읽으면 어떠한 arugument인지 알 수 있는 구조였다.

     

    CLI환경에서 직접 명령어를 치는 것은 명시적이지만 아마 GUI환경에서 더블클릭으로 프로그램을 실행시킬 때에도 나에게 보이지는 않지만 비슷하게 동작하지 않을까싶다.

     

    다음으로 system call을 구현하는 과제였다.

    이 부분을 구현하면서 약간(?)의 아쉬움이 남는 날들을 보낸 것같다.

    system call을 2가지로 분류해보면 process와 관련된 system call(exit, fork, exec)과 file system과 관련된 system call(open, close, tell, seek, write, read, create, remove, filesize)이 있다.

    여기서 file system과 관련된 system call은 file system에 대한 기본지식 공부를 할 시간을 가지지 못해서 완벽히 이해하지 못해서 아쉽다.

    일단은 지난 일이니 project4 때 file system을 구현하는 시간을 가질 때 제대로 공부하고 다시 system call을 봐봐야겠다.

     

    system call을 구현하면서도 많은 것을 알 수 있었다.

    이전에 알고리즘 주차 때 다른 사람들의 코드를 보면서 강제종료를 하기 위해 exit()을 쓰는 경우를 본 적이 있다.

    그 때는 system call 중 하나인 exit()가 그냥 '강제종료하는 코드구나'라고 넘어갔지만 이번 주차에 직접 구현하면서 '아 그 때 봤던 exit()가 이런 식으로 kerel mode에서 동작이 되는구나'라고 알면서 신기하기도 했고 재미를 느끼기도 했다.

     

    그리고 새로운 프로세스를 실행시키는 fork와 exec가 어떻게 동작하는지 코드를 하나하나 따라가며 kernel에서의 동작과정을 알 수 있는 좋은 시간이였다.

     

    이제 Pintos를 볼 날이 3주가 남았고 남은 3주는 더 어렵겠지만 재미있을 것같다.

    memory와 file system은 machine이 동작하는데 가장 중요하지 않을까하는 생각이 있기에 최대한 빡집중해서 열심히 해봐야겠다.

    댓글

Designed by Tistory.