회고
오늘부터 본격적으로 핀토스(Pint OS) 과제를 시작한다. 이번 과제는 주어진 강의자료와 주어진 코드만으로 개발해야 한다. 이전처럼 보고 하는 것은 권장하지 않더라.
핀토스는 스탠포드 대학교에서 개발된 간단한 OS 교육용 프로젝트이다. OS 자체는 구현되어있지만, 성능을 개선시키는 것이 우리의 과제이다. 4주에 걸쳐 진행되며 1주마다 구현해야 하는 파트가 다르다. 1주차는 thread, 2주차는 예외 처리... 한주 한주 과제를 해결하기 위해서는 주어진 강의자료와 CSAPP과 운영체제 교재를 꼼꼼히 읽어야 한다. 핀토스 과제부터는 특히 팀업을 중시한다. 한주 안에 과제를 해결하기 위해 공부할 분야를 정하고 언제부터 코딩을 할지 등을 계획한다.
핀토스의 첫 번째 과제는 thread 성능을 개선시키는 것이다. 기존의 핀토스는 쓰레드 스케줄링을 "busy waiting" 방식으로 구현했다. busy waiting 방식은 CPU 자원을 낭비시키고, 경과 시간이 타이머 tick의 정밀도에 의해 결정되기 때문에 정확한 대기 시간을 보장하지 못한다. 이것을 좀 더 나은 방식으로 개선시켜서 높은 점수를 받는 것이 첫 번째 과제의 첫 번째 목표이다. 두 번째 목표는 prority scheduling을 개선하는 것이다. 이 부분은 아직 읽지 못해서 넘긴다.
오후 11시까지 각자 공부를 하고 코딩을 진행하기로 했다. 로직은 알겠지만, 주어진 라이브러리 사용법이 어려워서 특히 헤맸다. thread 구조체를 담는 연결 리스트가 특히 어렵다. 로직에 맞게 구현했지만 절반 정도만 성공했다. 남은 건 내일 마무리할 생각이다. 내일 중으로 timer_sleep을 구현하고, 우선순위 스케줄링을 공부해야겠다.
오늘 저녁밥은 청년다방이다. 원래는 은화수식당에 가서 하와이안 돈까스를 먹고 싶었는데 폐업한 바람에 바로 옆에 있던 청년다방으로 발길을 돌렸다. 아쉽다. 폐업했으면 네이버 지도에서 지웠어야지.. 그래도 청년다방도 맛있었다.
TIL
- 프로세스와 쓰레드의 차이점에 대해 공부했다. 프로세스는 실행 중인 프로그램의 인스턴스, 쓰레드는 프로세스 내에서 실행되는 작업 단위이다. 프로세스는 최소한 하나의 쓰레드(메인 쓰레드)를 가진다. 프로세스들은 서로 데이터를 공유할 수 없지만, 한 프로세스 내의 쓰레드들은 데이터를 공유할 수 있다.
- 동시성과 병렬성은 다르다. 동시성은 동시에 실행되는 것처럼 보일 뿐, 실제로는 아주 빠른 속도로 작업을 번갈아가며 진행한다. 병렬성은 다중 코어 시스템에서 물리적으로 작업을 동시에 처리함으로써 성능을 향상시킨다.
'크래프톤 정글 2기' 카테고리의 다른 글
[크래프톤 정글 2기] Day 57 (0) | 2023.05.30 |
---|---|
[크래프톤 정글 2기] Day 55 (0) | 2023.05.28 |
[크래프톤 정글 2기] Day 53 (0) | 2023.05.27 |
[크래프톤 정글 2기] Day 52 (0) | 2023.05.25 |
[크래프톤 정글 2기] Day 51 (0) | 2023.05.24 |