Alarm Clock - gon2gon2/pintos-kaist GitHub Wiki
๋ฌธ์
- ํ์ฌ
timer_sleep
์ ํธ์ถ ์ input์ผ๋ก ์ค tick์ ํ์ฌ tick๊ณผ ๊ณ์ ๋น๊ตํ์ฌ while๋ฌธ์ ์กฐ๊ฑด์ด False๊ฐ ๋ ๋๊น์ง ๋ฌดํ์ CPU๋ฅผ ์๋ณดํ๋ค. ์ด๋ ๊ฒ ๋๋ฉด CPU๋ ์๋ฏธ์๋ ์ปจํ
์คํธ ์ค์์นญ์ ์๊ฐ์ ๋ญ๋นํ๊ฒ ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ์คํ๋ฝ(busy wait)์ด๋ผ๊ณ ํ๋ค.
ํด๊ฒฐ์ฑ
- ์ค๋ ๋๋ฅผ blocked ์ํ๋ก ๋ง๋ค์ด CPU๊ฐ ํด๋น ์ค๋ ๋๋ก ์ปจํ
์คํธ ์ค์์นญ์ ํ์ง ์๊ฒ ๋ง๋๋ค. blockํ๋ฉด์ sleep_list์ ํด๋น ์ค๋ ๋๋ฅผ ์ถ๊ฐํ๊ณ , ์ค๋ ๋๋ฅผ ๊นจ์์ผ ํ๋ ์ต์ ์๊ฐ์ ๊ฐฑ์ ํ๋ค. timer_interrupt๊ฐ ๋ฐ์ํ์ ๋, ๋ง์ฝ ์ค๋ ๋๋ฅผ ๊นจ์์ผ ํ๋ ์ต์ ์๊ฐ์ด ์ง๋ฌ๋ค๋ฉด thread_awakeํจ์๊ฐ sleep_list๋ฅผ ์ํํ๋ฉฐ ๊นจ์์ผ ํ ์ค๋ ๋๋ค์ ๊นจ์์ค๋ค.