๐ ๋ณํ์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ์ฐจ์ด
- ๋ณํ์ฑ(Concurrency): ์ฌ๋ฌ ์์
์ด ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์ค์ ๋ก๋ ์์ ๋จ์๋ก ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํ๋๋ค.
- ์๋ฅผ ๋ค์ด, ๋จ์ผ ์ฝ์ด CPU์์ ๋ฉํฐํ์คํน์ ์ํํ ๋ ๋ณํ์ฑ์ด ์ ์ฉ๋๋ค.
- ๋ณ๋ ฌ์ฑ(Parallelism): ์ฌ๋ฌ ์์
์ด ์ค์ ๋ก ๋์์ ์คํ๋๋ค.
- ๋ฉํฐ์ฝ์ด CPU์์๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ฝ์ด์์ ๋์์ ์คํ๋ ์ ์์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
๐ ํ๋ก์ธ์ค ๋๊ธฐํ์ ํ์์ฑ
[์ด์์ฒด์ ] 2. ํ๋ก์ธ์ค์ ์ค๋ ๋ : PCB, TCB, ํ๋ก์ธ์ค์ ์ํ ์ ์ด, IPC
1. ์ด์์ฒด์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์๋ ๋งํฌ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค. [์ด์์ฒด์ ] 1. ์ด์์ฒด์ ๊ธฐ๋ณธ ๊ฐ๋ : ์ปค๋, ์์คํ ์ฝ, ์ธํฐ๋ฝํธ, DMA, ๋ฉํฐํ๋ก๊ทธ๋๋ฐ ์์คํ ๐ ์ด์์ฒด์ ์ ์ญํ ๊ณผ ์ปค๋์ ๊ธฐ๋ฅ
sxunea.tistory.com
์ด์ ๊ธ์์ ์ธ๊ธํ๋ฏ์ด ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ๋์์ ์ ๊ทผํ๋ฉด ๊ฒฝ์์ํ๊ฐ ๋ฐ์ํด ๋์์ฑ ์ด์ (๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ๋ฌธ์ )๊ฐ ๋ฐ์ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ ๊ฐ์ ์ค๋ ๋๊ฐ ๊ฐ์ ๋ณ์๋ฅผ ๋์์ ์์ ํ๋ ค ํ๋ฉด ์์์น ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋ก์ธ์ค ๋๊ธฐํ๊ฐ ํ์ํ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ฐ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๋ค.
๐ Critical Section๊ณผ Race Condition
๊ณต์ ์์๊ณผ ๊ฒฝ์ ์ํ (Race Condition)
๊ณต์ ์์์ ์์คํ ์์์ ๊ฐ ํ๋ก์ธ์ค, ์ค๋ ๋๊ฐ ํจ๊ป ์ ๊ทผํ ์ ์๋ ๋ชจ๋ํฐ, ํ๋ฆฐํฐ, ๋ฉ๋ชจ๋ฆฌ, ํ์ผ, ๋ฐ์ดํฐ ๋ฑ์ ์์์ด๋ ๋ณ์ ๋ฑ์ ๋งํ๋ค. ์ด ๊ณต์ ์์์ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฝ๊ฑฐ๋ ์ฐ์ด๋ ์ํฉ์ ๊ฒฝ์ ์ํ(race condition)๋ผ๊ณ ํ๋ค. ์ด ๋๋ฌธ์ ์ ๊ทผ์ ํ์ด๋ฐ์ด๋ ์์ ๋ฑ์ด ๊ฒฐ๊ณผ๊ฐ์ ์ํฅ์ ์ค๋ค. ๊ฒฝ์์ํ๊ฐ ๋ฐ์ํ๋ ์์๋ ์๋์ ๊ฐ๋ค.
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค
- ์ปค๋ ๋ชจ๋์์ ์์ ์ํ ์ค ์ธํฐ๋ฝํธ ๋ฐ์
- ์์คํ ์ฝ ํธ์ถ ํ ์ปจํ ์คํธ ์ค์์น ๋ฐ์
- ๋ฉํฐ ํ๋ก์ธ์ ํ๊ฒฝ์์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ
Critical Section (์๊ณ ์์ญ)

์๊ณ ์์ญ์ด๋ ๋์์ ์ ๊ทผํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ ๊ณต์ ์์์ ๋ณดํธํด์ผ ํ๋ ์ฝ๋ ์์ญ์ด๋ค. ์๊ณ์์ญ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ค์์ด ์๋ค.
์ํธ ๋ฐฐ์ (mutual exclusion)
- ํ ํ๋ก์ธ์ค๊ฐ ์๊ณ๊ตฌ์ญ์ ๋ค์ด๊ฐ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์๊ณ๊ตฌ์ญ์ ๋ค์ด๊ฐ ์ ์๋ค
- ์ : ๋ฎคํ ์ค, ๋ชจ๋ํฐ, ์คํ๋ฝ
ํ์ ๋๊ธฐ(bounded waiting)
- ์ํธ ๋ฐฐ์ ๋๋ฌธ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ ํ๋ก์ธ์ค๊ฐ ๋ฌดํ ๋๊ธฐํ์ง ์์์ผ ํ๋ค. ์ฆ, ๊ณต์ ์ฑ์ ๋ณด์ฅํด ์ผ์ ํ ์์๋๋ก ์ ๊ทผํ ์ ์๊ฒ ํ๋ค
- ๋ฌดํ ๋๊ธฐ๊ฐ ๋ฐ์ํ๋ฉด ๊ธฐ์ ์ํ๊ฐ ๋๊ธฐ ๋๋ฌธ
- ์ : ์ธ๋งํฌํฐ, ์กฐ๊ฑด ๋ณ์
์งํ์ ์ตํต์ฑ(progress flexibility, progress)
- ์๊ณ์์ญ์ ์๋ฌด๋ ์์ผ๋ฉด, ๊ธฐ๋ค๋ฆฌ์ง ๋ง๊ณ ์ฆ์ ์ ๊ทผ ๊ฐ๋ฅํด์ผ ํ๋ค. == ๋ถํ์ํ ๋๊ธฐ ์์ ์
- ์ : CAS(Compare-And-Swap), Ticket Lock, Fair Lock
๐ ๋๊ธฐํ๋ฅผ ์ํ ์ฃผ์ ๋๊ตฌ - 1. ๋ฎคํ ์ค (Mutex)

๋ฎคํ ์ค๋ Mutual Exclustion ์ ์ค์์ผ๋ก, ํ๋์ ํ๋ก์ธ์ค๋ง ์๊ณ ๊ตฌ์ญ์ ์ ๊ทผํ๋๋ก ๋ณด์ฅํ๋ ๋ฝ ๋ฉ์ปค๋์ฆ์ด๋ค
ํน์ง
- ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ๋ฝ์ ๊ฐ์ง ์ ์๊ณ , ๋ฝ์ ์์ ํ ํ๋ก์ธ์ค๋ง ํด์ ๊ฐ ๊ฐ๋ฅํ๋ค
- lock()์ผ๋ก ์๊ณ ๊ตฌ์ญ์ ์ง์ , unlock()์ผ๋ก ๋ฝ ํด์
๋์ ๊ณผ์
- ์ค๋ ๋ A๊ฐ lock()์ ํธ์ถํ์ฌ ๋ฎคํ ์ค๋ฅผ ํ๋
- ์ค๋ ๋ A๊ฐ ์๊ณ ๊ตฌ์ญ ์ฝ๋ ์คํ
- ์ค๋ ๋ A๊ฐ unlock()์ ํธ์ถํ์ฌ ๋ฝ ํด์
- ๋๊ธฐ ์ค์ด๋ ์ค๋ ๋ B๊ฐ lock()์ ํ๋ํ๊ณ ์คํ
๐ ๋๊ธฐํ๋ฅผ ์ํ ์ฃผ์ ๋๊ตฌ - 2. ์ธ๋งํฌ์ด (Semaphore)

์ธ๋งํฌ์ด๋ ์๊ณ ๊ตฌ์ญ์ ์ ๊ทผํ ์ ์๋ ์ค๋ ๋ ์๋ฅผ ์ ํํ๋ ๋๊ธฐํ ๊ธฐ๋ฒ์ผ๋ก, ์๊ทธ๋ ๋ฉ์ปค๋์ฆ์ด๋ค.
ํน์ง
- ์ธ๋งํฌ์ด ๋ณ์ S๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์์์ ๊ฐ์๋ฅผ ์๋ฏธํ๋ค.
- lock์ ์ป์ด์ ์์์ ์ฌ์ฉํ ๋๋ wait(P ์ฐ์ฐ)์ S๋ฅผ ๊ฐ์์ํค๊ณ , ์์์ ํด์ ํ ๋๋ signal(V ์ฐ์ฐ)์ S๋ฅผ ์ฆ๊ฐ์ํจ๋ค
- ์ค๋ ๋๊ฐ ์์์ ์์ ํ์ง ์์๋ ํด์ ๊ฐ๋ฅํ๋ค
์ข ๋ฅ
- ์ด์ง ์ธ๋งํฌ์ด (Binary Semaphore): S์ ๊ฐ์ด 0๊ณผ 1์ธ ์ธ๋งํฌ์ด
- mutex lock๊ณผ ์ ์ฌ
- mutex๋ lock์ ๊ฑด ํ๋ก์ธ์ค๋ง ํด์ ํ ์ ์์ง๋ง, ์ธ๋งํฌ์ด๋ ์๊ด์๋ค๋ ๊ฒ๋ง ์ฐจ์ด๊ฐ ์์
- ๊ณ์ํ ์ธ๋งํฌ์ด (Counting Semaphore): S ๊ฐ ์๊ด์์
- ์ธ๋งํฌ์ด ๋ณ์ S๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์์์ ๊ฐ์, ๋ฐ๋ผ์ 0์ด๋ฉด S๊ฐ 0 ์ด๊ณผ๊ฐ ๋ ๋๊น์ง ๋ธ๋กํน๋๋ค
- ์์ ํน์ง์ด ๊ณ์ํ ์ธ๋งํฌ์ด
๋์ ๊ณผ์
- ์ค๋ ๋๊ฐ wait(P) ํธ์ถ → S-- (์์ ์ฌ์ฉ)
- ์์์ด ์์ผ๋ฉด ๋ธ๋กํน(๋๊ธฐ)
- ๋ค๋ฅธ ์ค๋ ๋๊ฐ signal(V) ํธ์ถ → S++ (์์ ๋ฐํ)
- ๋๊ธฐ ์ค์ธ ์ค๋ ๋๊ฐ ๊นจ์ด๋์ ์คํ
๐ ๋๊ธฐํ๋ฅผ ์ํ ์ฃผ์ ๋๊ตฌ - 3. ๋ชจ๋ํฐ (Monitor)
๋ชจ๋ํฐ๋ ์๊ณ ๊ตฌ์ญ์ ๊ด๋ฆฌํ๋ ๋ ๊ณ ์์ค์ ๋๊ธฐํ ๋๊ตฌ๋ก, ๊ฐ์ฒด ๋ด๋ถ์ ๋ฎคํ ์ค(๋ฝ)๊ณผ ์กฐ๊ฑด ๋ณ์๋ฅผ ํฌํจํ๋ ์ถ์๋ฐ์ดํฐ ํ์ ์ด๋ค.
๋ฑ์ฅ ๋ฐฐ๊ฒฝ (๋ฎคํ ์ค์ ์ธ๋งํฌ์ด์ ํ๊ณ)
- ๋ฎคํ ์ค๋ ๋ฝ๋ง ์ ๊ณตํด ํน์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋ ๋๊น์ง ๋๊ธฐํ๋ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ๋ค
- ์ธ๋งํฌ์ด๋ ์๊ทธ๋ ๋ฉ์ปค๋์ฆ์ผ๋ก, ์ฌ๋ฌ ์ธ๋งํฌ์ด๋ฅผ ์กฐํฉํ๋ฉด ๋ณต์กํด์ง๋ค
ํน์ง
- ๋ฎคํ ์ค + ์กฐ๊ฑด ๋ณ์(Condition Variable)
- ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋๊น์ง ์ค๋ ๋ ๋๊ธฐ ๊ฐ๋ฅ
- ๊ฐ์ฒด์งํฅ ์ธ์ด์์ ํด๋์ค ๋จ์๋ก ๋๊ธฐํ๋ฅผ ์ ๊ณต
๋์๊ณผ์
- ์ค๋ ๋๊ฐ ๋ชจ๋ํฐ ๋ด๋ถ์ lock()์ ํ๋
- ํน์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ง ์์ผ๋ฉด wait() ํธ์ถ ํ ๋๊ธฐ
- ๋ค๋ฅธ ์ค๋ ๋๊ฐ notify() ๋๋ notifyAll()์ ํธ์ถํ์ฌ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ๊นจ์ด๋จ
- unlock() ํ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์คํ
๐ ๊ต์ฐฉ์ํ์ ๋ฐ์ ์กฐ๊ฑด
Deadlock (๊ต์ฐฉ ์ํ)
๋ฐ๋๋ฝ์ด๋ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ์๋ก๊ฐ ๊ฐ์ง ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ์์ํ ๋ฉ์ถฐ๋ฒ๋ฆฌ๋ ์ํ๋ฅผ ์๋ฏธํ๋ค.
๋ฐ๋๋ฝ์ ๋ฐ์ ์กฐ๊ฑด
๋ฐ๋๋ฝ์ ์ด ๋ค๊ฐ์ ์กฐ๊ฑด์ด ๋ชจ๋ ๋ง์กฑ๋์ด์ผ ๋ฐ์ํ๋ค.
- ์ํธ๋ฐฐ์ (Mutual Exclusion): ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์์์ ์ฌ์ฉํ ์ ์์
- ์ ์ ๋ฐ ๋๊ธฐ(Hold and Wait): ํ๋ก์ธ์ค๊ฐ ์ด๋ฏธ ํ ๋น๋ ์์์ ์ ์ ํ ์ฑ ์ถ๊ฐ ์์์ ๊ธฐ๋ค๋ฆผ
- ๋น์ ์ (No Preemption): ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์์์ ๊ฐ์ ๋ก ๊ฐ์ ธ์ฌ ์ ์์
- ์ํ ๋๊ธฐ(Circular Wait): ํ๋ก์ธ์ค ๊ฐ ์์์ ์์ฒญํ๋ ์ํ ๊ตฌ์กฐ๊ฐ ์กด์ฌ
๐ ๊ต์ฐฉ์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ
๊ต์ฐฉ์ํ ์๋ฐฉ
๊ต์ฐฉ์ํ๋ฅผ ์ ๋ฐํ๋ 4๊ฐ์ง ์กฐ๊ฑด์ ๋ฌด๋ ฅํํด ์์ ์ผ์ด๋๋๊ฑธ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ํธ๋ฐฐ์ ๋ฐฉ์ง
- ์์คํ ๋ด์ ์๋ ์ํธ ๋ฐฐํ์ ์ธ ๋ชจ๋ ์์, ์ฆ ๋ ์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์์์ ์์ ๋ฒ๋ฆฌ๋ ๋ฐฉ๋ฒ์ด๋ค
- ํ์ง๋ง ํ์ค์ ์ผ๋ก ๋ชจ๋ ์์์ ๊ณต์ ํ๋ค๋ ๊ฒ ๋ถ๊ฐ๋ฅํด์ ์ ์ฉํ๊ธฐ ์ด๋ ค์
- ์ ์ ๋ฐ ๋๊ธฐ ๋ฐฉ์ง
- ํ๋ก์ธ์ค๊ฐ ์์์ ์ ์ ํ ์ํ์์ ๋ค๋ฅธ ์์์ ๊ธฐ๋ค๋ฆฌ์ง ๋ชปํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด๋ค
- ์ฆ, ์ ์ ํ ์์์ ์ฒ์๋ถํฐ ๋ค ๊ฐ์ง๊ณ ์์ํ๊ฑฐ๋ ๊ทธ๋ฌ์ง ๋ชปํ ๊ฑฐ๋ฉด ๋ค ๋ฐ๋ฉํ๋ ๋ฐฉ์
- ํ์ง๋ง ์์ ์ด ์ฌ์ฉํ ์์์ ๋ฏธ๋ฆฌ ๋ค ์๊ธฐ ์ด๋ ต๋ค๋ ์ , ์ผ๊ด์ ์ผ๋ก ์ ์ ํ๊ฒ๋๋ฉด์ ํ์ฉ๋๊ฐ ๋จ์ด์ง๋ค๋ ์ ๋ฑ ๋ฌธ์ ์กด์ฌ
- ๋น์ ์ ๋ฐฉ์ง
- ๋ชจ๋ ์์์ ๋นผ์์ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ค
- ๊ทธ๋ฐ๋ฐ ์๊ณ๊ตฌ์ญ์ ๋ณดํธํ๊ธฐ ์ํด ์ ๊ธ์ ์ฌ์ฉํ๋ฉด ์์์ ๋นผ์์ ์ ์์ด์ ์ด๋ํ ์ด๋ ต๋ค
์ด๋ค ์์์ ๋นผ์์ ์ง๋ผ๋ ์ด๋ค ๊ธฐ์ค์ผ๋ก ๋นผ์์์ง, ๋นผ์์ ์๊ฐ ์ค ์ผ๋ง๋ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๊ธฐ ์ด๋ ต๋ค. ๋ํ ์ด๋ฌํ ์ ์ ๋ฐฉ์์ ๊ธฐ์ํ์์ ์ผ์ผํจ๋ค. ๊ฐ๋ น ์ฐ์ ์์ ๋ณ๋ก ๋์ ํ๋ก์ธ์ค๊ฐ ์์์ ๋ฌด์กฐ๊ฑด ๋จผ์ ์ ์ ํด๋ฒ๋ฆฐ๋ค๋ฉด ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ๊ธฐ์ ์ํ์ ๋น ์ง๊ฒ ๋๋ค. ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ์์ด์ง์ ์ฌ์ฉํ๋ ๊ฒ๋ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์๋๋ค. ์์ด์ง์ ์ฌ์ฉํ์ฌ ํน์ ์กฐ๊ฑด ์ด์์ผ ๋๋ ๋ฌด์กฐ๊ฑด ํด๋น ์์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค๋ ๊ฒ ์์ฒด๊ฐ ๋น์ ์ ํจ๊ณผ๋ฅผ ์ผ์ผ์ผ ๋ฐ๋๋ฝ์ ๋น ์ง๊ฒ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ํ๋๊ธฐ ๋ฐฉ์ง
- ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ ํด์ง ์์๋๋ก๋ง ์์์ ํ ๋น ๋ฐ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด๋ค
- ์์๋ ์ด๋ป๊ฒ ์ ํ ๊ฒ์ธ์ง์ ๋ํ ๋ฌธ์ ๊ฐ ์กด์ฌ
๊ต์ฐฉ์ํ ํํผ
๊ต์ฐฉ ์ํ ํํผ๋ ํ๋ก์ธ์ค์ ์์์ ํ ๋นํ ๋ ์ด๋ ์ ๋ ์ด์์ ์์์ ๋๋์ด์ฃผ๋ฉด ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋์ง๋ฅผ ํ์ ํด, ๊ทธ ์์ค ์ดํ๋ก ์์์ ๋๋์ด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ์ง ์๋ ๋ฒ์ ๋ด์์๋ง ์์์ ํ ๋นํ๊ณ , ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋ ๋ฒ์์ ์์ผ๋ฉด ํ๋ก์ธ์ค๋ฅผ ๋๊ธฐ์ํจ๋ค.
ํ์ง๋ง ์ด ๋ํ ์์ ํ ์์์ ์์ ์ ํํ ํ์ ํ๋ ๊ฒ ์ด๋ ค์ฐ๋ฉฐ, ์ ํ๋ ์์์ ์์ด์ด์ผ ํ๊ณ , ์์์ ํ ๋นํ์ง ์๊ณ ์๋๋ค๋ ์ ์์ ๋ฌธ์ ๊ฐ ์๋ค.
๊ต์ฐฉ์ํ ๊ฒ์ถ ๋ฐ ํ๋ณต
๊ต์ฐฉ ์ํ ์๋ฐฉ์ ๊ตฌํํ๊ธฐ๊ฐ ์ด๋ ต๊ณ , ํํผ๋ ์์์ ๋ญ๋น ๋ฌธ์ ๊ฐ ์๋ค. ๊ทธ๋ฐ ์ ์์ ๊ฒ์ถ์ด ๊ฐ์ฅ ์คํ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด๋ค.
๊ต์ฐฉ ์ํ ๊ฒ์ถ์ ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค์ ์์ ์ ๊ด์ฐฐํ๋ฉด์ ๊ต์ฐฉ ์ํ ๋ฐ์ ์ฌ๋ถ๋ฅผ ๊ณ์ ์ฃผ์ํ๋ ๋ฐฉ์์ด๋ค. ๋ง์ฝ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ์ํด ๊ต์ฐฉ ์ํ ํ๋ณต ๋จ๊ณ๋ฅผ ๋ฐ๋๋ค.
๊ต์ฐฉ ์ํ๊ฐ ๊ฒ์ถ๋๋ฉด ๊ต์ฐฉ ์ํ๋ฅผ ํธ๋ ํ์ ์์ ์ ํ๋ค. ์ด๋ฅผ ๊ต์ฐฉ ์ํ ํ๋ณต์ด๋ผ๊ณ ํ๋ค. ๊ต์ฐฉ ์ํ ํ๋ณต ๋จ๊ณ์์๋ ๊ต์ฐฉ ์ํ๋ฅผ ์ ๋ฐํ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ์ข ๋ฃํ๋ค.
- ๊ต์ฐฉ ์ํ๋ฅผ ์ผ์ผํจ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ์ข ๋ฃ
- ๊ต์ฐฉ ์ํ๋ฅผ ์ผ์ผํจ ํ๋ก์ธ์ค ์ค ํ๋๋ฅผ ๊ณจ๋ผ ์์๋๋ก ์ข ๋ฃ
์ค ํ๋์ ๋ฐฉ๋ฒ์ ์ ํํด ์ข ๋ฃํ๋ค. + ๋ณต๊ตฌ
๊ต์ฐฉ์ํ ๋ฌด์
๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํด๋ ์๋ฌด๋ฐ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์๋ ๋ฐฉ๋ฒ์ผ๋ก, ์ฌ์ฉ์๊ฐ ์์์ ์ด๋ฅผ ๊ฐ์งํด ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์ํค๊ฒ ํ๋ ๋ฐฉ์ (์ฌ์ค ๋ฐ๋๋ฝ์ ๋๋ฌผ์ด์)์ด๋ค. ์๋์ฐ ๋ฑ ํ๋ ์ด์์ฒด์ ์ ์ฐ์ด๋ ๋ฐฉ๋ฒ์ด๋ค.
์ฐธ๊ณ ์๋ฃ
OS๋ ํ ๊ป๋ฐ ํต์ฌ๋ง ํฉ๋๋ค. 9ํธ Critical section (์๊ณ ๊ตฌ์ญ2) , mutex, semaphore, monitor, condition variable
critical section์ ๋๊ธฐํ๋ฅผ ์ฑ๋ฆฝํ๊ธฐ์ํด์๋ 3๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค๊ณ ํ๋ค.mutual exclusion(์ํธ ๋ฐฐ์ )bounded waiting(ํ์ ๋ ๋๊ธฐ)progress(์งํ์ ์ตํต์ฑ)์ด์ ์ bounded waiting(ํ์ ๋ ๋๊ธฐ)์ ์ฝ๋์
velog.io