Week 08 ~ 13 : KAIST PintOS

[KAIST PintOS Project] PRJ 1을 마치며

정글러 2021. 12. 30. 10:58

각 파트의 문제점과 그것을 개선하기 위한 구현 방향을 정리해보았다.

 

각 파트를 어떻게 구현했는지는 따로 포스트로 정리하고 있다.

https://uneducatedjungler.tistory.com/141

 

[KAIST PintOS Project 1] 1. sleep and awake

KAIST 핀토스를 기반으로 만든 코드는 재배포가 불가능하다고 프로젝트 가이드라인의 legal issue에 명시되어있다. 라이센스를 찾아봤는데 프로젝트에 따라 자기가 작성한 부분도 배포가 불가능하

uneducatedjungler.tistory.com

https://uneducatedjungler.tistory.com/142

 

[KAIST PintOS Project 1] 2. priority scheduling

priority scheduling 지난 단계에서는 CPU를 정말로 쓸 스레드만 ready_list에 삽입하는 sleep & awake의 구현으로 불필요한 토스를 줄여 기능을 개선했다. 이번 단계의 목표는 수많은 ready 상태의 대기중인

uneducatedjungler.tistory.com

https://uneducatedjungler.tistory.com/143

 

[KAIST PintOS Project 1] 3. synchronization

synchronization 지난 단계에서는 선입선출의 queue 구조였던 ready_list를 스레드의 priority에 따르는 heap 구조로 바꾸어 보다 효율적인 스케줄링을 하도록 개선했다. 그런데 이와 같은 아이디어로 똑같

uneducatedjungler.tistory.com

(donation, mlfqs는 아직)

 

이번주에 무엇을 배웠는지 따지자면, 사실 OS가 어떻게 돌아가는지 이해하려고 했다기 보다는 당장의 문제 해결에 집중했다고 생각한다. 과제 자체가 이미 구현된 프로젝트에 어떤 부분 문제가 있고 그것을 어떻게 개선할지를 배워 실제로 개선해보는 시간의 연속이었기 때문이다.

전체를 이해하기 보다는 당장의 주어진 과제에 집중했는데, 그 과정에서 '이게 왜 문제가 되지', '이렇게 해도 될 것 같은데' 등의 의식의 흐름을 통해 OS의 스레드 시스템에 대해선 필요한 깊이만큼 자연스럽게 익혀나갔다고 생각한다. 그래서 사실 아직도 큰 흐름은 잘 모르고 있는 것 같지만, 프로젝트를 진행할수록 아는 것이 많아질 것이고 프로젝트를 끝낼 쯤에는 이것들이 하나로 맞물려 잘 이해한 상태가 되었을 거라 믿는다.