์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ : ๋๊ธฐ ๋น๋๊ธฐ ๋ธ๋ก ๋ ผ๋ธ๋ก ๊ผฌ๊ผฌ๋ฌด ๐ฎ
๐ฑ ๋๊ธฐ ๋น๋๊ธฐ ๋ธ๋กํน ๋ ผ๋ธ๋กํน์ด ๋ฌด์์ธ๊ฐ์?
๋๊ธฐ/๋น๋๊ธฐ = ํธ์ถ๋นํ ํจ์์ ์ข ๋ฃ๋ฅผ ๋๊ฐ ์ฒ๋ฆฌํ๋๋
๋ธ๋กํน/๋๋ธ๋กํน = ์ ์ด๊ถ์ด ๋๊ตฌ์๊ฒ ๋์๊ฐ๋๋
- ๋๊ธฐ (Synchronous) ๋ ์์
์ ์์ฐจ์ ์ธ ์งํ์ ์๋ฏธํฉ๋๋ค.
- ์: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ํธ๋์ญ์ ์ด ์์ฐจ์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ํ ํธ๋์ญ์ ์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง ๋ค์ ํธ๋์ญ์ ์ ์์๋์ง ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ํ์ ๋ฐฐ๊ฒฝ: ์ด๊ธฐ ์ปดํจํ ์์คํ ์์๋ ์์ ๋ค์ด ์์ฐจ์ ์ผ๋ก ์คํ๋์์ต๋๋ค. ํ ์์ ์ด ์๋ฃ๋์ด์ผ ๋ค์ ์์ ์ด ์์๋ ์ ์์์ผ๋ฉฐ, ์ด๋ฌํ ๋๊ธฐ์ ์ฒ๋ฆฌ๋ ํ๋ก๊ทธ๋๋ฐ์ ๋จ์ํ๊ณ ์ง๊ด์ ์ผ๋ก ๋ง๋ค์์ต๋๋ค.
- ๋น๋๊ธฐ (Asynchronous) ๋ ์์
์ ์๋ฃ์ ๋ํ ์ฝ๋ฐฑ์ด๋ ์ด๋ฒคํธ๊ฐ์ ์๋ฆผ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ฆ, ์์
์ด ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ์ ๋ํ ์๋ฆผ์ ๋ฐ์ต๋๋ค.
- ์: ์น์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ HTTP ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋ค๋ฅธ ์์ ์ ๊ณ์ํ ์ ์์ผ๋ฉฐ, ์๋ฒ๋ ์์ฒญ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฒ๋ฆฌํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
- ํ์ ๋ฐฐ๊ฒฝ: ๋๊ธฐ์ ์ฒ๋ฆฌ์ ํ๊ณ, ํนํ I/O ์์ ์ด๋ ๋คํธ์ํฌ ์์ฒญ๊ณผ ๊ฐ์ ๊ธด ๋๊ธฐ ์๊ฐ์ด ํ์ํ ์์ ์์ ํ๋ก๊ทธ๋จ์ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค. ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ ์ด๋ฌํ ๋๊ธฐ ์๊ฐ ๋์ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์๊ฒ ํด์, ์ ์ฒด ์์คํ ์ ํจ์จ์ฑ์ ๋์ ๋๋ค.
- ๋ธ๋กํน์ ์์
์ ์ํํ๋ ๋์ ๋ค๋ฅธ ์์
์ ์ํํ ์ ์๋ ์ํ๋ฅผ ์๋ฏธํฉ๋๋ค.
์ฆ, ๋ชจ๋ ๋๊ธฐ์ ์์ ์ ๋ธ๋กํน์ผ ํ์๋ ์์ต๋๋ค. ๋ํ ๋๊ธฐ์ ์ด์ง๋ง ๋๋ธ๋กํน์ธ ์์ ์ ๊ฒฝ์ฐ, ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์์ต๋๋ค.- ์: ๋คํธ์ํฌ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ก์์ ์์ ๋ธ๋กํน ์์ผ์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ ๋๊น์ง ์คํ์ด ์ค๋จ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, recv() ํจ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋๊น์ง ํ๋ก๊ทธ๋จ์ ์คํ์ ์ ์ง์ํค๊ณ ๊ธฐ๋ค๋ฆฝ๋๋ค.
- ํ์ ๋ฐฐ๊ฒฝ: ์ด๊ธฐ ์ปดํจํ ์์๋ ์์ ์คํ ์ ๋ค๋ฅธ ์์ ์ด ๋์์ ์คํ๋์ง ๋ชปํ๊ฒ ๋ง๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด์๋๋ฐ์, ์ด ๋ฐฉ์์ ํ๋ก๊ทธ๋จ์ ๋ณต์ก์ฑ์ ์ค์ด๊ณ , ๋ฆฌ์์ค์ ๋ํ ์์ ์ ์ธ ์ ๊ทผ์ ๋ณด์ฅํฉ๋๋ค.
- ๋๋ธ๋กํน์ ์์ฒญํ ์์
์ด ์ฆ์ ์๋ฃ๋์ง ์๋๋ผ๋ ๊ทธ ์ํ๋ฅผ ๋๊ธฐํ์ง ์๊ณ ์ฆ์ ๋ค๋ฅธ ์์
์ผ๋ก ๋์ด๊ฐ๋ฉฐ, ๋์ค์ ์์
์ ์๋ฃ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
- ์: ์ฃผ๋ก I/O ์์ ์์ ๋น ๋ฅธ ์๋ต์ฑ์ด ํ์ํ ๋. ์๋ฅผ ๋ค์ด, ๋๋ธ๋กํน ์์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ์ ์๋ ์ํ๊ฐ ๋ ๋๊น์ง ๋๊ธฐํ์ง ์๊ณ , ๊ทธ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธ polling ํฉ๋๋ค.
- ํ์ ๋ฐฐ๊ฒฝ: ๋ธ๋กํน ๋ฐฉ์์ ๋จ์ , ํนํ ์์คํ ์์์ด๋ ์์ ๋๊ธฐ ์๊ฐ์ผ๋ก ์ธํ ํจ์จ์ฑ ์ ํ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค. ๋ ผ๋ธ๋กํน ๋ฐฉ์์ ์์ ์ด ์ฆ์ ์๋ฃ๋์ง ์๋๋ผ๋ ๋ค๋ฅธ ์์ ์ผ๋ก ์ ํํด์ CPU ์๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
๐ฑ ์คํ๋ฝ์ด ๋ฌด์์ธ๊ฐ์?
์คํ๋ฝ(Spinlock) ์ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ํ ์ข ๋ฅ๋ก, ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ์ ๊ทผํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ์คํ๋ฝ์ ์ผ๋ฐ์ ์ผ๋ก ๋๊ธฐ ๋ฐ ๋ธ๋กํน ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค. ์ด๋ ์คํ๋ฝ์ ์์ ํ๊ณ ์๋ ์ค๋ ๋๊ฐ ์์์ ์ฌ์ฉํ๊ณ ์์ ๋, ๋ค๋ฅธ ์ค๋ ๋๋ค์ด ๊ณ์ํด์ ๋ฝ์ ํ๋ํ๋ ค๊ณ ์๋ํ๋ฉด์ ๋๊ธฐ ์ํ์ ๋จธ๋ฌด๋ฅธ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด ๋๊ธฐ ๊ณผ์ ์์ ์ค๋ ๋๋ค์ ๋ฃจํ๋ฅผ ๋๋ฉด์ ๋ฝ์ ์ํ๋ฅผ ๊ณ์ ํ์ธํ๊ณ , ์ด ๋๋ฌธ์ CPU ์๊ฐ์ ์๋ชจํฉ๋๋ค. ๋ฐ๋ผ์ ์คํ๋ฝ์ ์์์ด ๊ณง๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ์์๋๋ ์งง์ ๋๊ธฐ ์๊ฐ์ ์ ํฉํฉ๋๋ค.
๐ฑ ์คํ๋ฝ์ ๋จ์ ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
์ด๋ฌํ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ค๋ฅธ ๋ฝ ๋ฉ์ปค๋์ฆ์ผ๋ก๋ ๋ฎคํ ์ค์ ์ธ๋งํฌ์ด๊ฐ ์์ต๋๋ค. ๋ฎคํ ์ค์ ์ธ๋งํฌ์ด๋ ์๋ก ๋ค๋ฅธ ์๋๋ฆฌ์ค์ ์ ํฉํ ๋๊ธฐํ ๋๊ตฌ์ ๋๋ค.
- ๋ฎคํ
์ค(Mutex)
- ๋ฎคํ
์ค (mutex) ๋ ์ํธ ๋ฐฐ์ (mutual exclusive) ๋ผ๊ณ ๋ ํ๋ฉฐ, ์๊ณ ์์ญ (Critical Section) ์ ๊ฐ์ง ์ค๋ ๋์ Running Time ์ด ์๋ก ๊ฒน์น์ง ์๋๋ก ๊ฐ๊ฐ ๋จ๋
์ผ๋ก ์คํํ๊ฒ ํ๋ ๊ธฐ์ ์
๋๋ค. ์ฆ, ํ ์์ ์ ๋จ ํ๋์ ์ค๋ ๋๋ง์ด ์๊ณ ์์ญ์ ์ ๊ทผํ ์ ์๊ฒ ํฉ๋๋ค. ๋ฝ์ ํ๋ํ ์ค๋ ๋๋ง์ด ๋ฝ์ ํด์ ํ ์ ์์ต๋๋ค. ์ด๋ ๋ฎคํ
์ค์ ์์ ๊ฐ๋
๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
- ์๊ณ ์์ญ์ ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์ ์ฌ๋ฌ ์ค๋ ๋์ ์ํด ๊ณต์ ๋๋ ์์ (์: ๋ณ์, ๋ฐ์ดํฐ ๊ตฌ์กฐ, ํ์ผ ๋ฑ) ์ ์ ๊ทผํ๋ ์ฝ๋ ์์ญ์ ๋๋ค.
- ๋ฎคํ ์ค๋ ์คํ๋ฝ๊ณผ ๋ฌ๋ฆฌ ๋ฝ์ ์ป์ ์ ์๋ ์ค๋ ๋๋ฅผ ๋๊ธฐ ์ํ๋ก ๋ง๋ญ๋๋ค. ์ด๋ CPU ์๊ฐ์ ์ ์ฝํ ์ ์๊ฒ ํด์ค๋๋ค. ๋ฎคํ ์ค๋ ์ปค๋์ ์ํด ๊ด๋ฆฌ๋๋ฉฐ, ๋ฝ์ ์ป์ผ๋ ค๋ ์ค๋ ๋๊ฐ ๋๊ธฐ ํ์ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค.
- ๋จ์ : ์ปจํ ์คํธ ์ค์์นญ (context switch) ๋น์ฉ์ด ๋ฐ์ํ๋ฉฐ, ์ด๋ ์๋์ ์ผ๋ก ๋น์ผ ์์ ์ ๋๋ค. ๋ํ ๋ฎคํ ์ค๋ ๋ฐ๋๋ฝ์ ์์ ํ ๋ฐฉ์งํ ์๋ ์์ต๋๋ค. ๋ฎคํ ์ค๋ฅผ ์ฌ์ฉํ๋ ์์คํ ์์๋, ์ฌ๋ฌ ๋ฎคํ ์ค๋ฅผ ๋์์ ์ฌ์ฉํ ๋ ์๋ชป๋ ์์๋ก ๋ฝ์ ํ๋ํ๊ฑฐ๋ ํด์ ํ๋ ๊ฒฝ์ฐ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ฎคํ
์ค (mutex) ๋ ์ํธ ๋ฐฐ์ (mutual exclusive) ๋ผ๊ณ ๋ ํ๋ฉฐ, ์๊ณ ์์ญ (Critical Section) ์ ๊ฐ์ง ์ค๋ ๋์ Running Time ์ด ์๋ก ๊ฒน์น์ง ์๋๋ก ๊ฐ๊ฐ ๋จ๋
์ผ๋ก ์คํํ๊ฒ ํ๋ ๊ธฐ์ ์
๋๋ค. ์ฆ, ํ ์์ ์ ๋จ ํ๋์ ์ค๋ ๋๋ง์ด ์๊ณ ์์ญ์ ์ ๊ทผํ ์ ์๊ฒ ํฉ๋๋ค. ๋ฝ์ ํ๋ํ ์ค๋ ๋๋ง์ด ๋ฝ์ ํด์ ํ ์ ์์ต๋๋ค. ์ด๋ ๋ฎคํ
์ค์ ์์ ๊ฐ๋
๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
- ์ธ๋งํฌ์ด(Semaphore):
- ์ธ๋งํฌ์ด๋ ๋ฎคํ ์ค์ ๋น์ทํ์ง๋ง, ์ ํ๋ ์์ ๋์ ์ ๊ทผ์ ํ์ฉํฉ๋๋ค. ์ธ๋งํฌ์ด๋ ์นด์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋ฆฌ์์ค๋ฅผ ๋ช ๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ์ฌ์ฉํ ์ ์๋์ง๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๋ํ ์ธ๋งํฌ์ด์์๋ ๋ฝ์ ํ๋ํ ์ค๋ ๋๊ฐ ์๋ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ฝ์ ํด์ ํ ์ ์์ต๋๋ค.
- ์ธ๋งํฌ์ด๋ ํน์ ํ ์์ ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ์ ์ ์ดํฉ๋๋ค. ์ด๋ ๋ฎคํ ์ค์ ์ ์ฌํ์ง๋ง, ๋ฎคํ ์ค๋ณด๋ค ๋ ์ผ๋ฐ์ ์ธ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
- ๋จ์ : ์ธ๋งํฌ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ ๋ณต์กํ ์ ์์ผ๋ฉฐ, ์๋ชป ์ฌ์ฉํ๋ฉด ๋ฐ๋๋ฝ(deadlock) ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฝ ๋ณด์ ์๊ฐ์ด ๊ธธ๊ฑฐ๋ ๋ฆฌ์์ค ๋๊ธฐ ์๊ฐ์ด ๋ถํ์คํ ๊ฒฝ์ฐ์๋ ์คํ๋ฝ๋ณด๋ค, ๋ฎคํ ์ค๋ ์ธ๋งํฌ์ด๊ฐ ๋ ์ ํฉํ ์ ์์ต๋๋ค.
๐ฑ ์ธ๋งํฌ์ด์ ์ข ๋ฅ๋ ๋ญ๊ฐ ์๋์?
์ธ๋งํฌ์ด(Semaphore)๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ํ์ผ๋ก,
์ด์ง ์ธ๋งํฌ์ด(Binary Semaphore)์ ์นด์ดํ ์ธ๋งํฌ์ด(Counting Semaphore) ๊ฐ ์์ต๋๋ค.
์ด์ง ์ธ๋งํฌ์ด (Binary Semaphore)
- ๊ฐ๋ : ์ด์ง ์ธ๋งํฌ์ด๋ ๊ฐ์ด `0` ๋๋ `1`๋ง์ ๊ฐ์ง ์ ์๋ ์ธ๋งํฌ์ด์ ๋๋ค. ์ด๋ ์ฌ์ค์ ๋ฎคํ ์ค(Mutex)์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
- ๋ฎคํ ์ค์์ ์ฐจ์ด: ์ด์ง ์ธ๋งํฌ์ด์ ๋ฎคํ ์ค์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ฝ์ ์์ ๊ถ์ ์์ต๋๋ค. ๋ฎคํ ์ค๋ ๋ฝ์ ํ๋ํ ๋์ผํ ์ค๋ ๋์ ์ํด์๋ง ํด์ ๋ ์ ์์ต๋๋ค. ๋ฐ๋ฉด, ์ด์ง ์ธ๋งํฌ์ด๋ ํ ์ค๋ ๋๊ฐ ํ๋ํ๊ณ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ํด์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฐจ์ด ๋๋ฌธ์, ์ด์ง ์ธ๋งํฌ์ด๋ ๋ฎคํ ์ค๋ณด๋ค ๋ ์ ์ฐํ ์ ์์ง๋ง, ์๋ชป ์ฌ์ฉ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์๋ ์์ต๋๋ค.
์นด์ดํ ์ธ๋งํฌ์ด (Counting Semaphore)
- ๊ฐ๋ : ์นด์ดํ ์ธ๋งํฌ์ด๋ `0 ์ด์์ ์ ์ ๊ฐ`์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๋ฆฌ์์ค์ ์๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ธ๋งํฌ์ด์ ๊ฐ์ด `3`์ด๋ผ๋ฉด, ์ธ ๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ํด๋น ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
- ์ฉ๋: ์นด์ดํ ์ธ๋งํฌ์ด๋ ์ ํ๋ ์์ ๋ฆฌ์์ค์ ๋ํ ๋์ ์ ๊ทผ์ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ํ์์ ์ต๋ ๋์ ์ฐ๊ฒฐ ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ฆ, ์ด์ง ์ธ๋งํฌ์ด๋ ๋ฎคํ ์ค์ ๋งค์ฐ ์ ์ฌํ์ง๋ง, ์ธ๋งํฌ์ด์ ์์ ๊ถ ๋ฐ ํด์ ๋ฉ์ปค๋์ฆ์ด ๋ค๋ฆ ๋๋ค. ์ด์ง ์ธ๋งํฌ์ด ์ธ์๋, ์นด์ดํ ์ธ๋งํฌ์ด๋ ๋ ๋ง์ ์์ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ์ฐจ์ด์ ์ ์ธ๋งํฌ์ด๋ฅผ ์ ํํ ๋ ๊ณ ๋ คํด์ผ ํ ์ค์ํ ์์์ ๋๋ค.
๐ฑ ๋ฐ๋๋ฝ์ด ๋ฌด์์ธ๊ฐ์?
ํนํ ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์ ๋ฐ์ํ๋ ์ํฉ์ผ๋ก, ์ฌ๋ฌ ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ์๋ก๊ฐ ๋ณด์ ํ๊ณ ์๋ ๋ฆฌ์์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉด์ ๋ฌดํํ ๋๊ธฐํ๋ ํ์์ ๋งํฉ๋๋ค.
๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ค ๊ฐ์ง ์กฐ๊ฑด์ด ๋ชจ๋ ์ถฉ์กฑ๋์ด์ผ ํฉ๋๋ค.
- ์ํธ ๋ฐฐ์ (Mutual Exclusion): ๋ฆฌ์์ค๋ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ ์ ๋๊ธฐ(Hold and Wait): ํ๋ก์ธ์ค๋ ์ต์ํ ํ๋์ ๋ฆฌ์์ค๋ฅผ ๋ณด์ ํ๊ณ ์์ผ๋ฉด์ ๋์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ณด์ ํ ์ถ๊ฐ ๋ฆฌ์์ค๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
- ๋น์ ์ (No Preemption): ๋ฆฌ์์ค๋ ์๋ฐ์ ์ผ๋ก๋ง ํด์ ๋ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ๊ฐ์ ๋ก ๋บ๊ธธ ์ ์์ต๋๋ค.
- ์ํ ๋๊ธฐ(Circular Wait): ๋๊ธฐํ๋ ํ๋ก์ธ์ค๋ค ์ฌ์ด์๋ ์ํ ํํ์ ๋๊ธฐ ์ฒด์ธ์ด ์กด์ฌํฉ๋๋ค. ์ฆ, ๊ฐ ํ๋ก์ธ์ค๋ ๋ค์ ํ๋ก์ธ์ค๊ฐ ์๊ตฌํ๋ ๋ฆฌ์์ค๋ฅผ ๋ณด์ ํ๊ณ ์์ต๋๋ค.
๐ฑ ๋ฐ๋๋ฝ์ ํด๊ฒฐํ๋ ค๋ฉด?
๋ฐ๋๋ฝ์ ํด๊ฒฐํ๊ณ ์๋ฐฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ค์ฏ ๊ฐ์ง ์ ๋๋ฅผ ์ค๋ช ๋๋ฆด ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ๋ก, '์์ ํ ๋น ์์'๋ฅผ ์ ํ๋ ๊ฑด๋ฐ, ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์์์ ๊ฐ์ ์์๋ก ์์ฒญํ๊ฒ ํ๋ฉด ์ํ ๋๊ธฐ๋ฅผ ํผํ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ๋ '์์์ ํ ๋ฒ์ ์์ฒญ'ํ๋ ๊ฒ์ ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์์ํ ๋ ํ์ํ ๋ชจ๋ ์์์ ํ๊บผ๋ฒ์ ์์ฒญํ๋ฉด, ํ์ํ ์์ ์ค ์ผ๋ถ๋ง ๊ฐ๊ณ ๋๊ธฐํ๋ ์ํฉ์ ๋ง์ ์ ์์ต๋๋ค.
์ธ ๋ฒ์งธ ๋ฐฉ๋ฒ์ '์ฌ์ ์ ์์์ ํ ๋นํ์ง ์๋ ๊ฒ'์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํ๋ก์ธ์ค๊ฐ ์์์ ์ฌ์ฉํ ๋๋ง ์์ฒญํ๊ฒ ํด์ ๋ถํ์ํ ์์ ๋ณด์ ๋ฅผ ์ค์ด๋ ๊ฒ์ ๋๋ค.
๋ค ๋ฒ์งธ๋ '์์ ์ ์ '์ธ๋ฐ, ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉ ์ค์ธ ์์์ ํ์๋ก ํ๋ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด, ๊ทธ ์์์ ์ ์ ํด์ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ฐ๋๋ฝ์ ํด๊ฒฐํ ์๋ ์์ง๋ง, ์ ์ ํ๋ ๊ณผ์ ์์ ์ถ๊ฐ์ ์ธ ๋ณต์ก์ฑ๊ณผ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, '๋ฐ๋๋ฝ ํ์ง ๋ฐ ํ๋ณต'์ด ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ฐ๋๋ฝ์ด ์ด๋ฏธ ๋ฐ์ํ ํ์ ์ ์ฉ๋๋ ๋ฐฉ๋ฒ์ธ๋ฐ์, ์ฌ๊ธฐ์๋ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ์ ๋ ์ด๋ฅผ ํ์งํ๊ณ , ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ์ค๋จํ๊ฑฐ๋ ๋กค๋ฐฑ์์ผ์ ๋ฐ๋๋ฝ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.