๐ป ์ด์์ฒด์ : Operating System
โ๏ธ ์ด์์ฒด์ : ์ปดํจํฐ ์์คํ ์ ์์๋ค์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ปดํจํฐ๋ฅผ ํธ๋ฆฌํ๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ๊ฒฝ์ ์ ๊ณตํ๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ๋ค์ ๋ชจ์
โป๏ธ ์ปค๋
์ด์์ฒด์ ์ ํต์ฌ ๋ถ๋ถ์ผ๋ก, ์ปดํจํฐ์ ์ํ ์์๋ค์ ๋ํ ์ ๊ทผ์ ์ค์ฌํ๋ ๊ฒ์ด ์ค์ ๊ธฐ๋ฅ์ด๋ค. (ํ๋์จ์ด์ ์์ฉ ํ๋ก๊ทธ๋จ ์ฌ์ด์์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด์์ ์ค๋ ์์์ ๊ด๋ฆฌํ๊ณ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค)
์ปดํจํฐ๊ฐ ์ ์์ด ์ผ์ง๋ฉด ์ด์์ฒด์ ์ญ์ ๋ค๋ฅธ ์ํํธ์จ์ด์ฒ๋ผ ์ํ์ ์ํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ์ผ ํ๋๋ฐ, (๊ท๋ชจ๊ฐ ํฐ ์ด์์ฒด์ ์ ์ผ๋ถ์์) ํ์ํ ๋ถ๋ถ๋ง์ ๋ผ์ด ํญ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋๋ก ํ ์ด์์ฒด์ ๋ถ๋ถ์ด ์ปค๋์ด๋ผ๊ณ ํ ์ ์๋ค. ์ ๋ฆฌํ์๋ฉด ์ฆ, ์ปค๋์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋ ๋ถ๋ถ์ผ๋ก์ ์ด์์ฒด์ ์ ํต์ฌ์ ์ธ ๋ถ๋ถ์ด ๋๋ค.
๐ ๐ ๐
โป๏ธ ์์คํ ์ฝ
์์ฉ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ด์์ฒด์ ์ API๋ฅผ ํธ์ถํ๋ ํจ์์ด๋ค.
์ด์์ฒด์ ๋ ์ฌ์ฉ์ ๋ชจ๋์ ์ปค๋ ๋ชจ๋๋ก ๋๋์ด ๊ตฌ๋๋๋๋ฐ, ์ฌ์ฉ์ ๋ชจ๋๋ ์ ์ ๊ฐ ์ ๊ทผํ ์ ์๋ ์์ญ์ ๋๋๊ณ ํ๋ก๊ทธ๋จ ์์์ ์นจ๋ฒํ๊ฒ ํ์ง ๋ชปํ๋ ๋ชจ๋, ์ปค๋๋ชจ๋๋ ๋ชจ๋ ์์์ ์ ๊ทผํ๊ฑฐ๋ ๋ช ๋ นํ ์ ์๋ ๋ชจ๋๋ฅผ ๋ปํ๋ค.
์์คํ ์ฝ์ ํ๋ก์ธ์ค ์ ์ด, ํ์ผ ์กฐ์, ์ฅ์น ๊ด๋ฆฌ, ์ ๋ณด ์ ์ง, ํต์ ๋ฑ์ ์ปค๋ API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ์ ๋ชจ๋์์ ์ปค๋ ๋ชจ๋๋ก ์ ํํ๊ฒ ํด์ฃผ๋ฉฐ, ์ปค๋์ด ์ ๊ณตํ๋ API๋ฅผ ์ฌ์ฉํ ๋ค์๋ ๋ค์ ์ฌ์ฉ์ ๋ชจ๋๋ก ์ ํ์ํจ๋ค.
์ฆ, ํ๋ก์ธ์ค๊ฐ ํ๋์จ์ด์ ์ง์ ์ ๊ทผํด์ ํ์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
์๋์ฐ ์ปค๋์ ๊ฒฝ์ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์ ๋ชจ๋, ๋๋จธ์ง๋ ์ปค๋ ๋ชจ๋๋ผ ํ๋ค.
โ๏ธ ๋ํ์ ์ธ ์์คํ ์ฝ
- fork() : ์์ ๊ณผ ๋๊ฐ์ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ๊ฒ์ผ๋ก ์ฃผ๋ก ์ ๋์ค ๊ณ์ด์ ์ด์์ฒด์ ์์ ์ฌ์ฉ๋๋ค. return๋๋ pid๊ฐ 0(์์)์ธ์ง, 0๋ณด๋ค ํฐ์ง(๋ถ๋ชจ)๋ก ๋ถ๋ชจ์ ์์์ ๊ตฌ๋ณํ๋ค.
โ๏ธ ์์คํ ์ฝ ์ ํ
- ํ๋ก์ธ์ค ์ ์ด (Process Control)
- ๋๋ด๊ธฐ(end), ์ค์ง(abort)
- ์ ์ฌ(load), ์คํ(execute)
- ํ๋ก์ธ์ค ์์ฑ(create process)
- ํ๋ก์ธ์ค ์์ฑ ํ๋๊ณผ ์ค์ (get process attribute and set process attribute)
- ์๊ฐ ๋๊ธฐ(wait time)
- ์ฌ๊ฑด ๋๊ธฐ(wait event)
- ์ฌ๊ฑด์ ์๋ฆผ(signal event)
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํด์ : malloc, free
- ํ์ผ ์กฐ์ (File Manipulation)
- ํ์ผ ์์ฑ(create file), ํ์ผ ์ญ์ (delete file)
- ์ด๊ธฐ(open), ๋ซ๊ธฐ(close)
- ์ฝ๊ธฐ(read), ์ฐ๊ธฐ(write), ์์น ๋ณ๊ฒฝ(reposition)
- ํ์ผ ์์ฑ ํ๋ ๋ฐ ์ค์ (get file attribute and set file attribute)
- ์ฅ์น ๊ด๋ฆฌ(Devide Management)
- ์ฅ์น๋ฅผ ์๊ตฌ(request devices), ์ฅ์น๋ฅผ ๋ฐฉ์ถrelease device)
- ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์์น ๋ณ๊ฒฝ
- ์ฅ์น ์์ฑ ํ๋, ์ฅ์น ์์ฑ ์ค์
- ์ฅ์น์ ๋ ผ๋ฆฌ์ ๋ถ์ฐฉ(attach) ๋๋ ๋ถ๋ฆฌ(detach)
- ์ ๋ณด ์ ์ง(Information Maintenance)
- ์๊ฐ๊ณผ ๋ ์ง์ ์ค์ ๊ณผ ํ๋(time)
- ์์คํ ๋ฐ์ดํฐ์ ์ค์ ๊ณผ ํ๋(date)
- ํ๋ก์ธ์ค ํ์ผ, ์ฅ์น ์์ฑ์ ํ๋ ๋ฐ ์ค์
- ํต์ (Communication)
- ํต์ ์ฐ๊ฒฐ์ ์์ฑ, ์ ๊ฑฐ
- ๋ฉ์์ง์ ์ก์ , ์์
- ์ํ ์ ๋ณด ์ ๋ฌ
- ์๊ฒฉ ์ฅ์น์ ๋ถ์ฐฉ ๋ฐ ๋ถ๋ฆฌ
- ๋ฉ์์ง ์ ๋ฌ - ๋ ํ๋ก์ธ์ค์ ํต์ ์ ์ ๋ณด ๊ตํ์ ์ํ ๋ฉ์์ง
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ - ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์์ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ์ ์ํด ํน์ ์์คํ ์ฝ ํธ์ถ
๐ ๐ ๐
โป๏ธ ์ธํฐ๋ฝํธ
ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋์ค์ ์๊ธฐ์น ์์ ์ํฉ์ด ๋ฐ์ํ ๊ฒฝ์ฐ, ํ์ฌ ์คํ ์ค์ธ ์์ ์ ์ฆ์ ์ค๋จํ๊ณ ๋ฐ์๋ ์ํฉ์ ๋ํ ์ฐ์ ์ฒ๋ฆฌ๊ฐ ํ์ํจ์ CPU์๊ฒ ์๋ฆฌ๋ ๊ฒ์ด๋ค.
ํ๋์จ์ด ์ธํฐ๋ฝํธ์ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ๋ก ๋๋๋ค.
- ํ๋์จ์ด ์ธํฐ๋ฝํธ: ํค๋ณด๋, ๋ง์ฐ์ค์ ์ํ ์ ์ถ๋ ฅ๊ณผ ๊ฐ์ด ํ๋์จ์ด๊ฐ ๋ฐ์์ํจ ์ธํฐ๋ฝํธ๋ฅผ ๋ปํ๋ค.
- ์ํํธ์จ์ด ์ธํฐ๋ฝํธ: ํ๋ก๊ทธ๋จ์ด ์ค๋ฅ๋ฅผ ๋ฒํ์ฌ Exception์ด ๋ฐ์ํ๊ฑฐ๋, ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ปค๋ ํจ์๋ฅผ ์ํด ํธ์ถํ๋ System Call์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ปํ๋ค. ํธ๋ฉ(Trap)์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
โ๏ธ ์ธํฐ๋ฝํธ ๋ฐ์ ๊ณผ์
- ์ธํฐ๋ฝํธ ๋ฐ์
- CPU๋ ํ์ฌ ์งํ ์ค์ธ ๊ธฐ๊ณ์ด ์ฝ๋๋ฅผ ์๋ฃํ๋ค
- Interrupt Vector (์ฌ๋ฌ ์ข ๋ฅ์ ์ธํฐ๋ฝํธ์ ๋ํ ISR์ ์์์ฃผ์)์์ ISR(Interrupt Service Routine)์ ์์์ฃผ์๋ฅผ ์ฝ๊ณ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ค. ์ด ๋ ์คํ ์ค์ด๋ ๋ ์ง์คํฐ์ PC(Program Counter: CPU ๋ด๋ถ์ ์๋ ๋ ์ง์คํฐ ์ค์ ํ๋๋ก์, ๋ค์์ ์คํ๋ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์ด ์คํํ ๊ธฐ๊ณ์ด ์ฝ๋์ ์์น๋ฅผ ์ง์ ํ๋ค. ๋๋ฌธ์ ๋ช ๋ น์ด ํฌ์ธํฐ๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.) ๊ฐ์ ๋ณด๊ดํด์ CPU์ ์ํ๋ฅผ ๋ณด์กดํด๋๋ค.
- ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด์ ์ฒ๋ฆฌํ๋ค.
- ์์ธ์ ํ์ ํ๊ณ ์ค์ง์ ์ธ ์์ ์ ์ํํ๋ค. ๋ฃจํด ์ํ ์ค, ์ฐ์ ์์๊ฐ ๋ ๋์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉด ์ฌ๊ท์ ์ผ๋ก ๋ฐ์๊ณผ์ ์ ๋ฐ๋ณต ์ํํ๋ค.
- ์ํ ๋ณต๊ตฌ
- ํด๋น ์์ ์ ๋ค ์๋ฃ์ฒ๋ฆฌํ๋ฉด, ๋ํผ์ํจ ๋ ์ง์คํฐ๋ฅผ ๋ณต์ํ๋ค.
- ISR ๋์ RETI ๋ช ๋ น์ด์ ์ํด ์ธํฐ๋ฝํธ๊ฐ ํด์ ๋๋ค.
- ๋ช ๋ น์ด๊ฐ ์คํ๋๋ฉด, PC๊ฐ์ ๋ณต์ํ์ฌ ์ด์ ์คํ์์น๋ก ๋ณต์ํ๋ค.
๐ ๐ ๐
โป๏ธ ๋๊ธฐํ
๊ณต์ ๋ฐ์ดํฐ์ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ ๊ทผํ๋ฉด, ๋ฐ์ดํฐ์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ณ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํ ๋งค์ปค๋์ฆ์ ๋๊ธฐํ๋ผ๊ณ ํ๋ค. ๋๊ธฐํ ์ค์์๋ ํ๋์ ์์์ ํ ์๊ฐ์ ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์ด์ฉํ๋๋ก ์ ์ดํ๋ ๊ฒ์ ํ๋ก์ธ์ค ๋๊ธฐํ๋ผ๊ณ ํ๋ค.
โ๏ธ ๊ฒฝ์ ์ํ (Race Condition)
๊ณต์ ์์์ ๋ํด ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผ์ ์๋ํ ๋, ํ์ด๋ฐ์ด๋ ์์ ๋ฑ์ด ๊ฒฐ๊ณผ๊ฐ์ ์ํฅ์ ์ค ์ ์๋ ์ํ๋ฅผ ๋งํ๋ค. ๋ฐ์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ปค๋ ์์ ์ํ ์ค ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ๋: ์ปค๋ ๋ชจ๋์์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ฒฝ์ฐ ์ธํฐ๋ฝํธ์ ์์ ์ด ๋ฐ์๋์ง ์๋๋ค. ๋ฐ๋ผ์ ์ปค๋ ๋ชจ๋์์ ์์ ์ ์ํํ ๋์๋ ์ธํฐ๋ฝํธ๋ฅผ disable์์ผ ์ธํฐ๋ฝํธ๊ฐ CPU ์ ์ด๊ถ์ ๊ฐ์ ธ๊ฐ์ง ๋ชปํ๋๋ก ํ๋ค.
- ํ๋ก์ธ์ค๊ฐ ์์คํ ์ฝ์ ํ์ฌ ์ปค๋๋ชจ๋๋ก ์ง์ , ์์ ์ ์ํํ๋ ๋์ค ๋ฌธ๋งฅ๊ตํ์ด ๋ฐ์ํ ๋: ํ๋ก์ธ์ค1์ด ์ปค๋๋ชจ๋์์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๋์ค ์๊ฐ์ด ์ด๊ณผ๋์ด CPU ์ ์ด๊ถ์ด ํ๋ก์ธ์ค2๋ก ๋์ด๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ฒฝ์ฐ, ํ๋ก์ธ์ค2์ ์์ ์ด ๋ฐ์๋์ง ์๋๋ค. ๋ฐ๋ผ์ ์ปค๋๋ชจ๋์์ ์์ ์ ์๊ฐ์ด ์ด๊ณผ๋์ด๋ CPU ์ ์ด๊ถ์ด ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋์ด๊ฐ์ง ์๋๋ก ํ๋ค.
- ๋ฉํฐ ํ๋ก์ธ์์์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ปค๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋: ๋ฉํฐ ํ๋ก์ธ์ ํ๊ฒฝ์์ ๋ ๊ฐ์ CPI๊ฐ ๋์์ ์ปค๋ ๋ด๋ถ์ ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ์ฌ ์กฐ์์ ํ๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค. ์ปค๋ ๋ด๋ถ์ ์๋ ๊ฐ ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋๋ง๋ค ๋ฐ์ดํฐ๋ฅผ lock/unlockํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
โ๏ธ ์๊ณ ์์ญ (Critical Section)
๊ณต์ ์์์ ์ฝ๋ ์์ญ์ผ๋ก ๋ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ ๊ทผํด์๋ ์๋๋ ์์ญ์ด๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ 3๊ฐ์ง ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ด์ผ ํ๋ค.
- ์ํธ๋ฐฐ์ (Mutual Exclusion): ํ๋์ ํ๋ก์ธ์ค๊ฐ ์๊ณ์์ญ์ ๋ค์ด๊ฐ ์์ผ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋ค์ด๊ฐ ์ ์๋ค.
- ์งํ (Process): ์๊ณ๊ตฌ์ญ์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด, ์ด๋ ํ๋ก์ธ์ค๊ฐ ๋ค์ด๊ฐ ๊ฒ์ธ์ง ์ ์ ํ ์ ํ์ด ํ์ํ๋ค.
- ์ ํ๋๊ธฐ (Bounded waiting): ๊ธฐ์์ํ ๋ฐฉ์ง๋ฅผ ์ํด, ํ ๋ฒ ๋ค์ด๊ฐ๋ค ๋์จ ๋ค์ ์ ์ฅ์์ ํ๋ก์ธ์ค๋ ์ ํ์ ์ค๋ค.
์๊ณ์์ญ ํด๊ฒฐ ๋ฐฉ์์ผ๋ก๋ ํผํฐ์จ ์๊ณ ๋ฆฌ์ฆ/ ๋ฎคํ ์ค(Lock ํ๋)/ ์ธ๋งํฌ์ด(Lock์ด ์ฌ๋ฌ๊ฐ) ๋ฑ์ด ์๋ค.
๐ ๐ ๐
โป๏ธ DeadLock ๊ต์ฐฉ์ํ
๋ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๋ ์์์ ์๋ก ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฌดํ ๋๊ธฐ์ ๋น ์ง ์ํฉ์ ๋งํ๋ค.
โ๏ธ ๋ฐ๋๋ฝ ๋ฐ์ ์กฐ๊ฑด
- ์ํธ๋ฐฐ์ : ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง์ด ํด๋น ์์์ ์ฌ์ฉํ ์ ์๋ค. ์ฌ์ฉ ์ค์ธ ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ค๋ฉด ํด๋น ์์์ด ํด์ ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
- ์ ์ ๋๊ธฐ: ์์์ ์ต์ ํ๋ ์ด์ ๋ณด์ ํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ ์์์ ์ ์ ํ๊ธฐ ์ํด ๋๊ธฐํด์ผ ํ๋ค.
- ๋น์ ์ : ์ด๋ฏธ ํ ๋น๋ ์์์ ๊ฐ์ ๋ก ๋นผ์์ ์ ์ ํ ์ ์๋ค.
- ์ํ ๋๊ธฐ: ๋๊ธฐ ํ๋ก์ธ์ค์ ์งํฉ์ด ์ํํํ๋ก ์์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ด์ผ ํ๋ค.
โ๏ธ ๋ฐ๋๋ฝ ํด๊ฒฐ๋ฒ
- ๋ฐ๋๋ฝ์ด ๋ฐ์ํ์ง ์๋๋ก ์๋ฐฉํ๊ธฐ
- ๋ฐ๋๋ฝ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ธ์ ํ๋ฉด์๋ ์ ์ ํ๊ฒ ํํผํ๊ธฐ
- ๋ฐ๋๋ฝ ๋ฐ์์ ํ์ฉํ์ง๋ง ๋ฐ๋๋ฝ์ ํ์งํ์ฌ ๋ฐ๋๋ฝ์์ ํ๋ณตํ๊ธฐ
- ๋ฌด์ํ๊ธฐ
โผ๏ธ ๋ฐ๋๋ฝ ์๋ฐฉ(Prevention)
๋ฐ์์กฐ๊ฑด 4๊ฐ์ง ์ค ํ๋๋ผ๋ ๋ฐ์ํ์ง ์๋๋ก ํ์ฌ ๋ฐ๋๋ฝ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ฐจ๋จํ๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด๋ ์์คํ ์ฒ๋ฆฌ๋์ด ๋์ด๋๋ฉฐ ํจ์จ์ฑ์ด ๋จ์ด์ง๋ค๋ ๋จ์ ์ด ์๋ค.
โผ๏ธ ๋ฐ๋๋ฝ ํํผ(Avoidance)
ํํผ ์๊ณ ๋ฆฌ์ฆ์ ์์ ํ ๋น ํ์๋ ์์คํ ์ด ํญ์ ์์ ์ํ์ ์์ ์ ์๋๋ก ํ ๋น์ ํ์ฉํ์๋ ๊ฒ์ด๋ค.
- ์์ ์ํ(Safe State): ์์คํ ์ ํ๋ก์ธ์ค๋ค์ด ์์ฒญํ๋ ๋ชจ๋ ์์์, ๋ฐ๋๋ฝ์ ๋ฐ์์ํค์ง ์์ผ๋ฉด์๋ ์ฐจ๋ก๋ก ๋ชจ๋ ํ ๋นํด์ค ์ ์๋ ์ํ
- ์์ ์์(Safe Sequence): ํน์ ์์๋ก ํ๋ก์ธ์ค๋ค์๊ฒ ์์์ ํ ๋นํ๋ ๋ฑ ์์ ์ ํ ๋. ๋ฐ๋๋ฝ์ด ๋ฐ์ํ์ง ์๋ ์์๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒ
- ๋ถ์์ ์ํ: ์์ ์ํ๊ฐ ์๋ ์ํ์ด๋ฉฐ ๋ฐ๋๋ฝ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฌํ์ด๋ค.
๐ก ์ํ์ ์๊ณ ๋ฆฌ์ฆ (Banker's Algorithm)
ํํผ ๋ฐฉ๋ฒ์์ ๋ํ์ ์ผ๋ก ์ฐ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ค์ต์คํธ๋ผ๊ฐ ์ ์ํ ๊ธฐ๋ฒ์ผ๋ก, ์ด๋ค ์์์ ํ ๋น์ ํ์ฉํ ์ง ๊ฒฐ์ ํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ๊ฒฐ์ ๋ ๋ชจ๋ ์์๋ค์ ์ต๋ ๊ฐ๋ฅํ ํ ๋น๋์ ๊ฐ์ง๊ณ ์๋ฎฌ๋ ์ด์ ํด์, ์์ ํ ๋น ํ์๋ ์์ ์ํ๋ก ์์ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ ๊ฒ์ด๋ค. ์ฆ ๋๊ธฐ ์ค์ธ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ํ๋์ ๋ํ ๊ต์ฐฉ์ํ ๊ฐ๋ฅ์ฑ์ ๋ฏธ๋ฆฌ ์กฐ์ฌํ๋ ๊ฒ์ด๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ์ฌ์ ์ ์์ ํ ๋น๋์ ํ์ ํ๊ณ ๋ฐ๋๋ฝ์ ํํผํ ์ ์๋ค.
โผ๏ธ ๋ฐ๋๋ฝ ํ์ง(Detection) ๋ฐ ํ๋ณต(Recovery)
์์คํ ์ด ๋ฐ๋๋ฝ ์๋ฐฉ์ด๋ ํํผ๋ฒ์ ์ฌ์ฉํ์ง ์์์ ๋, ๋ฐ๋๋ฝ์ด ๋ฐ์ํ ์ ์์ผ๋ ํ๋ณต์ ์ํด ๋ฐ๋๋ฝ์ ํ์งํ๊ณ ํ๋ณตํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ปํ๋ค.
์์ํ ๋น ๊ทธ๋ํ ๋ฑ์ ํตํด ๋ฐ๋๋ฝ์ด ํ์ง๋๋ฉด, ๋จ์ํ ํ๋ก์ธ์ค๋ฅผ 1๊ฐ ์ด์ ์ค๋จ์ํค๊ฑฐ๋ ์์์ ์ ์ ํ๋๋ก ํด์ ๋ฐ๋๋ฝ์ ํ๋ณต์ํจ๋ค.
๐ ๐ ๐
โป๏ธ ๋ฉ๋ชจ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ๋ ์ปดํจํฐ์์ ์์ ์ ์ํํ๊ธฐ ์ํด ์ฒ๋ฆฌ ๋์์ด๋ ๊ฒฐ๊ณผ ๋ฑ์ ์ ์ฅํ๊ธฐ ์ํ ๊ณต๊ฐ์ด๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ์ ๋ณด๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์ฒ๋ฆฌ๋๋ค.
โป๏ธ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ
๋ณด์กฐ๊ธฐ์ต์ฅ์น๋ฅผ ๊ฐ์์ ๋ ผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ค์ค ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๊ธฐ์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๊ฐ ์ ํ์ ์ด์ด์ ๊ณ ์๋ ๋ฐฉ๋ฒ์ด๋ค. ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์ ๋ถ๋ถ์ ์ธ ์ ์ฌ๋ง์ผ๋ก๋ ์คํ์ํฌ ์ ์๋๋ฐ ์ด๋ฌํ ํน์ง์ ์ด์ฉํ ๋ฐฉ๋ฒ์ผ๋ก, ํ๋ก์ธ์ค ์คํ์ ๊ผญ ํ์ํ ๋ถ๋ถ๋ง ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๊ณ ๋๋จธ์ง๋ ๋์คํฌ์ ์ ์ฅํ๋ค.
โ๏ธ ํ์ด์ง(Paging) ๊ธฐ๋ฒ
๋ณด์กฐ๊ธฐ์ต์ฅ์น๋ฅผ ์ด์ฉํ ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ ํฌ๊ธฐ์ ๋ธ๋ก์ผ๋ก ๋๋ ๊ฒ์ด๋ค. ์ฃผ๊ธฐ์ต์ฅ์น ๋ํ ํ์ด์ง์ ๊ฐ์ ํฌ๊ธฐ๋ก ๋๋๋๋ฐ ์ด๋ Frame์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฌ์ฉํ์ง ์๋ ํ๋ ์์ ํ์ด์ง๋ก ์ฎ๊ธฐ๊ณ , ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ ํ์ด์ง ๋จ์๋ก ํ๋ ์์ ์ฎ๊ฒจ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ๋ด๋ถ ๋จํธํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
โผ๏ธ ํ์ด์ง ๊ต์ฒด ๊ธฐ๋ฒ
- FIFO (First-In First Out): ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฅ ๋จผ์ ์ฌ๋ผ์จ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ์ด์ง์ฌ๋ ๊ต์ฒด๋๋ค๋ ๋จ์ ์ด ์๋ค.
- OPT (Optimal Page Replacement) : ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ์๊ณ ๋ฆฌ์ฆ์ด์ง๋ง, ํ๋ก์ธ์ค๊ฐ ์์ผ๋ก ์ฌ์ฉํ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ์์์ผํ๋ค๋ ๊ตฌํ ๋ถ๊ฐ๋ฅํ ์ ์ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ ์ค์ ๊ตฌํ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋์ง ์๋๋ค.
- LRU (Least-Recently-Used): ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ๊ฐ์ฅ ๋จผ์ ๋ด๋ณด๋ด๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์์ผ๋ฉด ๋์ค์๋ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ๋ ์์ด๋์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค. ์ค๋ฒํค๋๊ฐ ๋๋ค๋ ๋จ์ ์ด ์๋ค.
- LFU (Least Frequently Used): ์ฐธ์กฐ๋ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํ์ด์ง๊ฐ ์ฐธ์กฐ๋ ๋๋ง๋ค ์ฐธ์กฐํ์๋ฅผ ์ฆ๊ฐ์์ผ ์ด๊ฒ์ด ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ๋ด๋ณด๋ธ๋ค. ๊ฐ์ฅ ์ต๊ทผ์ ์ฎ๊ฒจ์ง ํ์ด์ง๊ฐ ๊ต์ฒด๋ ์ ์๋ค๋ ๊ฒ, ์ด๊ธฐ์ ๋ง์ด ์ฌ์ฉ๋์์ง๋ง ์ต๊ทผ์๋ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ผ๋ฉด ๊ต์ฒด ๊ฐ๋ฅ์ฑ์ด ๋ฎ๋ค๋ ๊ฒ, ์ค๋ฒํค๋๊ฐ ๋๋ค๋ ๊ฒ๊ณผ ๊ฐ์ ๋จ์ ์ด ์๋ค.
- MFU (Most Frequently Used): ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ํ์ด์ง๋ถํฐ ๊ต์ฒดํ๋ ๊ธฐ๋ฒ์ด๋ค. ์ ๊ฒ ์ฌ์ฉ๋ ํ์ด์ง์ผ ์๋ก ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด์จ์ง ์ผ๋ง ์๋์ด์ ์์ผ๋ก ๋ง์ด ์ฌ์ฉ๋ ๊ฒ์ด๋ผ๋ ๊ฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค.
โ๏ธ ์ธ๊ทธ๋ฉํ ์ด์ (Segmentation) ๊ธฐ๋ฒ
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ก ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๋ ผ๋ฆฌ์ ๋จ์์ธ ์ธ๊ทธ๋ฉํ ์ด์ ์ผ๋ก ๋ถํ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๋ ๊ฒ์ด๋ค. ํฌ๊ธฐ๊ฐ ์ ๊ฐ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ถ๋จํธํ๊ฐ ์ผ์ด๋ ์ ์๋ค.
๐ ๐ ๐
๐ CS ์ง๋ฌธ ์ ๋ฆฌ
- ๋ฐ๋๋ฝ์ด๋ ๋ฌด์์ธ๊ฐ? ๋ฐ์ ์กฐ๊ฑด์?
- ๋ฐ๋๋ฝ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์?
- ์ธ๋งํฌ์ด์ ๋ฎคํ ์ค์ ์ฐจ์ด: ๋ฎคํ ์ค๋ Locking ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ฝ์ ๊ฑธ์ ์ค๋ ๋๋ง์ด ์๊ณ์์ญ์ ๋๊ฐ ๋ ๋ฝ์ ํด์ ํ ์ ์๋ค. ํ์ง๋ง ์ธ๋งํฌ์ด๋ Signaling ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ฝ์ ๊ฑธ์ง ์์ ์ฐ๋ ๋๋ signal์ ์ด์ฉํด ๋ฝ์ ํด์ ํ ์ ์๋ค. ์ธ๋งํฌ์ด์ ์นด์ดํธ๋ฅผ 1๋ก ์ค์ ํ๋ฉด ๋ฎคํ ์ค์ฒ๋ผ ํ์ฉํ ์ ์๋ค.
- CPU์ ๋ฉ๋ชจ๋ฆฌ I/O ๋์ค ์๊ธฐ๋ ๋ณ๋ชฉํ์์ ์ด๋ป๊ฒ ํด๊ฒฐํ๋๊ฐ?: ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ์ธตํํ๋ฉด ๋ณ๋ชฉํ์์ ํด๊ฒฐํ ์ ์๋ค. ์์ฃผ ์ ๊ทผํ๋ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋ ์บ์์ ์ ์ฅํ์ฌ ์ ๊ทผ ์๋๋ฅผ ํฅ์์์ผ ๋ถํ๋ฅผ ์ค์ธ๋ค.
- ๊ต์ฐฉ์ํ๋ ๋ฌด์์ธ๊ฐ?
- ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋?
- ํ์ด์ง ๊ต์ฒด ๊ธฐ๋ฒ์ ๋ํด ์๋ ๊ฒ์ ์ค๋ช ํ์์ค
- ํ์ด์ง ๊ธฐ๋ฒ๊ณผ ์ธ๊ทธ๋ฉํ ์ด์ ๊ธฐ๋ฒ์ ์ฐจ์ด๋?
๐ ๐ ๐
๏ผฐ๏ฝ๏ฝ๏ฝ๏ฝ ๏ฝ ๏ผข๏ฝ ๏ผณ๏ผก๏ผน
๐๐ฉ๐ข๐ฏ๐ฌ๐ด ๐ง๐ฐ๐ณ ๐ณ๐ฆ๐ข๐ฅ๐ช๐ฏ๐จ