OS - Register & Memory

์œคํ˜•ยท2025๋…„ 3์›” 18์ผ

Operation System

๋ชฉ๋ก ๋ณด๊ธฐ
1/9
post-thumbnail

์„œ๋ก 

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

๐Ÿ’กOperation System(OS)?

์šด์˜์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์›ํ• ํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ณ„์ธต.

  • ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ.(UI)
  • ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋“œ์›จ์–ด ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›(๋ฉ”๋ชจ๋ฆฌ, CPU, ๋””์Šคํฌ)
  • ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์‰ฝ๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๋„๋ก API ์ œ๊ณต

ํฐ ๋…ธ์ด๋งŒ(Von Neumann Machine)

ํ˜„๋Œ€ ์ปดํ“จํ„ฐ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ, ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค.

  • Stored-program architecture ์ด๋ผ๊ณ  ํ•œ๋‹ค.(ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ)
  • ํ”„๋กœ๊ทธ๋žจ๋งŒ ๋‹ค์‹œ ๋ฐ”๊ฟ”์„œ ์‰ฝ๊ฒŒ ์žฌํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(ํ˜„๋Œ€์˜ ์ปดํ“จํ„ฐ, ์Šค๋งˆํŠธํฐ ์ฒ˜๋Ÿผ)
  • ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ๊ทธ๋žจ์„ ๋‘˜ ๋‹ค ์ €์žฅํ•œ๋‹ค.
  • BUS๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ช…๋ น์–ด๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ํ†ต๋กœ๋‹ค.

Register

register์€ CPU๋‚ด๋ถ€์— ์žˆ๋Š” ์•„์ฃผ ์ž‘๊ณ  ๋น ๋ฅธ ์ €์žฅ๊ณต๊ฐ„์ด๋‹ค.

  • PC (program counter) : ๋‹ค์Œ ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ
  • IR (instruction Register): ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ
  • PSW (Program Status Word): ํ˜„์ œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ(๊ฒฐ๊ณผ, ์˜ค๋ฅ˜, ์กฐ๊ฑด๋“ฑ)

  • MBR (Memory Buffer Register): ๋ฐ์ดํ„ฐ ์ด๋™์„ ์œ„ํ•œ ๋ฒ„ํผ, ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ถฉ๋Œ ๋ฐฉ์ง€
  • MAR (Memoty Adress Register): ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์‹œ ์‚ฌ์šฉํ•  ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

์ž ์ด๋ ‡๊ฒŒ๋งŒ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์‰ฝ๊ฒŒ ์š”๋ฆฌ๋กœ ํ•œ๋ฒˆ ์˜ˆ์‹œ๋“ค ๋“ค์–ด๋ณด๊ฒ ๋‹ค.

  • CPU = ์š”๋ฆฌ์‚ฌ
  • RAM = ๋ƒ‰์žฅ๊ณ 
  • Register = ์š”๋ฆฌ์‚ฌ๊ฐ€ ๋“ค๊ณ ์žˆ๋Š” ์Ÿ๋ฐ˜
    +) ๋ ˆ์ง€์Šคํ„ฐ๋Š” CPU ๋‚ด๋ถ€์˜ ์ž„์‹œ ์ €์žฅ๊ณต๊ฐ„์ž„.

โ˜๏ธ๋ƒ‰์žฅ๊ณ ์— ์žˆ๋Š” ์žฌ๋ฃŒ๋ฅผ ๊บผ๋‚ด์˜ค๊ธฐ

  • MAR = ๋ƒ‰์žฅ๊ณ  ๋ช‡๋ฒˆ์งธ ์นธ์— ์žฌ๋ฃŒ๊ฐ€ ์žˆ๋Š”์ง€ ๋งํ•ด์คŒ
  • MBR = ๋ƒ‰์žฅ๊ณ ์—์„œ ๊บผ๋‚ธ ์žฌ๋ฃŒ๋ฅผ ์ž ๊น ์Ÿ๋ฐ˜์— ์˜ฌ๋ ค๋‘ .

โœŒ๏ธ์š”๋ฆฌ

  • PC = ๋‹ค์Œ์— ํ•  ์š”๋ฆฌ๊ฐ€ ๋ญ”์ง€ ๊ธฐ๋ก.
  • IR = ์ง€๊ธˆ ํ•˜๋Š” ์š”๋ฆฌ๊ฐ€ ๋ญ”์ง€ ๊ธฐ๋ก.
  • PSW = ์š”๋ฆฌ ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ๊ธฐ๋ก

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ณ„๋กœ ์—ฐ๊ฒฐ์ด ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฑด์ง€ ์œ„์˜ ๊ทธ๋ฆผ์„ ์ฐธ์กฐํ•˜๋ฉด์„œ ์•Œ์•„๋ณด์ž.

  • PC -> MAR : ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ๋„˜๊ธด๋‹ค.
  • MAR -> RAM : ๋ฐ›์€ ์ฃผ์†Œ๋กœ ๋ช…๋ น์–ด๋ฅผ ์š”์ฒญํ•œ๋‹ค.
  • RAM -> MBR : ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  • MBR -> IR : ๋ช…๋ น์–ด๋ฅผ CPU๋กœ ์ „๋‹ฌํ•œ๋‹ค.
  • ํ•ด์„ ๋ฐ ์‹คํ–‰์„ ํ•œ๋‹ค. ๊ฒฐ๊ณผ๋Š” PSW์— ์ €์žฅํ•œ๋‹ค.

ํฐ๋…ธ์ด๋งŒ ๊ตฌ์กฐ์˜ ๋ฌธ์ œ์ 

1. ๋ณ‘๋ชฉํ˜„์ƒ

๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋А๋ฆฐ ๋‹ค๋ฅธ ๋ถ€ํ’ˆ(์˜ํ–ฅ)์œผ๋กœ ์ธํ•ด ์ „์ฒด ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋А๋ ค์ง€๋Š” ํ˜„์ƒ.

<๋ฌธ์ œ์ >

  • CPU๋Š” ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ/์ฝ”๋“œ ๋ฅผ ๊ฐ€์ ธ์˜ค๋А๋ผ ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค. - ๋ณ‘๋ชฉํ˜„์ƒ ๋ฐœ์ƒ
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์–ต์žฅ์น˜(๋ฉ”๋ชจ๋ฆฌ)์˜ ์„ฑ๋Šฅ์ด ์ „์ฒด ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ฒŒ ๋œ๋‹ค.
  • ex) ๋‡Œ์—์„œ๋Š” ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ๊ธฐ์–ต์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์†๋„๊ฐ€ ๋А๋ ค์„œ ๋ณ‘๋ชฉํ˜„์ƒ ๋ฐœ์ƒ

<์†”๋ฅ˜์…˜>

  • Cache
    -> ์ตœ๊ทผ ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ, ํ”„๋กœ๊ทธ๋žจ์„ ๋”ฐ๋กœ ์ €์žฅํ•ด ํ•ด๊ฒฐ
    -> cpu์•ˆ์— ๋น ๋ฅธ ์ž„์‹œ ๊ธฐ์–ต์žฅ์น˜๋ฅผ ๋‘ฌ์„œ, ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€
  • ์ฝ”๋“œ ์ตœ์ ํ™”

2. ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌ

<๋ฌธ์ œ์ >

  • ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™์ด ์žˆ๋‹ค๋ณด๋‹ˆ, ํ”„๋กœ๊ทธ๋žจ์˜ ์‹ค์ˆ˜๋กœ ์ž๊ธฐ ๋ช…๋ น์–ด๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ™์ด ์žˆ์œผ๋‹ˆ ๋ช…๋ น์–ด๊ฐ€ ๊ผฌ์ผ ์ˆ˜ ์žˆ์Œ.

<์†”๋ฃจ์…˜>

  • ํ•˜๋ฒ„๋“œ ์•„ํ‚คํ…์ณ
    -> ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌ.
    -> ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์—๋งŒ ์ฝ๊ณ  ์“ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์‚ฌ์šฉ.
    -> ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐฉ์ง€. - ๋ณด์•ˆ์„ฑ ์ฆ๊ฐ€

3. ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์ผํ•œ BUS ๊ณต์œ 

<๋ฌธ์ œ์ >

  • BUS๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„, ๋ช…๋ น์–ด ๊ฐ€์ ธ์˜ค๋Š” ์†๋„๊ฐ€ ์„œ๋กœ ์ถฉ๋Œํ•˜๊ณ  ๋А๋ ค์ง„๋‹ค.

<์†”๋ฃจ์…˜>

  • ํ•˜๋ฒ„๋“œ ์•„ํ‚คํ…์ณ
    -> ๋ฐ์ดํ„ฐ์šฉ ๋ฒ„์Šค์™€ ํ”„๋กœ๊ทธ๋žจ์šฉ ๋ฒ„์Šค๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.
    -> ๋ช…๋ น์–ด์™€ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๋™์‹œ์— ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ์–ด์„œ ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค.

ํ•˜๋ฒ„๊ทธ ๊ตฌ์กฐ : CPU๊ฐ€ ๋™์‹œ์— ๋ช…๋ น๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์†๋„ ์ฆ๊ฐ€


๋ช…๋ น์–ด ์‚ฌ์ดํด(Instruction Cycle)

CPU๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ํ•ด์„ํ•˜๊ณ , ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

  • Fetch : ๋ช…๋ น์–ด ๊ฐ€์ ธ์˜ค๊ธฐ
  • Decode : ํ•ด์„ํ•˜๊ธฐ
  • Execute : ํ•ด๋‹น ์ž‘์—…์„ ์ˆ˜ํ–‰
  1. CPU๋Š” PC์— ์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ๋ณด๊ณ , ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ฝ์–ด์˜จ๋‹ค.(Fetch)
  2. ํ”„๋กœ์„ธ์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ ๋ช…๋ น์„ IR์— ์ €์žฅํ•˜๊ณ  PC๋ฅผ PC+1์˜ ๊ฐ’์œผ๋กœ ์ตœ์‹ ํ™”๋ฅผ ์‹œํ‚จ๋‹ค.
  3. ๋ช…๋ น์–ด๋ฅผ ํ•ด์„(Decode)ํ•˜๊ณ  ๊ทธ ๋ช…๋ น์„ ์‹คํ–‰(Execute)ํ•œ๋‹ค.
  4. PC๋ฅผ ์ฝ์–ด ๋‹ค์Œ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์„œ๋Š” ๋ช…๋ ์–ด๋ฅผ ํ•ด์„ํ•˜๊ณ  ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰

  • ํ”„๋กœ์„ธ์„œ-๋ฉ”๋ชจ๋ฆฌ
  • ํ”„๋กœ์„ธ์„œ-I/O
  • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
  • ์ œ์–ด
  • Opcode(์ž‘์—… ์ฝ”๋“œ) -> ํ”„๋กœ์„ธ์„œ๊ฐ€ ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ฒฐ์ •
  • AC (Accumulator) -> ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ.

Step 1,2
์ด ๊ทธ๋ฆผ์„ ๋ณด๋ฉด, ๋งจ ์ฒ˜์Œ ์ˆซ์ž๋Š” opcode์ด๋‹ค. ๋”ฐ๋ผ์„œ 300๋ฒˆ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ์— 1940์ด๋ผ๋Š” ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด, 1๋ฒˆ ๋ช…๋ น์€ AC๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์—…๋ฐ์ดํŠธ ํ•˜๋Š”๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— 1 ๋’ค์—์žˆ๋Š” 940๋ฒˆ์ง€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค(002) ๋”ฐ๋ผ์„œ ์ด๊ฑฐ๋ฅผ AC๋กœ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค. ๋˜ํ•œ PC๊ฐ’์„ +1 ์‹œํ‚จ๋‹ค.

Step 3,4
Fetch๋ฅผ ํ†ตํ•ด PC์— ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ฝ์–ด์˜จ๋‹ค. 5941์ด๊ธฐ ๋•Œ๋ฌธ์—, 5๋Š” AC์— ๊ฐ’์„ ๋”ํ•˜๋Š” ๋ช…๋ น์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”๋ชจ๋ฆฌ 941๋ฒˆ์ง€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  AC์— ์žˆ๋˜ 3์ด๋ผ๋Š” ๊ฐ’๊ณผ ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ ํ›„ AC์— ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.(3+2=5). ๋˜ํ•œ PC๊ฐ’์„ +1์‹œํ‚จ๋‹ค.

Ster 5,6
2941์ด๋ผ๋Š” ๊ฐ’์„ ํ™•์ธํ•œ๋‹ค, AC์— ์žˆ๋Š” ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๋ช…๋ น์–ด๋‹ค. ๋”ฐ๋ผ์„œ 941๋ฒˆ์ง€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ AC์˜ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.


Interrupts

์ธํ„ฐ๋ŸฝํŠธ๋Š” ํ”„๋กœ์„ธ์„œ์˜ ์ •์ƒ์ ์ธ ์ˆœ์„œ๋ฅผ ์ค‘๋‹จํ•œ๋‹ค.

  • ํ”„๋กœ์„ธ์„œ ํ™œ์šฉ๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋œ๋‹ค.

    • ๋Œ€๋ถ€๋ถ„์˜ I/O ์žฅ์น˜๋Š” ํ”„๋กœ์„ธ์„œ๋ณด๋‹ค ๋А๋ฆผ.
    • ํ”„๋กœ์„ธ์„œ๋Š” ์žฅ์น˜๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•ด ์ผ์‹œ ์ค‘์ง€ํ•ด์•ผ ํ•จ(๋‚ญ๋น„).

Without Interrupts

ํ”„๋กœ์„ธ์„œ๊ฐ€ I/O ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋จ -> ์‚ฌ์šฉ์ž์—๊ฒ ์ฐฐ๋‚˜์˜ ์ˆœ๊ฐ„์ด์ง€๋งŒ CPU์—๊ฒŒ๋Š” ๋งค์šฐ ๊ธด ์‹œ๊ฐ„์ž„ -> I/O Bound ๋ฐœ์ƒ

Interrupts

ํ”„๋กœ์„ธ์„œ๊ฐ€ I/O ์ž‘์—… ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰
์š”์ฒญํ–ˆ๋˜ I/O์ž‘์—…์ด ๋๋‚˜๋ฉด Interrupts๊ฐ€ ๊ฑธ๋ฆฌ๊ณ  I/O์ž‘์—… ์™„๋ฃŒ ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰
์ž‘์—… ์™„๋ฃŒํ›„ ๋‹ค์‹œ ํ•˜๋˜ ์ž‘์—…์„ ์ด์–ด์„œ ์ˆ˜ํ–‰
๋ฐ˜๋ณต

  • ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด CPU๋Š” ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ Fetch-Excute ์‚ฌ์ดํด์„ ์ผ์‹œ์ค‘์ง€ ํ•œ๋‹ค.
  • CPU๋Š” ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์Šคํƒ ๋˜๋Š” ํŠน์ • ๋ ˆ์ง€์Šคํ„ฐ ์˜์—ญ์— ์ €์žฅ
  • ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ ์ž‘๋™ -> ์ƒํƒœ ๋ณต์›์„ ์ˆ˜ํ–‰
  • HALT -> ์ธํ„ฐ๋ŸฝํŠธ ํ™œ์„ฑํ™” ์ƒํƒœ๋กœ ์ „ํ™˜

Memory Hierarchy

๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ํ•„์š”ํ• ๋•Œ ๋น ๋ฅด๊ฒŒ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์ €์žฅ ๊ณต๊ฐ„์ด๋‹ค. CPU๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ, ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋ณด๊ด€ํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ณ ๋ คํ•ด์•ผํ•  3๊ฐ€์ง€ ์ œ์•ฝ์‚ฌํ•ญ
1. Amount (์šฉ๋Ÿ‰) : ๋ฐ์ดํ„ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์ด ์ปค์•ผ ํ•œ๋‹ค.
2. Speed (์†๋„) : CPU๋Š” ๋น ๋ฅธ๋ฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ์†๋„๊ฐ€ ๋А๋ฆฌ๋ฉด ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.
3. Expense (๋น„์šฉ) : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋ฌด๋ฆฌ ๋นจ๋ฆฌ ๋งŒ๋“ค์–ด๋„ ๋น„์šฉ์ด ํฌ๋ฉด ์•ˆ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด 3๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋งž๊ฒŒ ์„ ํƒ์„ ํ•ด์•ผํ•œ๋‹ค.

  • ์•„๋ž˜๋กœ ๊ฐˆ์ˆ˜๋ก ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€, ๋А๋ ค์ง, ๋น„์šฉ์ด ๊ฐ์†Œํ•จ.

  • ๋ ˆ์ง€์Šคํ„ฐ - ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ์šฉ๋Ÿ‰์ด ์ ์Œ
  • ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ - CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ
  • ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(RAM) - ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์ด ์ €์žฅ๋จ
  • ๋ณด์กฐ ์ €์žฅ ์žฅ์น˜(SSD/HDD) - ์žฅ์ง€ ์ €์žฅ

์†๋„: ๋ ˆ์ง€์Šคํ„ฐ > ์บ์‹œ > Main Memory > RAM > SSD

Principle of Locality

์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ‘๊ทผํ•  ๋•Œ, ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์— ๋ญ‰์น˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.
=> ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ฐธ์กฐํ•  ํ™•๋ฅ ์ด ๋†’์€ ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.

  • ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ
    • ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋‚˜ ๋ช…๋ น์–ด๋Š” ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์—๋„ ๋‹ค์‹œ ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
    • ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ-> ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ
    • ํŠน์ • ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์‚ฌ์šฉ -> ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ
  • ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ
    • ํ•œ๋ฒˆ ์ ‘๊ทผํ•œ ๋ฐ์ดํ„ฐ ๊ทผ์ฒ˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋„ ๊ณง ์ ‘๊ทผ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
    • ๋ฐฐ์—ด ์ˆœํšŒ -> arr[1] ๋‹ค์Œ arr[2]....
    • ๊ตฌ์กฐ์ฒด๋‚˜ ํด๋ž˜์Šค -> ๊ฐ์ฒด ์‚ฌ์šฉํ•  ๋•Œ, ๋‚ด๋ถ€์˜ ์—ฌ๋Ÿฌ ๋ฉค๋ฒ„๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์ ‘๊ทผํ•จ.
    • ๊ทธ๋ž˜์„œ ์บ์‹œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ "์กฐ๊ธˆ์”ฉ" ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ "๋ธ”๋ก ๋‹จ์œ„"๋กœ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.

๐Ÿ’กLocality๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค!!!

โ˜๏ธ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ

  • CPU๊ฐ€ RAM์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ๋А๋ฆผ -> ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๋ช…๋ น์–ด๋ฅผ ์บ์‹œ์— ๋”ฐ๋กœ ์ €์žฅํ•ด๋‘ .
  • ์ง€์—ญ์„ฑ์ด ๋†’์„์ˆ˜๋ก Cache Hit ํ™•๋ฅ ์ด ๋†’์•„์ ธ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค.
  • Cache Principles : ํ”„๋กœ์„ธ์„œ๋Š” ๋จผ์ € ์บ์‹œ๋ฅผ ํ™•์ธํ•จ. ๋งŒ์•ฝ ์žˆ์œผ๋ฉด ๋น ๋ฅด๊ฒŒ ๋ถˆ๋Ÿฌ์˜ด, ์—†์œผ๋ฉด(Cache-Miss) ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ธ”๋ก์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์บ์‹œ์— ๋„ฃ์Œ(๋ฐ”์ดํŠธ ๋‹จ์œ„X, ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ ๋•Œ๋ฌธ)

โœŒ๏ธ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ (Virtual Memory)

  • ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ, ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ๊ธฐ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋””์Šคํฌ๋กœ ์Šค์™‘.
  • LRU(Least Recently Used)๋ฅผ ์‚ฌ์šฉํ•ด ์ตœ๊ทผ ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ๋Š” ๋‚จ๊ธฐ๊ณ  ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” ์ œ๊ฑฐ.

Cache์— ๋Œ€ํ•˜์—ฌ

  • ์ž‘๊ณ  ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ: CPU์— ๊ต‰์žฅํžˆ ๊ฐ€๊น๊ฒŒ ์žˆ์–ด์„œ, ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๋‹ค.
  • ์ž๋™ ๋™์ž‘: ๊ฐœ๋ฐœ์ž๋‚˜ OS๊ฐ€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ CPU๊ฐ€ ์•Œ์•„์„œ ์ž‘๋™ํ•œ๋‹ค.
  • ๋ณต์‚ฌ๋ณธ๋งŒ ์ €์žฅ: ์ผ๋ถ€๋ฅผ ๋ณต์‚ฌํ•ด ์˜ค๋Š” ๊ฒƒ์ด๋‹ค. (์ „์ฒด๊ฐ€ ์•„๋‹˜)
  • Replacement ํ•„์š”: ์บ์‹œ๊ฐ€ ๊ฝ‰ ์ฐจ๋ฉด ์–ด๋–ค ๋ธ”๋ก์„ ๋ฒ„๋ฆด์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

Cache Replacement ์•Œ๊ณ ๋ฆฌ์ฆ˜

์บ์‹œ๊ฐ€ ๊ฝ‰ ์ฐผ์„ ๋•Œ, ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด์ซ“์„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

  • LRU : ๊ฐ€์žฅ ์˜ค๋ž˜์ „์— ์‚ฌ์šฉ๋œ ๋ธ”๋ก์„ ์ œ๊ฑฐ(ํ˜„์žฌ ๊ฐ€์žฅ ํšจ์œจ์ ์ž„)
  • FIFO : ๋จผ์ € ๋“ค์–ด์˜จ ๋ธ”๋ก์„ ์ œ๊ฑฐ
  • Random : ๋žœ๋คํ•˜๊ฒŒ ์ œ๊ฑฐ
  • LFU(Least Frequently Used) : ์‚ฌ์šฉ๋นˆ๋„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๋ธ”๋ก ๊ต์ฒด
  • Cache-Hit : CPU๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์žˆ๋Š” ๊ฒฝ์šฐ -> ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜จ๋‹ค.
  • Cache-Miss : ์บ์‹œ์— ์—†๋Š” ๊ฒฝ์šฐ -> ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜ค๊ณ , ์บ์‹œ์— ์ €์žฅ
    ๋”ฐ๋ผ์„œ, ์บ์‹œ ๋ฏธ์Šค๋ฅผ ์ค„์ด๋Š” ๊ฒŒ ์„ฑ๋Šฅ์— ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

  • ์ดˆ๊ธฐ ์บ์‹œ๋Š” ๋‹จ์ผ ์บ์‹œ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ์š”์ฆ˜์€ ์—ฌ๋Ÿฌ level์„ ๋‚˜๋ˆˆ๋‹ค.
  • L1์€ ์ž‘๊ณ  ๋น ๋ฅด๊ณ  ์ ์  ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น  ์ˆ˜๋ก ๋А๋ ค์ง€๊ณ  ์šฉ๋Ÿ‰๋„ ์ปค์ง„๋‹ค.

+) Inclusive ์บ์‹œ: L1์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ L2, L3์—๋„ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

+) Exclusive ์บ์‹œ: L1์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” L2, L3์—๋Š” ์—†๋‹ค (๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต ์ €์žฅ๋˜์ง€ ์•Š์Œ).

=> level์„ ๋‚˜๋ˆ ์„œ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์†๋„๋ฅผ ๊ท ํ˜•์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค.

Cache Mapping Function

์บ์‹œ๋Š” ์ œํ•œ๋œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ๋ธ”๋ก์ด ๋“ค์–ด์˜ฌ๋•Œ ๊ธฐ์กด ๋ธ”๋ก์„ ๊ต์ฒดํ•ด์•ผ ํ•œ๋‹ค.
์ด๋•Œ, ๋งคํ•‘ ๋ฐฉ์‹์ด ์œ ์—ฐํ• ์ˆ˜๋ก ๊ฒ€์ƒ‰ํšŒ๋กœ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค.

  • ์ง์ ‘ ๋งคํ•‘ (Direct Mapped): ๊ฐ ๋ธ”๋ก์€ ์บ์‹œ์˜ 1๊ฐœ์˜ ๊ณ ์ • ์œ„์น˜์—๋งŒ ์ €์žฅ.

  • ์—ฐ๊ด€ ๋งคํ•‘ (Associative): ๋ธ”๋ก์ด ์บ์‹œ์˜ ์–ด๋А ์œ„์น˜๋“  ์ €์žฅ ๊ฐ€๋Šฅ (๊ฒ€์ƒ‰ ๋А๋ฆผ).

  • ์„ธํŠธ ์—ฐ๊ด€ ๋งคํ•‘ (Set-Associative): ์ง๊ด€๊ณผ ์—ฐ๊ด€์˜ ์ ˆ์ถฉ (์˜ˆ: 4-way set-associative).

Write Policy - ์“ฐ๊ธฐ ์ •์ฑ…

์บ์‹œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ˜์˜ํ•˜๋Š” ์‹œ๊ธฐ

  • Write-Through : ์บ์‹œ์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ๊ธฐ๋กํ•œ๋‹ค. -> ์ผ๊ด€์„ฑ์ด ๋†’์ง€๋งŒ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค.
  • Write-Back : ์บ์‹œ๋งŒ ๋จผ์ € ๋ณ€๊ฒฝํ•˜๊ณ , ๋ธ”๋ก์ด ๊ต์ฒด๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ˜์˜ํ•œ๋‹ค. -> ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜์ง€๋งŒ ์ผ๊ด€์„ฑ ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•˜๋‹ค.
    (๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๋ฐ˜์˜ํ•˜์ง€ ์•Š๋‹ค๊ฐ€, ์บ์‹œ์—์„œ ๋ธ”๋ก์ด ์ œ๊ฑฐ๋ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋„ฃ๋Š”๋‹ค.)

์ถ”๊ฐ€ ์ •๋ณด

  • CPU๋‚ด๋ถ€์— Cache๊ฐ€ ์กด์žฌํ•จ, ๊ทผ๋ฐ ๋ณดํ†ต L1, L2๊ฐ€ ๋‚ด๋ถ€์— ์žˆ๊ณ , L3๋Š” ๋ถ™์–ด์žˆ๋Š” ๋А๋‚Œ์ž„.

  • CPU๋Š” ์ง์ ‘์ ์œผ๋กœ ์บ์‹œ ํŒŒ์ผ์— ์ ‘๊ทผํ•˜์ง€ ์•Š๋Š”๋‹ค. "์ •ํ™•ํžˆ" ๋งํ•˜์ž๋ฉด CPU๋Š” ์บ์‹œ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„์„ ๊ฑด๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด "๊ฐ€์ƒ ์ฃผ์†Œ"๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ MMU๋ฅผ ํ†ตํ•ด ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ๊ฐ€์ƒ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ•œ๋‹ค.

profile
์ œ๊ฐ€ ๊ด€์‹ฌ์žˆ๊ณ  ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ์€๊ฑธ ์ •๋ฆฌํ•˜๋Š” ์ €๋งŒ์˜ ๋…ธํŠธ์ž…๋‹ˆ๋‹ค.

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