• toc {:toc}

Operation System(์šด์˜์ฒด์ œ) ๊ตฌ์กฐ

OS๋Š” ๋ฌด์—‡์„ ํ•˜๋Š”๊ฐ€? OS๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€? ์™œ OS๋ฅผ ์ „๊ณต ํ•„์ˆ˜ ๊ณผ๋ชฉ์œผ๋กœ ์„ ์ •ํ•  ๋งŒํผ ์ค‘์š”ํ•˜๊ฒŒ ๋‹ค๋ฃจ๋Š”๊ฐ€? ์ด๊ฒƒ์ด OS๋ฅผ ์ฒ˜์Œ ์ ‘ํ•  ๋•Œ ๋“œ๋Š” ์ƒ๊ฐ์ด๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

  • ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ผ๊นŒ? - ์ปดํ“จํ„ฐ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒƒ
  • ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”๊ฐ€? - ๋งˆ์šฐ์Šค ํด๋ฆญ, ํ‚ค๋ณด๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ, ์Šคํ”ผ์ปค๋ฅผ ํ†ตํ•œ ์ถœ๋ ฅ์„ ๋“ฃ๋Š”๋‹ค.
  • ์ž…๋ ฅ์„ ํ†ตํ•ด ์–ด๋–ค ์ถœ๋ ฅ์„ ๋ฐ›๋Š”๊ฐ€? - ํ”„๋กœ๊ทธ๋žจ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์€ ๋ฌด์—‡์ธ๊ฐ€? - ์†Œํ”„ํŠธ์›จ์–ด(ํ•˜๋“œ์›จ์–ด๋ฅผ ์šด์šฉํ•ด ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด ์ง‘ํ•ฉ)
  • ํ•˜๋“œ์›จ์–ด๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ์ปดํ“จํ„ฐ๋ฅผ ์ด๋ฃจ๋Š” ๋ฌผ๋ฆฌ์  ๋ถ€ํ’ˆ์„ ์˜๋ฏธํ•œ๋‹ค.

์ •๋ฆฌํ•˜๋ฉด, ์ปดํ“จํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๋ฌผ๋ฆฌ์  ๋ถ€ํ’ˆ, ํ•˜๋“œ์›จ์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ์ปดํ“จํ„ฐ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ์ž‘์—…์„ ์„ค์ •ํ•ด ์ž…๋ ฅ์„ ์ „๋‹ฌํ•˜๊ณ  ์ถœ๋ ฅ์„ ๋ฐ›๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

์ด ๋•Œ, ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ†ตํ•ด ํ•˜๋“œ์›จ์–ด๊ฐ€ ์›ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„์„ ์šด์˜์ฒด์ œ๋ผ ํ•œ๋‹ค.

image


์šด์˜์ฒด์ œ๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜

Device Controller / Driver

๋งˆ์šฐ์Šค ํด๋ฆญ, ํ‚ค๋ณด๋“œ ํƒ€์ž์™€ ๊ฐ™์€ ์ž…๋ ฅ์„ ๋„ฃ๋Š”๋‹ค. ๋งˆ์šฐ์Šค, ํ‚ค๋ณด๋“œ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋„ ํ•˜๋“œ์›จ์–ด์— ์†ํ•œ๋‹ค. ์ปดํ“จํ„ฐ๋Š” ์„ธ์„ธํ•œ ๋ถ€๋ถ„๋„ ์ฒด๊ณ„ํ™” ๋˜์–ด ์žˆ์–ด ๊ฐ ์žฅ์น˜๋“ค์„ ๋‹ค๋ฃจ๋Š” Controller์™€ Driver๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • Controller - ํ•˜๋“œ์›จ์–ด์—์„œ ๋ฌผ๋ฆฌ์  ์ž…๋ ฅ์„ ํ–ˆ์„ ๋•Œ ๊ทธ ์‹ ํ˜ธ๋ฅผ ์Šค์บ” ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  • Driver - ์Šค์บ” ์ฝ”๋“œ๋ฅผ ์šด์˜ ์ฒด์ œ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. Controller๋Š” Interrupt๋ผ๋Š” ๊ฒƒ์„ ๋ฐœ์ƒ์‹œ์ผœ CPU์—๊ฒŒ โ€˜๋‚˜ ์ด๋ ‡๊ฒŒ ํ–‰๋™ํ•˜๊ณ  ์‹ถ์€๋ฐ ์‹คํ–‰ํ•ด์ค˜โ€™๋ผ๋Š” ๋œป์„ ์ „๋‹ฌํ•œ๋‹ค.

๊ฐ Driver๋“ค์€ ์„œ๋กœ๊ฐ€ ํ•จ๊ป˜ ์–ด์šฐ๋Ÿฌ์ ธ ์œ ๊ธฐ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ์˜ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด ํ•„์š”ํ•œ๋ฐ, ์ด ๊ฒƒ์ด common bus์ด๋‹ค.

Interrupt

  • Interrupt - ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์„ ๋•Œ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์— ์˜ํ•ด ์˜ˆ์™ธ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ด ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ณด๋‚ด๋Š” ์‹ ํ˜ธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์— ๋”ฐ๋ฅธ Device Driver, Interrupt์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ์‚ดํŽด๋ณด์ž.

  1. ์ž…๋ ฅ์ด ๋ฐœ์ƒํ•˜๋ฉด Device Driver๋Š” ์ž…๋ ฅ์„ ๋ฒ„ํผ์— ์ €์žฅํ•œ๋‹ค.
  2. Interrupt Controller๋Š” Interrupt๋ฅผ ๋‹ค๋ฃจ๋Š” ํšŒ๋กœ์ธ๋ฐ ๊ฐ ์žฅ์น˜์— ๋”ฐ๋ฅธ ๋ฒˆํ˜ธ๊ฐ€ mapping๋˜์–ด ์žˆ๊ณ  Interrupt๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  3. Interrupt Controller๋Š” Interrupt Request Line์— ๋”ฐ๋ผ CPU์— Interrupt๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
  4. CPU๋Š” Interrupt์— ๋”ฐ๋ผ ์ ์ ˆํ•œ Interrupt Service Routine์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Interrupt Vector Table์„ ํ™•์ธํ•œ๋‹ค.
  5. ์„ ํƒ๋œ Interrupt Service Routine์„ ๋”ฐ๋ผ Interrupt๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. image

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๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค.

  1. Simplest - ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์ „๋‹ฌํ•œ๋‹ค.
    • ๊ฐ€์žฅ ๊ฐ„ํŽธํ•œ ๋ฐฉ์‹์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ ˆ์ง€์Šคํ„ฐ์˜ ์šฉ๋Ÿ‰๋ณด๋‹ค ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ฐฉ์‹์˜ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  2. Block - ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ Block ํ˜•ํƒœ๋กœ ์Œ“์•„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•ด ์ „๋‹ฌํ•œ๋‹ค.
    • ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๋”๋ผ๋„ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์œ ๊ฐ€ ์žˆ๋‹ค.
  3. Stack - ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Œ“์•˜๋‹ค๊ฐ€ ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

์šด์˜์ฒด์ œ ๊ตฌ์กฐ

Monolithic Structure

  • ์ปค๋„ ๊ณต๊ฐ„์—์„œ ํ•˜๋‚˜์˜ ํฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์šด์˜์ฒด์ œ๊ฐ€ ๊ตฌํ˜„๋œ ๊ตฌ์กฐ
  • ๋ฆฌ๋ˆ…์Šค, ์œ ๋‹‰์Šค, Windows ๋“ฑ์˜ ๊ตฌ์กฐ์ด๋‹ค.
  • ๋” ๋น ๋ฅด๊ณ  ๋‚ฎ์€ Overhead(ํ•„์š”ํ•œ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค)๋ฅผ ์š”๊ตฌํ•œ๋‹ค.
  • ์„œ๋กœ ์–ฝํ˜€์žˆ๊ฑฐ๋‚˜ ๋ญ‰์ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ ํž˜๋“ค๋‹ค.

Layered Approach

  • ๋ณต์žกํ•œ ์šด์˜์ฒด์ œ๋ฅผ ๋” ์ž‘๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋ถ„ํ• ํ•œ ๋ฐฉ์‹
  • ๊ฐ layer๋Š” level์„ ๊ฐ–๋Š”๋ฐ, ์ž์‹ ๋ณด๋‹ค ๋‚ฎ์€ level์˜ layer์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋กœ์จ high level์ด ๋ ์ˆ˜๋ก ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ์ •๊ตํ•˜๊ณ  ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • low level ์ผ์ˆ˜๋ก ๋” ๊ทผ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์œ ์ง€, ๊ด€๋ฆฌ๋Š” ๋” ์‰ฝ์ง€๋งŒ ์†๋„๋‚˜ ์ˆ˜ํ–‰์ ์ธ ์ธก๋ฉด์—์„œ ๋–จ์–ด์ง„๋‹ค.

Microkernels

  • ์œ ์ € ๋ชจ๋“œ์—์„œ ๋‹ด๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„๋“ค์€ ์œ ์ € ๋ชจ๋“œ๋กœ ๋„˜๊ฒจ ์ปค๋„์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์ž‘๊ณ  ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹
  • ๋ณด๋‹ค ๋” ๋ชจ๋“ˆํ™”๋˜์–ด ์œ ์—ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ™•์žฅํ•˜๊ฑฐ๋‚˜, ์ถ”๊ฐ€๋ฅผ ํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋‹ค.
  • ๋ฒ„๊ทธ๋‚˜ ๋ณด์•ˆ ๊ฒฐํ•จ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ชจ๋“ˆํ™”๋˜์–ด ์žˆ์–ด ์‹œ์Šคํ…œ ์ „์ฒด์— ์˜ํ–ฅ์„ ๊ฐ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ์•ˆ์ •์ ์ด๊ณ  ์•ˆ์ „ํ•˜๋‹ค.
  • ํŒŒ์ผ ์ฒ˜๋ฆฌ, ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„ ๋“ฑ์˜ ์„œ๋น„์Šค๋“ค์ด ์œ ์ € ๋ชจ๋“ˆ์˜ message passing์„ ํ†ตํ•ด ์ „๋‹ฌ๋œ๋‹ค.
  • ์ปค๋„ ๋ชจ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด ์œ ์ € ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋А๋ฆฌ๊ณ  ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

image (์ถœ์ฒ˜: https://techdifferences.com/difference-between-microkernel-and-monolithic-kernel.html)