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

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

by nitronium102 2022. 11. 20.

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

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

๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ I/O์˜ ์™„๋ฃŒ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋กœ ์•Œ๋ ค์คŒ

 

DMA (Direct Memory Access)

๋น ๋ฅธ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€๊นŒ์šด ์†๋„๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

CPU์˜ ์ค‘์žฌ ์—†์ด device controller๊ฐ€ device์˜ buffer storage์˜ ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ์— block ๋‹จ์œ„๋กœ ์ง์ ‘ ์ „์†ก

! interrupt์˜ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด byte ๋‹จ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ block ๋‹จ์œ„๋กœ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด 

 

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

1) ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผํ•˜๋Š” instruction + I/O ์ ‘๊ทผํ•˜๋Š” instruction

2) I/O ์žฅ์น˜์— memory ์—ฐ์žฅ ์ฃผ์†Œ๋ฅผ ๋งค๊น€ -> ํ•˜๋‚˜์˜ memory-mapped instruction ์‚ฌ์šฉ(memory-mapped I/O)

 

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

- ์œ„๋กœ ๊ฐˆ์ˆ˜๋ก ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ , ๊ฐ€๊ฒฉ์ด ๋น„์‹ธ๊ณ , ์šฉ๋Ÿ‰์ด ์ ์Œ

- secondary memory์˜ ๊ฒฝ์šฐ ๋น„ํœ˜๋ฐœ์„ฑ, primary memory์˜ ๊ฒฝ์šฐ ํœ˜๋ฐœ์„ฑ ๋งค์ฒด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ

 

1) primary memory(executable)

CPU์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ(Byte ๋‹จ์œ„๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ)

 

2) secondary(non-executable)

CPU์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ(sector ๋‹จ์œ„)

 

Caching : copying information into faster storage system

CPU์˜ ์†๋„ ์ฐจ์ด๋ฅผ ์™„์ถฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ด์— cache memory๋ฅผ ๋„ฃ์–ด๋†“์ง€๋งŒ, ์šฉ๋Ÿ‰์ด ์ž‘๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ

์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ main memory์— ์˜ฌ๋ ค ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ธ๋‹ค

 

ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰

1. ํ”„๋กœ๊ทธ๋žจ์ด ์ƒ์„ฑ๋˜๋ฉด 0๋ฒˆ์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋…์ž์ ์ธ ์ฃผ์†Œ๊ณต๊ฐ„ ์ƒ์„ฑ(code, data, stack)

code : ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‹คํ–‰ํ•  ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ

data : ์ „์—ญ ๋ณ€์ˆ˜ ๋“ฑ ์ž๋ฃŒ ๊ตฌ์กฐ

stack : ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“๋Š” ์˜์—ญ

 

2. ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ(kernel)์— ์˜ฌ๋ ค์„œ ์‹คํ–‰

- ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‹น์žฅ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ถ€๋ถ„์€ ๋””์Šคํฌ์˜ swap area์— ์˜ฌ๋ฆผ

- ์‚ฌ์šฉ์ž ์ฃผ์†Œ ๊ณต๊ฐ„์€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ virtual memory๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

- virtual memory -> physical memory๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ address translation์ด ์ผ์–ด๋‚œ๋‹ค.

 

* HDD

- file system : ์ „์›์ด ๋‚˜๊ฐ€๋„ ํŒŒ์ผ ๋‚ด์šฉ์€ ์œ ์ง€ํ•ด์•ผ ํ•จ(๋น„ํœ˜๋ฐœ์„ฑ)

- swap area : ์ „์›์ด ๋‚˜๊ฐ€๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋‚ด์šฉ๋„ ์‚ฌ๋ผ์ง(ํœ˜๋ฐœ์„ฑ) ๋ฉ”๋ชจ๋ฆฌ ์—ฌ์œ  ๊ณต๊ฐ„์œผ๋กœ ์‚ฌ์šฉ

 

์ปค๋„ ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ๋‚ด์šฉ

1. code : OS์˜ ์—ญํ• ๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ

- ์‹œ์Šคํ…œ์ฝœ, interrupt ์ฒ˜๋ฆฌ ์ฝ”๋“œ(interrupt๊ฐ€ ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ์ œ์–ด๊ถŒ OSํ•œํ…Œ๋กœ ๋„˜์–ด์˜จ๋‹ค)

- ์ž์› ๊ด€๋ฆฌ ๋ฐ ํŽธ๋ฆฌํ•œ ์„œ๋น„์Šค ์ œ๊ณต์„ ์œ„ํ•œ ์ฝ”๋“œ

 

2. data

- ์šด์˜์ฒด์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” HDD ๋ณ„๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ์ €์žฅ

- PCB : ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ
  ex) ์–ผ๋งˆ๋‚˜ CPU๋ฅผ ์ผ๋Š”์ง€ ๋“ฑ๋“ฑ

 

3. stack

ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•  ๋•Œ ์‚ฌ์šฉ

 

์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜

1. ํ”„๋กœ์„ธ์Šค Address space

์ž๊ธฐ๋“ค๋ผ๋ฆฌ ์ ํ”„(virtual ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๋ฐ”๊พธ๊ธฐ) ๊ฐ€๋Šฅ

* ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ : ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •์˜ํ•œ ํ•จ์ˆ˜

* ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜

- ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ๊ฐ–๋‹ค ์“ด ํ•จ์ˆ˜

- ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํŒŒ์ผ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค

 

 

2. Kernel Address space

์ ํ”„ ๋ถˆ๊ฐ€๋Šฅ(virtual -X-> physical memory)

* ์ปค๋„ ํ•จ์ˆ˜

- ์šด์˜์ฒด์ œ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•จ์ˆ˜

- ์ปค๋„ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ = ์‹œ์Šคํ…œ ์ฝœ

 

ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰

๋Œ“๊ธ€