- toc {:toc}
Operation System(์ด์์ฒด์ ) ๊ตฌ์กฐ
OS๋ ๋ฌด์์ ํ๋๊ฐ? OS๊ฐ ์ ํ์ํ๊ฐ? ์ OS๋ฅผ ์ ๊ณต ํ์ ๊ณผ๋ชฉ์ผ๋ก ์ ์ ํ ๋งํผ ์ค์ํ๊ฒ ๋ค๋ฃจ๋๊ฐ? ์ด๊ฒ์ด OS๋ฅผ ์ฒ์ ์ ํ ๋ ๋๋ ์๊ฐ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์.
- ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋ฌด์์ ์๋ฏธํ๋ ๊ฒ์ผ๊น? - ์ปดํจํฐ์ ์ํธ์์ฉํ๋ ๊ฒ
- ์ด๋ป๊ฒ ์ํธ์์ฉํ๋๊ฐ? - ๋ง์ฐ์ค ํด๋ฆญ, ํค๋ณด๋๋ฅผ ์ ๋ ฅํ๊ณ ๋ชจ๋ํฐ, ์คํผ์ปค๋ฅผ ํตํ ์ถ๋ ฅ์ ๋ฃ๋๋ค.
- ์ ๋ ฅ์ ํตํด ์ด๋ค ์ถ๋ ฅ์ ๋ฐ๋๊ฐ? - ํ๋ก๊ทธ๋จ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค.
- ํ๋ก๊ทธ๋จ์ ๋ฌด์์ธ๊ฐ? - ์ํํธ์จ์ด(ํ๋์จ์ด๋ฅผ ์ด์ฉํด ํน์ ์์ ์ ์ํํ๋ ๋ช ๋ น์ด ์งํฉ)
- ํ๋์จ์ด๋ ๋ฌด์์ธ๊ฐ? - ์ปดํจํฐ๋ฅผ ์ด๋ฃจ๋ ๋ฌผ๋ฆฌ์ ๋ถํ์ ์๋ฏธํ๋ค.
์ ๋ฆฌํ๋ฉด, ์ปดํจํฐ๋ ์ฌ๋ฌ ๋ฌผ๋ฆฌ์ ๋ถํ, ํ๋์จ์ด๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ์ปดํจํฐ์ ์ํธ์์ฉํ๋ ๊ฒ์ ํ๋์จ์ด๋ฅผ ์ํํธ์จ์ด๋ฅผ ํตํด ์ํ๋ ์์ ์ ์ค์ ํด ์ ๋ ฅ์ ์ ๋ฌํ๊ณ ์ถ๋ ฅ์ ๋ฐ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋งํ๋ค.
์ด ๋, ์ํํธ์จ์ด๋ฅผ ํตํด ํ๋์จ์ด๊ฐ ์ํ๋ ์์ ์ ํ๋๋ก ์ค์ ํ๋ ๋ถ๋ถ์ ์ด์์ฒด์ ๋ผ ํ๋ค.

์ด์์ฒด์ ๋ ์ด๋ป๊ฒ ์๋ํ๋
Device Controller / Driver
๋ง์ฐ์ค ํด๋ฆญ, ํค๋ณด๋ ํ์์ ๊ฐ์ ์ ๋ ฅ์ ๋ฃ๋๋ค. ๋ง์ฐ์ค, ํค๋ณด๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ ํ๋์จ์ด์ ์ํ๋ค. ์ปดํจํฐ๋ ์ธ์ธํ ๋ถ๋ถ๋ ์ฒด๊ณํ ๋์ด ์์ด ๊ฐ ์ฅ์น๋ค์ ๋ค๋ฃจ๋ Controller์ Driver๊ฐ ์กด์ฌํ๋ค.
- Controller - ํ๋์จ์ด์์ ๋ฌผ๋ฆฌ์ ์ ๋ ฅ์ ํ์ ๋ ๊ทธ ์ ํธ๋ฅผ ์ค์บ ์ฝ๋๋ก ๋ณํํ๋ค.
- Driver - ์ค์บ ์ฝ๋๋ฅผ ์ด์ ์ฒด์ ๊ฐ ์ดํดํ ์ ์๋ ์ฝ๋๋ก ๋ณํํ๋ ์ญํ ์ ํ๋ค. Controller๋ Interrupt๋ผ๋ ๊ฒ์ ๋ฐ์์์ผ CPU์๊ฒ โ๋ ์ด๋ ๊ฒ ํ๋ํ๊ณ ์ถ์๋ฐ ์คํํด์คโ๋ผ๋ ๋ป์ ์ ๋ฌํ๋ค.
๊ฐ Driver๋ค์ ์๋ก๊ฐ ํจ๊ป ์ด์ฐ๋ฌ์ ธ ์ ๊ธฐ์ ์ผ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ์๋ก์ ์ ๋ณด๋ฅผ ์ ์ ์๋ ๋ฐฉ์์ด ํ์ํ๋ฐ, ์ด ๊ฒ์ด common bus์ด๋ค.
Interrupt
- Interrupt - ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ์์ ๋ ํ๋์จ์ด ์ฅ์น์ ์ํด ์์ธ์ํฉ์ด ๋ฐ์ํด ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ณด๋ด๋ ์ ํธ๋ฅผ ์๋ฏธํ๋ค.
ํค๋ณด๋ ์ ๋ ฅ์ ๋ฐ๋ฅธ Device Driver, Interrupt์ ์ฒ๋ฆฌ ๊ณผ์ ์ ์ดํด๋ณด์.
- ์ ๋ ฅ์ด ๋ฐ์ํ๋ฉด Device Driver๋ ์ ๋ ฅ์ ๋ฒํผ์ ์ ์ฅํ๋ค.
- Interrupt Controller๋ Interrupt๋ฅผ ๋ค๋ฃจ๋ ํ๋ก์ธ๋ฐ ๊ฐ ์ฅ์น์ ๋ฐ๋ฅธ ๋ฒํธ๊ฐ mapping๋์ด ์๊ณ Interrupt๋ฅผ ๋ฐ์์ํจ๋ค.
- Interrupt Controller๋ Interrupt Request Line์ ๋ฐ๋ผ CPU์ Interrupt๋ฅผ ์ ๋ฌํ๋ค.
- CPU๋ Interrupt์ ๋ฐ๋ผ ์ ์ ํ Interrupt Service Routine์ ์คํํ๊ธฐ ์ํด Interrupt Vector Table์ ํ์ธํ๋ค.
- ์ ํ๋ Interrupt Service Routine์ ๋ฐ๋ผ Interrupt๋ฅผ ์ฒ๋ฆฌํ๋ค.

Interrupt ์ข ๋ฅ
- Hardware Interrupt - ์์ ์์์ ๊ฐ์ด ํ๋์จ์ด ์ฅ์น์ Interrupt๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด๋ค.
- Software Interrupt - ์ํํธ์จ์ด์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ
System Call
Interrupt๋ฅผ ํตํด ์ ๋ฌ๋ ์ ๋ ฅ์ ์ปดํจํฐ์ ์ผ๋ก ์ด๋ป๊ฒ ์ธ์๋ ์ ์์๊น?
ํค๋ณด๋๋ก ์ ๋ ฅ์ ํ๋ฉด Device Driver์ ์ํด ์ ๋ ฅ๊ฐ์ ๋ฒํผ์ ์ ์ฅํ๊ณ Interrupt๋ฅผ ํตํด CPU๊ฐ ์ ๋ ฅ์ ๋ฐ์ ์ค๋น๋ฅผ ๋ง์น๋ค. ์ด ํ System Call์ ํตํด ์ ๋ ฅ๊ฐ์ ์ฒ๋ฆฌํ๋ค.
Transclude of System-Call
System Call Parameter Passing
- ์๋ฌธ : System Call์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ด๋ค ์ ์ ๊ณ ๋ คํด์ผ ํ๋๊ฐ?
System Call์ ์ฌ์ฉํ๋ ค๋ฉด System Call์ด ํ์๋ก ํ๋ ๊ฐ์ ์ ๋ฌํด์ค์ผ ํ๋ค. ์ด ์ ๋ฌ ๊ฐ์ ํ๋ผ๋ฏธํฐ(Parameter)๋ผ๊ณ ํ๋ค. ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํด์ฃผ๋ ๋ฐฉ์์ 3๊ฐ์ง ๋ฐฉ์์ด ์๋ค.
- Simplest - ๊ฐ์ ๊ทธ๋๋ก ๋ ์ง์คํฐ๋ก ์ ๋ฌํ๋ค.
- ๊ฐ์ฅ ๊ฐํธํ ๋ฐฉ์์ด๋ค. ํ์ง๋ง ๋ ์ง์คํฐ์ ์ฉ๋๋ณด๋ค ๋ ๋ง์ ์ ๋ณด๊ฐ ์ ๋ฌ๋๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ฐฉ์์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
- Block - ํ๋ผ๋ฏธํฐ์ ๊ฐ์ Block ํํ๋ก ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ ์ง์คํฐ์ ์ ์ฅํด ์ ๋ฌํ๋ค.
- ํ๋ผ๋ฏธํฐ์ ํฌ๊ธฐ๊ฐ ํฌ๋๋ผ๋ ๋ ์ง์คํฐ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ ๊ฐ ์๋ค.
- Stack - ์คํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ค๊ฐ ๋ด๋ณด๋ด๋ ๋ฐฉ์์ ์ฌ์ฉํด ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ๋ค.
์ด์์ฒด์ ๊ตฌ์กฐ
Monolithic Structure
- ์ปค๋ ๊ณต๊ฐ์์ ํ๋์ ํฐ ํ๋ก๊ทธ๋จ์ผ๋ก ์ด์์ฒด์ ๊ฐ ๊ตฌํ๋ ๊ตฌ์กฐ
- ๋ฆฌ๋ ์ค, ์ ๋์ค, Windows ๋ฑ์ ๊ตฌ์กฐ์ด๋ค.
- ๋ ๋น ๋ฅด๊ณ ๋ฎ์ Overhead(ํ์ํ ์ถ๊ฐ ๋ฆฌ์์ค)๋ฅผ ์๊ตฌํ๋ค.
- ์๋ก ์ฝํ์๊ฑฐ๋ ๋ญ์ณ ์๊ธฐ ๋๋ฌธ์ ์ ์ง ๋ณด์ํ๊ธฐ ํ๋ค๋ค.
Layered Approach
- ๋ณต์กํ ์ด์์ฒด์ ๋ฅผ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฝ๋๋ก ๋ถํ ํ ๋ฐฉ์
- ๊ฐ layer๋ level์ ๊ฐ๋๋ฐ, ์์ ๋ณด๋ค ๋ฎ์ level์ layer์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
- ์ด๋ก์จ high level์ด ๋ ์๋ก ์ฌ์ฉ์์๊ฒ ๋ ์ ๊ตํ๊ณ ๋ณต์กํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- low level ์ผ์๋ก ๋ ๊ทผ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์ ์ง, ๊ด๋ฆฌ๋ ๋ ์ฝ์ง๋ง ์๋๋ ์ํ์ ์ธ ์ธก๋ฉด์์ ๋จ์ด์ง๋ค.
Microkernels
- ์ ์ ๋ชจ๋์์ ๋ด๋นํ ์ ์๋ ๋ถ๋ถ๋ค์ ์ ์ ๋ชจ๋๋ก ๋๊ฒจ ์ปค๋์ ๊ฐ๋ฅํ ํ ์๊ณ ๊ฐ๋ณ๊ฒ ๋ง๋๋ ๋ฐฉ์
- ๋ณด๋ค ๋ ๋ชจ๋ํ๋์ด ์ ์ฐํ ์ ์๋ค.
- ํ์ฅํ๊ฑฐ๋, ์ถ๊ฐ๋ฅผ ํ๊ธฐ ํธ๋ฆฌํ๋ค.
- ๋ฒ๊ทธ๋ ๋ณด์ ๊ฒฐํจ์ด ๋ฐ์ํ์ ๋ ๋ชจ๋ํ๋์ด ์์ด ์์คํ ์ ์ฒด์ ์ํฅ์ ๊ฐํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ ์์ ์ ์ด๊ณ ์์ ํ๋ค.
- ํ์ผ ์ฒ๋ฆฌ, ์ฅ์น ๋๋ผ์ด๋ฒ ๋ฑ์ ์๋น์ค๋ค์ด ์ ์ ๋ชจ๋์ message passing์ ํตํด ์ ๋ฌ๋๋ค.
- ์ปค๋ ๋ชจ๋์์ ์ฒ๋ฆฌํด์ผํ๋ ๋ถ๋ถ์ด ์ ์ ๋ชจ๋์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ฆฌ๊ณ ๋ณ๋ชฉํ์์ด ๋ฐ์ํ ์ ์๋ค.
(์ถ์ฒ: https://techdifferences.com/difference-between-microkernel-and-monolithic-kernel.html)