๐ threads/
โโโ thread.h โ ์ฐ์ ์์ ํ๋ ๋ฐ ํจ์ ์ ์ธ
โโโ thread.c โ ์ค์ผ์ค๋ง ๋ก์ง, donation, ready_list ์ฒ๋ฆฌ
โโโ synch.c โ ์ธ๋งํฌ์ด, ๋ฝ, ์กฐ๊ฑด๋ณ์ โ donation ๋ฐ์
โโโ synch.h โ ๊ด๋ จ ๊ตฌ์กฐ์ฒด ํ๋ ์ถ๊ฐ

๐ ์ธ๋งํฌ์ด(Semaphore)๋?
์ธ๋งํฌ์ด๋ ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋ "ํ๊ฐ์ฆ" ๊ฐ์ ์ญํ ์ ํ๋ ๋ณ์์ผ.
๋ชฉ์ : ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ํ๋์ ์์์ ์ ๊ทผํ๋ ค๊ณ ํ ๋, ์ถฉ๋์ ๋ง๊ธฐ ์ํด ์ฌ์ฉํจ.
- sema_down()
ํ๊ฐ์ฆ์ ํ๋ํ๋ ค๋ ์๋. ํ๊ฐ์ฆ์ด ์์ผ๋ฉด waiters ๋ฆฌ์คํธ์ ๋ค์ด๊ฐ์ block ์ํ๋ก ์ ํ๋จ- sema_up()
ํ๊ฐ์ฆ์ ๋ฐํ. waiters ๋ฆฌ์คํธ์์ ์ฐ์ ์์ ๋์ ์ค๋ ๋๋ฅผ ๊นจ์ unblock- waiters ๊ธฐ๋ค๋ฆฌ๋ ์ค๋ ๋ ๋ชฉ๋ก (์ ๋ ฌ ๊ธฐ์ค: priority)
Main goal
ํ์ฌ PintOS ์ค์ผ์ค๋ฌ๋ FIFO ๋ฐฉ์ โ ์ฐ์ ์์ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ ๋ชฉํ
๐ฏ ๋ชฉํ
๐ ๊ตฌํ์์ ๊ณ ๋ คํ ํต์ฌ ์ธ ๊ฐ์ง
1. Priority Scheduling
ready_list์์ ํญ์ priority ๋์ ์ค๋ ๋ ๋จผ์ ์คํ
์ ์ค๋ ๋๊ฐ ๋ค์ด์ค๋ฉด ํ์ฌ running ์ค๋ ๋์ ์ฐ์ ์์ ๋น๊ต