크래프톤정글7주차 - PintOS 1주 회고

김태성·2024년 3월 9일
0
post-thumbnail

서론

PintOS란 무엇인가?

  • 교육용으로 만들어진 최소 기능만 구현한 Project OS

무엇을 해야 하는가?

  • 1주차는 thread의 이해를 돕기 위한 Alarm Clock , Priority Scheduling








1주차 프로젝트 목표

1. Alarm Clock

  • 처음 PintOS는 blocked 상태일때 들어갈 수 있는 sleep_list가 구현되어 있지 않음.

  • sleep_list와 일정 시간이 지날때 스레드를 자동으로 wakeup()를 할 수 있는 코드를 구현.

2. Priority Scheduling

  • 단순히 Priority를 사용한 우선순위 스케줄링을 할 때, semaphore를 공유하는 스레드가 우선순위가 높음에도 늦게 실행되는 '우선순위 역전' 현상이 일어남.

  • Lock aquire , Lock lease , 우선순위 초기화 과정을 통해 이러한 오류를 해결

결과

목요일에 thread_alarm , thread_priority 까지 해결하였음.







프로젝트 피드백

처음 설정한 목표(방향성)

  • PintOS는 앞으로 약 1달에 걸쳐 사용해야 하는 코드이니 기초를 잘 닦아야 겠다고 생각함.

  • PintOS 코드의 정확한 이해를 위해 모든 코드에 주석을 달고 해석.


-> 실제로 번역한 PintOS주석 , 이 외에도 주석이 없는 코드에도 설명을 달았음.

경험한 문제점

  • 코딩을 처음 시작한 비전공자도 있었고, C언어에도 익숙하지 않았음.

  • 생소한 로직과 구현이라 구조를 파악하는것 조차 불가능

  • 책에서 읽었던 코드를 적용시키는 것이 힘듬

  • 3만줄이라는 압도적인 코드를 과소평가 해서 세세하게 파고들다 시간낭비를 많이 함.


-> 1주일 안에 파악하기에는 너무나도 많은 양의 코드들

개선을 위한 방법들

  • 과제에서 제시된 요구사항을 키워드를 중심으로 전체 흐름을 파악하는 느낌으로 학습

  • 요구사항을 최대한 빨리 파악한 후, 필요한 함수를 코어타임때 취사선택해서 프로젝트를 시작

  • 같은 조원 뿐만 아니라 다른 팀의 조원과도 활발한 정보교환을 추구

  • 로직이 구현된 코드 리뷰를 조원끼리 한 후, 어떠한 방법으로 테스트를 통과했는지 팀원과 공유

  • 팀원과 공유를 할 때 상황에 따라서 유연한 방식으로 진행

  • 진도가 빠른 팀원들이 다른 조원들에게 과제의 포인트를 알려주기

-> 실제로 프로젝트 시작을 할 때 자료를 보며 공부하는 시간이 길었지만 이후 적극적인 정보교환과 코어타임으로 진행 속도를 증가시킴.

profile
닭이 되고싶은 병아리

0개의 댓글

관련 채용 정보