์ค๋ ๋๋?
๋ช ๋ น์ด๊ฐ CPU๋ฅผ ํตํด์ ์ํ๋๋ ๊ฐ์ฒด์ ๋จ์์ด๋ค.
ํ๋์ ํ๋ก์ธ์ค ๋ด์๋ 1๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๋ฐ๋์ ์กด์ฌํ๊ณ , ์ด๋ฌํ ์ค๋ ๋๋ ๊ฐ์ ํ๋ก์ธ์ค์ ์๋ ์์๊ณผ ์ํ๋ฅผ ๊ณต์ ํ๋ค.
ํ๋์ ์ค๋ ๋๊ฐ ์์ ํ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ์ค๋ ๋์ ์ํฅ์ ๋ฏธ์น๋ค.
์๋ฅผ ๋ค์ด ํ๋์ ์ค๋ ๋์์ ์คํํ ํ์ผ์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์ฌ์ฉํ ์ ์๋ค. ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ๊ทธ ํ๋ก์ธ์ค์ ์ํด์๋ ์ค๋ ๋๋ ํจ๊ป ์ข ๋ฃ๋๋ค.
โ๏ธ ์ค๋ ๋์ ํ์์ฑ
ํ๋์ ํ๋ก์ธ์ค ์์์ ์ฌ๋ฌ ๊ฐ์ ๋ฃจํด์ ๋์์ ์ํํด์ ์ํ ๋ฅ๋ ฅ์ ํฅ์ํ๋ ค๊ณ ํ ๋ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ, ๋ ๋ฆฝ์ ์ผ๋ก ์ํํ์ฌ ์ฒ๋ฆฌํ๋ ค๊ณ ํ ๋ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ฆ ์ฌ๋ฌ ๊ฐ์ ์์ ๋จ์๋ก ๊ตฌ์ฑ๋ ํ๋ก๊ทธ๋จ์์ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์!
โ๏ธ ์ค๋ ๋์ ํน์ง
- ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ํ๋ฆ์ ๋จ์์ด๋ค. ํ๋์ ์ค๋ ๋๋ ์์ํด์ ์ข ๋ฃํ ๋๊น์ง ํ๋ฒ์ ํ๋์ฉ ๋ช ๋ น๋ค์ ์ํํ๋ค.
- ๊ฐ ์ค๋ ๋๋ง๋ค call stack์ด ์กด์ฌํ๊ณ , ๋๋จธ์ง code, data, heap ์์ญ์ ์ค๋ ๋๋ผ๋ฆฌ ๊ณต์ ํ๋ค. / ๋ฐ๋ฉด ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์๋ค.
- ์ค๋ ๋๋ ๋ค๋ฅธ ์ค๋ ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ค. ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๋์๋๋ ๊ฒฝ์ฐ, ๋ ๊ฐ ์ด์์ ์ค๋ ๋์ ์คํ ๋ฐ ์ข ๋ฃ ์์๋ ์์ธกํ ์ ์๋ค.
๋์์ ๋๋ฆด ์ ์๋ ์ค๋ ๋์ ์๋ ์ปดํจํฐ์ ์ฝ์ด ๊ฐ์๋ก ์ ํ๋๋ค.
์ด์์ฒด์ ๋ ๊ฐ ์ค๋ ๋๋ฅผ ์๊ฐ์ ๋ฐ๋ผ ๋ถํ ํ์ฌ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์ผ์ ์๊ฐ๋ง๋ค ๋์๊ฐ๋ฉด์ ์คํ๋๋๋ก ํ๋ค. => ์๋ถํ
์ฑ๊ธ์ค๋ ๋ / ๋์์ฑ, ๋ณํ์ฑ => ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์๋ถํ ๋ฐฉ์์ผ๋ก ๋์์ ์ํ๋๋ ๊ฒ์ฒ๋ผ ์ฐฉ๊ฐ์ ๋ถ๋ฌ์ผ์ผํด.
๋ฉํฐ์ค๋ ๋ / ๋ณ๋ ฌ์ฑ => ๋ฉํฐ ์ฝ์ด ํ๊ฒฝ์์ ์ฌ๋ฌ๊ฐ์ ์ค๋ ๋๊ฐ ์ค์ ๋ ๋์์ ์ํ๋จ.
โ๏ธ ์ฑ๊ธ ์ค๋ ๋ (single-thread)
ํ๋ก์ธ์ค๊ฐ ๋จ์ผ ์ค๋ ๋๋ก ๋์ํ๋ ๋ฐฉ์์ผ๋ก ์ผ๋ จ์ ์ฒ๋ฆฌ๋ฅผ ๋จ์ผ ์ค๋ ๋๋ง์ผ๋ก ์ง๋ ฌ ์ฒ๋ฆฌํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ด๋ค.
ํ๋์ ๋ ์ง์คํฐ, ์คํ์ผ๋ก ํํํ๋ค. => ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ์ฅ ๋ํ์ ์ธ ์ฑ๊ธ ์ค๋ ๋ ์ธ์ด์ด๋ค.
์ฑ๊ธ ์ค๋ ๋ ์ฅ์
- ์์ ์ ๊ทผ์ ๋ํ ๋๊ธฐํ๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค. (๋ฉํฐ ์ค๋ ๋์ ๊ฒฝ์ฐ ๊ฐ ์ค๋ ๋๊ฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ํ๋ ค๋ฉด ๊ณต์ฉ ์์์ ๋ํ ์ ๊ทผ์ ์ ์ดํด์ผ ํจ.)
- ์์ ์ ๊ทผ์ ๋ํ ๋๊ธฐํ๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ฏ๋ก ๋ฌธ๋งฅ ๊ตํ(context switch)** ์์ ๋ ์ํด๋ ๋๋ค.
(** CPU๊ฐ ํ์ฌ ์์ ์ค์ธ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ ๋ ์ง๊ธ๊น์ง์ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ์ฅํ๊ณ , ์ ํ๋ก์ธ์ค์ ์ ์ฅ๋ ์ํ๋ฅผ ๋ค์ ์ ์ฌํ๋ ์์ ์ Context Switch(๋ฌธ๋งฅ ๊ตํ)์ด๋ผ ํ๋๋ฐ, ๋น์ฉ์ด ๋ค์ด๊ฐ๋ค. )
- ํ๋ก๊ทธ๋๋ฐ ๋์ด๋๊ฐ ์ฝ๊ณ , CPU ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฌ์ฉํ๋ค.
์ฑ๊ธ ์ค๋ ๋ ๋จ์
- ์ฌ๋ฌ ๊ฐ์ CPU๋ฅผ ํ์ฉํ์ง ๋ชปํ๋ค.
(๋ฉํฐ ์ฝ์ด ๋จธ์ ์์ CPU ์ฌ์ฉ์ ์ต์ ํํ ์ ์๋ค. ์ต์ ํ๋ฅผ ์ํด์ Cluster ๋ชจ๋์ ์ด์ฉํด์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ถ๊ฐ์ ์ผ๋ก Redis์ ๊ฐ์ ๋ถ๊ฐ ์ธํ๋ผ๊ฐ ํ์ํ๋ค. )
- ์ฐ์ฐ๋์ด ๋ง์ ์์ ์ ํ๋ ๊ฒฝ์ฐ, ๊ทธ ์์ ์ด ์๋ฃ๋์ด์ผ ๋ค๋ฅธ ์์ ์ ํ ์ ์๋ค.
- ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ๋ชปํ๋ ๊ฒฝ์ด ๋ฉ์ถ๋ค.
โ๏ธ ๋ฉํฐ ์ค๋ ๋ (multi-thread)
ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ๋ ์ด์์ ์ค๋ ๋๊ฐ ๋์์ ์์ ์ ์ํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฌ๋ฌ ๊ฐ์ CPU๋ฅผ ์ฌ์ฉํด์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋์์ ์ํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ฉํฐ ์ค๋ ๋ ์ฅ์
- ์์ ์ ๋ถ๋ฆฌํด์ ์ํํ๋ฏ๋ก ์ค์๊ฐ์ผ๋ก ์ฌ์ฉ์์๊ฒ ์๋ตํ ์ ์๋ค.
- ํ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ํ๋ก์ธ์์์ ์ํํ ์ ์์ผ๋ฏ๋ก ํจ์ฌ ํจ์จ์ ์ด๋ค.
๋ฉํฐ ์ค๋ ๋ ๋จ์
- ๋๋ฒ๊น ์ด ๊น๋ค๋กญ๋ค.
- ๋จ์ผ ํ๋ก์ธ์ค ์์คํ ์ ๊ฒฝ์ฐ ํจ๊ณผ๋ฅผ ๊ธฐ๋ํ๊ธฐ ์ด๋ ค์ฐ๋ฉฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ์ค๋ ๋๋ฅผ ์ ์ดํ ์ ์๋ค.
(ํ๋ก์ธ์ค ๋ฐ์์ ์ค๋ ๋ ๊ฐ๊ฐ์ ์ ์ดํ ์ ์๋ค. )
- ์์ ๊ณต์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ํ๋์ ์ค๋ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ ์ฒด ํ๋ก์ธ์ค๊ฐ ์ํฅ์ ๋ฐ๊ฒ ๋๋ค.
- ๋ฌธ๋งฅ ๊ตํ ์์ ์ ์๊ตฌํ๋ค.
(CPU๊ฐ ํ์ฌ ์์ ์ค์ธ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ ๋ ์ง๊ธ๊น์ง์ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ์ฅํ๊ณ , ์ ํ๋ก์ธ์ค์ ์ ์ฅ๋ ์ํ๋ฅผ ๋ค์ ์ ์ฌํ๋ ์์ ์ Context Switch(๋ฌธ๋งฅ ๊ตํ)์ด๋ผ ํ๋ค. )
* ๋ฐ๋๋ฝ (deadlock) / ๊ต์ฐฉ ์ํ
๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ์๋ก ์์์ ์ป์ง ๋ชปํด์ ๋ค์ ์ฒ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ๋ ์ํ๋ก, ๋ฌดํํ ๋ค์ ์์์ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ ์ํ๋ฅผ ๋งํ๋ค.
์์คํ ์ ์ผ๋ก ํ์ ๋ ์์์ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ค.
* ๋ฎคํ ์ค (mutex) & ์ธ๋งํฌ์ด (semaphore)
๊ณต์ ์์์ ์์ ํ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ์ํธ๋ฐฐ์ (Mutual exclusion)๋ฅผ ๋ฌ์ฑํ๋ ๊ธฐ๋ฒ์ด ํ์ํ๋ค.
๋ฎคํ ์ค์ ์ธ๋งํฌ์ด๋ ์ด๋ฅผ ์ํด ๊ณ ์๋ ๊ธฐ๋ฒ์ผ๋ก ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ํธ๋ฐฐ์ ๋ฅผ ๋ฌ์ฑํ๋ค.
- ๋ฎคํ ์ค (mutex)
๋ฎคํ ์ค๋ ํ ์ฐ๋ ๋, ํ๋ก์ธ์ค์ ์ํด ์์ ๋ ์ ์๋ Key๐๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ํธ๋ฐฐ์ ๊ธฐ๋ฒ์ผ๋ก,
Key ์ ํด๋นํ๋ ์ด๋ค ์ค๋ธ์ ํธ๊ฐ ์์ผ๋ฉฐ ์ด ์ค๋ธ์ ํธ๋ฅผ ์์ ํ (์ฐ๋ ๋,ํ๋ก์ธ์ค) ๋ง์ด ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋ค.
(ํ์ฅ์ค์ด ํ๋ ๋ฟ์ด ์๋ ์๋น๊ณผ ๋น์ทํ๋ค. ํ์ฅ์ค์ ๊ฐ๊ธฐ ์ํด์๋ ์นด์ดํฐ์์ ์ด์ ๋ฅผ ๋ฐ์ ๊ฐ์ผ ํ๋ค.)
-์ธ๋งํฌ์ด (semaphore)
์ธ๋งํฌ์ด๋ ํ์ฌ ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋ ์ฐ๋ ๋, ํ๋ก์ธ์ค์ ์๋ฅผ ๋ํ๋ด๋ ๊ฐ์ ๋์ด ์ํธ๋ฐฐ์ ๋ฅผ ๋ฌ์ฑํ๋ ๊ธฐ๋ฒ์ด๋ค.
(๋ ์คํ ๋์ ํ์ฅ์ค์๋ ์ฌ๋ฌ ๊ฐ์ ์นธ์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฅ์ค ์ ๊ตฌ์๋ ํ์ฌ ํ์ฅ์ค์ ๋น ์นธ ๊ฐ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ ๊ดํ์ด ์๋ค.)
์ฐธ๊ณ )
https://worthpreading.tistory.com/90
https://gyoogle.dev/blog/computer-science/operating-system/DeadLock.html
๐ ์๋ชป๋ ๊ฐ๋ ์ ๋ฌ์ด ์๋ค๋ฉด ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค. ์ ์ ์ฑ์ฅ์ ํฐ ๋์์ด ๋ฉ๋๋ค๐ค
'๐ฌComputer Science > ๋คํธ์ํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ๋น์ง ์ปฌ๋ ์ ์ด๋ (0) | 2022.08.01 |
---|---|
์ปดํจํฐ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ, ์ค์์ฒ๋ฆฌ์ฅ์น CPU์ ๊ตฌ์ฑ (0) | 2022.08.01 |
TIL) ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์ ์ฐจ, OAUTH 2.0 ์ด๋, JWT (0) | 2022.07.15 |
TIL) ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ์์๋๋ฉด ์ข์ ์น ๊ณต๊ฒฉ (SQL injection, XSS, CSRF, Clickjacking ) (0) | 2022.07.15 |
TIL) Cookie ์ ์, Session ์ ์, ์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด (0) | 2022.07.14 |