OS

Operating System ์ด๋ž€ ?

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

๋Œ€ํ‘œ์ ์ธ ์šด์˜์ฒด์ œ๋กœ๋Š” Window, Linux, Mac OSX, iOS ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šด์˜์ฒด์ œ์˜ ๋ชฉ์ 

  • ์ปดํ“จํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ๊ด€๋ฆฌ

    • CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ, ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค, ๋ชจ๋‹ˆํ„ฐ, ๋„คํŠธ์›Œํฌ

  • ์šด์˜์ฒด์ œ์˜ ์„ฑ๋Šฅ๊ณผ ์ปดํ“จํ„ฐ์˜ ์„ฑ๋Šฅ์€ ๋น„๋ก€

  • ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ์˜๋ฅผ ์ œ๊ณต

  1. ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ

  2. ์Šค์ผ€์ค„๋ง

  3. ๋™๊ธฐํ™”

  4. IPC ํ†ต์‹ 

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ๋™์ž‘ ์›๋ฆฌ

โœจ ๋ถ€ํŒ…(Booting)

Processor๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ CPU๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

Main Memory

  • ROM : ๋น„ํœ˜๋ฐœ์„ฑ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ ๊ฒŒ ์ฐจ์ง€(์ˆ˜ KB)

  • RAM : ํœ˜๋ฐœ์„ฑ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋ฉฐ, ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์ด ํ• ๋‹น๋˜๋Š” ๊ณณ(์ˆ˜ MB ~ ์ˆ˜ GB)

Booting

  1. ์ปดํ“จํ„ฐ ์ „์› ์ผœ์ง

  2. ํ”„๋กœ์„ธ์„œ์—์„œ ROM์— ์žˆ๋Š” ๋‚ด์šฉ ์ฝ์Œ

  3. POST(Power-On-Self-Test) ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ˜„์žฌ ์ปดํ“จํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๊ฒ€์‚ฌ

  4. Boot loader๊ฐ€ ํ•˜๋“œ๋””์Šคํฌ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์šด์˜์ฒด์ œ๋ฅผ ์ฐพ์•„์„œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ (RAM)์— ๊ฐ€์ ธ ์˜ด

OS

  • ์ปค๋„ (Kernel)

    • ์šด์˜์ฒด์ œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ €์žฅ๋˜์–ด ์žˆ์Œ

  • ๋ช…๋ น์–ด ํ•ด์„๊ธฐ (Command interpreter, shell)

    • ์‚ฌ์šฉ์ž๊ฐ€ ์ปค๋„์— ์š”์ฒญํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•˜์—ฌ ์ปค๋„์— ์š”์ฒญํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ

โœจ ์šด์˜์ฒด์ œ์˜ ์œ„์น˜

reference

Process & Thread

ํ”„๋กœ๊ทธ๋žจ์ด๋ž€ ?

์–ด๋–ค ์ž‘์—…์„ ์œ„ํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ

ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ ?

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

ํ•œ ํ”„๋กœ์„ธ์Šค์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” code, data ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๋Š” ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•œ๋‹ค. ์ด์™ธ์—๋„ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์ธ file, I/O ๋“ฑ์€ ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•˜์ง€๋งŒ, ๊ฐ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ณ ์œ ํ•˜๊ฒŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์€ PC(Program Counter), SP(Stack Pointer), registers, stack ๋“ฑ์ด ์žˆ๋‹ค.

โœจ ํ”„๋กœ์„ธ์Šค

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

  • ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด CPU์˜ ํ• ๋‹น์„ ๋ฐ›์€ ์ž‘์—…์˜ ๋‹จ์œ„

  • ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น ๋ฐ›์Œ

    • CPU ์‹œ๊ฐ„

    • ์šด์˜๋˜๊ธฐ ์œ„ํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„

    • Code, Data, Stack, Heap ๊ตฌ๋กœ์˜ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ๊ณต๊ฐ„
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ตœ์†Œ 1๊ฐœ์˜ ์Šค๋ ˆ๋“œ ์กด์žฌ (๋ฉ”์ธ ์Šค๋ ˆ๋“œ)

  • ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ๊ฐ ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(์ฃผ์†Œ ๊ณต๊ฐ„)์„ ํ• ๋‹น ๋ฐ›์Œ (Code, Data, Stack, Heap)

  • ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” IPC ํ†ต์‹ ์ด ํ•„์š”

    • ํŒŒ์ดํ”„, ํŒŒ์ผ, ์†Œ์ผ“ ๋“ฑ์„ ์ด์šฉํ•œ ํ†ต์‹  ๋ฐฉ๋ฒ• ์ด์šฉ

โœจ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(Process Control Block, PCB)

  • ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์ปค๋„ ๋‚ด ์ž๋ฃŒ๊ตฌ์กฐ

  • OS๋Š” ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค์˜ ๊ณ ์œ  PCB๋ฅผ ์ƒ์„ฑ

PCB์— ์ €์žฅ๋˜๋Š” ์ •๋ณด
  • ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž(Process ID, PID) : ํ”„๋กœ์„ธ์Šค ์‹๋ณ„ ๋ฒˆํ˜ธ

  • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ : new, ready, running, waiting, terminated ๋“ฑ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅ

  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(Program Counter, PC) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด

  • CPU ๋ ˆ์ง€์Šคํ„ฐ

  • CPU ์Šค์ผ€์ค„๋ง ์ •๋ณด : ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„, ์Šค์ผ€์ค„ ํ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ ๋“ฑ

  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด : ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ” ๋“ฑ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ํฌํ•จ

  • ์ž…์ถœ๋ ฅ ์ƒํƒœ ์ •๋ณด : ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋“ค๊ณผ ์—ด๋ฆฐ ํŒŒ์ผ ๋ชฉ๋ก

  • ์–ด์นด์šดํŒ… ์ •๋ณด : ์‚ฌ์šฉ๋œ CPU ์‹œ๊ฐ„, ์‹œ๊ฐ„ ์ œํ•œ, ๊ณ„์ • ๋ฒˆํ˜ธ ๋“ฑ

*์•„๋ž˜ ๋˜ ์žˆ์Œ์š”*

โœจ ์Šค๋ ˆ๋“œ

  • ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ๋‹จ์œ„

  • ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋™์ž‘๋˜๋Š” ์—ฌ๋Ÿฌ ์‹คํ–‰ ํ๋ฆ„์œผ๋กœ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์ด๋‚˜ ์ž์› ๊ณต์œ  ๊ฐ€๋Šฅ

  • ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ Code, Data, Heap ์˜์—ญ์€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ๊ณต์œ ํ•˜๊ณ  Stack ์˜์—ญ์„ ๋”ฐ๋กœ ํ• ๋‹น ๋ฐ›์Œ

  • ์Šค๋ ˆ๋“œ๋Š” ๋ณ„๋„์˜ ๋ ˆ์ง€์Šคํ„ฐ์™€ ์Šคํƒ์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ์˜์—ญ์„ ๊ณต์œ 

  • ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๋ณ€๊ฒฝํ•˜๋ฉด, ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋„ ๊ทธ ๋ณ€๊ฒฝ ๊ฒฐ๊ณผ๋ฅผ ์ฆ‰์‹œ ํ™•์ธ ๊ฐ€๋Šฅ

โœจ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค (Multi Process)

  • ํ•˜๋‚˜์˜ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋กœ ๊ตฌ์„ฑ,

  • ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ

์žฅ์ 

  • ์•ˆ์ „์„ฑ : ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃฝ์–ด๋„ ๊ทธ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋งŒ ์ฃฝ๋Š” ๊ฒƒ ์ด์ƒ์œผ๋กœ ๋‹ค๋ฅธ ์˜ํ–ฅ์ด ํ™•์‚ฐ๋˜์ง€ ์•Š์Œ

๋‹จ์ 

  • Context Switching์—์„œ์˜ ์˜ค๋ฒ ํ—ค๋“œ

    • ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์—†์Œ

    • ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ธฐํ™” ๋“ฑ ๋ฌด๊ฑฐ์šด ์ž‘์—… ์ง„ํ–‰

  • ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๊ธฐ๋ฒ• IPC

    • ์–ด๋ ต๊ณ  ๋ณต์žกํ•จ

โœจ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ (Multi Thread)

  • ํ•˜๋‚˜์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑ,

  • ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ

์žฅ์ 

  • ํšจ์œจ์„ฑ

    • ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ์‹œ์Šคํ…œ ์ž์› ์†Œ๋ชจ ๊ฐ์†Œ

    • ์Šค๋ ˆ๋“œ ๊ฐ„ ํ†ต์‹ ์‹œ, Heap์˜์—ญ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉฐ ํ†ต์‹  ๋ฐฉ๋ฒ• ๊ฐ„๋‹จ

    • Context switching ์‹œ , ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„์šธ ํ•„์š”๊ฐ€ ์—†์–ด, ๋น„์šฉ์ด ์ ๊ณ  ๋น ๋ฆ„ โ†’ ?

๋‹จ์ 

  • ์ž์› ๊ณต์œ ์˜ ๋ฌธ์ œ(๋™๊ธฐํ™”)

  • ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ „์ฒด ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ

  • ์ฃผ์˜ ๊นŠ์€ ์„ค๊ณ„๊ฐ€ ํ•„์š”, ๋””๋ฒ„๊น… ๊นŒ๋‹ค๋กœ์›€ โ†’ ?

โœจ Question

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ vs ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค

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

๋ฐ˜๋ฉด, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์ ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  Context Switching์ด ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์˜ค๋ฅ˜๋กœ ์ธํ•ด ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ „์ฒด ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๊ณผ ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋‘ ๊ฐ€์ง€๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ฐ™์ง€๋งŒ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ์ ํ•ฉ/๋ถ€์ ํ•ฉ์ด ๊ตฌ๋ถ„ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€์ƒ ์‹œ์Šคํ…œ์˜ ํŠน์ง•์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ๋™์ž‘ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๊ณ  ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šคํƒ์„ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ์ด์œ ๋Š” ?

์Šคํƒ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ ์ „๋‹ฌ๋˜๋Š” ์ธ์ž, ๋ณต๊ท€ ์ฃผ์†Œ๊ฐ’ ๋ฐ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธํ•˜๋Š” ๋ณ€์ˆ˜ ๋“ฑ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.

์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋…๋ฆฝ์ ์ด๋ผ๋Š” ๊ฒƒ์€, ๋…๋ฆฝ์ ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•จ์„ ์˜๋ฏธํ•˜๊ณ  ์ด๋Š” ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์ด ์ถ”๊ฐ€๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šค๋ ˆ๋“œ์˜ ์ •์˜์— ๋”ฐ๋ผ ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์กฐ๊ฑด์œผ๋กœ ๋…๋ฆฝ๋œ ์Šคํƒ์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PC ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ์ด์œ ๋Š” ?

PC ๊ฐ’์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ช…๋ น์–ด์˜ ์–ด๋””๊นŒ์ง€ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ๋Š” CPU๋ฅผ ํ• ๋‹น๋ฐ›์•˜๋‹ค๊ฐ€ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ๋‹ค์‹œ ์„ ์ ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ช…๋ น์–ด๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€ ๋ชปํ•˜๊ณ  ์–ด๋А ๋ถ€๋ถ„๊นŒ์ง€ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€ ๊ธฐ์–ตํ•  ํ•„์š”๊ฐ€ ์žˆ์–ด, PC ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๋Œ€์‹  ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ?
  1. ํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ ๊ฐœ ํ‚ค๋Š” ๊ฒƒ๋ณด๋‹ค ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋”์šฑ ํšจ์œจ์ 

  2. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ์ค„์–ด๋“ค์–ด ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  3. Context Switching์‹œ, ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„์šธ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ์ด ์ ๊ณ  ๋” ๋น ๋ฆ„ (์Šค๋ ˆ๋“œ๋Š” Stack ์˜์—ญ๋งŒ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ๋จ)

  4. ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ๊ฐ„๋‹จํ•˜๋ฏ€๋กœ IPC์— ๋น„ํ•ด ๋น„์šฉ์ด ์ ๊ณ  ๋” ๋น ๋ฆ„ (์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ Stack ์˜์—ญ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ )

Context Switching์ด๋ž€?
  • CPU๋Š” ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

  • โœจ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•ฉ๋‹ˆ๋‹ค

    • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ Task(ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ)์˜ ์ƒํƒœ๋ฅผ PCB์— ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ์— ์ง„ํ–‰ํ•  Task์˜ ์ƒํƒœ๊ฐ’์„ ์ฝ์–ด ์ ์šฉํ•˜๋Š” ๊ณผ์ •

  • ๊ณผ์ •

    • Task์˜ ๋Œ€๋ถ€๋ถ„ ์ •๋ณด๋Š” Register์— ์ €์žฅ๋˜๊ณ  PCB๋กœ ๊ด€๋ฆฌ

    • ํ˜„์žฌ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” Task์˜ PCB ์ •๋ณด๋ฅผ ์ €์žฅ

    • ๋‹ค์Œ ์‹คํ–‰ํ•  Task์˜ PCB ์ •๋ณด๋ฅผ ์ฝ์–ด Register์— ์ ์žฌํ•˜๊ณ  CPU๊ฐ€ ์ด์ „์— ์ง„ํ–‰ํ–ˆ๋˜ ๊ณผ์ •์„ ์—ฐ์†์ ์œผ๋กœ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

  • Context Switching์€ ๋งŽ์€ ๋น„์šฉ์ด ์†Œ๋ชจ

    • Cache ์ดˆ๊ธฐํ™”

    • Memory mapping ์ดˆ๊ธฐํ™”

    • ์ปค๋„์€ ํ•ญ์ƒ ์‹คํ–‰๋˜์–ด์•ผ ํ•จ

  • Context Switching์˜ ๋น„์šฉ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ๋” ๋งŽ์ด ๋“ฌ

    • ์Šค๋ ˆ๋“œ๋Š” Stack ์˜์—ญ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Context Switching ๋ฐœ์ƒ์‹œ Stack ์˜์—ญ๋งŒ ๋ณ€๊ฒฝ์„ ์ง„ํ–‰ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ

Thread-safe

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ๊ฐ์ฒด ๋ฐ ๋ณ€์ˆ˜(๊ณต์œ  ์ž์›)์— ์ ‘๊ทผํ•  ๋•Œ, ์˜๋„ํ•œ ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ

๋™๊ธฐํ™” ๋ฌธ์ œ

๋™๊ธฐํ™”

ํ•œ์ •์ ์ธ ์‹œ์Šคํ…œ ์ž์›์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—๊ฒŒ ํ•˜๋‚˜์˜ ์ž์›์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๊ถŒํ•œ์„ ์ฃผ๊ฑฐ๋‚˜ ์ˆœ์„œ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

โœจ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”

  1. ์‹คํ–‰ ์ˆœ์„œ์˜ ๋™๊ธฐํ™”

    : ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ •์˜ํ•˜๊ณ , ์ด ์ˆœ์„œ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋”ฐ๋ฅด๋„๋ก ํ•˜๋Š” ๊ฒƒ

  2. ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์— ๋Œ€ํ•œ ๋™๊ธฐํ™”

    : ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์— ์žˆ์–ด์„œ ๋™์‹œ ์ ‘๊ทผ์„ ๋ง‰๋Š” ๊ฒƒ

    (ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ํ•ด๋‹น ์ž์›์— ์ ‘๊ทผํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ)

โœจ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•

  • ์œ ์ € ๋ชจ๋“œ์˜ ๋™๊ธฐํ™”

    • ์ปค๋„์˜ ํž˜์„ ๋นŒ๋ฆฌ์ง€ ์•Š๋Š” ๋™๊ธฐํ™” ๊ธฐ๋ฒ•

    • ์„ฑ๋Šฅ์ƒ ์ด์ ์ด ์žˆ์œผ๋‚˜ ๊ธฐ๋Šฅ์ƒ์˜ ์ œํ•œ์  ์กด์žฌ

    ์ž„๊ณ„ ๊ตฌ์—ญ ๊ธฐ๋ฐ˜์˜ ๋™๊ธฐํ™”

    ์ธํ„ฐ๋ฝ ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์˜ ๋™๊ธฐํ™”

  • ์ปค๋„ ๋ชจ๋“œ์˜ ๋™๊ธฐํ™”

    • ์ปค๋„์—์„œ ์ œ๊ณตํ•˜๋Š” ๋™๊ธฐํ™” ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

    • ์ปค๋„ ๋ชจ๋“œ๋กœ์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๊ณ  ์ด๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๋กœ ์ด์–ด์ง€์ง€๋งŒ, ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ

    ์„ธ๋งˆํฌ์–ด

    ๋ฎคํ…์Šค

    ๋ชจ๋‹ˆํ„ฐ

โœจ Q

์ž„๊ณ„์˜์—ญ์ด๋ž€ ?

๋ฎคํ…์Šค์™€ ๋ชจ๋‹ˆํ„ฐ์˜ ์ฐจ์ด๋Š” ?

์„ธ๋งˆํฌ์–ด์™€ ๋ฎคํ…์Šค์˜ ์ฐจ์ด๋Š” ?

์„ธ๋งˆํฌ์–ด(Semaphore) & ๋ฎคํ…์Šค(Mutex)

โœจ ์„ธ๋งˆํฌ์–ด๋ž€ ?

๊ณต์œ ๋œ ์ž์›์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๊ณต์œ ๋œ ์ž์›์˜ ๋ฐ์ดํ„ฐ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œ์„ ๋‘ฌ์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒƒ์ด ๋ฐ”๋กœ **'์„ธ๋งˆํฌ์–ด'**์ž…๋‹ˆ๋‹ค.

์„ธ๋งˆํฌ์–ด : ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•

โœจ ์ž„๊ณ„ ๊ตฌ์—ญ(Critical Section)

์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์ˆ˜ํ–‰๋  ๋•Œ, ๊ฐ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ณต์œ  ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋ถ€๋ถ„

๊ณต์œ  ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•  ๋•Œ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โœจ ๋ฎคํ…์Šค๋ž€ ?

์ž„๊ณ„ ๊ตฌ์—ญ์„ ๊ฐ€์ง„ ์Šค๋ ˆ๋“œ๋“ค์˜ ์‹คํ–‰์‹œ๊ฐ„์ด ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š๊ณ  ๊ฐ๊ฐ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ 

์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusion)์˜ ์•ฝ์ž์ž„

ํ•ด๋‹น ์ ‘๊ทผ์„ ์กฐ์œจํ•˜๊ธฐ ์œ„ํ•ด lock๊ณผ unlock์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • lock : ํ˜„์žฌ ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐˆ ๊ถŒํ•œ์„ ์–ป์–ด์˜ด ( ๋งŒ์•ฝ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ ์ˆ˜ํ–‰ ์ค‘์ด๋ฉด ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ )

  • unlock : ํ˜„์žฌ ์ž„๊ณ„ ๊ตฌ์—ญ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ–ˆ์Œ์„ ์•Œ๋ฆผ ( ๋Œ€๊ธฐ ์ค‘์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์Œ )

โœจ ๋ฎคํ…์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐ์ปค(Dekker) ์•Œ๊ณ ๋ฆฌ์ฆ˜
while(true) {
    flag[i] = true; // ํ”„๋กœ์„ธ์Šค i๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ ์ง„์ž… ์‹œ๋„
    while(flag[j]) { // ํ”„๋กœ์„ธ์Šค j๊ฐ€ ํ˜„์žฌ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์žˆ๋Š”์ง€ ํ™•์ธ
        if(turn == j) { // j๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ์ค‘์ด๋ฉด
            flag[i] = false; // ํ”„๋กœ์„ธ์Šค i ์ง„์ž… ์ทจ์†Œ
            while(turn == j); // turn์ด j์—์„œ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
            flag[i] = true; // j turn์ด ๋๋‚˜๋ฉด ๋‹ค์‹œ ์ง„์ž… ์‹œ๋„
        }
    }
}

// ------- ์ž„๊ณ„ ๊ตฌ์—ญ ---------

turn = j; // ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ๋๋‚˜๋ฉด turn์„ ๋„˜๊น€
flag[i] = false; // flag ๊ฐ’์„ false๋กœ ๋ฐ”๊ฟ” ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ์™„๋ฃŒ๋ฅผ ์•Œ๋ฆผ
ํ”ผํ„ฐ์Šจ(Peterson) ์•Œ๊ณ ๋ฆฌ์ฆ˜
while(true) {
    flag[i] = true; // ํ”„๋กœ์„ธ์Šค i๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ ์ง„์ž… ์‹œ๋„
    turn = j; // ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ง„์ž… ๊ธฐํšŒ ์–‘๋ณด
    while(flag[j] && turn == j) { // ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง„์ž… ์‹œ๋„ํ•˜๋ฉด ๋Œ€๊ธฐ
    }
}

// ------- ์ž„๊ณ„ ๊ตฌ์—ญ ---------

flag[i] = false; // flag ๊ฐ’์„ false๋กœ ๋ฐ”๊ฟ” ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ์™„๋ฃŒ๋ฅผ ์•Œ๋ฆผ
์ œ๊ณผ์ (Bakery) ์•Œ๊ณ ๋ฆฌ์ฆ˜
while(true) {
    
    isReady[i] = true; // ๋ฒˆํ˜ธํ‘œ ๋ฐ›์„ ์ค€๋น„
    number[i] = max(number[0~n-1]) + 1; // ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ค‘์— ๊ฐ€์žฅ ํฐ ๋ฒˆํ˜ธ ๋ฐฐ์ • 
    isReady[i] = false; // ๋ฒˆํ˜ธํ‘œ ์ˆ˜๋ น ์™„๋ฃŒ
    
    for(j = 0; j < n; j++) { // ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค ๋ฒˆํ˜ธํ‘œ ๋น„๊ต
        while(isReady[j]); // ๋น„๊ต ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฒˆํ˜ธํ‘œ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
        while(number[j] && number[j] < number[i] && j < i);
        
        // ํ”„๋กœ์„ธ์Šค j๊ฐ€ ๋ฒˆํ˜ธํ‘œ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ
        // ํ”„๋กœ์„ธ์Šค j์˜ ๋ฒˆํ˜ธํ‘œ < ํ”„๋กœ์„ธ์Šค i์˜ ๋ฒˆํ˜ธํ‘œ
    }
}

// ------- ์ž„๊ณ„ ๊ตฌ์—ญ ---------

number[i] = 0; // ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ์ข…๋ฃŒ

PCB์™€ Context Switching

โœจ Process Management

CPU ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ผ ๋•Œ, CPU ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ, CPU๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ˆ„๊ตฐ์ง€ ์•Œ์•„์•ผ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ๋ฐ, ํ”„๋กœ์„ธ์Šค๋“ค์˜ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ Process Metadata์ž…๋‹ˆ๋‹ค.

Process Metadata
  • Process ID

  • Process State

  • Process Priority

  • CPU Registers

  • Owner

  • CPU Usage

  • Memeory Usage

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด PCB(Process Control Block) ์ด๋ผ๋Š” ๊ณณ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

โœจ PCB (Process Control Block)

ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•ด ๋†“๋Š” ๊ณณ์œผ๋กœ ํ•œ PCB ์•ˆ์—๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌ

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ โ†’ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ โ†’ ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์— (์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ) ์ƒ์„ฑ

โœจ Q

PCB๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€ ?
  • CPU์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ต์ฒด์ž‘์—…์ด ์ด๋ฃจ์–ด. (interrupt๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ํ• ๋‹น๋ฐ›์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ waiting ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ running์œผ๋กœ ๋ฐ”๊ฟ” ์˜ฌ๋ฆด ๋•Œ)

  • ์ด๋•Œ, ์•ž์œผ๋กœ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•  ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์— ๊ด€ํ•œ ์ €์žฅ ๊ฐ’์„ PCB์— ์ €์žฅํ•ด๋‘๋Š” ๊ฒƒ์ด๋‹ค.

PCB๋Š” ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌ๋˜๋‚˜ ?
  • Linked List ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌํ•จ

  • PCB List Head์— PCB๋“ค์ด ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๋ถ™๊ฒŒ ๋œ๋‹ค. ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ์šฉ์ดํ•จ.

  • ์ฆ‰, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ํ•ด๋‹น PCB๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ํ”„๋กœ์„ธ์Šค ์™„๋ฃŒ์‹œ ์ œ๊ฑฐ๋จ

Context Switching

์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ, CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ Context Switching์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ฆ‰, CPU๊ฐ€ ์ด์ „์˜ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ PCB์— ๋ณด๊ด€ํ•˜๊ณ , ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ PCB์— ์ฝ์–ด ๋ ˆ์ง€์Šคํ„ฐ์— ์ ์žฌํ•˜๋Š” ๊ณผ์ •

๋ณดํ†ต ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ์‹คํ–‰ ์ค‘์ธ CPU ์‚ฌ์šฉ ํ—ˆ๊ฐ€์‹œ๊ฐ„์„ ๋ชจ๋‘ ์†Œ๋ชจํ•˜๊ฑฐ๋‚˜, ์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— Context Switching์ด ๋ฐœ์ƒ

์ฆ‰, ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready โ†’ Running, Running โ†’ Ready, Running โ†’ Waiting์ฒ˜๋Ÿผ ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ ๋ฐœ์ƒ!

Context Switching์˜ OverHead๋ž€?

ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ ์ž…์ถœ๋ ฅ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜์‹œํ‚ด ์ด๋•Œ, CPU๋ฅผ ๊ทธ๋ƒฅ ๋†€๊ฒŒ ๋†”๋‘๋Š” ๊ฒƒ๋ณด๋‹ค ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ด ํšจ์œจ์  ์ฆ‰, CPU์— ๊ณ„์† ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  Context Switching ํ•˜๋Š” ๊ฒƒ

CPU๊ฐ€ ๋†€์ง€ ์•Š๋„๋ก ๋งŒ๋“ค๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น ๋ฅด๊ฒŒ ์ผ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.

์ธํ„ฐ๋ŸฝํŠธ (Interrupt)

  • ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๊ฐ€ CPU์—๊ฒŒ ์–ด๋–ค ์‚ฌ์‹ค์„ ์•Œ๋ ค์ฃผ๊ฑฐ๋‚˜ CPU์˜ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, CPU ๋‚ด์— ์žˆ๋Š” ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์„ ์„ธํŒ…ํ•˜์—ฌ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ

  • CPU๋Š” ๋งค๋ฒˆ ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌ๊ณ  ์žˆ๋Š” ๊ณณ์˜ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•œ ๋’ค, ๋‹ค์Œ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ง์ „์— ๋ผ์ธ์ด ์„ธํŒ…๋˜์—ˆ๋Š”์ง€ ์ฒดํฌ

  • ์ด๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉด CPU๋Š” ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉˆ์ถ”๊ณ  ์šด์˜ ์ฒด์ œ์˜ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์œผ๋กœ ์ด๋™ํ•˜์—ฌ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ์ˆ˜ํ–‰

โœจ ์ธํ„ฐ๋ŸฝํŠธ ์ข…๋ฅ˜

  1. ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ : ํ•˜๋“œ์›จ์–ด ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ CPU์˜ ์„œ๋น„์Šค๋ฅผ ์š”์ฒ˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ธํ„ฐ๋ŸฝํŠธ

  2. ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ

    ์˜ˆ์™ธ์ƒํ™ฉ

    ์‹œ์Šคํ…œ ์ฝœ

    ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ๊ณผ์ •

โœจ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์ฒ˜๋ฆฌ ๊ณผ์ •

  • Aํ”„๋กœ๊ทธ๋žจ์ด CPu๋ฅผ ํ• ๋‹น ๋ฐ›๊ณ  ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด A๋Š” ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ธ ๋ช…๋ น์˜ ์œ„์น˜ ์ €์žฅ

  • ๊ทธ ํ›„ ์šด์˜ ์ฒด์ œ ๋‚ด๋ถ€ ์ฝ”๋“œ์ธ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์œผ๋กœ ๋„˜์–ด๊ฐ€์„œ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ

  • ๋‹ค์‹œ ๋Œ์•„์™€ A์˜ ์ด์ „ ์ž‘์—… ์ง€์ ๋ถ€ํ„ฐ ์ˆ˜ํ–‰์„ ๊ณ„์†ํ•จ

โ†’ ์ง„ํ–‰ ์ค‘์ด๋˜ Aํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋Š” PCB์— ์ €์žฅ. ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฅผ ๋ชจ๋‘ ๋งˆ์น˜๋ฉด ํ”„๋กœ๊ทธ๋žจ A์˜ PCB์— ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ๋ณต์›์‹œ์ผœ ์šฐ๋„ˆ๋ž˜ ์ˆ˜ํ–‰ํ•˜๋˜ ์ผ์„ ์žฌ๊ฐœ

  • ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ

    • ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€ํ•ด ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ์‹œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ฃจํ‹ด์˜ ์ฃผ์†Œ๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”

    • ์ผ์ข…์˜ ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

  • ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ

    • ์‹ค์ œ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฃจํ‹ด์œผ๋กœ ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด

    • ์šด์˜์ฒด์ œ ์ฝ”๋“ค ๋ถ€๋ถ„์—๋Š” ๊ฐ์ข… ์ธํ„ฐ๋ŸฝํŠธ ๋ณ„๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋‚ด์šฉ์ด ์ด๋ฏธ ํ”„๋กœ๊ทธ๋žจ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด ๋ถ€๋ถ„์„ ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค๋ฃจํ‹ด ๋˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋ผ๊ณ  ํ•จ

์‹œ์Šคํ…œ ์ฝœ (System Call)

์œ ์ € ํ”„๋กœ์„ธ์Šค์—์„œ ์šด์˜์ฒด์ œ ์„œ๋น„์Šค๋ฅผ ํ•„์š”๋กœ ํ•  ๋•Œ ์ด๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ˜ธ์ถœ

โœจ ์ปค๋„ ๋ชจ๋“œ

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

โœจ ์‚ฌ์šฉ์ž ๋ชจ๋“œ

ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ€ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์กด์žฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ ์ค‘์ด๋ฉฐ CPU๊ฐ€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ ์ˆ˜ํ–‰ ์ค‘์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ์ผ๋ฐ˜ ๋ช…๋ น : ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž๋ฃŒ๋ฅผ ์ฝ์–ด์™€์„œ CPU์—์„œ ๊ณ„์‚ฐํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์“ฐ๋Š” ์ผ๋ จ์˜ ๋ช…๋ น๋“ค

  • ํŠน๊ถŒ๋ช…๋ น : ๋ณด์•ˆ์ด ํ•„์š”ํ•œ ๋ช…๋ น์œผ๋กœ ์ž…์ถœ๋ ฅ ์žฅ์น˜, ํƒ€์ด๋จธ ๋“ฑ ๊ฐ์ข… ์žฅ์น˜๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๋ช…๋ น (์ปค๋„ ๋ชจ๋“œ)

  • CPU ๋‚ด์— ๋ชจ๋“œ ๋น„ํŠธ๋ฅผ ๋‘์–ด ๋‘ ๋ช…๋ น ์ˆ˜ํ–‰

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

  • ์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ ์Šค์Šค๋กœ ํŠน๊ถŒ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์šด์˜์ฒด์ œ์—๊ฒŒ ํŠน๊ถŒ ๋ช…๋ น์˜ ๋Œ€ํ–‰์„ ์š”์ฒญ. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค ์š”์ฒญ์€ ์‹œ์Šคํ…œ ์ฝœ์ด๋ผ๊ณ  ๋ถ€๋ฆ„ (์ฆ‰, ํŠน๊ถŒ ๋ช…๋ น์˜ ๋Œ€ํ–‰์„ ์š”์ฒญ)

โœจ ์‹œ์Šคํ…œ ์ฝœ์˜ ์œ ํ˜•

  1. ํ”„๋กœ์„ธ์Šค ์ œ์–ด : ํ”„๋กœ์„ธ์Šค ํŠน๊ถŒ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ง์ ‘์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅ

  2. ํŒŒ์ผ ์กฐ์ž‘ : ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ, ๊ด€๋ฆฌ ๋“ฑ

  3. ์žฅ์น˜ ๊ด€๋ฆฌ : ์žฅ์น˜ ์š”๊ตฌ ๋ฐ ์žฅ์น˜ ํ•ด์ œ, ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์žฌ๋ฐฐ์น˜ ๋“ฑ

  4. ์ •๋ณด ์œ ์ง€ : ์‹œ๊ฐ„๊ณผ ๋‚ ์งœ์˜ ์„ค์ •๊ณผ ํš๋“, ์‹œ์Šคํ…œ ์ž๋ฃŒ์˜ ์„ค์ •๊ณผ ํš๋“

  5. ํ†ต์‹  : ํ†ต์‹  ์—ฐ๊ฒฐ์˜ ์ƒ์„ฑ ๋ฐ ์ œ๊ฑฐ, ๋ฉ”์‹œ์ง€์˜ ์†ก์ˆ˜์‹ , ์ƒํƒœ ์ •๋ณด ์ „๋‹ฌ ๋“ฑ

์ฃผ์š” System call
  • Process: end(์ •์ƒ ์ข…๋ฃŒ), abort(๊ฐ•์ œ ์ข…๋ฃŒ), load, execute, create, terminate, get/set, attributes, wait event, signal event

  • Memory: allocate, free

  • File: create, delete, open, close, read, write, get/set attributes

  • Device: request, release, read, write, get/set attributes, attach/detach devices

  • information: get/set time, get/set system data

  • Communication: socket, send, receive

๊ต์ฐฉ ์ƒํƒœ (DeadLock)

๊ต์ฐฉ์ƒํƒœ๋ž€ ?

ํ•œ์ •๋œ ์ž์›์„ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋กœ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์–ป์ง€ ๋ชปํ•ด์„œ ๋‹ค์Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค

์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํ˜„์žฌ ์„œ๋กœ ์›ํ•˜๋Š” ์ž์›์ด ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ํ• ๋‹น๋˜์–ด ์žˆ์–ด์„œ ๋‘ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌดํ•œ์ • wait ์ƒํƒœ์— ๋น ์ง€๊ฒŒ ๋˜๋Š” ์ƒํ™ฉ์„ DeadLock ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

โœจ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

  • ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ํ•œ์ •๋œ ์ž์›์„ ์–ป๊ธฐ ์œ„ํ•ด ์„œ๋กœ ๊ฒฝ์Ÿํ•˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ

  • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”์ฒญํ–ˆ์„ ๋•Œ, ๋™์‹œ์— ๊ทธ ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ. ์ป๋Œ€ ํ”„๋กœ์„ธ์Šค๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ

  • ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ„ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์‹คํ–‰ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†์„ ๋•Œ, '๊ต์ฐฉ ์ƒํƒœ' ๋ฐœ์ƒ

โœจ ๋ฐœ์ƒ์กฐ๊ฑด

  • 4๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋™์‹œ์— ์„ฑ๋ฆฝํ•  ๋•Œ, ๋ฐœ์ƒ

  • 4๊ฐ€์ง€ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

  1. ์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusion)

    • ์ž์›์€ ํ•œ ๋ฒˆ์— ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

  2. ์ ์œ  ๋Œ€๊ธฐ(Hold and Wait)

    • ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์ž์›์„ ์ ์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜์–ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์ถ”๊ฐ€๋กœ ์ ์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•จ

  3. ๋น„์„ ์  (No Preemption)

    • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์€ ์‚ฌ์šฉ์ด ๋๋‚˜์„œ ๋ฐ˜๋‚ฉํ•  ๋•Œ๊นŒ์ง€ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์—†์Œ

  4. ์ˆœํ™˜ ๋Œ€๊ธฐ (Circular Wait)

    • ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ {P0, P1, ..., Pn}์—์„œ 0์€ 1์ด ์ ์œ ํ•œ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ  1์€ 2๊ฐ€ ์ ์œ ํ•œ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ  Pn์€ P0์ด ์ ์œ ํ•œ ์ž์›์„ ์š”๊ตฌํ•ด์•ผ ํ•จ

    • ์ด์ฒ˜๋Ÿผ ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ์—์„œ ์ˆœํ™˜ ํ˜•ํƒœ๋กœ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•จ

โœจ ๊ต์ฐฉ ์ƒํƒœ ์˜ˆ๋ฐฉ

  • ๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์ž์›์˜ ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•จ

  1. ์ƒํ˜ธ ๋ฐฐ์ œ ๋ถ€์ • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

  2. ์ ์œ  ๋Œ€๊ธฐ ๋ถ€์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „ ํ•„์š”ํ•œ ๋ชจ๋“  ์ž์›์„ ํ• ๋‹นํ•œ๋‹ค.

  3. ๋น„์„ ์  ๋ถ€์ • ์ž์› ์ ์œ  ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ์ž์›์„ ์š”๊ตฌํ•  ๋•Œ, ์ ์œ  ์ค‘์ธ ์ž์›์„ ๋ฐ˜๋‚ฉํ•˜๊ณ  ์š”๊ตฌํ•œ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•œ๋‹ค.

  4. ์ˆœํ™˜ ๋Œ€๊ธฐ ๋ถ€์ • ์ž์›์— ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹นํ•˜๊ณ , ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ๋กœ ์ž์›์„ ์š”๊ตฌํ•˜๋„๋ก ํ•œ๋‹ค.

โœจ ๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ

  • ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”ผํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ•

  • ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๋‹ค์ต์ŠคํŠธ๋ผ๊ฐ€ ์ œ์•ˆํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์€ํ–‰์—์„œ ๋ชจ๋“  ๊ณ ๊ฐ์˜ ์š”๊ตฌ๊ฐ€ ์ถฉ์กฑ๋˜๋„๋ก ํ˜„๊ธˆ์„ ํ• ๋‹นํ•˜๋Š”๋ฐ์„œ ์œ ๋ž˜๋œ ๊ธฐ๋ฒ•

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”๊ตฌํ•  ๋•Œ, ์‹œ์Šคํ…œ์€ ์ž์›์„ ํ• ๋‹นํ•œ ํ›„์—๋„ ์•ˆ์ • ์ƒํƒœ๋กœ ๋‚จ์•„์žˆ๊ฒŒ ๋˜๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํšŒํ”ผํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

์•ˆ์ • ์ƒํƒœ์— ์žˆ์œผ๋ฉด ์ž์›์„ ํ• ๋‹นํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ž์›์„ ํ•ด์ œํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.

โœจ ๊ต์ฐฉ ์ƒํƒœ ํšŒ๋ณต

  • ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ์ผ์œผํ‚จ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๊ฑฐ๋‚˜ ํ• ๋‹น๋œ ์ž์›์„ ํ•ด์ œํ•จ์œผ๋กœ์จ ํšŒ๋ณตํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

  1. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๋ฐฉ๋ฒ•

    • ๊ต์ฐฉ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋‘ ์ค‘์ง€

    • ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ํ•œ ํ”„๋กœ์„ธ์Šค์”ฉ ์ค‘์ง€

  2. ์ž์›์„ ์„ ์ ํ•˜๋Š” ๋ฐฉ๋ฒ•

    • ๊ต์ฐฉ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์„ ์ ํ•˜์—ฌ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹นํ•˜๋ฉฐ, ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผ์‹œ ์ •์ง€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค, ์ˆ˜ํ–‰๋œ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ํ”„๋กœ์„ธ์Šค ๋“ฑ์„ ์œ„์ฃผ๋กœ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ์„ ์ 

โœจ Q

๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ด๊ณ , ๋ฐœ์ƒ ์กฐ๊ฑด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํšŒํ”ผ ๊ธฐ๋ฒ•์ธ ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๊ธฐ์•„ ์ƒํƒœ๋ฅผ ์„ค๋ช…ํ•˜๋Š” '์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž ๋ฌธ์ œ'์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

CPU ์Šค์ผ€์ค„๋ง

CPU ์Šค์ผ€์ค„๋ง

CPU๊ฐ€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์ž‘์—…์ด ๋๋‚˜๋ฉด ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์Œ์— ์ฒ˜๋ฆฌํ•  ์ง€ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ CPU Scheduling ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ƒํ™ฉ์— ๋งž๊ฒŒ CPU๋ฅผ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์— ๋ฐฐ์ •ํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โœจ Preemptive vs Non-Preemptive

  1. Preemptive(์„ ์ )

    • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ๋™์•ˆ I/O๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Œ์—๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•ด๋‹น CPU๋ฅผ ๊ฐ•์ œ๋กœ ์ ์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ์ฆ‰, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ค‘์ธ ๋™์•ˆ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๊ฐ•์ œ๋กœ ์ ์œ ํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. Non-Preemptive(๋น„์„ ์ )

    • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ–ˆ๋‹ค๋ฉด I/O๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

โœจ ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง

  1. SRT(Shortest Remaining Time) ์Šค์ผ€์ค„๋ง

    • ์งง์€ ์‹œ๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

    • ํ˜„์žฌ CPU์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„๋ณด๋‹ค ๋” ์งง์€ CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด CPU๊ฐ€ ์„ ์ ๋œ๋‹ค.

  2. Round Robin ์Šค์ผ€์ค„๋ง

    • ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์˜ ์„ฑ์งˆ์„ ํ™œ์šฉํ•œ ๋ฐฉ๋ฒ•

    • ์ผ์ • ์‹œ๊ฐ„์„ ์ •ํ•˜์—ฌ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด ์‹œ๊ฐ„๋™์•ˆ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‹ค์‹œ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

    • ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค ์—ญ์‹œ ๊ฐ™์€ ์‹œ๊ฐ„๋™์•ˆ ์ˆ˜ํ–‰ํ•œ ํ›„, ๋Œ€๊ธฐํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ์•„๊ฐ€๋ฉด์„œ ์ง„ํ–‰ํ•˜๋ฉฐ, ๋งˆ์ง€๋ง‰ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์‹œ ์ฒ˜์Œ ํ”„๋กœ์„ธ์Šค๋กœ ๋Œ์•„์™€์„œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

    • ์ผ์ • ์‹œ๊ฐ„์„ Time Quantum(Time Slice)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ 10 ~ 100msec ์‚ฌ์ด์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค.

    • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— time quantum์ด ๋๋‚˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ๋„˜๊ฒจ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋‹ค.

  3. Multi-level Queue ์Šค์ผ€์ค„๋ง

    • ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด, ๊ฐ ๊ทธ๋ฃน์— ๋”ฐ๋ผ Ready Queue(์ค€๋น„ ํ)๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘๋ฉฐ, ๊ฐ ํ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ทœ์น™์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.(ex. ์šฐ์„ ์ˆœ์œ„, CPU ์‹œ๊ฐ„ ๋“ฑ)

    • ์ฆ‰, ์ค€๋น„ ํ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• ํ•ด ๊ด€๋ฆฌํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ๋ฒ•์ด๋‹ค.

    • ํ”„๋กœ์„ธ์Šค๋“ค์ด CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•ด ํ•œ ์ค„๋กœ ์„œ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ์ค„๋กœ ์„ ๋‹ค.

  4. Multi-level feedback Queue ์Šค์ผ€์ค„๋ง

    • ๊ธฐ๋ณธ ๊ฐœ๋…์€ Multi-level Queue์™€ ๋™์ผํ•˜๋‚˜, ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ํ์—์„œ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.

    • ์œ„ ๊ทธ๋ฆผ์—์„œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ€์žฅ ์œ„์˜ ํ์—์„œ CPU์˜ ์ ์œ ๋ฅผ ๋Œ€๊ธฐํ•œ๋‹ค. ์ด ์ƒํƒœ๋กœ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ์ด ํ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋ฉด ์•„๋ž˜์˜ ํ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜ฎ๊ธด๋‹ค. ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ๋งŒ์•ฝ, ์šฐ์„ ์ˆœ์œ„ ์ˆœ์œผ๋กœ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์•„๋ž˜์˜ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์—์„œ starvation ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฅผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์œ„์˜ ํ๋กœ ์˜ฎ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค.

    • ๋Œ€๋ถ€๋ถ„์˜ ์ƒ์šฉ ์šด์˜์ฒด์ œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ ํ๋งˆ๋‹ค ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ์„ฑ๊ฒฉ์— ๋งž๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ๋Œ€ํ•œ ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•œ๋‹ค.

โœจ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง

  1. FCFS(First Come First Server)

    • ์ค€๋น„ ํ์— ๋จผ์ € ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € CPU๋ฅผ ์ ์œ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

    • CPU๋ฅผ ํ• ๋‹น๋ฐ›์œผ๋ฉด CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ CPU๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํ• ๋‹น๋˜์—ˆ๋˜ CPU๊ฐ€ ๋ฐ˜ํ™˜๋  ๋•Œ๋งŒ ์Šค์ผ€์ค„๋ง์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

  2. SJF(Shortest-Job-First)

    • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„์ฐฉํ–ˆ๋”๋ผ๋„ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ๋จผ์ € ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

    • ์„ ์ , ๋น„์„ ์  ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค.

  3. Priority

    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์„ ํƒ๋˜๋Š” ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

    • ์šฐ์„ ์ˆœ์œ„๋Š” ์ •์ˆ˜๊ฐ’์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ž‘์€ ๊ฐ’์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.(Unix/Linux ๊ธฐ์ค€)

    • ์„ ์ , ๋น„์„ ์  ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค.

์Šค์ผ€์ค„๋Ÿฌ์˜ ์ข…๋ฅ˜

์Šค์ผ€์ค„๋Ÿฌ๋ž€ ?

ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ž์‹ ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ˆ˜๋งŽ์€ ํ๋“ค์„ ๋Œ์•„๋‹ค๋‹ˆ๋Š”๋ฐ, OS๋Š” ์ด ํ ์•ˆ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ๋ฐ ์ด ์ผ์„ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

  • ์ž‘์—… ํ(Job Queue)

    • ํ˜„์žฌ ์‹œ์Šคํ…œ ๋‚ด์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ

  • ์ค€๋น„ ํ(Ready Queue)

    • ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์žˆ์œผ๋ฉด์„œ CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ

  • ์žฅ์น˜ ํ(Device Queue)

    • ๊ฐ๊ฐ์˜ ์žฅ์น˜๋งˆ๋‹ค ์„œ๋น„์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ์ค„ ์„œ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ

โœจ ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ(Long-term Scheduler)

  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•œ์ •๋˜์–ด ์žˆ๋Š”๋ฐ ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๊บผ๋ฒˆ์— ์˜ฌ๋ผ์˜ฌ ๊ฒฝ์šฐ, ๋Œ€์šฉ๋Ÿ‰ ๋ฉ”๋ชจ๋ฆฌ(๋””์Šคํฌ)์— ์ž„์‹œ๋กœ ์ €์žฅ

  • ์ด Pool(๋””์Šคํฌ) ๋‚ด์˜ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋–ค ์ˆœ์„œ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ• ์ง€ ๊ฒฐ์ •

  • ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ์‚ฌ์ด์˜ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹น

  • ์ƒ๋Œ€์ ์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋นˆ๋„๊ฐ€ ์ ์Œ

  • ์ฆ‰, ๋””์Šคํฌ์™€ ๊ฐ™์€ ์ €์žฅ ์žฅ์น˜์— ์ž‘์—…๋“ค์„ ์ €์žฅํ•ด ๋†“๊ณ  ํ•„์š”ํ•  ๋•Œ ์‹คํ–‰ํ•  ์ž‘์—…์„ Job Queue์—์„œ ๊บผ๋‚ด Ready Queue๋ฅผ ํ†ตํ•ด์„œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ

  • degree of Multiprogramming ์ œ์–ด

    • (๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ. ์ฆ‰, ๋ช‡ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ฌ๋ผ๊ฐˆ ๊ฒƒ์ธ์ง€๋ฅผ ์ œ์–ด)

  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

    • ์‹œ์ž‘ ์ƒํƒœ(New) -> ์ค€๋น„ ์ƒํƒœ(Ready)

    • Running(or Ready) -> Terminated

โœจ ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ(Short-term Scheduler)

  • CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹น

  • ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ์— ๋น„ํ•ด ๋งค์šฐ ๋งŽ์ด ํ˜ธ์ถœ

  • CPU์—๊ฒŒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•๋ณดํ•ด์ฃผ๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์„œ CPU๋ฅผ ํ• ๋‹น

  • ์ฆ‰, Ready Queue์— ์กด์žฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ running ์‹œํ‚ฌ์ง€ ๊ฒฐ์ •

  • Ready Queue์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ๋จผ์ € ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹น (=๋””์ŠคํŽ˜์ฒ˜)

  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ : ready -> running -> waiting -> ready

โœจ ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ(Medium-term Scheduler)

  • ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์—์„œ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๊ฐ€์ค‘์„ ์™„ํ™”์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•ด ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ ๋„์ž…

  • CPU๋ฅผ ์ฐจ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ์Ÿ์ด ์‹ฌํ•ด์งˆ ๋•Œ, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ž ์‹œ ์ œ๊ฑฐํ•œ ๋’ค, ๋‚˜์ค‘์— ๊ฒฝ์Ÿ์ด ์™„ํ™”๋˜์—ˆ์„ ๋•Œ ๋‹ค์‹œ ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ถˆ๋Ÿฌ์™€ ์ค‘๋‹จ๋˜์—ˆ๋˜ ์ง€์ ๋ถ€ํ„ฐ ์‹คํ–‰(Swapping)

  • ์ฆ‰, ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„œ๋กœ CPU๋ฅผ ์ฐจ์ง€ํ•˜๋ ค๊ณ  ๊ฒฝ์Ÿ์ด ์‹ฌํ•ด์ง€๋ฉด Swapping ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์‹œ์— ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์กฐ์ ˆ

  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ : ready -> suspended

swap out : ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ์ž ์‹œ ๋‚˜๊ฐ€๋Š” ์ƒํƒœ

swap in : ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋‹ค์‹œ ๋“ค์–ด์˜ค๋Š” ์ƒํƒœ

โœจ Process state - suspended

Suspended(stopped)

  • ์™ธ๋ถ€์ ์ธ ์ด์œ ๋กœ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰์ด ์ •์ง€๋œ ์ƒํƒœ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ด๋ ค๊ฐ„ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค ์ „๋ถ€ ๋””์Šคํฌ๋กœ Swap out ๋จ

Blocked ์ƒํƒœ

  • ๋‹ค๋ฅธ I/O ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์Šค์Šค๋กœ ready state ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด ์ƒํƒœ๋Š” ์™ธ๋ถ€์ ์ธ ์ด์œ ๋กœ suspending ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šค์Šค๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†์Œ

โœจ About ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ

โœจ Q

์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ vs ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ

๋™๊ธฐ vs ๋น„๋™๊ธฐ

โœจ ๋™๊ธฐ(synchronous : ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š”)

  • ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค๋Š” ๋œป์ด๋‹ค. ์š”์ฒญ๊ณผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค๋Š” ์•ฝ์†์ด๋‹ค.

  • ๋ฐ”๋กœ ์š”์ฒญ์„ ํ•˜๋ฉด ์‹œ๊ฐ„์ด ์–ผ๋งˆ๊ฐ€ ๊ฑธ๋ฆฌ๋˜์ง€ ์š”์ฒญํ•œ ์ž๋ฆฌ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์ ธ์•ผ ํ•œ๋‹ค.

  • ์š”์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ€ ํ•œ ์ž๋ฆฌ์—์„œ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค.

  • A๋…ธ๋“œ์™€ B๋…ธ๋“œ ์‚ฌ์ด์˜ ์ž‘์—… ์ฒ˜๋ฆฌ ๋‹จ์œ„(transaction)๋ฅผ ๋™์‹œ์— ๋งž์ถ”๊ฒ ๋‹ค.

โœจ ๋น„๋™๊ธฐ(Asynchronous : ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”)

  • ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์š”์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ์•ฝ์†์ด๋‹ค.

  • ์š”์ฒญํ•œ ๊ทธ ์ž๋ฆฌ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

  • ๋…ธ๋“œ ์‚ฌ์ด์˜ ์ž‘์—… ์ฒ˜๋ฆฌ ๋‹จ์œ„๋ฅผ ๋™์‹œ์— ๋งž์ถ”์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

  • ๋™๊ธฐ ๋ฐฉ์‹์€ ์„ค๊ณ„๊ฐ€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ด์ง€๋งŒ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ๊นŒ์ง€ ์•„๋ฌด๊ฒƒ๋„ ๋ชปํ•˜๊ณ  ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

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

โœจ reference

๋ฉ”๋ชจ๋ฆฌ

โœจ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(main memory)

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์–ต ์žฅ์น˜

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋ ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์•ผ ํ•จ

์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋œ ์ผ๋ จ์˜ ๋ฐ”์ดํŠธ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ

CPU๋Š” ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์ง€์‹œํ•˜๋Š”๋Œ€๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜์—ฌ ๋‹ค์Œ์— ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ ธ์˜ด

๋ช…๋ น์–ด ์ˆ˜ํ–‰ ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์šฐ์„  ๊ฐ€์ ธ์™€์•ผ ํ•จ

์ด ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ MMU

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์žฅ์น˜(MMU)๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ด์คŒ

๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ๋‚˜ ์บ์‹œ ๊ด€๋ฆฌ ๋“ฑ CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์ด ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ํ•˜๋“œ์›จ์–ด์ž„

๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต๊ฐ„์ด ํ•œ์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด '๊ฐ€์ƒ ์ฃผ์†Œ'๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅ (๊ฐ€์ƒ ์ฃผ์†Œ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ƒ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ์ฃผ์†Œ ๊ณต๊ฐ„์ด๋ผ๊ณ  ๋ณด๋ฉด ๋จ)

์ด ๊ฐ€์ƒ ์ฃผ์†Œ์—์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋Š” ๊ณณ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„  ๋น ๋ฅธ ์ฃผ์†Œ ๋ณ€ํ™˜์ด ํ•„์š”ํ•œ๋ฐ, ์ด๋ฅผ MMU๊ฐ€ ๋„์™€์ฃผ๋Š” ๊ฒƒ

๋˜ํ•œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ง์ ‘ ์ ‘๊ทผ์€ ๋น„ํšจ์œจ์ ์ด๋ฏ€๋กœ, CPU์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ์†๋„๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์บ์‹œ๊ฐ€ ์กด์žฌํ•จ

โœจ MMU์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ

ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ ธ์•ผ ๋˜๊ณ , ์ž์‹ ์˜ ๊ณต๊ฐ„๋งŒ ์ ‘๊ทผํ•ด์•ผ ํ•จ

๋”ฐ๋ผ์„œ ํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ•ฉ๋ฒ•์ ์ธ ์ฃผ์†Œ ์˜์—ญ์„ ์„ค์ •ํ•˜๊ณ , ์ž˜๋ชป๋œ ์ ‘๊ทผ์ด ์˜ค๋ฉด trap์„ ๋ฐœ์ƒ์‹œํ‚ค๋ฉฐ ๋ณดํ˜ธํ•จ

๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ

โœจ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

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

โœจ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ

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

โœจ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๋ถ„๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋ฉด...

  • ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์— ์ œ์•ฝ๋ฐ›์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

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

  • swap์— ํ•„์š”ํ•œ ์ž…์ถœ๋ ฅ์ด ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋œ๋‹ค.

โœจ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ

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

โœจ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„

  • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๋ชจ์Šต์„ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์— ๊ตฌํ˜„ํ•œ ๊ณต๊ฐ„์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํ˜„์žฌ ์ง์ ‘์ ์œผ๋กœ ํ•„์š”์น˜ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉฐ ๋…ผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋กœ 100KB ๊ฐ€ ์š”๊ตฌ๋˜์—ˆ๋‹ค๊ณ  ํ•˜์ž. ํ•˜์ง€๋งŒ ์‹คํ–‰๊นŒ์ง€์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(Heap์˜์—ญ, Stack ์˜์—ญ, ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ)์˜ ํ•ฉ์ด 40KB ๋ผ๋ฉด, ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” 40KB ๋งŒ ์˜ฌ๋ผ๊ฐ€ ์žˆ๊ณ , ๋‚˜๋จธ์ง€ 60KB ๋งŒํผ์€ ํ•„์š”์‹œ์— ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ์— ์š”๊ตฌํ•œ๋‹ค๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

โœจ ํ”„๋กœ์„ธ์Šค๊ฐ„์˜ ํŽ˜์ด์ง€ ๊ณต์œ 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š”...

  • ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์— ๊ณต์œ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž์‹ ์˜ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋‘๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ธ์‹ํ•˜์ง€๋งŒ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋“ค์€ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๊ณต์œ ๋˜๊ณ  ์žˆ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋˜ํ•œ, ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ฐ์ž ์ž์‹ ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์ฒ˜๋Ÿผ ์ธ์‹ํ•˜์ง€๋งŒ, ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ณต์œ ๋˜๊ณ  ์žˆ๋‹ค.

  • fork()๋ฅผ ํ†ตํ•œ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๊ณผ์ •์—์„œ ํŽ˜์ด์ง€๋“ค์ด ๊ณต์œ ๋˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

ํŽ˜์ด์ง• vs ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜

  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•

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

  • ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ๊ฐ€์ƒ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

โœจ ํŽ˜์ด์ง•(Paging)

  • ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋™์ผํ•œ(๊ณ ์ •๋œ) ์‚ฌ์ด์ฆˆ์˜ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ๋ถˆ์—ฐ์†์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹

  • ์™ธ๋ถ€ ๋‹จํŽธํ™”์™€ ์••์ถ• ์ž‘์—…์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ๋Š” Frame์ด๋ผ๋Š” ๊ณ ์ • ํฌ๊ธฐ๋กœ ๋ถ„ํ• ๋˜๊ณ , ํ”„๋กœ์„ธ์Šค๋Š” Page๋ผ ๋ถˆ๋ฆฌ๋Š” ๊ณ ์ • ํฌ๊ธฐ๋กœ ๋ถ„ํ• ๋œ๋‹ค.

  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์—ฐ์†์ ์ธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์—ฌ๊ธฐ์ €๊ธฐ ํฉ์–ด์ง„๋‹ค๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ• ๊นŒ?

  • ์ด์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ์ƒ์—์„œ ์—ฌ๋Ÿฌ ๊ณณ์— ํฉ์–ด์ง„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด MMU๋ฅผ ํ†ตํ•ด ๋…ผ๋ฆฌ ์ฃผ์†Œ์™€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉํ•จ์œผ๋กœ์จ CPU๋ฅผ ์†์—ฌ์•ผ ํ•œ๋‹ค.

  • ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ „ํ˜€ ์—ฐ์†์ ์ด์ง€ ์•Š๋Š”๋ฐ, CPU๋Š” ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅ๋ฐ›์œผ๋ฉฐ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • 50byte ํฌ๊ธฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ํŽ˜์ด์ง•์˜ ํฌ๊ธฐ๋Š” 10byte๋กœ ๋‚˜๋ˆˆ๋‹ค

  • ํ”„๋กœ์„ธ์Šค P1์€ 5๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ 5๊ณณ์— ๋‚˜๋ˆ ์„œ ํ• ๋‹นํ–ˆ๋‹ค.

  • CPU๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์ •ํ•œ๋Œ€๋กœ ์—ฐ์†์ ์ธ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๊ณ  ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€๊ธฐ ์ „์— ๊ฐ ํŽ˜์ด์ง€์˜ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•œ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚˜๋ˆˆ ์กฐ๊ฐ์„ Page๋ผ ํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚˜๋ˆˆ ์กฐ๊ฐ์„ Frame์ด๋ผ ํ•œ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋Š” ํŽ˜์ด์ง€์˜ ์ง‘ํ•ฉ์ด๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋ ˆ์ž„์˜ ์ง‘ํ•ฉ์ด๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด MMU์˜ ์žฌ๋ฐฐ์น˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•ด์„œ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ ํŽ˜์ด์ง€์˜ ์‹ค์ œ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์žฌ๋ฐฐ์น˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”(Page Table)์ด๋ผ ํ•œ๋‹ค.

โœจ ์ฃผ์†Œ ๋ณ€ํ™˜(Address Translation)

ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ํฉ์–ด์ง„ ํŽ˜์ด์ง€์— CPU๊ฐ€ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด ์ฃผ์†Œ๋ฅผ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

๋…ผ๋ฆฌ ์ฃผ์†Œ(Logical Address)

  • CPU๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ์ฃผ์†Œ๋Š” 2์ง„์ˆ˜๋กœ ํ‘œํ˜„๋˜๊ณ  ์ด๋Š” m๋น„ํŠธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋‹ค. ์—ฌ๊ธฐ์„œ ํ•˜์œ„ n๋น„ํŠธ๋Š” ์˜คํ”„์…‹(offset) ๋˜๋Š” ๋ณ€์œ„(displacement)๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ์œ„ m-n๋น„ํŠธ๋Š” ํŽ˜์ด์ง€์˜ ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•œ๋‹ค. (n = d, m-n = p)

  • ๋…ผ๋ฆฌ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(p)๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค ๊ฐ’์ด๊ณ , p์— ํ•ด๋‹น๋˜๋Š” ํ…Œ์ด๋ธ” ๋‚ด์šฉ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ์ด๋‹ค. ๋ณ€์œ„(d)๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์ด๋‹ค. ์ด ๊ทœ์น™์— ๋Œ€ํ•œ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž.

  • Page size = 16bytes

  • Page Table = 5,3,2,8,1,4

  • ๋…ผ๋ฆฌ ์ฃผ์†Œ 50๋ฒˆ์ง€๋Š” ๋ฌผ๋ฆฌ์ฃผ์†Œ ๋ช‡ ๋ฒˆ์ง€์ธ๊ฐ€?

โœจ ๋‚ด๋ถ€ ๋‹จํŽธํ™”(Internal Fragment)

๋‚ด๋ถ€ ๋‹จํŽธํ™”๋Š” ํ”„๋กœ์„ธ์Šค ํฌ๊ธฐ๊ฐ€ ํŽ˜์ด์ง€ ํฌ๊ธฐ์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ, ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€๋Š” ํ•œ ํ”„๋ ˆ์ž„(ํŽ˜์ด์ง€)๋ฅผ ๋‹ค ์ฑ„์šธ ์ˆ˜ ์—†์–ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์˜ ์›์ธ์ด ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 15bytes ํฌ๊ธฐ์˜ ํ”„๋กœ์„ธ์Šค p๊ฐ€ ์žˆ๋‹ค. ํŽ˜์ด์ง€ ํฌ๊ธฐ๋Š” 4byte๋กœ p๋ฅผ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆ„๋ฉด 4,4,4,3์˜ ํฌ๊ธฐ๋กœ ์ด 4๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋งˆ์ง€๋ง‰ 3byte ํŽ˜์ด์ง€๋Š” ํŽ˜์ด์ง€์˜ ํฌ๊ธฐ๋ณด๋‹ค 1byte ์ž‘์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ , ์ด๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋น„๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋น„์–ด์ง„ ๊ณต๊ฐ„์€ ํ”„๋กœ์„ธ์Šค p์—์„œ๋„ ์“ฐ์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ๋„ ์“ฐ์ง€ ๋ชปํ•˜๋Š” ๋‚ญ๋น„๋˜๋Š” ๊ณต๊ฐ„์ด ๋œ๋‹ค.

์•„์‰ฝ๊ฒŒ๋„ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋Š” ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ํ•˜์ง€๋งŒ, ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋Š” ์™ธ๋ถ€ ๋‹จํŽธํ™”์— ๋น„ํ•ด ๋‚ญ๋น„๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ๋งค์šฐ ์ ๋‹ค. ๋‚ด๋ถ€ ๋‹จํŽธํ™”์˜ ์ตœ๋Œ€ ๋‚ญ๋น„๋˜๋Š” ํฌ๊ธฐ๋Š” page size - 1์ด ๋œ๋‹ค. (์™ธ๋ถ€ ๋‹จํŽธํ™”๋Š” ์ตœ๋Œ€ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ์˜ 1/3์ด ๋‚ญ๋น„๋œ๋‹ค๊ณ  ํ•œ๋‹ค.) ์ด๋Š” ๋ฌด์‹œํ•  ์ •๋„๋กœ ์ž‘์€ ํฌ๊ธฐ์ด๋‹ค.

โœจ ๋ณดํ˜ธ(Protection)

๋ชจ๋“  ์ฃผ์†Œ๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๊ฒฝ์œ ํ•˜๋ฏ€๋กœ, ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด์„œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋งˆ๋‹ค r(read), w(write), x(execute) ๋น„ํŠธ๋ฅผ ๋‘์–ด, ํ•ด๋‹น ๋น„ํŠธ๊ฐ€ ์ผœ์ ธ์žˆ์„ ๋•Œ, ๊ทธ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— r,w,x ๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ชจ์Šต์ด๋‹ค. ๋งŒ์•ฝ, 1๋ฒˆ ํŽ˜์ด์ง€ ์—”ํŠธ๋ฆฌ์ฒ˜๋Ÿผ ์“ฐ๊ธฐ ๋น„ํŠธ๊ฐ€ ๊บผ์ ธ์žˆ๋Š” ํŽ˜์ด์ง€์— ์“ฐ๊ธฐ ์ž‘์—…์„ ์‹œ๋„ํ•˜๋ฉด CPU์— ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ISR(Interrupt Service Routine)์—์„œ ๊ฐ•์ œ๋กœ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.

โœจ ๊ณต์œ (Sharing)

๊ณต์œ ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ์“ฐ๋Š” ๋ณต์ˆ˜ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด, ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” code+data+stack ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ™๋‹ค๋ฉด code ์˜์—ญ์€ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ•˜๋‚˜์˜ code ์˜์—ญ์„ ๋ณต์ˆ˜ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ, code๊ฐ€ ๊ณต์œ ๋˜๋ ค๋ฉด code๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋žจ์ด์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ non-self-modifying code = reentrant code(์žฌ์ง„์ž… ๊ฐ€๋Šฅ ์ฝ”๋“œ) = puer code ๋ผ๊ณ  ํ•œ๋‹ค.

โœจ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜(Segmentation)

  • ํ”„๋กœ์„ธ์Šค๋ฅผ ์„œ๋กœ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ์ ์ธ ๋ธ”๋ก ๋‹จ์œ„์ธ '์„ธ๊ทธ๋จผํŠธ(Segment)'๋กœ ๋ถ„ํ• ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๋ฉฐ, ๊ฐ ์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๋Š” ์ผ์ •ํ•˜์ง€ ์•Š๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋ฅผ Code + Data + Stack ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ ์—ญ์‹œ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜์˜ ๋ชจ์Šต์ด๋‹ค. ๋ฌผ๋ก , code, data, stack ๊ฐ๊ฐ ๋‚ด๋ถ€์—์„œ ๋” ์ž‘์€ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋‚˜๋ˆŒ ์ˆ˜๋„ ์žˆ๋‹ค.

  • ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•  ๋•Œ๋Š” ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค. ํ•˜์ง€๋งŒ, ํ…Œ์ด๋ธ”์€ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์„ ์œ„ํ•œ ํ…Œ์ด๋ธ”์€ ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”์€ ์„ธ๊ทธ๋จผํŠธ ๋ฒˆํ˜ธ์™€ ์‹œ์ž‘ ์ฃผ์†Œ, ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ๋ฅผ ์—”ํŠธ๋ฆฌ๋กœ ๊ฐ–๋Š”๋‹ค.

  • ์„ธ๊ทธ๋จผํŠธ์—์„œ ์ฃผ์†Œ๋ณ€ํ™˜ ์—ญ์‹œ, ํŽ˜์ด์ง•๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ํ•œ ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์€ ์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๋Š” ์ผ์ •ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํ…Œ์ด๋ธ”์— limit ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  CPU์—์„œ ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๋„˜์–ด์„œ๋Š” ์ฃผ์†Œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.

โœจ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์—์„œ ๋ณดํ˜ธ์™€ ๊ณต์œ 

๋จผ์ €, ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด ํŽ˜์ด์ง•๋ณด๋‹ค ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์—์„œ์˜ ๋ณดํ˜ธ์™€ ๊ณต์œ ๋Š” ๋” ํšจ์œจ์ ์ด๋‹ค.

๋ณดํ˜ธ์—์„œ๋Š” ์„ธ๊ทธ๋จผํ…Œ์ด์…˜ ์—ญ์‹œ r,w,x ๋น„ํŠธ๋ฅผ ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ, ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋น„ํŠธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์•ˆ์ „ํ•˜๋‹ค. ํŽ˜์ด์ง•์€ code+data+stack ์˜์—ญ์ด ์žˆ์„ ๋•Œ, ์ด๋ฅผ ์ผ์ •ํ•œ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„๋ฏ€๋กœ ๋‘ ๊ฐ€์ง€ ์˜์—ญ์ด ์„ž์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋น„ํŠธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ๊นŒ๋‹ค๋กญ๋‹ค.

๊ณต์œ ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ํŽ˜์ด์ง•์—์„œ๋Š” code ์˜์—ญ์„ ๋‚˜๋ˆˆ๋‹คํ•ด๋„ ๋‹ค๋ฅธ ์˜์—ญ์ด ํฌํ•จ๋  ํ™•๋ฅ ์ด ๋งค์šฐ ๋†’๋‹ค. ํ•˜์ง€๋งŒ, ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์€ ์ •ํ™•ํžˆ code ์˜์—ญ๋งŒ์„ ๋‚˜๋ˆ„๊ธฐ ๋•Œ๋ฌธ์— ๋” ํšจ์œจ์ ์œผ๋กœ ๊ณต์œ ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

โœจ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜๊ณผ ํŽ˜์ด์ง•

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

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

์„ธ๊ทธ๋จผํ…Œ์ด์…˜๋„ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์€ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ธฐ ๋•Œ๋ฌธ์— ์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค์–‘ํ•˜๋‹ค. ์ด๋กœ ์ธํ•ด ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ hole์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์€ ๋ณดํ˜ธ์™€ ๊ณต์œ ์—์„œ ํšจ์œจ์ ์ด๊ณ , ํŽ˜์ด์ง•์€ ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด ๋‘๊ฐ€์ง€๋ฅผ ํ•ฉ์ณ์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์™”๋‹ค. ๋‘ ์žฅ์ ์„ ํ•ฉ์น˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด๋‹ค. (Paged Segmentation)

ํ•˜์ง€๋งŒ, ์ด ์—ญ์‹œ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ์„ธ๊ทธ๋จผํŠธ์™€ ํŽ˜์ด์ง€๊ฐ€ ๋™์‹œ์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์†Œ ๋ณ€ํ™˜๋„ ๋‘๋ฒˆํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, CPU์—์„œ ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”์—์„œ ์ฃผ์†Œ ๋ณ€ํ™˜์„ ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—์„œ ๋˜ ์ฃผ์†Œ ๋ณ€ํ™˜์„ ํ•ด์•ผ ํ•œ๋‹ค.

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜

โœจ ๋ฉ”๋ชจ๋ฆฌ ๊ณผํ• ๋‹น(over allocating)

์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ๋” ํฐ ์‚ฌ์ด์ฆˆ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•œ ์ƒํ™ฉ

ํŽ˜์ด์ง€ ๊ธฐ๋ฒ•๊ณผ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆˆ์น˜ ์ฑ„์ง€ ๋ชปํ•˜๋„๋ก ๋ˆˆ์†์ž„์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์คŒ (๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ)

๊ณผํ• ๋‹น ์ƒํ™ฉ์— ๋Œ€ํ•ด์„œ ์‚ฌ์šฉ์ž๋ฅผ ์†์ธ ๊ฒƒ์„ ๋“คํ‚ฌ๋งŒํ•œ ์ƒํ™ฉ์ด ์กด์žฌํ•จ

  1. ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ๋„์ค‘ ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒ

  2. ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ํŽ˜์ด์ง€ ์œ„์น˜๋ฅผ ๋””์Šคํฌ์—์„œ ์ฐพ์Œ

  3. ๋ฉ”๋ชจ๋ฆฌ์˜ ๋นˆ ํ”„๋ ˆ์ž„์— ํŽ˜์ด์ง€๋ฅผ ์˜ฌ๋ ค์•ผ ํ•˜๋Š”๋ฐ, ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ์ค‘์ด๋ผ ๋นˆ ํ”„๋ ˆ์ž„์ด ์—†์Œ

์ด๋Ÿฌํ•œ ๊ณผํ• ๋‹น์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„ , ๋นˆ ํ”„๋ ˆ์ž„์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

  1. ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒ์‹œ์ผœ ๋นˆ ํ”„๋ ˆ์ž„์„ ์–ป์Œ

  2. ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋ฅผ swap outํ•˜๊ณ , ์ด ๊ณต๊ฐ„์„ ๋นˆ ํ”„๋ ˆ์ž„์œผ๋กœ ํ™œ์šฉ

swapping ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ๊ณต๊ฐ„์„ ๋ฐ”๊ฟ”์น˜๊ธฐํ•˜๋Š” 2๋ฒˆ ๋ฐฉ๋ฒ•๊ณผ๋Š” ๋‹ฌ๋ฆฌ 1๋ฒˆ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽ˜์ด์ง• ์‹œ์Šคํ…œ์„ ๋“คํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์•„์„œ ํ•˜๋ฉด ์•ˆ๋จ

(ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์€ ์‚ฌ์šฉ์ž ๋ชจ๋ฅด๊ฒŒ ์‹œ์Šคํ…œ ๋Šฅ๋ฅ ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์„ ํƒํ•œ ์ผ์ด๋ฏ€๋กœ ๋“คํ‚ค์ง€ ์•Š๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค)

๋”ฐ๋ผ์„œ, 2๋ฒˆ๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ์ฑ…์„ ํ†ตํ•ด ํŽ˜์ด์ง€ ๊ต์ฒด๊ฐ€ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•จ

โœจ ํŽ˜์ด์ง€ ๊ต์ฒด

๋ฉ”๋ชจ๋ฆฌ ๊ณผํ• ๋‹น์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋ฅผ swap outํ•ด์„œ ๋นˆ ํ”„๋ ˆ์ž„์„ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ

  1. ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ๋„์ค‘ ํŽ˜์ด์ง€ ๋ถ€์žฌ ๋ฐœ์ƒ

  2. ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ํŽ˜์ด์ง€ ์œ„์น˜๋ฅผ ๋””์Šคํฌ์—์„œ ์ฐพ์Œ

  3. ๋ฉ”๋ชจ๋ฆฌ์— ๋นˆ ํ”„๋ ˆ์ž„์ด ์žˆ๋Š”์ง€ ํ™•์ธ

    ๋นˆ ํ”„๋ ˆ์ž„์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ํ”„๋ ˆ์ž„์„ ์‚ฌ์šฉ

    ๋นˆ ํ”„๋ ˆ์ž„์ด ์—†์œผ๋ฉด, victim ํ”„๋ ˆ์ž„์„ ์„ ์ •ํ•ด ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๊ณ  ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์—…๋ฐ์ดํŠธํ•จ

  4. ๋นˆ ํ”„๋ ˆ์ž„์— ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ํŽ˜์ด์ง€๋ฅผ ์˜ฌ๋ฆฌ๊ณ , ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—…๋ฐ์ดํŠธ

ํŽ˜์ด์ง€ ๊ต์ฒด๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉด ์•„๋ฌด์ผ์ด ์—†๋˜๊ฒƒ ์ฒ˜๋Ÿผ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ„์† ์ˆ˜ํ–‰์‹œ์ผœ์ฃผ๋ฉด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์•Œ์ง€ ๋ชปํ•˜๋„๋ก ํ•ด์•ผ ํ•จ

์ด๋•Œ, ์•„๋ฌด์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜๋ ค๋ฉด, ํŽ˜์ด์ง€ ๊ต์ฒด ๋‹น์‹œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์•ผ ํ•จ

โœจ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋Š” ํ•ด๊ฒฐ๋ฒ•

์ด์ฒ˜๋Ÿผ ๋นˆ ํ”„๋ ˆ์ž„์ด ์—†๋Š” ์ƒํ™ฉ์—์„œ victim ํ”„๋ ˆ์ž„์„ ๋น„์šธ ๋•Œ์™€ ์›ํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ํ”„๋ ˆ์ž„์œผ๋กœ ์˜ฌ๋ฆด ๋•Œ ๋‘ ๋ฒˆ์˜ ๋””์Šคํฌ ์ ‘๊ทผ์ด ์ด๋ฃจ์–ด์ง

ํŽ˜์ด์ง€ ๊ต์ฒด๊ฐ€ ๋งŽ์ด ์ด๋ฃจ์–ด์ง€๋ฉด, ์ด์ฒ˜๋Ÿผ ์ž…์ถœ๋ ฅ ์—ฐ์‚ฐ์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด์„œ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•จ

๋ฐฉ๋ฒ•1

๋ณ€๊ฒฝ๋น„ํŠธ๋ฅผ ๋ชจ๋“  ํŽ˜์ด์ง€๋งˆ๋‹ค ๋‘ฌ์„œ, victim ํŽ˜์ด์ง€๊ฐ€ ์ •ํ•ด์ง€๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋น„ํŠธ๋ฅผ ํ™•์ธ

ํ•ด๋‹น ๋น„ํŠธ๊ฐ€ set ์ƒํƒœ๋ฉด? โ†’ ํ•ด๋‹น ํŽ˜์ด์ง€ ๋‚ด์šฉ์ด ๋””์Šคํฌ ์ƒ์˜ ํŽ˜์ด์ง€ ๋‚ด์šฉ๊ณผ ๋‹ฌ๋ผ์กŒ๋‹ค๋Š” ๋œป (์ฆ‰, ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์˜ฌ๋ผ์˜จ ์ดํ›„ ํ•œ๋ฒˆ์ด๋ผ๋„ ์ˆ˜์ •์ด ์ผ์–ด๋‚ฌ๋˜ ๊ฒƒ. ๋”ฐ๋ผ์„œ ์ด๊ฑด ๋””์Šคํฌ์— ๊ธฐ๋กํ•ด์•ผํ•จ)

bit๊ฐ€ clear ์ƒํƒœ๋ผ๋ฉด? โ†’ ๋””์Šคํฌ ์ƒ์˜ ํŽ˜์ด์ง€ ๋‚ด์šฉ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ํŽ˜์ด์ง€๊ฐ€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ์ƒํ™ฉ (์ฆ‰, ๋””์Šคํฌ์™€ ๋‚ด์šฉ์ด ๊ฐ™์•„์„œ ๊ธฐ๋กํ•  ํ•„์š”๊ฐ€ ์—†์Œ)

๋น„ํŠธ๋ฅผ ํ™œ์šฉํ•ด ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์ด๋ฉด์„œ ์˜ค๋ฒ„ํ—ค๋“œ์— ๋Œ€ํ•œ ์ˆ˜๋ฅผ ์ตœ๋Œ€ ์ ˆ๋ฐ˜์œผ๋กœ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ž„

๋ฐฉ๋ฒ•2

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ž˜ ์„ ํƒํ•ด์•ผ ํ•จ

ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์„ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉ

FIFO

OPT

LRU

์บ์‹œ์˜ ์ง€์—ญ์„ฑ

โœจ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ

์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ๋œ ๋‚ด์šฉ์˜ ์ผ๋ถ€๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•ด๋‘๋Š” ๊ธฐ์–ต์žฅ์น˜

CPU์™€ ์ฃผ๊ธฐ์–ต์žฅ์น˜์˜ ์†๋„ ์ฐจ์ด๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

CPU๊ฐ€ ์ด๋ฏธ ๋ดค๋˜๊ฑธ ๋‹ค์‹œ ์žฌ์ ‘๊ทผํ•  ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ฐ ์ธ์ถœ ๊ณผ์ •์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์บ์‹œ์— ์ €์žฅํ•ด๋‘” ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ๋‹ค

์บ์‹œ๋Š” ํ”Œ๋ฆฌํ”Œ๋กญ ์†Œ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด SRAM์œผ๋กœ ๋˜์–ด์žˆ์–ด์„œ DRAM๋ณด๋‹ค ๋น ๋ฅธ ์žฅ์ ์„ ์ง€๋‹˜

โœจ CPU์™€ ๊ธฐ์–ต์žฅ์น˜์˜ ์ƒํ˜ธ์ž‘์šฉ

CPU์—์„œ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌ โ†’ ์บ์‹œ ๊ธฐ์–ต์žฅ์น˜์— ๋ช…๋ น์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ

(์กด์žฌ) Hit

ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ CPU๋กœ ์ „์†ก โ†’ ์™„๋ฃŒ

(๋น„์กด์žฌ) Miss

๋ช…๋ น์–ด๋ฅผ ๊ฐ–๊ณ  ์ฃผ๊ธฐ์–ต์žฅ์น˜๋กœ ์ ‘๊ทผ โ†’ ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ์ธ์ถœ โ†’ ํ•ด๋‹น ๋ช…๋ น์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์— ์ €์žฅ โ†’ ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ CPU๋กœ ์ „์†ก โ†’ ์™„๋ฃŒ

์ด์ฒ˜๋Ÿผ ์บ์‹œ๋ฅผ ์ž˜ ํ™œ์šฉํ•œ๋‹ค๋ฉด ๋น„์šฉ์„ ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ์Œ

๋”ฐ๋ผ์„œ CPU๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ• ์ง€ ์–ด๋А์ •๋„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

(์บ์‹œ์— ๋งŽ์ด ํ™œ์šฉ๋˜๋Š” ์“ธ๋ชจ ์žˆ๋Š” ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ์–ด์•ผ ์„ฑ๋Šฅ์ด ๋†’์•„์ง)

์ ์ค‘๋ฅ ์„ ๊ทน๋Œ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ

โœจ ์ง€์—ญ์„ฑ

๊ธฐ์–ต ์žฅ์น˜ ๋‚ด์˜ ์ •๋ณด๋ฅผ ๊ท ์ผํ•˜๊ฒŒ ์•ก์„ธ์Šค ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•œ ์ˆœ๊ฐ„์— ํŠน์ •๋ถ€๋ถ„์„ ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ํŠน์„ฑ

์ง€์—ญ์„ฑ์˜ ์ข…๋ฅ˜๋Š” ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง

์‹œ๊ฐ„ ์ง€์—ญ์„ฑ : ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ์ฃผ์†Œ์˜ ๋‚ด์šฉ์€ ๊ณง ๋‹ค์Œ์—๋„ ์ฐธ์กฐ๋˜๋Š” ํŠน์„ฑ

๊ณต๊ฐ„ ์ง€์—ญ์„ฑ : ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์ด ์ฐธ์กฐ๋œ ์ฃผ์†Œ์™€ ์ธ์ ‘ํ•œ ์ฃผ์†Œ์˜ ๋‚ด์šฉ์ด ๋‹ค์‹œ ์ฐธ์กฐ๋˜๋Š” ํŠน์„ฑ

โœจ ์บ์‹ฑ ๋ผ์ธ

๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์บ์‹œ์— ์ €์žฅํ–ˆ๋”๋ผ๋„, ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์—์„œ ์ฐพ์„ ๋•Œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋‚ญ๋น„๋‹ค.

์ฆ‰, ์บ์‹œ์— ๋ชฉ์  ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ์„ ๋•Œ ๋ฐ”๋กœ ์ ‘๊ทผํ•˜์—ฌ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์บ์‹œ ํ™œ์šฉ์ด ์˜๋ฏธ์žˆ์–ด์ง

๋”ฐ๋ผ์„œ ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์‹œ, ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด ๋ฌถ์–ด์„œ ์ €์žฅํ•˜๋Š”๋ฐ ์ด๋ฅผ ์บ์‹ฑ ๋ผ์ธ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ฆ‰, ์บ์‹œ์— ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋ฐ์ดํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ•จ๊ป˜ ์ €์žฅํ•˜๋ฉด์„œ ๋น ๋ฅด๊ฒŒ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ (set์ด๋‚˜ map ๋“ฑ์„ ํ™œ์šฉ)

๋‹จํŽธํ™”

โœจ ์™ธ๋ถ€ ๋‹จํŽธํ™”(external fragmentation)

  • ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๋ณด๋‹ค ๋ถ„ํ• ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ถ„ํ• ์ด ๋น„์–ด์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ์ ์žฌํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งํ•œ๋‹ค.

  • ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์—๋„ ๋ฐฐ๋‹น๋˜์ง€ ์•Š์€ ๋นˆ ๊ณต๊ฐ„์ž„์—๋„ ํ˜„์žฌ ์ƒํƒœ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†๋Š” ์ž‘์€ ๋ถ„ํ• ์ด๋‹ค.

โœจ ๋‚ด๋ถ€ ๋‹จํŽธํ™”(internal fragmentation)

  • ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๋ณด๋‹ค ๋ถ„ํ• ์˜ ํฌ๊ธฐ๊ฐ€ ํฐ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ถ„ํ• ์— ํ”„๋กœ๊ทธ๋žจ์„ ์ ์žฌํ•˜๊ณ  ๋‚จ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งํ•œ๋‹ค.

  • ์ฆ‰, ํ•˜๋‚˜์˜ ๋ถ„ํ•  ๋‚ด๋ถ€์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ์ด๋‹ค.

  • ex) ๋ฉ”๋ชจ๋ฆฌ ์ž์œ  ๋ถ„ํ•  ๊ณต๊ฐ„์ด 10,000B๊ฐ€ ์žˆ๊ณ  ํ”„๋กœ์„ธ์Šค A๊ฐ€ 9,999B๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด 2B๊ฐ€ ๋‚จ๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋ผ ํ•œ๋‹ค.

โœจ ์••์ถ•(Compaction)

  • ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐ„๋“ค์„ ํ•œ์ชฝ์œผ๋กœ ๋ชฐ์•„, ์ž์œ  ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

  • ๋‹จ์  : ์ž‘์—… ํšจ์œจ์ด ์ข‹์ง€ ์•Š๋‹ค.

โœจ Swapping

  • ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ ์ „์ฒด๋ฅผ ๋””์Šคํฌ์˜ ์Šค์™‘ ์˜์—ญ์œผ๋กœ ์ผ์‹œ์ ์œผ๋กœ ๋‚ด๋ ค๋†“๋Š” ๊ฒƒ์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋ฉด ์ดํ›„์— ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ ๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค.

  • ์ฃผ์˜ํ•  ์ ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์–ด ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋””์Šคํฌ๋กœ ๋‚ด์ซ“๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŠน์ •ํ•œ ์ด์œ ๋กœ ์ˆ˜ํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ๊ณต๊ฐ„์„ ์ผ์‹œ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๋†“์€ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

    • ์Šค์™‘์ธ : ๋””์Šคํฌ -> ๋ฉ”๋ชจ๋ฆฌ

    • ์Šค์™‘ ์•„์›ƒ : ๋ฉ”๋ชจ๋ฆฌ -> ๋””์Šคํฌ

โœจ ์—ฐ์† ํ• ๋‹น ๋ฐฉ์‹

  • ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฐ์†์ ์ธ ๊ณต๊ฐ„์— ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ์‹

    1. ๊ณ ์ • ๋ถ„ํ•  ๋ฐฉ์‹

      • ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฃผ์–ด์ง„ ๊ฐœ์ˆ˜๋งŒํผ์˜ ์˜๊ตฌ์ ์ธ ๋ถ„ํ• ๋กœ ๋ฏธ๋ฆฌ ๋‚˜๋ˆ„๊ณ  ๊ฐ ๋ถ„ํ• ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฐฉ์‹

      • ๋‹จํŽธํ™” ๋ฌธ์ œ ๋ฐœ์ƒ

    2. ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹

      • ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„ํ• ์˜ ํฌ๊ธฐ, ๊ฐœ์ˆ˜๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ๋ฐฉ์‹

      • ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฐœ์ƒ

โœจ ๋ถˆ์—ฐ์† ํ• ๋‹น ๋ฐฉ์‹

  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฌ๋Ÿฌ ์˜์—ญ์— ๋ถ„์‚ฐํ•˜์—ฌ ์ ์žฌํ•˜๋Š” ๋ฐฉ์‹

    1. ํŽ˜์ด์ง•

      • ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆˆ๋‹ค.

      • ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ

    2. ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜

      • ํ”„๋กœ์„ธ์Šค๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ์˜ ๋…ผ๋ฆฌ์  ๋ธ”๋ก ๋‹จ์œ„์ธ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.

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

ํŒŒ์ผ ์‹œ์Šคํ…œ

์ปดํ“จํ„ฐ์—์„œ ํŒŒ์ผ์ด๋‚˜ ์ž๋ฃŒ๋ฅผ ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋„๋ก, ์œ ์ง€ ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ €์žฅ๋งค์ฒด์—๋Š” ์ˆ˜๋งŽ์€ ํŒŒ์ผ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Ÿฐ ํŒŒ์ผ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•œ๋‹ค.

โœจ ํŠน์ง•

  • ์ปค๋„ ์˜์—ญ์—์„œ ๋™์ž‘

  • ํŒŒ์ผ CRUD ๊ธฐ๋Šฅ์„ ์›ํ™œํžˆ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ 

  • ๊ณ„์ธต์  ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง

  • ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜ ๋ณ„๋กœ ํ•˜๋‚˜์”ฉ ๋‘˜ ์ˆ˜ ์žˆ์Œ

โœจ ์—ญํ• 

  • ํŒŒ์ผ ๊ด€๋ฆฌ

  • ๋ณด์กฐ ์ €์žฅ์†Œ ๊ด€๋ฆฌ

  • ํŒŒ์ผ ๋ฌด๊ฒฐ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜

  • ์ ‘๊ทผ ๋ฐฉ๋ฒ• ์ œ๊ณต

โœจ ๊ฐœ๋ฐœ ๋ชฉ์ 

  • ํ•˜๋“œ๋””์Šคํฌ์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ์†๋„์ฐจ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•จ

  • ํŒŒ์ผ ๊ด€๋ฆฌ

  • ํ•˜๋“œ๋””์Šคํฌ ์šฉ๋Ÿ‰ ํšจ์œจ์  ์ด์šฉ

โœจ ๊ตฌ์กฐ

  • ๋ฉ”ํƒ€ ์˜์—ญ : ๋ฐ์ดํ„ฐ ์˜์—ญ์— ๊ธฐ๋ก๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„, ์œ„์น˜, ํฌ๊ธฐ, ์‹œ๊ฐ„์ •๋ณด, ์‚ญ์ œ์œ ๋ฌด ๋“ฑ์˜ ํŒŒ์ผ ์ •๋ณด

  • ๋ฐ์ดํ„ฐ ์˜์—ญ : ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ

โœจ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

  1. ์ˆœ์ฐจ ์ ‘๊ทผ(Sequential Access)

    ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์œผ๋กœ, ๋Œ€๋ถ€๋ถ„ ์—ฐ์‚ฐ์€ read์™€ write

  2. ์ง์ ‘ ์ ‘๊ทผ(Direct Access)

    ํŠน๋ณ„ํ•œ ์ˆœ์„œ์—†์ด, ๋น ๋ฅด๊ฒŒ ๋ ˆ์ฝ”๋“œ๋ฅผ read, write ๊ฐ€๋Šฅ

  3. ๊ธฐํƒ€ ์ ‘๊ทผ

    ์ง์ ‘ ์ ‘๊ทผ ํŒŒ์ผ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ƒ‰์ธ ๊ตฌ์ถ•

โœจ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ๋””์Šคํฌ ๊ตฌ์กฐ

  1. 1๋‹จ๊ณ„ ๋””๋ ‰ํ„ฐ๋ฆฌ

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ

ํŒŒ์ผ๋“ค์€ ์„œ๋กœ ์œ ์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง. ์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ผ๋„ ๊ฐ™์€ ์ด๋ฆ„ ์‚ฌ์šฉ ๋ถˆ๊ฐ€

  1. 2๋‹จ๊ณ„ ๋””๋ ‰ํ„ฐ๋ฆฌ

์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐœ๋ณ„์ ์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งŒ๋“ค์–ด์คŒ

  • UFD : ์ž์‹ ๋งŒ์˜ ์‚ฌ์šฉ์ž ํŒŒ์ผ ๋””๋ ‰ํ„ฐ๋ฆฌ

  • MFD : ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„๊ณผ ๊ณ„์ •๋ฒˆํ˜ธ๋กœ ์ƒ‰์ธ๋˜์–ด ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ

  1. ํŠธ๋ฆฌ ๊ตฌ์กฐ ๋””๋ ‰ํ„ฐ๋ฆฌ

    2๋‹จ๊ณ„ ๊ตฌ์กฐ ํ™•์žฅ๋œ ๋‹ค๋‹จ๊ณ„ ํŠธ๋ฆฌ ๊ตฌ์กฐ

    ํ•œ ๋น„ํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ, ์ผ๋ฐ˜ ํŒŒ์ผ(0)์ธ์ง€ ๋””๋ ‰ํ„ฐ๋ฆฌ ํŒŒ์ผ(1) ๊ตฌ๋ถ„

  2. ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ ๋””๋ ‰ํ„ฐ๋ฆฌ

    ์ˆœํ™˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋งํฌ๋งŒ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ด์šฉํ•ด ์ „์ฒด ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ˆœํšŒํ•˜๊ณ  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํ‘œ์‹œ

    ๋งํฌ๊ฐ€ ์žˆ์œผ๋ฉด ์šฐํšŒํ•˜์—ฌ ์ˆœํ™˜์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Œ

IPC(Inter Process Communication)

  • ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๊ธฐ๋„ ํ•˜๋‹ค. (์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ์ž์›์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.)

  • ์ด์ฒ˜๋Ÿผ ๋…๋ฆฝ์ ์ธ ๊ณต๊ฐ„์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฒ•์ด IPC ํ†ต์‹ ์ด๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋Š” ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” IPC ์„ค๋น„๋ฅผ ์ด์šฉํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

Last updated