PintOS란 무엇인가?
무엇을 해야 하는가?
처음 PintOS는 blocked 상태일때 들어갈 수 있는 sleep_list가 구현되어 있지 않음.
sleep_list와 일정 시간이 지날때 스레드를 자동으로 wakeup()를 할 수 있는 코드를 구현.
단순히 Priority를 사용한 우선순위 스케줄링을 할 때, semaphore를 공유하는 스레드가 우선순위가 높음에도 늦게 실행되는 '우선순위 역전' 현상이 일어남.
Lock aquire , Lock lease , 우선순위 초기화 과정을 통해 이러한 오류를 해결
목요일에 thread_alarm , thread_priority 까지 해결하였음.
PintOS는 앞으로 약 1달에 걸쳐 사용해야 하는 코드이니 기초를 잘 닦아야 겠다고 생각함.
PintOS 코드의 정확한 이해를 위해 모든 코드에 주석을 달고 해석.
-> 실제로 번역한 PintOS주석 , 이 외에도 주석이 없는 코드에도 설명을 달았음.
코딩을 처음 시작한 비전공자도 있었고, C언어에도 익숙하지 않았음.
생소한 로직과 구현이라 구조를 파악하는것 조차 불가능
책에서 읽었던 코드를 적용시키는 것이 힘듬
3만줄이라는 압도적인 코드를 과소평가 해서 세세하게 파고들다 시간낭비를 많이 함.
-> 1주일 안에 파악하기에는 너무나도 많은 양의 코드들
과제에서 제시된 요구사항을 키워드를 중심으로 전체 흐름을 파악하는 느낌으로 학습
요구사항을 최대한 빨리 파악한 후, 필요한 함수를 코어타임때 취사선택해서 프로젝트를 시작
같은 조원 뿐만 아니라 다른 팀의 조원과도 활발한 정보교환을 추구
로직이 구현된 코드 리뷰를 조원끼리 한 후, 어떠한 방법으로 테스트를 통과했는지 팀원과 공유
팀원과 공유를 할 때 상황에 따라서 유연한 방식으로 진행
진도가 빠른 팀원들이 다른 조원들에게 과제의 포인트를 알려주기
-> 실제로 프로젝트 시작을 할 때 자료를 보며 공부하는 시간이 길었지만 이후 적극적인 정보교환과 코어타임으로 진행 속도를 증가시킴.