Alarm
-
[Pintos] Project 1 - Alarm-Clock개발 공부의 시작/pintos 2022. 11. 18. 01:23
문제 상황: Alarm clock은 호출한 프로세스를 정해진 시간 이후에 다시 시작하도록 하는 함수이다. 하지만 Pintos에서는 해당 기능이 Busy Waiting 방식으로 구현되어 있다. void timer_sleep (int64_t ticks) { int64_t start = timer_ticks (); ASSERT (intr_get_level () == INTR_ON); while (timer_elapsed (start) < ticks) thread_yield (); } timer.c의 timer_sleep이라는 함수를 통해 tick동안 시간이 경과되지 않은 스레드는 CPU를 점유할 수 없도록 구현되어 있다. 하지만 현재시간을 확인하고 충분한 시간이 경과할 때 까지 계속해서 thread_yield..