๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] 2. System Structure & Program Execution 1

by nitronium102 2022. 11. 20.

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

1. Memory

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

CPU๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€ ๊ธฐ์–ต์žฅ์น˜๋กœ, ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์ด CPU์—์„œ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ถ€๋ถ„์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 

์ปดํ“จํ„ฐ ๋ถ€ํŒ… ์‹œ, OS๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋จ -> ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋Š” CPU์˜ ์ž‘์—… ๊ณต๊ฐ„์„ main memory๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค

 

2. I/O Device

1) Device Controller

  • I/O ์žฅ์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ผ์ข…์˜ ์ž‘์€ CPU๋กœ, I/O๊ฐ€ ๋๋‚ฌ์„ ๊ฒฝ์šฐ interrupt๋กœ CPU์—๊ฒŒ ํ•ด๋‹น ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค
  • CPU์™€ I/O device์˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— device๋งˆ๋‹ค controller๋ฅผ ๋‘์–ด ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์ œ์–ด ์ •๋ณด๋ฅผ ์œ„ํ•ด control register, status register / local buffer(์ผ์ข…์˜ data register)๋ฅผ ๊ฐ€์ง
  • ์‹ค์ œ device ์™€ local buffer ์‚ฌ์ด์—์„œ I/O๊ฐ€ ์ผ์–ด๋‚จ

cf) device driver : OS ์ฝ”๋“œ ์ค‘ ๊ฐ ์žฅ์น˜๋ณ„ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด(software)

     device controller : ๊ฐ ์žฅ์น˜๋ฅผ ํ†ต์ œํ•˜๋Š” ์ž‘์€ CPU(hardware)

 

2) Local Buffer

device controller๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…๊ณต๊ฐ„.

buffer์— ์Œ“์ธ ๋‚ด์šฉ์„ CPU๊ฐ€ ์ฝ์–ด์„œ ์ž์‹ ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณต์‚ฌ

 

3. CPU

  • ๋งค clock cycle๋งˆ๋‹ค register๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ instruction์„ ์ฝ์–ด์„œ ์‹คํ–‰
  • interrupt๊ฐ€ ๋“ค์–ด์˜จ ๊ฒฝ์šฐ, CPU ์ œ์–ด๊ถŒ์ด OS์—๊ฒŒ ๋„˜์–ด๊ฐ„๋‹ค
  • I/O ์š”์ฒญ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ CPU๊ฐ€ ์•„๋‹Œ OS -> device controller๊ฐ€ ์ž‘์—…์„ ๊ด€์žฅํ•œ๋‹ค.

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์™€ local buffer์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

1) Register

memory๋ณด๋‹ค ๋” ๋น ๋ฅด๋ฉฐ ์ž‘์€ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์ €์žฅ ๊ณต๊ฐ„

2) Interrupt line

์™ธ๋ถ€ I/O ์š”์ฒญ์ด ๋“ค์–ด์™”๋Š”์ง€ / ์ž‘์—…์ด ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€ CPU์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.

CPU๊ฐ€ instruction์„ ์ˆ˜ํ–‰ํ•˜๋˜ ๋„์ค‘, interrupt line์— ์‹ ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ํ•ด๋‹น interrupt์™€ ๊ด€๋ จ๋œ ์ผ์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•œ๋‹ค.

3) Mode bit

CPU์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์ธ์ง€ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ธ์ง€ ๊ตฌ๋ถ„ํ•ด์ค€๋‹ค.

์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์˜ ์ž˜๋ชป๋œ ์ˆ˜ํ–‰์œผ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์šด์˜์ฒด์ œ์— ํ”ผํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๋ณดํ˜ธ ์žฅ์น˜ ํ•„์š”.

Mode bit์„ ํ†ตํ•ด ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ชจ๋“œ์˜ operation์„ ์ง€์›ํ•œ๋‹ค.

  • [1] ์‚ฌ์šฉ์ž ๋ชจ๋“œ(=user mode)
    • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰
    • ๋ณด์•ˆ ์ƒ์˜ ๋ชฉ์ ์œผ๋กœ ์ œํ•œ๋œ instruction๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  • [0] ๋ชจ๋‹ˆํ„ฐ ๋ชจ๋“œ (=kernel mode, system mode)
    • OS ์ฝ”๋“œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๋กœ, ๋ชจ๋“  ์ผ์„ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค
    • interrupt๊ฐ€ ๋ฐœ์ƒํ•ด์„œ OS๊ฐ€ CPU๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ(OS์—์„œ๋งŒ I/O device ์ ‘๊ทผ ๊ฐ€๋Šฅ)
    • ๋ณด์•ˆ์„ ํ•ด์น  ์ˆ˜ ์žˆ๋Š” ์ค‘์š”ํ•œ ๋ช…๋ น์–ด๋Š” ๋ชจ๋‹ˆํ„ฐ(์ปค๋„, ์‹œ์Šคํ…œ) ๋ชจ๋“œ์—์„œ๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•œ 'ํŠน๊ถŒ๋ช…๋ น'์œผ๋กœ ๊ทœ์ •ํ•œ๋‹ค. 

 

- Interrupt๋‚˜ Exception ๋ฐœ์ƒ ์‹œ ํ•˜๋“œ์›จ์–ด๊ฐ€ mode bit์„ 0์œผ๋กœ ๋ฐ”๊พผ ํ›„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

- ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ CPU๋ฅผ ๋„˜๊ธฐ๊ธฐ ์ „์—๋Š” mode bit์„ 1๋กœ ์„ธํŒ…ํ•ด์•ผ ํ•œ๋‹ค.

 

4. Timer

ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ๋…์ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ์žฅ์น˜. Time sharing์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ด์šฉ๋œ๋‹ค.

  • ์ปดํ“จํ„ฐ ์‹œ์ž‘ : OS๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ๋„˜๊ฒจ์คŒ(Timer์— ๊ฐ’ ์„ธํŒ…)
  • timer์˜ ๊ฐ’์ด 0์ด ๋˜๋ฉด timer interrupt ๋ฐœ์ƒ
  • OS๋กœ ๋‹ค์‹œ CPU ์ œ์–ด๊ถŒ์ด ๋„˜์–ด์˜ด

 

5. DMA Controller (Direct Memory Access)

๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ์žฅ์น˜

I/O ์žฅ์น˜์˜ ์žฆ์€ interrupt๋กœ ์ธํ•œ ๋ฐฉํ•ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด local buffer์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ด์˜ค๋Š” ์ž‘์—…์„ CPU ๋Œ€์‹  ์ˆ˜ํ–‰

=> CPU์—๋Š” 1๋ฒˆ์˜ interrupt๋งŒ ๊ฑด๋‹ค!

 

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

  • ๋ชจ๋“  ์ž…์ถœ๋ ฅ ๋ช…๋ น์€ 'ํŠน๊ถŒ๋ช…๋ น' (OS๊ฐ€ ์ปค๋„๋ชจ๋“œ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค - ๋…์ )
  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ป๊ฒŒ I/O๋ฅผ ํ•˜๋Š”๊ฐ€?
    1. ์‹œ์Šคํ…œ์ฝœ(System call) : ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜์ฒด์ œ์—๊ฒŒ I/O๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด interrupt๋ฅผ ๊ฑด๋‹ค
    2. monitor bit๊ฐ€ 0์œผ๋กœ ์„ค์ •๋˜์–ด OS์—๊ฒŒ CPU๊ฐ€ ํ• ๋‹น๋œ๋‹ค

      monitor bit๊ฐ€ 1์ธ ์ƒํƒœ์ด๋ฉด OS์˜ ์ฃผ์†Œ๋กœ ์ ํ”„ํ•  ์ˆ˜ ์—†๋‹ค. 
      ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ง์ ‘ interrupt line์„ ์„ธํŒ…ํ•˜๊ณ  CPU์—๊ฒŒ interrupt๋ฅผ ๋ณด๋‚ธ๋‹ค.
      CPU๋Š” interrupt๊ฐ€ ๋“ค์–ด์™”๊ธฐ ๋•Œ๋ฌธ์— mode bit์„ 0์œผ๋กœ ๋ฐ”๊พธ๊ณ  CPU ์ œ์–ด๊ถŒ์„ OS๋กœ ๋„˜๊ธด๋‹ค.
      (Trap/SW Interrupt๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ์˜ ํŠน์ • ์œ„์น˜๋กœ ์ด๋™)
      (์ œ์–ด๊ถŒ์ด ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์œผ๋กœ ์ด๋™)

    3. ์˜ฌ๋ฐ”๋ฅธ I/O ์š”์ฒญ์ธ์ง€ ํ™•์ธ ํ›„ I/O ์ˆ˜ํ–‰
    4. I/O ์™„๋ฃŒ ์‹œ ์ œ์–ด๊ถŒ์„ system call ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์˜ฎ๊น€

 

Interrupt

CPU๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์„ ๋•Œ, I/O ์žฅ์น˜๋‚˜ ์˜ˆ์™ธ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ด์„œ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ CPU์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ์ด๋ฒคํŠธ

interrupt๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งŒ CPU ์ œ์–ด๊ถŒ์ด OS์—๊ฒŒ๋กœ ๋„˜์–ด๊ฐ„๋‹ค

- ํ˜„๋Œ€์˜ ์šด์˜์ฒด์ œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ์— ์˜ํ•ด ๊ตฌ๋™๋จ

 

Interrupt(๋„“์€ ์˜๋ฏธ)

  • Interrupt(ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ) : ํ•˜๋“œ์›จ์–ด(ํƒ€์ด๋จธ, disk controller ๋“ฑ)๊ฐ€ ๋ฐœ์ƒ์‹œํ‚จ ์ธํ„ฐ๋ŸฝํŠธ
  • Trap(์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ)
    • Exception : ํ”„๋กœ๊ทธ๋žจ์ด ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•œ ๊ฒฝ์šฐ (ex. memory violation)
    • System call : ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด OS์˜ ๋„์›€์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์ปค๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ

 

์ธํ„ฐ๋ŸฝํŠธ ๊ด€๋ จ ์šฉ์–ด

  • ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ : ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ์˜ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
    • ์ธํ„ฐ๋ŸฝํŠธ ์ข…๋ฃŒ ๋ณ„๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•  ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์ •์˜ํ•ด๋†“์Œ {๋ฒˆํ˜ธ, ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ปค๋„ ํ•จ์ˆ˜์˜ ์ฃผ์†Œ}
  • ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด(=Interrupt Service Routine, ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ) : ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปค๋„ ํ•จ์ˆ˜
    • ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์‹ค์ œ๋กœ ํ•ด์•ผ ํ•˜๋Š” ์ผ
  • Software interrupt(trap) : I/O ์š”์ฒญ
  • Hardware interrupt : I/O ์ข…๋ฃŒ

 

System call

์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์˜ ์„œ๋น„์Šค๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ์ปค๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ

๋Œ“๊ธ€