OS - System Structure & Program Execution 2

๋ฏผ์ฐฌํ™ยท2023๋…„ 10์›” 12์ผ
0

CS - OS(์šด์˜์ฒด์ œ)

๋ชฉ๋ก ๋ณด๊ธฐ
2/6

๐Ÿš€ System Structure & Program Execution 1์—์„œ ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

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

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

๋™๊ธฐ์‹์˜ ๋œป์€ ๋Œ€์ถฉ '์‹œ๊ฐ„์ ์œผ๋กœ ๋งž์ถ”๋‹ค' ๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค. ๋น„๋™๊ธฐ์‹์€ ๋ฐ˜๋Œ€์ด๋‹ค. ์œ„์˜ ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ I/O์˜ ์™„๋ฃŒ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋กœ ์•Œ๋ ค์ค€๋‹ค. ๋™๊ธฐ์‹์€ I/O ์ž‘์—…์ด ๋๋‚˜๊ธฐ๊นŒ์ง€๋ฅผ ๊ธฐ๋‹ค๋ฆฐ ๋‹ค์Œ ๊ทธ ์ž‘์—…์„ ํ™•์ธํ•˜๊ณ  ๋‹ค์Œ instruction์„ ์ง„ํ–‰ํ•œ๋‹ค. ๋น„๋™๊ธฐ์‹์€ ์ด์™€ ๋ฐ˜๋Œ€๋กœ I/O ์ž‘์—…์ด ๋˜๋Š”๋™์•ˆ ๊ฐ€๋งŒํžˆ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  CPU์ œ์–ด๊ถŒ์„ ์–ป์–ด์™€์„œ ๋‹ค๋ฅธ ์ž‘์—…๋“ค์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋™๊ธฐ์‹๊ณผ ๋น„๋™๊ธฐ์‹์€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ์“ฐ์ธ๋‹ค. ๋งŒ์•ฝ ๋‚ด๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ readํ•ด์˜ค๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋ฉด ๊ทธ readํ•ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ๋งŒ ์ฝ”๋“œ๊ฐ€ ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ๋™๊ธฐ์‹์ด ๋” ์ ๋‹นํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์•ฝ write์˜ ๊ฒฝ์šฐ ๋‚ด๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ์ •๋ง ์ถœ๋ ฅ์ด๋˜์—ˆ๋Š”์ง€ ํ™•์ธ์„ ํ•˜์ง€ ์•Š์•„๋„ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ๋น„๋™๊ธฐ์‹์ด ์ ๋‹นํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋‘ ๋ฐฉ์‹์€ ์›ํ•˜๋Š” ๋ฐ”์— ๋”ฐ๋ผ ๊ตฌํ˜„ํ•˜๊ธฐ ๋‚˜๋ฆ„์ด๋‹ค.

๋งŒ์•ฝ ๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด I/O์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ์‹์ด ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ CPU๋Š” ๋†€๊ณ ์žˆ๊ฒŒ๋˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์˜ ๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ ๋ฐฉ์‹ 2 ๋ฅผ ๋ณด๋ฉด ๋œ๋‹ค.๋ณดํ†ต์€ ๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ์˜ ๋ฐฉ์‹์€ 2๋ฒˆ์„ ํƒํ•œ๋‹ค.

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

I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹ ์—ญ์‹œ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

  • 1๋ฒˆ: I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” special instruction์— ์˜ํ•ด
  • 2๋ฒˆ: Memory Mapped I/O์— ์˜ํ•ด

1๋ฒˆ์ด ๋ณดํ†ต ์ผ๋ฐ˜์ ์ธ I/O ๋ฐฉ์‹์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ CPU์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” instruction์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์—๋งŒ ์ ‘๊ทผํ•˜๋Š” instruction๊ณผ I/O ์žฅ์น˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” instruction์ด ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ I/O device๋„ ์ฃผ์†Œ๊ฐ€ ์žˆ์–ด์„œ ๊ทธ ํŠน์ •์ฃผ์†Œ์— ๋Œ€ํ•ด์„œ I/O์— ์ ‘๊ทผํ•˜๋Š” instruction์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

2๋ฒˆ์€ I/O device๋“ค์—๋‹ค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋งค๊ฒจ์„œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ I/O device์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. I/O ์žฅ์น˜์—๋„ ๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ์˜ ์—ฐ์žฅ์ฃผ์†Œ๋ฅผ ๋ถ™์ธ ๋‹ค์Œ์— ๋ฉ”๋ชจ๋ฆฌ์ ‘๊ทผ instruction์œผ๋กœ I/O device์—๋„ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿงฉ ์ €์žฅ์žฅ์น˜ ๊ณ„์ธต ๊ตฌ์กฐ

๋‹ค์‹œ ํ•˜๋“œ์›จ์–ด์ ์ธ ์–˜๊ธฐ๋กœ ๋Œ์•„์™€์„œ ์ €์žฅ์žฅ์น˜ ๊ณ„์ธต ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณธ๋‹ค. ์œ„์˜ ๊ตฌ์กฐ๊ฐ€ ์ €์žฅ์žฅ์น˜์˜ ๊ณ„์ธต ๊ตฌ์กฐ์ด๋‹ค. ์‚ฌ์‹ค ๊ทธ๋ฆผ์˜ ๋งจ ์œ„์—๋Š” CPU๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์œ„๋กœ ๊ฐˆ์ˆ˜๋ก ๋ณดํ†ต ์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ ๋‹จ์œ„๋‹น ๊ฐ€๊ฒฉ์ด ๋น„์‹ธ๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์ด ์ ๊ณ , ์•„๋ž˜๋กœ ๊ฐˆ์ˆ˜๋ก ์†๋„๋Š” ๋Š๋ฆฌ์ง€๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์–‘์ด ๋งŽ์•„์ง„๋‹ค.

๋˜ ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” volatile storage์™€ nonvolatile storage์˜ ์˜๋ฏธ๋Š” ํœ˜๋ฐœ์„ฑ์ด๋ƒ ํœ˜๋ฐœ์„ฑ์ด์ง€ ์•Š๋ƒ์ด๋‹ค. ์œ„์˜ ์„ ์„ ๊ธฐ์ค€์œผ๋กœ volatile์ด๋ผ๊ณ  ์จ์žˆ๋Š” ๊ฒƒ๋“ค์€ ์ „์›์ด ๋‚˜๊ฐ€๋ฉด ๋‚ด์šฉ์ด ์‚ฌ๋ผ์ง„๋‹ค. nonvolatile์€ ๊ทธ ๋ฐ˜๋Œ€์ด๋‹ค.

๋‹ค์Œ CPU์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์„ Primary storage ๋ผ๊ณ  ํ•˜๊ณ  ๊ทธ ์™ธ์˜ secondary์™€ tertiary storage๋Š” CPU๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋‹ค.

๐Ÿงฉ caching

์œ„์˜ ๊ตฌ์กฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์บ์‹ฑ์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์•Œ์•„๋ณด์ž. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ๋” ๋น ๋ฅธ ์ €์žฅ ์‹œ์Šคํ…œ์„ ์œ„ํ•ด ์ •๋ณด๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์„ ์ด์•ผ๊ธฐํ•œ๋‹ค.
์œ„์—์„œ ๋งํ•œ๋Œ€๋กœ ์œ„๋กœ ๊ฐˆ์ˆ˜๋ก ์šฉ๋Ÿ‰์ด ์ ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์ชฝ์— ์žˆ๋Š” ๋‚ด์šฉ์„ ์ „๋ถ€ ์œ„์— ์˜ฌ๋ ค๋†“์„ ์ˆ˜๋Š” ์—†๋‹ค. ๋˜ํ•œ ์†๋„์ฐจ์ด๊ฐ€ ๋‚˜๊ธฐ ๋–„๋ฌธ์— ์ด๋Ÿฌํ•œ ๊ฒƒ์„ ์™„์ถฉํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๊ฐ„์— cache memory๋ฅผ ๋‘”๋‹ค. ๋‹น์žฅ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋ฐ‘์—์„œ ์œ„๋กœ ์˜ฌ๋ ค์“ฐ๋Š”๋ฐ ๊ทธ๋Ÿฐ ์ž‘์—…์„ caching ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ณดํ†ต ์บ์‹ฑ์€ ์žฌ์‚ฌ์šฉ์— ์“ฐ์ธ๋‹ค. ํ•œ๋ฒˆ ์ฝ์–ด๋“ค์ธ ๋ฐ์ดํ„ฐ๋ฅผ caching memory์— ๋‹ด๋Š”๋‹ค๋ฉด ๋‹ค์‹œ ๋ฐ‘์—๊นŒ์ง€ ๊ฐ€์„œ ๊ฐ€์ ธ์˜ฌ ํ•„์š”๊ฐ€ ์—†๋‹ค.

๐Ÿงฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ (๋ฉ”๋ชจ๋ฆฌ load)

์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋งŒ์•ฝ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฌผ๋ฆฌ์ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๊ณ  ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ €๋ ‡๋“ฏ ๊ฐ ํ”„๋กœ๊ทธ๋žจ๋งˆ๋‹ค ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์— ์ฃผ์†Œ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋Š”๋ฐ, ๊ทธ ๊ณต๊ฐ„์€ stack, data, code ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์ด๋ ‡๊ฒŒ ๋…์ž์ ์œผ๋กœ ํ™•๋ณดํ•œ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์„ ํ† ๋Œ€๋กœ ๋ฌผ๋ฆฌ์ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์„œ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฌผ๋ฆฌ์ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ปค๋„์˜์—ญ์€ ํ•ญ์ƒ ์กด์žฌํ•˜์ง€๋งŒ, ๋ฌผ๋ฆฌ์ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ์‚ฌ์šฉ์žํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ๋ฌผ๋ฆฌ์ ๋ฉ”๋ชจ๋ฆฌ์— ๋ชจ๋“  ์‚ฌ์šฉ์žํ”„๋กœ๊ทธ๋žจ์„ ์˜ฌ๋ฆฌ๊ฒŒ ๋œ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์งˆํ…Œ๋‹ˆ, ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ทธ๋•Œ๊ทธ๋•Œ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋“ค๋งŒ ๋ฌผ๋ฆฌ์ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. swap area ๋Š” ๋ฌผ๋ฆฌ์ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์ง€ ๋ชปํ•œ ๋‚˜๋จธ์ง€ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ถ€๋ถ„๋“ค์ด ๋‹ด๊ธฐ๋Š” ๊ณณ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์œ„์—์„œ ๋‘๊ฐœ์˜ ๋””์Šคํฌ(File area, Swap area) ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ File area์˜ ๋ฐ์ดํ„ฐ๋“ค์€ ์ „์›์ด ๋‚˜๊ฐ€๋„ ์‚ฌ๋ผ์ง€์ง€ ์•Š์ง€๋งŒ, Swap area์˜ ๋ฐ์ดํ„ฐ๋“ค์€ ์ „์›์ด ๋‚˜๊ฐ€๋ฉด ํ•„์š”์—†๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋˜๋‹ˆ๊นŒ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

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

  • ํ•จ์ˆ˜(function)
    • ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜
      • ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •์˜ํ•œ ํ•จ์ˆ˜
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜
      • ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ๊ฐ–๋‹ค ์“ด ํ•จ์ˆ˜
      • ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํŒŒ์ผ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
    • ์ปค๋„ ํ•จ์ˆ˜
      • ์šด์˜์ฒด์ œ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•จ์ˆ˜
      • ์ปค๋„ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ = ์‹œ์Šคํ…œ ์ฝœ

๐Ÿงฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๊ณผ์ •

ํ”„๋กœ๊ทธ๋žจ์€ ์œ„์˜ ๋ฐฉ์‹๋Œ€๋กœ user mode์™€ kernel mode๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์‹คํ–‰๋˜๋‹ค๊ฐ€ ์ข…๋ฃŒ๋œ๋‹ค.

profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊ฟ‰๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€