pintOS Alarm Clock

c4fiber·2023년 12월 25일
0

SW사관학교 정글7기

목록 보기
38/49

busy wait 방식으로 thread_sleep으로 구현된 코드를 바꾸기 위해서 작성한 로직

blocked_list 를 생성해서 sleep 상태인 스레드는 block(status = blocked, blocked_list에 추가) 처리한다.

매 timer_interrupt가 발생했을 때 blocked_list를 탐색하면서 깨어나야할 스레드를 확인하고 unblock (ready_queue에 삽입 & status = ready)을 수행한다.

busy wait vs sleep-wake 비교

수정사항


blocked-list 를 sleep-list로 이름을 바꾸었다.

의미상으로는 sleep 기간동안 block된게 맞지만 block이라는 용어 자체가 너무 범용적이라는 생각이 들었다.
추후를 위해 block list로 명명후 다양한 곳에서 사용할 것이라 예상했지만 그렇지 않았다. (실제로 blocked-list 에서 스레드를 꺼낼때는 timer interrupt 뿐이였다.

-> YAGNI(You Ain't Gonna Need It)가 떠올랐다.

profile
amazing idiot

0개의 댓글