[크래프톤 정글 2기] Day 60
회고
오늘은 핀토스 프로젝트 1의 주간 공유(과제 발표)를 하는 날이다. 발표는 깃헙 레포에 기록한 WIL을 기준으로 진행한다. 그래서 전날 새벽 4시까지 WIL을 열심히 작성했다. 프로젝트 1을 진행하면서 느낌 점, 어려웠던 점, 과제에서 배운 것, 스레드 스케줄링이란, 우선순위 도네이션이란 무엇인지 등을 기록하고 앞에서 준비한 대로 발표한다. 발표는 문제없이 마무리했다.
Pint OS 프로젝트 1을 수행하며
Pint OS가 특히 어렵긴 하다. 이전까지의 과제는 그래도 할만했는데, 이번부터는 아예 솔루션 보는 것이 금지되었기에 스스로의 힘 만으로 과제를 해결해야 했다. 특히 동료학습이 중요해졌는데, 서로 틀린 것을 고치고 아는 것을 공유하며 수월하게 공부할 수 있었다.
어려웠던 것은 OS 개념을 이해하는 것이었다. 프로젝트 1을 수행하는 데만 해도 공부해야 할 개념이 무척 많았다. 스레드, 인터럽트, 동시성, 병렬성, 스케줄링, Race Condition, 상호 배제, Priority Scheduling, Priority Donation, 락, 컨디션 변수, 세마포어. 책을 읽고 구글링을 하고 챗지피티에게 물어보며 공부를 진행했지만, 단순히 공부해야 할 양이 많아서 힘들었던 것 같다. 그 중에서도 특히 어려웠던 것은 락, 컨디션 변수, 세마포어이다. 개념이 다르면서도 상호보완하는 개념이라 차이점을 아는 것이 어렵게 느껴졌다.
가장 어려웠던 것은 역시 구현이다. Alarm Clock을 구현하는 것부터 어려웠는데, Priority Donation은 정말 구현을 어떻게 시작해야 할지 감도 안 온다. 그래서 우리 팀이 택한 방법은 솔루션을 보고 최대한 이해하면서 개선하는 것이었다. 코치님들은 권장하지 않았지만, 이 방법은 나름 효율적이다. 이미 작동하는 코드를 보면서 왜 그런지를 이해하고, 배운 개념을 적용하면서 비합리적인 코드를 발견하면 개선한다. Priority Donation을 이런 방법으로 구현했다. 확실히 처음부터 구현하는 것보다는 학습의 질이 떨어지겠지만, 부족한 시간 내에서 효율적으로 공부하기에는 적합했다.
핀토스의 첫 프로젝트를 진행하며 특히 동료들과 의견을 많이 주고받았다. 내가 아는 것을 설명하다가도 헛점이 생기면 다시 공부를 하게 된다.
하루를 마치며
코로나 확진자가 3명 늘어나서 오늘은 저녁 9시부터 강의실 소독을 진행하게 되었다. 그래서 강의실에서 공부를 하지 못하게 되었다. 그래서 프로젝트 1도 끝난 김에 회식을 다녀왔다. 재밌었다.