Alarm Clock
devices/timer.c 에 정의되어 있는 timer_sleep()을 Reimplement(재구현하라)
작동하는 구현이 제공되지만 이것은 busy waits 합니다. 즉, 현재 시간을 확인하고 충분한 시간이 지날 때까지 thread_yield()를 호출하는 루프에서 회전합니다. busy waits 를 피하려면 다시 구현하세요.
void timer_sleep (int64_t ticks);
-시간이 x 타이머 틱 이상 진행될 때까지 호출 스레드의 실행을 일시 중단합니다. 시스템이 idle 상태가 아닌 한 스레드는 정확히 x 틱 후에 깨어날 필요가 없습니다. 적절한 시간 동안 기다린 후 준비 대기열(ready queue) 에 넣으면 됩니다.
timer_sleep()은 초당 한 번 커서를 깜빡이는 등 실시간으로 작동하는 스레드에 유용합니다. timer_sleep()의 인자는 밀리초나 다른 단위가 아닌 타이머 틱(timer ticks)으로 표현됩니다. 초당 타이머 틱은 TIMER_FREQ 타이머 틱이 있으며, 여기서 TIMER_FREQ는 devices/timer.h에 정의된 매크로입니다. 기본값은 100입니다. 이 값을 변경하면 많은 테스트가 실패할 수 있으므로 변경하지 않는 것이 좋습니다.
각각 특정 밀리초, 마이크로초 또는 나노초 동안 sleep 모드로 전환하기 위한 별도의 함수
timer_msleep()(밀리 초 -milliseconds), timer_usleep()(microseconds- 마이크로 초) 및
timer_nsleep()(나노 초 -nanoseconds )이 존재하지만, 이 함수들은 필요할 때 timer_sleep()을 자동으로 호출합니다. 이 함수들을 수정할 필요가 없습니다. alarm clock 구현은 이후 프로젝트에는 필요하지 않지만 프로젝트 4에는 유용할 수 있습니다.
'크래프톤 정글 > 핀토스(week08-13)' 카테고리의 다른 글
Project 1 : Threads - Advanced Scheduler (현재 공백. 추후 작업 예정- 이 부분은 과제에서 Extra로써 선택사항) (0) | 2023.06.23 |
---|---|
Project 1 : Threads - Priority Scheduling (수정중) (0) | 2023.06.23 |
Project 1 : Threads - Introtuction (급조번역(23.6.22).신용하지 말것- 수정중) (0) | 2023.06.23 |
Project 3 : Virtual Memory - Swap In/Out(기입완료-수정중) (0) | 2023.06.22 |
Project 3 : Virtual Memory - Memory Mapped Files (기입완료-수정중) (0) | 2023.06.21 |