๐Ÿ“˜ ์šด์˜์ฒด์ œ ์‹œํ—˜ ์˜ˆ์ƒ๋ฌธ์ œ (ch26 ~ ch30 ๊ธฐ๋ฐ˜) ๊ฐ ์ฑ•ํ„ฐ๋ณ„ ์˜ˆ์ƒ๋ฌธ์ œ 3๊ฐœ ์ด์ƒ, ์ด 15๋ฌธ์ œ


๐Ÿ”น ch26. Concurrency: An Introduction

1. ์„œ์ˆ ํ˜•

Race Condition์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ๋ฒ•๋“ค์ด ์‚ฌ์šฉ๋˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.

์ •๋‹ต: ๊ณต์œ  ์ž์›์„ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜์—ฌ ์‹คํ–‰ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: Mutual Exclusion, Atomic Operation, Lock.

2. ๋‹จ๋‹ตํ˜•

์ž„๊ณ„ ์˜์—ญ(Critical Section)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์ •๋‹ต: ๋‘˜ ์ด์ƒ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ณต์œ  ์ž์› ์ ‘๊ทผ ์ฝ”๋“œ ๊ตฌ์—ญ

3. ๊ฐ๊ด€์‹

Atomicity๋ฅผ ๋ณด์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์˜ณ์ง€ ์•Š์€ ๊ฒƒ์€?

โ‘  Test-and-Set ์‚ฌ์šฉ โ‘ก ์ธํ„ฐ๋ŸฝํŠธ ๋น„ํ™œ์„ฑํ™” โ‘ข ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ์‚ฌ์šฉ โ‘ฃ Compare-and-Swap ์‚ฌ์šฉ

์ •๋‹ต: โ‘ข


๐Ÿ”น ch27. Interlude: Thread API

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;
}