[WIL8] Pintos Project 1

민픽minpic·2023년 6월 12일
0

크래프톤 정글

목록 보기
6/7

3주 동안 project1 과 2를 진행했다.
진행해온 경험을 바탕으로 3주간의 회고를 해보려고 한다.
(해당 글은 project1 에 대한 내용만을 포함한다)

해당 글을 읽게 된다면, 어떠한 시도를 했는지 그리고 결과가 어땠는지에 대한 내용과 추천 방법에 대한 내용을 볼 수 있을 것 같다.

팀 주간 공유에 대한 자료와 기술적인 부분들은 시리즈 Pintos 에서 볼 수 있다.
링크 : https://velog.io/@minpic/series/Pintos

PROJECT 1

Alarm Clock

우선 1주 동안 project1 을 진행했다.
주어진 gitbook, 카이스트 강의, 카이스트 ppt자료를 읽고 어떻게 프로젝트를 진행하면 좋을지 고민했다. 그리고 gitbook 자료를 토대로 구현을 시작해 나갔다.

초반에 Alarm Clock gitbook 을 보면 timer_sleep 함수를 busy_waiting 을 피하도록 구현하라고 되어있다. 그래서 친절하게 어떠한 함수를 어떻게 돌아가도록 구현하라고 나와있기 때문에 gitbook이 하라는 대로 그냥 차근차근이 구현하면 되겠구나 생각했다.

Reimplement timer_sleep(), defined in devices/timer.c.
Although a working implementation is provided, it busy waits, that is, it spins in a loop checking the current time and calling thread_yield() until enough time has gone by. Reimplement it to avoid busy waiting.

하지만, 이 덧에 넘어가지 말라.. 앞으로의 gitbook 은 이렇게 친절하지 않다.

해당 함수를 구현하기 전에, 나는 전반적으로 해당 함수가 왜 필요한지, 언제 호출되는지, 지금과 같은 방식이면 무엇이 문제인지 등을 전혀 고려하지 않았다.
그저 gitbook이 주어준 대로 구현하려고 하지말고, 항상 물음을 던져야 한다.
더불어 이미 주어진 내장함수들이 무엇이 있는지 확인하고 구현을 시작해야 구현을 수월하게 할 수 있다.
그래서 gitbook을 보고 구현하다가, 한양대 수업 자료인 Pintos 자료를 확인하여 구현을 시작했다. 한양대 수업자료는 카이스트 ppt 보다 더 자세하게 구현해야할 부분들을 적어 놓았고, 한국어로 되어있어서 보기 편하다.

그리고 나서야 Alarm Clock 을 구현할 수 있었다.

TIPS

Alarm Clock 을 구현해야 한다면, 다음과 같은 순서를 생각하며 구현하면 좋을 것 같다.

  1. gitbook과 카이스트 강의를 보고 전체적으로 구현해야하는 부분을 생각해본다.
  2. System Tick 에 대해서 알아보기
  3. Timer interrrupt 에 대해서 알아보기
  4. 주어진 기본 timer_sleep() 이 작동하는 방식 그리고 무엇이 문제인지
  5. 그래서 어떻게 바꿔야 할지 생각해보기

Priority Scheduling

Alarm clock 이 오 쉬운데, 싶었다면.. 점점 어려워지니까 오만하지 말고... 집중해야된다. 😂

이 때부터는 한양대 ppt 자료를 기준으로 계속 구현을 해나갔던 것 같다.
그런데 이 때도 구현해야될 부분에 대한 큰 그림을 그리지 못하고 구현을 시작했던 부분이 아쉬웠다.

ppt 자료에 어떻게 구현하면 될지 자세하게 다 나와있다. 그런데 중요한건 내가 아는 개념과 연결 시켜서 구현을 해서 완벽한 이해를 하는게 중요한데, 그러지 못했다.
그리고 해당 부분은 alram clock 보다 문법적으로 더 구현난이도가 높기에 많은 시간을 투자해야 된다.

TIPS

시간이 된다면 운영체제 수업을 듣고 시작하는 것을 추천한다.
프로세스, 스케줄링, 동기화 개념을 잘 파악하고 들어가는게 중요한 것 같다.
특히 도네이션, 세마포어, 락 개념도 잘 정리하고 넘어가는 것을 추천한다.

그리고 gitbook 과 한양대 ppt 자료를 보면서 구현했다. 그리고 구현하면서 예외처리를 잘 해줘야 한다.

profile
사진찍는 개발자 / 한 가지 개념이라도 깊이있게

0개의 댓글