WEEK08 Pintos Project 회고

0

pintos-project

목록 보기
4/8

Pintos

악명 높은 pintos 프로젝트가 시작됐다.
이번 주에는 thread가 어떻게 만들어지며 관리되고 자원을 어떻게 사용하는지에 대해 다뤘다.

AlamSystem 링크

기존의 BusyWating 방식에서 Sleep Wake방식으로 바꾸는 과제였다.
cpu가 인터럽트를 발생시킬때마다 tick을 올려서 시간을 관리하는 것을 보고 신기했었는데
인터럽트에 대해서 알아보고 싶어서 깊게 들어가니 어셈블리어 언어가 나왔는데
더 이상 이해못하고 넘어 갔던 아쉬움이 남는다.

Priority Scheduling

기존에 구현한 alarmSystem에서의 thread들은 FIFO방식으로 스케줄링 되는데,
이것을 우선순위를 부여해 관리하게 하는 과제였다.
정렬해서 넣어주는 코드만 구현해주면 되는 문제였기 때문에 굉장히 수월하게 해결했다.

Priority inversion problem - donation

thread의 우선순위에 따라 preemption이 일어날때 발생하는 priority inversion problem을 donation으로 해결하는 과제였다.
여러가지 찾아보다가 그림으로 설명해둔 블로그를 보게되었는데, 이해하는데 굉장히 도움을 많이 받았다.

아쉬웠던 점

  • 3명이서 한팀을 이뤄 과제를 하게 되었는데, git을 최대한 활용하고 싶었으나, 분량이 생각보다 혼자서 할만하기도 하고, 같은 모니터를 보며 코딩을 하기도 해서 한명이 대표로 git에 commit했다. 프로젝트2부터는 분량을 나누어서 git으로 협업해보고싶다.
  • 코드 분량이 많다보니 오타나 잘못 코딩한곳을 찾기가 힘들었다.
  • 구현하느라 바빠서 블로그 정리할 시간이 없었다. 현재는 alarmclock만 블로그에 정리해놓았는데, 시간 날때 틈틈히 정리해서 올려야겠다.
  • 잠을 못잤다. 아쉬움에 3시, 4시까지 하다보니 다음 날에 너무 힘들다. 지금도 새벽 3시..
  • 자료를 찾으려고 여러가지 사이트를 많이 돌아다녔는데, 생각보다 pintos 코드 내에 설명히 자세히 적혀있었다. 다음주부터는 코드 정독해서 함수와 변수를 익히고 싶다.

0개의 댓글