본문 바로가기
개발자 도전기/[OS] pintOS

pintOS | Project 2 회고

by 답수 2021. 10. 14.
728x90
SMALL

 

 

1. project2 목표

pintos-kaistproject2 git book

 

Introduction · GitBook

Project2: User Programs Now that you've worked with Pintos and are becoming familiar with its infrastructure and thread package, it's time to start working on the parts of the system that allow running user programs. The base code already supports loading

casys-kaist.github.io

 

프로젝트2의 주제는 User Progams이다. 프로젝트 1에서 구현했던 것들은 모두 커널에서 실행되는 프로세스들이었다. 이번 주차의 목표는 유저 프로그램을 실행하여 운영체제를 테스트하는 것이다.

 

 

2. project2 공부

pintOS | Project 2 | 명령어 실행 기능 구현(Command Line Parsing)

pintOS | Project 2 | 시스템콜 구현 (halt, exit, exec, create, remove, open, filesize)

pintOS | Project 2 | 시스템콜 구현 (fork, wait, read, write, seek, tell, close)

pintOS | Project 2 | 시스템 콜 (extra)

 

 

3. 구현 및 결과

이번에도 역시 훌륭한 조원들과 함께 한 덕분에 기존의 95개를 pass했고, 마지막 날에 extra까지 마무리해서 총 97개의 테스트를 통과할 수 있었다.

 

 

4. Project 2 Rewind

Project 1 때와 마찬가지로 우선 개인적으로 개념 공부를 먼저 시작했다. 그리고 매일 한 테이블에 모여서 어떻게 구현을 했는지 서로의 코드와 의견을 공유하였다.

 

그리고 시스템 콜을 구현할 때는 먼저 조 회의를 하면서 시스템 콜에 대한 이해도를 높혔고, 그 후 시스템 콜 함수가 많다 보니 각 함수별로 연계성, 난이도를 고려한 후 파트를 나눠서 구현했다. 나는 filesize, read, write, seek, tell, close 함수를 맡아서 구현을 했다.

 

결국 모든 부분을 이해하고 구현해야 하는 것은 마찬가지겠지만, 파트를 나눠서 준비하다 보니 적어도 내가 준비했던 함수들에 대한 이해를 더 깊게 할 수 있어서 좋았다. 특히 read함수를 구현할 때, input_get --> intq_getc --> struct intq 등 계속 깊게 파고들면서 조금은 더 심층적으로 이해할 수 있었고, read 부분에서 fail이 나고 error문구가 떴을 때, 해결하기 더 수월했었다.

 

아쉬웠던 점은 조원 이외에도 다양한 사람들과 프로젝트 2에 대한 얘기를 나눈 시간이 많지 않다는 것이다. 사람들과 같은 키워드에 대해 공유할수록 더 깊고 더 넓게 알아갈 수 있었는데, 혼자서 충분히 해결 할 수 있을 것 같다는 근자감(?)에 사로잡혀 조금은 미련하게 공부한 시간도 많은 것 같다. 그 이후 다른 동기들하고 얘기 나누면서 더 쉽게 원인을 찾고 개념도 익힐 수 있었다. 물론 혼자서 깊게 이해하는 것도 중요하지만, 이를 위해 남들과 많은 생각을 공유하는 것을 선행할 수 있도록 해야겠다.

 

728x90
LIST

댓글