๐ ์ด์์ฒด์ ์ํ ์์๋ฌธ์ (ch26 ~ ch30 ๊ธฐ๋ฐ) ๊ฐ ์ฑํฐ๋ณ ์์๋ฌธ์ 3๊ฐ ์ด์, ์ด 15๋ฌธ์
1. ์์ ํ
Race Condition์ด๋ ๋ฌด์์ด๋ฉฐ, ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ๋ฒ๋ค์ด ์ฌ์ฉ๋๋์ง ์ค๋ช ํ์์ค.
์ ๋ต: ๊ณต์ ์์์ ๋ ๊ฐ ์ด์์ ์ฐ๋ ๋๊ฐ ๋์์ ์ ๊ทผํ์ฌ ์คํ ์์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ๋ฌธ์ . ํด๊ฒฐ ๋ฐฉ๋ฒ: Mutual Exclusion, Atomic Operation, Lock.
2. ๋จ๋ตํ
์๊ณ ์์ญ(Critical Section)์ด๋ ๋ฌด์์ธ๊ฐ? ์ ๋ต: ๋ ์ด์์ ์ฐ๋ ๋๊ฐ ๋์์ ์ ๊ทผํ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ ๊ณต์ ์์ ์ ๊ทผ ์ฝ๋ ๊ตฌ์ญ
3. ๊ฐ๊ด์
Atomicity๋ฅผ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ณ์ง ์์ ๊ฒ์?
โ Test-and-Set ์ฌ์ฉ โก ์ธํฐ๋ฝํธ ๋นํ์ฑํ โข ๋ค์ค ํ๋ก์ธ์ค ์ฌ์ฉ โฃ Compare-and-Swap ์ฌ์ฉ
์ ๋ต: โข
4. ๋จ๋ตํ
User-level thread์ Kernel-level thread์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์์ค.
์ ๋ต: User-level thread๋ ์ฌ์ฉ์ ์์ญ์์ ๊ด๋ฆฌ๋๊ณ ์ปค๋์ ์์ง ๋ชปํจ. Kernel-level์ ์ปค๋์ด ์ค์ผ์ค๋ง.
5. ์ฝ๋ ๋ถ์ํ
์๋ ์ฝ๋์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋?
void *mythread(void *arg) {
myret_t r;
r.x = 1; r.y = 2;
return (void *)&r;
}