[์šด์˜์ฒด์ œ] System Structure
๐Ÿ–ฅ CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] System Structure

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๊ตฌ์กฐ

CPU

  • ๋ ˆ์ง€์Šคํ„ฐ
    • CPU๋Š” ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ)๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ
    • ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ฃผ๋ณ€ ์žฅ์น˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์„ ์„ธํŒ…ํ•˜๊ณ  CPU๋Š” ๋งค๋ฒˆ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์„ ์ฒดํฌํ•ด ์„œ๋น„์Šค ์š”์ฒญ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์˜ ์ž˜๋ชป๋œ ์ˆ˜ํ–‰์œผ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์šด์˜์ฒด์ œ์— ํ”ผํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๋ณดํ˜ธ ์ ˆ์ฐจ
  • ๋ชจ๋“œ๋น—์ด 0์ผ๋•Œ (๋ชจ๋‹ˆํ„ฐ ๋ชจ๋“œ = ์ปค๋„ ๋ชจ๋“œ = ์‹œ์Šคํ…œ ๋ชจ๋“œ)
    • ์šด์˜์ฒด์ œ๊ฐ€ cpu์—์„œ ์‹คํ–‰ ์ค‘
    • ๋ฌด์Šจ์ผ์ธ์ง€ ๋‹ค ํ• ์ˆ˜์žˆ์Œ
      • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ
      • i/o device ์ ‘๊ทผ
  • ๋ชจ๋“œ๋น—์ด 1์ผ ๋•Œ (์‚ฌ์šฉ์ž ๋ชจ๋“œ)
    • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด cpu๊ฐ–๊ณ ์žˆ์Œ
    • ๋ณด์•ˆ์„ ์œ„ํ•ด ์ œํ•œ๋œ(ํ•œ์ •๋œ) instruction๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ณด์•ˆ์„ ํ•ด์น  ์ˆ˜ ์žˆ๋Š” ์ค‘์š”ํ•œ ๋ช…๋ น์–ด๋Š” ๋ชจ๋‹ˆํ„ฐ ๋ชจ๋“œ์—์„œ๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•œ ํŠน๊ถŒ ๋ช…๋ น์œผ๋กœ ๊ทœ์ •
  • Interrupt๋‚˜ Exception ๋ฐœ์ƒ ์‹œ ํ•˜๋“œ์›จ์–ด๊ฐ€ mode bit → 0 ๋ณ€๊ฒฝ
  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ CPU๋ฅผ ๋„˜๊ธฐ๊ธฐ ์ „์— mode bit → 1 ์…‹ํŒ…Mode bit

๋ฉ”๋ชจ๋ฆฌ

  • CPU์˜ ์ž‘์—… ๊ณต๊ฐ„

DMA (Direct Memory Access)

  • ๋น ๋ฅธ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€๊นŒ์šด ์†๋„๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • CPU์˜ ์ค‘์žฌ ์—†์ด device controller๊ฐ€ device์˜ buffer storage์˜ ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ์— block ๋‹จ์œ„๋กœ ์ง์ ‘ ์ „์†ก
  • ๋ฐ”์ดํŠธ ๋‹จ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ block ๋‹จ์œ„๋กœ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ์‹œํ‚ด
  • ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ž์ฃผ ๊ฑธ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋‹ˆ DMA(=Controller)๊ฐ€ ์ง์ ‘ ๋™์ž‘

ํƒ€์ด๋จธ

  • ์ •ํ•ด์ง„ ์‹œ๊ฐ„์ด ํ๋ฅธ ๋’ค ์šด์˜์ฒด์ œ์—๊ฒŒ ์ œ์–ด๊ถŒ์ด ๋„˜์–ด๊ฐ€๋„๋ก ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ⇒ ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ๋…์ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•จ
  • ํƒ€์ด๋จธ ๊ฐ’์ด 0์ด ๋˜๋ฉด ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ
  • time sharing์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋„๋ฆฌ ์ด์šฉ๋จ
  • ํ˜„์žฌ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ์‚ฌ์šฉ
  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ฉด CPU๋ฅผ ๋บ์–ด์˜ฌ ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ด๋จธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„˜๊ฒจ์คŒ

Disk

  • ๋””๋ฐ”์ด์Šค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋‹ด๋‹น

I/O device

  • Device controller๊ฐ€ ๊ฐ๊ฐ I/O ๋””๋ฐ”์ด์Šค์— ๋ถ™์–ด ์ „๋‹ดํ•˜๋Š” CPU ์—ญํ• ์„ ํ•จ
  • Device controller 
    • ํ•ด๋‹น I/O ์žฅ์น˜ ์œ ํ˜•์„ ๊ด€๋ฆฌํ•˜๋Š” ์ผ์ข…์˜ ์ž‘์€ CPU
    • ์ œ์–ด ์ •๋ณด๋ฅผ ์œ„ํ•ด control register, status register๋ฅผ ๊ฐ€์ง
    • local buffer๋ฅผ ๊ฐ€์ง (์ผ์ข…์˜ data register)
    • I/O๋Š” ์‹ค์ œ device์™€ local buffer ์‚ฌ์ด์—์„œ ์ผ์–ด๋‚จ
    • Device controller๋Š” I/O๊ฐ€ ๋๋‚ฌ์„ ๊ฒฝ์šฐ interrupt๋กœ CPU์— ๊ทธ ์‚ฌ์‹ค์„ ์•Œ๋ฆผDevice controller
  • ๐Ÿ’กdevice driver : OS ์ฝ”๋“œ ์ค‘ ๊ฐ ์žฅ์น˜๋ณ„ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด → software
  • ๐Ÿ’กdevice controller : ๊ฐ ์žฅ์น˜๋ฅผ ํ†ต์ œํ•˜๋Š” ์ผ์ข…์˜ ์ž‘์€ CPU → hardware

I/O ์˜ ์ˆ˜ํ–‰

  • ๋ชจ๋“  ์ž…์ถœ๋ ฅ ๋ช…๋ น์€ ํŠน๊ถŒ ๋ช…๋ น
  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด I/O๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ์‹œ์Šคํ…œ์ฝœ(System call)
      • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์—๊ฒŒ I/O ์š”์ฒญ
    • CPU๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋“ค์–ด์˜จ์ง€ ํ™•์ธ
    • ํ”„๋กœ๊ทธ๋žจ์ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋ชจ๋“œ๋น—์ด 0์œผ๋กœ ๋ฐ”๋€Œ๊ณ  ์šด์˜์ฒด์ œ์— ํ•ด๋‹นํ•˜๋Š” ์ฃผ์†Œ๋กœ ๋„˜์–ด๊ฐ
    • trap์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ์˜ ํŠน์ • ์œ„์น˜๋กœ ์ด๋™
    • ์ œ์–ด๊ถŒ์ด ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์œผ๋กœ ์ด๋™
    • ์˜ฌ๋ฐ”๋ฅธ I/O ์š”์ฒญ์ธ์ง€ ํ™•์ธ ํ›„ I/O๋ฅผ ์ˆ˜ํ–‰
    • I/O ์™„๋ฃŒ ์‹œ ์ œ์–ด๊ถŒ์„ ์‹œ์Šคํ…œ์ฝœ ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์˜ฎ๊น€
  • ์ธํ„ฐ๋ŸฝํŠธ
    • ํ˜„๋Œ€ ์šด์˜์ฒด์ œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ์— ์˜ํ•ด ๊ตฌ๋™
    • ์ธํ„ฐ๋ŸฝํŠธ ๋‹นํ•œ ์‹œ์ ์˜ ๋ ˆ์ง€์Šคํ„ฐ์™€ program counter๋ฅผ save ํ•œ ํ›„ CPU์˜ ์ œ์–ด๋ฅผ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์— ๋„˜๊น€
    • I/O๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ(ํŠธ๋žฉ)๋ฅผ ํ†ตํ•ด ์š”์ฒญํ•˜๊ณ  ๋๋‚˜๋ฉด ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ†ตํ•ด์„œ ๋๋‚ฌ๋‹ค๊ณ  ์•Œ๋ฆผ
- Interrupt (ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ): ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋ฐœ์ƒ์‹œํ‚จ ์ธํ„ฐ๋ŸฝํŠธ

- Trap (์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ)
(1) Exception
    → ํ”„๋กœ๊ทธ๋žจ์ด ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•œ ๊ฒฝ์šฐ
    → ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์ด ์ž๋™์œผ๋กœ ์„ธํŒ…๋จ
    → CPU๊ฐ€ ์šด์˜์ฒด์ œ์—๊ฒŒ ๋„˜์–ด๊ฐ€๊ณ  ์ต์…‰์…˜ ์ƒํ™ฉ์—์„œ๋Š” ๋ณดํ†ต ๊ฐ•์ œ ์ข…๋ฃŒ๋กœ ๋Œ€์‘

(2) System call
    → ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด OS์˜ ์„œ๋น„์Šค๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด OS์— ์š”์ฒญํ•ด ์ปค๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ
    → ์ปดํ“จํ„ฐ๋ฅผ ํ˜ธ์ŠคํŠธ๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ
- ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ
    → ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ์˜ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
    → ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ํ•จ์ˆ˜๋กœ ์ ํ”„ํ•˜๊ฒŒ ํ•ด์คŒ
- ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด
    → ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปค๋„ ํ•จ์ˆ˜
    → ์‹ค์ œ ํ•ด์•ผํ•˜๋Š” ์ผ

๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ๊ณผ ๋น„๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ

  • ๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ(synchronous I/O)
    • I/O ์š”์ฒญ ํ›„ ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„์—์•ผ ์ œ์–ด๊ฐ€ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์— ๋„˜์–ด๊ฐ
    • ๊ตฌํ˜„ ๋ฐฉ๋ฒ• 1
      • I/O๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ CPU๋ฅผ ๋‚ญ๋น„์‹œํ‚ด
      • ๋งค ์‹œ์  ํ•˜๋‚˜์˜ I/O๋งŒ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Œ
    • ๊ตฌํ˜„ ๋ฐฉ๋ฒ• 2
      • I/O๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ์„œ CPU๋ฅผ ๋นผ์•—์Œ
      • I/O ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค„์— ๊ทธ ํ”„๋กœ๊ทธ๋žจ์„ ์ค„ ์„ธ์›€
      • ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ CPU๋ฅผ ์คŒ
  • ๋น„๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ(asynchronous I/O)
    • I/O๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ๋๋‚˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ œ์–ด๊ฐ€ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์— ์ฆ‰์‹œ ๋„˜์–ด๊ฐ
  • Synchronous: ๊ธฐ๋‹ค๋ฆผ
  • Asynchronous: ์•ˆ๊ธฐ๋‹ค๋ฆผ
    • I/O ์ž‘์—… ์š”์ฒญ๋งŒ ํ•ด๋†“๊ณ  ๋ฐ”๋กœ cpu ์–ป์–ด์„œ ์š”์ฒญํ•œ ์ž‘์—… ์ˆ˜ํ–‰

์„œ๋กœ ๋‹ค๋ฅธ ์ž…์ถœ๋ ฅ ๋ช…๋ น์–ด

  • by I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” special instruction
    • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๋”ฐ๋กœ ์žˆ๊ณ  I/O ๋”ฐ๋กœ ์žˆ์Œ
  • by Memory Mapped I/O
    • I/O ์žฅ์น˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์—ฐ์žฅ ์ฃผ์†Œ๋ฅผ ๋ถ™์—ฌ ์‚ฌ์šฉ

 

์ €์žฅ ์žฅ์น˜ ๊ณ„์ธต ๊ตฌ์กฐ

 

  • ๋งจ ์œ„ CPU
    • CPU ์•ˆ์— ๋ ˆ์ง€์Šคํ„ฐ, ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ...
  • ์œ„์˜ ์žฅ์น˜๋“ค์€ CPU๊ฐ€ ์ง์ ‘ ์ ‘๊ทผ ๊ฐ€๋Šฅ (byte๋‹จ์œ„๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ)
  • ๋””์Šคํฌ๋Š” sector ๋‹จ์œ„๋กœ ์ ‘๊ทผ
  • ์บ์‹ฑ
    • ์žฌ์‚ฌ์šฉ ๋ชฉ์ 
    • ์ •๋ณด๋ฅผ ๋ณด๋‹ค ๋น ๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์— ๋ณต์‚ฌ; ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋Š” second storage๋ฅผ ์œ„ํ•œ ์บ์‹œ๋กœ ๊ฐ„์ฃผ