Process Synchronization - hochan222/Everything-in-JavaScript GitHub Wiki
๋ฐ๋ก๊ฐ๊ธฐ
๋ฐ๋ก๊ฐ๊ธฐ
๋ฐ๋ก๊ฐ๊ธฐ
๋ฐ๋ก๊ฐ๊ธฐ
ํ๋ก์ธ์ค ๋๊ธฐํ(Concurrency Control) ๋ฐ Deadlock
Race Condition
OS์์ Race Condition์ ์ธ์ ๋ฐ์ํ๋๊ฐ?
-
์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ด ๋์์ ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ์ํฉ
-
kernel ์ํ ์ค ์ธํฐ๋ฝํธ ๋ฐ์ ์
-
Process๊ฐ system call์ ํ์ฌ kernel mode๋ก ์ํ์ค์ธ๋ฐ context switch๊ฐ ์ผ์ด๋๋ ๊ฒฝ์ฐ
-
Multiprocessor์์ shared memory๋ด์ kernel data
The Critical-Section Problem
- n๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ๋ ๊ฒฝ์ฐ
- ๊ฐ ํ๋ก์ธ์ค์ code segment์๋ ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ์ฝ๋์ธ critical section์ด ์กด์ฌ
- ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ์ฝ๋๋ฅผ Critical Section์ด๋ผ๊ณ ํ๋ค.
ํ๋ก๊ทธ๋จ์ ํด๊ฒฐ๋ฒ์ ์ถฉ์กฑ ์กฐ๊ฑด
- Peterson's Algorithm
- Busy Waiting(=spin lock)
Synchromization Hardware
- Test_and_set(a)
Semaphores
- integer variable
- ์๋์ ๋๊ฐ์ง atomic ์ฐ์ฐ์ ์ํด์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- p ์ฐ์ฐ์ ์ธ๋งํฌ์ด ๋ณ์๋ฅผ ํ๋ํ๋ ๊ณผ์ ์ด๊ณ , v ์ฐ์ฐ์ ๋ค ์ฌ์ฉํ๊ณ ๋์ ๋ฐ๋ฉํ๋ ๊ณผ์ ์ด๋ค.
busy-wait vs block / wake up
Two type of semaphores
- Counting semaphore
- ๋๋ฉ์ธ์ด 0 ์ด์์ธ ์์์ ์ ์๊ฐ
- ์ฃผ๋ก resource counting์ ์ฌ์ฉ
- Binary semaphore(=mutex)
- 0 ๋๋ 1 ๊ฐ๋ง ๊ฐ์ง ์ ์๋ semaphore
- ์ฃผ๋ก mutual exclusion (lock/unlock)์ ์ฌ์ฉ
Deadlock and Starvation
- Deadlock
- ๋ ์ด์์ ํ๋ก์ธ์ค๊ฐ ์๋ก ์๋๋ฐฉ์ ์ํด ์ถฉ์กฑ๋ ์ ์๋ event๋ฅผ ๋ฌดํํ ๊ธฐ๋ค๋ฆฌ๋ ํ์
- Starvation
- indefinite blocking ํ๋ก์ธ์ค๊ฐ suspend๋ ์ด์ ์ ํด๋นํ๋ ์ธ๋งํฌ์ด ํ์์ ๋น ์ ธ๋๊ฐ ์ ์๋ ํ์
Classical Problems of Synchronization
- Bounded-Buffer Problem (Producer-Consumer Problem)
- Readers and Writers Problem
- Dining-Philosophers Problem
Bounded-Buffer Problem (Producer-Consumer Problem)
Readers and Writers Problem
- ํ process๊ฐ DB์ write์ค์ผ ๋ ๋ค๋ฅธ process๊ฐ ์ ๊ทผํ๋ฉด ์๋จ
- read๋ ๋์์ ์ฌ๋ฟ์ด ํด๋๋จ
- solution
- Writer๊ฐ DB์ ์ ๊ทผ ํ๊ฐ๋ฅผ ์์ง ์ป์ง ๋ชปํ ์ํ์์๋ ๋ชจ๋ ๋๊ธฐ์ค์ธ Reader๋ค์ ๋ค DB์ ์ ๊ทผํ๊ฒ ํด์ค๋ค
- Writer๋ ๋๊ธฐ์ค์ธ Reader๊ฐ ํ๋๋ ์์ ๋ DB์ ๊ทผ์ด ํ์ฉ๋๋ค
- ์ผ๋จ Writer๊ฐ DB์ ์ ๊ทผ ์ค์ด๋ฉด Reader๋ค์ ์ ๊ทผ์ด ๊ธ์ง๋๋ค.
- Writer๊ฐ DB์์ ๋น ์ ธ๋๊ฐ์ผ๋ง Reader์ ์ ๊ทผ์ด ํ์ฉ๋๋ค.
Reader๊ฐ ๊ณ์ ๋ค์ด์ค๋ฉด Starvation ๋ฐ์๊ฐ๋ฅ.. Writer๊ฐ ๊ณ์ ๋ชปํจ..
Dining-Philosophers Problem
-
Deadlock ๊ฐ๋ฅ์ฑ์ด์๋ค.
-
๋ชจ๋ ์ฒ ํ์๊ฐ ๋์์ ๋ฐฐ๊ฐ ๊ณ ํ์ ธ ์ผ์ชฝ ์ ๊ฐ๋ฝ์ ์ง์ด๋ฒ๋ฆฐ ๊ฒฝ์ฐ
-
ํด๊ฒฐ๋ฐฉ์
- 4๋ช ์ ์ฒ ํ์๋ง์ด ํ ์ด๋ธ์ ๋์์ ์์ ์ ์๋๋กํ๋ค
- ์ ๊ฐ๋ฝ์ ๋ ๊ฐ ๋ชจ๋ ์ง์ ์ ์์ ๋์๋ง ์ ๊ฐ๋ฝ์ ์ง์ ์ ์๊ฒ ํ๋ค
- ๋น๋์นญ
- ์ง์(ํ์) ์ฒ ํ์๋ ์ผ์ชฝ(์ค๋ฅธ์ชฝ) ์ ๊ฐ๋ฝ๋ถํฐ ์ง๋๋ก
Monitor
- ๋ชจ๋ํฐ ๋ด์์๋ ํ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง์ด ํ๋๊ฐ๋ฅ
- ํ๋ก๊ทธ๋๋จธ๊ฐ ๋๊ธฐํ ์ ์ฝ ์กฐ๊ฑด์ ๋ช ์์ ์ผ๋ก ์ฝ๋ฉํ ํ์์์
- ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ํฐ ์์์ ๊ธฐ๋ค๋ฆด ์ ์๋๋ก ํ๊ธฐ ์ํด