OS - YunByungKwan/Fundamental GitHub Wiki

ํ”„๋กœ๊ทธ๋žจ, ํ”„๋กœ์„ธ์Šค, ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…

  • ํ”„๋กœ๊ทธ๋žจ์€ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ„๋‹จํžˆ ์–˜๊ธฐํ•˜๋ฉด ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ์˜์—ญ์— code, data, heap, stack ์˜์—ญ์˜ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  PCB๊ฐ€ ์ƒ์„ฑ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • code: Program์˜ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„
    • data: ์ „์—ญ ๋ณ€์ˆ˜(static ๋ณ€์ˆ˜)๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„
    • heap: ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ(new ๋“ฑ)๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„
    • stack: ๋งค๊ฐœ ๋ณ€์ˆ˜, ์ง€์—ญ ๋ณ€์ˆ˜ ๋“ฑ ์ž„์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„
  • ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์˜ ๋‹จ์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๋“ค์€ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ code, data, heap ์˜์—ญ์„ ๊ณต์œ ํ•˜๊ณ  stack์˜์—ญ๋งŒ ๋ณ„๋„๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

PCB(Process Control Block)๋ž€?

PCB๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.
Linux ์ปค๋„์—์„œ PCB๋Š” ์ด์ค‘ Linked List ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๋˜๋ฉฐ
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๊ทธ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ PCB๊ฐ€ ์ƒ์„ฑ๋˜๊ณ 
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด PCB๋Š” ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ปค๋„์€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
PCB์— ์ €์žฅ๋œ ์ •๋ณด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • process number: ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž(PID)

  • process state: ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

  • program counter: ๋‹ค์Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ(pc)

  • registers: CPU ๋ ˆ์ง€์Šคํ„ฐ ๋ฐ ์ผ๋ฐ˜ ๋ ˆ์ง€์Šคํ„ฐ

  • memory limits: ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด

  • list of open files: ์ž…์ถœ๋ ฅ ์ƒํƒœ ์ •๋ณด

  • ...

  • PCB๋Š” ready queue(Linked List)์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค

Context Switching์ด๋ž€?

Context switching์€ ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” Task(Process, Thread)์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ 
๊ทธ ๋‹ค์Œ ์ง„ํ–‰ํ•  Task์˜ ์ƒํƒœ ๊ฐ’์„ ์ฝ์–ด์„œ ์ ์šฉํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ํ”„๋กœ์„ธ์Šค์˜ Context Switching ๋ฐœ์ƒ ์‹œ
๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค์˜ code, data, heap, stack ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๋‚ด๋ฆฌ๊ณ 
์ „ํ™˜๋œ ํ”„๋กœ์„ธ์Šค์˜ code, data, heap, stack ์˜์—ญ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  CPU์˜ register์—๋„ ์ „ํ™˜๋œ ํ”„๋กœ์„ธ์Šค์˜ PCB์— ์žˆ๋Š” register๋ธ”๋ก์œผ๋กœ ๊ต์ฒด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ์ „ํ™˜๋˜๋Š” ๊ณผ์ •์„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•˜๊ณ  ์ด ๋™์•ˆ์€ CPU๊ฐ€ ๋‹ค๋ฅธ ์ผ์„ ๋ชปํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค(Multi-Process)์™€ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ(Multi-Thread)

  • ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค

    • ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.(๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด)
    • ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์ด ์—†์Šต๋‹ˆ๋‹ค.
    • Context Switching ๋น„์šฉ์ด ํฝ๋‹ˆ๋‹ค.(PCB๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ณผ์ •)
    • Ex) Google Chrome(ํƒญ๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค)
  • ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ

    • ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.(code, data, heap)
    • Context Switching ๋น„์šฉ์ด ์ ์Šต๋‹ˆ๋‹ค.
    • ํ•œ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค๋„ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ๋งŒํผ ์ถฉ๋Œ์„ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.(Thread-safeํ•˜๋„๋ก)
    • Ex) Web Server

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๊ฐ€ Context Switching ๋น„์šฉ์ด ๋” ์ ์€ ์ด์œ ?

  • ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ
    • Context Switching ๋ฐœ์ƒ ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— code, data, heap, stack ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๋‚ด๋ฆฌ๊ณ 
      ์ „ํ™˜๋œ ํ”„๋กœ์„ธ์Šค์˜ code, data, heap, stack ์˜์—ญ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ์˜ฌ๋ ค์•ผ ํ•จ
    • CPU์˜ Register์— ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ PCB์— ์žˆ๋Š” Register๋“ค์„ ์˜ฌ๋ ค์•ผ ํ•œ๋‹ค.
  • ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ
    • stack ์˜์—ญ๋งŒ ๊ต์ฒดํ•œ๋‹ค.
    • CPU์˜ Register์— ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ์˜ Register๋“ค๋งŒ ๊ต์ฒดํ•˜๋ฉด ๋œ๋‹ค.

์‹ฑ๊ธ€ ์ฝ”์–ด(Single-Core) vs ๋ฉ€ํ‹ฐ ์ฝ”์–ด(Multi-Core)

  • ์‹ฑ๊ธ€ ์ฝ”์–ด๋Š” ์‹ฑ๊ธ€ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง„ CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹คํ–‰ ๋‹จ์œ„๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์งง์€ ํ…€์œผ๋กœ ์—ฌ๋Ÿฌ ์‹คํ–‰ ๋‹จ์œ„๋ฅผ ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉด์„œ ์‹คํ–‰ํ•ด์„œ ๋งˆ์น˜ ๋™์‹œ์— ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. (๋™์‹œ์„ฑ)
  • ๋ฉ€ํ‹ฐ ์ฝ”์–ด๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง„ CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹คํ–‰ ๋‹จ์œ„๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. (๋ณ‘๋ ฌ์„ฑ)

์ž„๊ณ„๊ตฌ์—ญ(Critical section)์ด๋ž€?

์ž„๊ณ„๊ตฌ์—ญ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ์‹œ์Šคํ…œ์—์„œ ๊ฐ ์“ฐ๋ ˆ๋“œ๋“ค์ด
๊ณต์œ ํ•˜๋Š” ๋ฐ์ดํ„ฐ(๋ณ€์ˆ˜, ํ…Œ์ด๋ธ”, ํŒŒ์ผ ๋“ฑ)๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ ์˜์—ญ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
(์˜ˆ๋ฅผ ๋“ค๋ฉด ์€ํ–‰ ๊ณ„์ขŒ ์˜ˆ์ œ์—์„œ ๋ˆ์„ ์ž…๊ธˆํ•˜๊ฑฐ๋‚˜ ์ถœ๊ธˆํ•˜๋Š” ์ฝ”๋“œ ๋ถ€๋ถ„์„ ๋งํ•จ)

์„ธ๋งˆํฌ์–ด(Semaphores)๋ž€?

  • ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด: ๊ฐ’์— ์ œํ•œ ์—†์Œ
  • ์ด์ง„ ์„ธ๋งˆํฌ์–ด: 0, 1 ๊ฐ’๋งŒ ๊ฐ€๋Šฅ(๋ฎคํ…์Šค ๋ฝ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘)

๋…ผ๋ฆฌ ์ฃผ์†Œ(Logical address)์™€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ(Physical address)

CPU <-> Main memory

  • CPU๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  Main memory๋กœ ์š”์ฒญ์„ ํ•˜๊ฑฐ๋‚˜, ํ•ด๋‹น ์ฃผ์†Œ์— ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • Main memory๋Š” CPU๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์ฃผ์†Œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ CPU์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์ฃผ์†Œ๊ฐ€ 0๋ฒˆ์ง€์ผ ๋•Œ MMU๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ์žฌ๋ฐฐ์น˜ ๋ ˆ์ง€์Šคํ„ฐ์— ์˜ํ•ด์„œ ์‹ค์ œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” 500๋ฒˆ์ง€์— ํ• ๋‹น๋œ๋‹ค.
  • ๊ทธ๋ž˜์„œ CPU์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์†Œ(0๋ฒˆ์ง€)๋ฅผ ๋…ผ๋ฆฌ ์ฃผ์†Œ(Logical address)๋ผ๊ณ  ํ•˜๊ณ , ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ(500๋ฒˆ์ง€)๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ(Physical address)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”(Memory fragmentation)๋ž€?

์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ƒ์„ฑ, ํŒŒ๊ดด๋จ์— ๋”ฐ๋ผ์„œ
๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ๋น„์–ด ์žˆ๋Š” ๊ณต๊ฐ„๋“ค์ด ์กด์žฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ํ˜„์ƒ์„ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

  • ์™ธ๋ถ€ ๋‹จํŽธํ™”

    • ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ž€?
      • ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”์— ์˜ํ•ด 3๊ฐœ์˜ ๊ณต๊ฐ„(50byte, 50byte, 100byte)๊ฐ€ ์žˆ์„ ๋•Œ, ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค 150byte๋ฅผ ํ• ๋‹นํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ํ•˜์ง€ ๋ชปํ•˜๋Š” ํ˜„์ƒ์„ ๋งํ•œ๋‹ค.
    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
      • ํŽ˜์ด์ง•(Paging): ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผ์ •ํ•œ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ ์„œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ํฉ์–ด์ ธ์„œ ์˜ฌ๋ฆฐ๋‹ค๋Š” ์ƒ๊ฐ.
  • ๋‚ด๋ถ€ ๋‹จํŽธํ™”

    • ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋ž€?
      • 15byte์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์„ ๋•Œ ํŽ˜์ด์ง€ ํฌ๊ธฐ๊ฐ€ 4byte๋ผ๋ฉด 4,4,4,3์˜ ํฌ๊ธฐ๋กœ ์ด 4๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€๋Š” 1byte๊ฐ€ ๋†€๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋ผ๊ณ  ํ•œ๋‹ค.
  • OS๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•์€ ํฌ๊ฒŒ 2๊ฐ€์ง€ ๊ฐ€ ์žˆ๋‹ค.(์—ฐ์†์ , ๋ถˆ์—ฐ์†์ )

    • ์—ฐ์†์ (1๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น)
      • ๊ณ ์ • ๋ถ„ํ•  ๊ธฐ๋ฒ•: ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ •๋œ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ถ„ํ•  => ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฐœ์ƒ
      • ๋™์  ๋ถ„ํ•  ๊ธฐ๋ฒ•: ํŒŒํ‹ฐ์…˜๋“ค์„ ๋™์  ์ƒ์„ฑํ•˜๊ณ  ์ž์‹ ์˜ ํฌ๊ธฐ์™€ ๊ฐ™์€ ํŒŒํ‹ฐ์…˜์— ์ ์žฌํ•˜๋Š” ๊ฒƒ => ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฐœ์ƒ
    • ๋ถˆ์—ฐ์†์ (1๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋ถˆ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น)
      • ํŽ˜์ด์ง•(Paging): ํ”„๋กœ์„ธ์Šค๋ฅผ page๋ผ๋Š” ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ frame์ด๋ผ๋Š” ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ ์„œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ๊ฐ๊ฐ์˜ page์™€ frame์„ ๋งค์นญ.(page ํฌ๊ธฐ = frame ํฌ๊ธฐ). process ํฌ๊ธฐ < frame * N ์ผ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ํ”„๋ ˆ์ž„์ด ์ „๋ถ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ(=> ๋‚ด๋ถ€ ๋‹จํŽธํ™” ํ•ด๊ฒฐ ๋ชปํ•จ)
      • ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜(Segmentation): ํ”„๋กœ์„ธ์Šค๋ฅผ ๋…ผ๋ฆฌ์  ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ ์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.(=> ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ) Ex) Process#1(10Byte) = segment#1(4Byte) + segment#2(4Byte) + segment#3(2Byte)

[์ฐธ๊ณ ]

  • ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ -> ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋จ -> ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์— (์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ) ์ƒ์„ฑ -> ์ด ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋“ค์ด PCB์— ์ €์žฅ๋จ
  • CPU์˜ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์žˆ๋‹ค. ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๊ณ ์†๊ธฐ์–ต์žฅ์น˜๋กœ ๋ช…๋ น์–ด ์ฃผ์†Œ, ์ฝ”๋“œ, ์—ฐ์‚ฐ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ, ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ๋“ฑ์„ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ