Skip to content

Latest commit

ย 

History

History
ย 
ย 

OS

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด

ํ”„๋กœ์„ธ์Šค(Process)

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

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

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

PCB ์— ์ €์žฅ๋˜๋Š” ์ •๋ณด

  • ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž(Process ID, PID) : ํ”„๋กœ์„ธ์Šค ์‹๋ณ„๋ฒˆํ˜ธ
  • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ : new, ready, running, waiting, terminated ๋“ฑ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅ
  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ
  • CPU ๋ ˆ์ง€์Šคํ„ฐ
  • CPU ์Šค์ผ€์ฅด๋ง ์ •๋ณด : ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„, ์Šค์ผ€์ค„ ํ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ ๋“ฑ
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด : ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ” ๋“ฑ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ํฌํ•จ
  • ์ž…์ถœ๋ ฅ ์ƒํƒœ ์ •๋ณด : ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋“ค๊ณผ ์—ด๋ฆฐ ํŒŒ์ผ ๋ชฉ๋ก
  • ์–ด์นด์šดํŒ… ์ •๋ณด : ์‚ฌ์šฉ๋œ CPU ์‹œ๊ฐ„, ์‹œ๊ฐ„์ œํ•œ, ๊ณ„์ •๋ฒˆํ˜ธ ๋“ฑ

์Šค๋ ˆ๋“œ(Thread)

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

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

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

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

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



๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์˜ ์žฅ์ 

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


๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์˜ ๋ฌธ์ œ์ 

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

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ๋Š” ๋™๊ธฐํ™” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ์ž‘์—… ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ์ปจํŠธ๋กค ํ•˜๊ณ  ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ปจํŠธ๋กค ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด๋กœ ์ธํ•ด ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ณผ๋„ํ•œ ๋ฝ์œผ๋กœ ์ธํ•œ ๋ณ‘๋ชฉํ˜„์ƒ์„ ์ค„์—ฌ์•ผ ํ•œ๋‹ค.


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

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



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

ํ”„๋กœ์„ธ์Šค๋ฅผ ์Šค์ผ€์ค„๋งํ•˜๊ธฐ ์œ„ํ•œ Queue ์—๋Š” ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • Job Queue : ํ˜„์žฌ ์‹œ์Šคํ…œ ๋‚ด์— ์žˆ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ
  • Ready Queue : ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์žˆ์œผ๋ฉด์„œ CPU ๋ฅผ ์žก์•„์„œ ์‹คํ–‰๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ
  • Device Queue : Device I/O ์ž‘์—…์„ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ

๊ฐ๊ฐ์˜ Queue ์— ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋„ฃ๊ณ  ๋นผ์ฃผ๋Š” ์Šค์ผ€์ค„๋Ÿฌ์—๋„ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์žฅ๊ธฐ์Šค์ผ€์ค„๋Ÿฌ(Long-term scheduler or job scheduler)

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

  • ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ์‚ฌ์ด์˜ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹น.
  • ํ”„๋กœ์„ธ์Šค์— memory(๋ฐ ๊ฐ์ข… ๋ฆฌ์†Œ์Šค)๋ฅผ ํ• ๋‹น(admit)
  • degree of Multiprogramming ์ œ์–ด
    ๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ) ๋ช‡ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ฌ๋ผ๊ฐˆ ๊ฒƒ์ธ์ง€๋ฅผ ์ œ์–ด
  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ
    new -> ready(in memory)

cf) ๋ฉ”๋ชจ๋ฆฌ์— ํ”„๋กœ๊ทธ๋žจ์ด ๋„ˆ๋ฌด ๋งŽ์ด ์˜ฌ๋ผ๊ฐ€๋„, ๋„ˆ๋ฌด ์ ๊ฒŒ ์˜ฌ๋ผ๊ฐ€๋„ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค. ์ฐธ๊ณ ๋กœ time sharing system ์—์„œ๋Š” ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์—†๋‹ค. ๊ทธ๋ƒฅ ๊ณง๋ฐ”๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ready ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.


๋‹จ๊ธฐ์Šค์ผ€์ค„๋Ÿฌ(Short-term scheduler or CPU scheduler)

  • CPU ์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹น.
  • Ready Queue ์— ์กด์žฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ running ์‹œํ‚ฌ์ง€ ๊ฒฐ์ •.
  • ํ”„๋กœ์„ธ์Šค์— CPU ๋ฅผ ํ• ๋‹น(scheduler dispatch)
  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ
    ready -> running -> waiting -> ready

์ค‘๊ธฐ์Šค์ผ€์ค„๋Ÿฌ(Medium-term scheduler or Swapper)

  • ์—ฌ์œ  ๊ณต๊ฐ„ ๋งˆ๋ จ์„ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ต์งธ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ์ซ“์•„๋ƒ„ (swapping)
  • ํ”„๋กœ์„ธ์Šค์—๊ฒŒ์„œ memory ๋ฅผ deallocate
  • degree of Multiprogramming ์ œ์–ด
  • ํ˜„ ์‹œ์Šคํ…œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์‹œ์— ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์กฐ์ ˆํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ.
  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ
    ready -> suspended

Process state - suspended

Suspended(stopped) : ์™ธ๋ถ€์ ์ธ ์ด์œ ๋กœ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰์ด ์ •์ง€๋œ ์ƒํƒœ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ด๋ ค๊ฐ„ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค ์ „๋ถ€ ๋””์Šคํฌ๋กœ swap out ๋œ๋‹ค. blocked ์ƒํƒœ๋Š” ๋‹ค๋ฅธ I/O ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์Šค์Šค๋กœ ready state ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ์ƒํƒœ๋Š” ์™ธ๋ถ€์ ์ธ ์ด์œ ๋กœ suspending ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šค์Šค๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†๋‹ค.



CPU ์Šค์ผ€์ค„๋Ÿฌ

์Šค์ผ€์ค„๋ง ๋Œ€์ƒ์€ Ready Queue ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด๋‹ค.

FCFS(First Come First Served)

ํŠน์ง•

  • ๋จผ์ € ์˜จ ๊ณ ๊ฐ์„ ๋จผ์ € ์„œ๋น„์Šคํ•ด์ฃผ๋Š” ๋ฐฉ์‹, ์ฆ‰ ๋จผ์ € ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ.
  • ๋น„์„ ์ ํ˜•(Non-Preemptive) ์Šค์ผ€์ค„๋ง
    ์ผ๋‹จ CPU ๋ฅผ ์žก์œผ๋ฉด CPU burst ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ CPU ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ• ๋‹น๋˜์—ˆ๋˜ CPU ๊ฐ€ ๋ฐ˜ํ™˜๋  ๋•Œ๋งŒ ์Šค์ผ€์ค„๋ง์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

๋ฌธ์ œ์ 

  • convoy effect
    ์†Œ์š”์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„๋‹ฌํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๋‚ฎ์ถ”๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.

SJF(Shortest - Job - First)

ํŠน์ง•

  • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„์ฐฉํ–ˆ์–ด๋„ CPU burst time ์ด ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์„  ํ• ๋‹น
  • ๋น„์„ ์ ํ˜•(Non-Preemptive) ์Šค์ผ€์ค„๋ง

๋ฌธ์ œ์ 

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

SRT(Shortest Remaining time First)

ํŠน์ง•

  • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์Šค์ผ€์ค„๋ง์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  • ์„ ์ ํ˜• (Preemptive) ์Šค์ผ€์ค„๋ง
    ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ burst time ๋ณด๋‹ค ๋” ์งง์€ CPU burst time ์„ ๊ฐ€์ง€๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด CPU ๋ฅผ ๋บ๊ธด๋‹ค.

๋ฌธ์ œ์ 

  • starvation
  • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„๋‹ฌํ•  ๋•Œ๋งˆ๋‹ค ์Šค์ผ€์ค„๋ง์„ ๋‹ค์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— CPU burst time(CPU ์‚ฌ์šฉ์‹œ๊ฐ„)์„ ์ธก์ •ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

Priority Scheduling

ํŠน์ง•

  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ๋ฅผ ํ• ๋‹นํ•˜๊ฒ ๋‹ค. ์šฐ์„ ์ˆœ์œ„๋ž€ ์ •์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๊ฒŒ ๋˜๊ณ  ์ž‘์€ ์ˆซ์ž๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.
  • ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(Preemptive) ๋ฐฉ์‹
    ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉˆ์ถ”๊ณ  CPU ๋ฅผ ์„ ์ ํ•œ๋‹ค.
  • ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(Non-Preemptive) ๋ฐฉ์‹
    ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด Ready Queue ์˜ Head ์— ๋„ฃ๋Š”๋‹ค.

๋ฌธ์ œ์ 

  • starvation
  • ๋ฌด๊ธฐํ•œ ๋ด‰์‡„(Indefinite blocking)
    ์‹คํ–‰ ์ค€๋น„๋Š” ๋˜์–ด์žˆ์œผ๋‚˜ CPU ๋ฅผ ์‚ฌ์šฉ๋ชปํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ CPU ๊ฐ€ ๋ฌด๊ธฐํ•œ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ

ํ•ด๊ฒฐ์ฑ…

  • aging
    ์•„๋ฌด๋ฆฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋ผ๋„ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ฃผ์ž.

Round Robin

ํŠน์ง•

  • ํ˜„๋Œ€์ ์ธ CPU ์Šค์ผ€์ค„๋ง
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ• ๋‹น ์‹œ๊ฐ„(time quantum)์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.
  • ํ• ๋‹น ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ ๋‹นํ•˜๊ณ  ready queue ์˜ ์ œ์ผ ๋’ค์— ๊ฐ€์„œ ๋‹ค์‹œ ์ค„์„ ์„ ๋‹ค.
  • RR์€ CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๋žœ๋คํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„ž์—ฌ์žˆ์„ ๊ฒฝ์šฐ์— ํšจ์œจ์ 
  • RR์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ํ”„๋กœ์„ธ์Šค์˜ context ๋ฅผ save ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์žฅ์ 

  • Response time์ด ๋นจ๋ผ์ง„๋‹ค.
    n ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ready queue ์— ์žˆ๊ณ  ํ• ๋‹น์‹œ๊ฐ„์ด q(time quantum)์ธ ๊ฒฝ์šฐ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” q ๋‹จ์œ„๋กœ CPU ์‹œ๊ฐ„์˜ 1/n ์„ ์–ป๋Š”๋‹ค. ์ฆ‰, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ (n-1)q time unit ์ด์ƒ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด CPU ๋ฅผ ์‚ฌ์šฉํ•  ๋งŒํผ ์ฆ๊ฐ€ํ•œ๋‹ค.
    ๊ณต์ •ํ•œ ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์˜ํ•  ์ 

์„ค์ •ํ•œ time quantum์ด ๋„ˆ๋ฌด ์ปค์ง€๋ฉด FCFS์™€ ๊ฐ™์•„์ง„๋‹ค. ๋˜ ๋„ˆ๋ฌด ์ž‘์•„์ง€๋ฉด ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ชฉ์ ์—๋Š” ์ด์ƒ์ ์ด์ง€๋งŒ ์žฆ์€ context switch ๋กœ overhead ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ ๋‹นํ•œ time quantum์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.



๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์˜ ์ฐจ์ด

๋น„์œ ๋ฅผ ํ†ตํ•œ ์‰ฌ์šด ์„ค๋ช…

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

Sync vs Async

์ผ๋ฐ˜์ ์œผ๋กœ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์˜ ์ฐจ์ด๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ด๊ณผ ๋™์‹œ์— ๋ฐ˜ํ™˜ ๊ฐ’์ด ๊ธฐ๋Œ€๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋™๊ธฐ ๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ ๋น„๋™๊ธฐ ๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค. ๋™์‹œ์—๋ผ๋Š” ๋ง์€ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” blocking๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋น„๋™๊ธฐ์˜ ๊ฒฝ์šฐ, blocking๋˜์ง€ ์•Š๊ณ  ์ด๋ฒคํŠธ ํ์— ๋„ฃ๊ฑฐ๋‚˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—๊ฒŒ ํ•ด๋‹น task ๋ฅผ ์œ„์ž„ํ•˜๊ณ  ๋ฐ”๋กœ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋Œ€๋˜๋Š” ๊ฐ’์ด ๋ฐ”๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค.

๊ธ€๋กœ๋งŒ ์„ค๋ช…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™์•„ ๊ทธ๋ฆผ๊ณผ ํ•จ๊ป˜ ์„ค๋ช…๋œ ๋งํฌ๋ฅผ ์ฒจ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

Reference



ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”

Critical Section(์ž„๊ณ„์˜์—ญ)

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์— ๋ฌธ์ œ์ ์—์„œ ๋‚˜์˜ค๋“ฏ, ๋™์ผํ•œ ์ž์›์„ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋Š” ์ž‘์—…(e.g. ๊ณต์œ ํ•˜๋Š” ๋ณ€์ˆ˜ ์‚ฌ์šฉ, ๋™์ผ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ)์„ ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ ์˜์—ญ์„ Critical Section ์ด๋ผ ์นญํ•œ๋‹ค.

Critical Section Problem(์ž„๊ณ„์˜์—ญ ๋ฌธ์ œ)

ํ”„๋กœ์„ธ์Šค๋“ค์ด Critical Section ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์„ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Requirements(ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๊ธฐ๋ณธ์กฐ๊ฑด)

  • Mutual Exclusion(์ƒํ˜ธ ๋ฐฐ์ œ)
    ํ”„๋กœ์„ธ์Šค P1 ์ด Critical Section ์—์„œ ์‹คํ–‰์ค‘์ด๋ผ๋ฉด, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ทธ๋“ค์ด ๊ฐ€์ง„ Critical Section ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์—†๋‹ค.
  • Progress(์ง„ํ–‰)
    Critical Section ์—์„œ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๊ณ , ๋ณ„๋„์˜ ๋™์ž‘์ด ์—†๋Š” ํ”„๋กœ์„ธ์Šค๋“ค๋งŒ Critical Section ์ง„์ž… ํ›„๋ณด๋กœ์„œ ์ฐธ์—ฌ๋  ์ˆ˜ ์žˆ๋‹ค.
  • Bounded Waiting(ํ•œ์ •๋œ ๋Œ€๊ธฐ)
    P1 ๊ฐ€ Critical Section ์— ์ง„์ž… ์‹ ์ฒญ ํ›„ ๋ถ€ํ„ฐ ๋ฐ›์•„๋“ค์—ฌ์งˆ ๋•Œ๊ฐ€์ง€, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด Critical Section ์— ์ง„์ž…ํ•˜๋Š” ํšŸ์ˆ˜๋Š” ์ œํ•œ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

ํ•ด๊ฒฐ์ฑ…

Lock

  • ํ•˜๋“œ์›จ์–ด ๊ธฐ๋ฐ˜ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ์จ, ๋™์‹œ์— ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด Critical Section ์— ์ง„์ž…ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” Lock ์„ ํš๋“ํ•˜๊ณ  Critical Section ์„ ๋น ์ ธ๋‚˜์˜ฌ ๋•Œ, Lock ์„ ๋ฐฉ์ถœํ•จ์œผ๋กœ์จ ๋™์‹œ์— ์ ‘๊ทผ์ด ๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

ํ•œ๊ณ„

  • ๋‹ค์ค‘์ฒ˜๋ฆฌ๊ธฐ ํ™˜๊ฒฝ์—์„œ๋Š” ์‹œ๊ฐ„์ ์ธ ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

Semaphores(์„ธ๋งˆํฌ)

  • ์†Œํ”„ํŠธ์›จ์–ด์ƒ์—์„œ Critical Section ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋™๊ธฐํ™” ๋„๊ตฌ

์ข…๋ฅ˜

OS ๋Š” Counting/Binary ์„ธ๋งˆํฌ๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค

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

  • ์ด์ง„ ์„ธ๋งˆํฌ MUTEX ๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋ฉฐ, ์ƒํ˜ธ๋ฐฐ์ œ์˜ (Mutual Exclusion)์˜ ๋จธ๋ฆฟ๊ธ€์ž๋ฅผ ๋”ฐ์„œ ๋งŒ๋“ค์–ด์กŒ๋‹ค. ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ 0 ๊ณผ 1 ์‚ฌ์ด์˜ ๊ฐ’๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์˜ Critical Section ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

๋‹จ์ 

  • Busy Waiting(๋ฐ”์œ ๋Œ€๊ธฐ)
    Critical Section ์— ์ง„์ž…ํ•ด์•ผํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์ง„์ž… ์ฝ”๋“œ๋ฅผ ๊ณ„์† ๋ฐ˜๋ณต ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฉฐ, CPU ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค.

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

  • ์„ธ๋งˆํฌ๊ฐ€ Ready Queue ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ Critical Section ์ง„์ž…์„ ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ณ , Critical Section ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์ง„์ž… ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜์•ผ๋งŒ ๋น ์ ธ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์„ ์ง€์นญํ•œ๋‹ค.

๋ชจ๋‹ˆํ„ฐ

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

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ „๋žต

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐฐ๊ฒฝ

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

Swapping : ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฒ•. ํ‘œ์ค€ Swapping ๋ฐฉ์‹์œผ๋กœ๋Š” round-robin ๊ณผ ๊ฐ™์€ ์Šค์ผ€์ค„๋ง์˜ ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ CPU ํ• ๋‹น ์‹œ๊ฐ„์ด ๋๋‚œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณด์กฐ ๊ธฐ์–ต์žฅ์น˜(e.g. ํ•˜๋“œ๋””์Šคํฌ)๋กœ ๋‚ด๋ณด๋‚ด๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ ๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค.

์ด ๊ณผ์ •์„ swap (์Šค์™‘์‹œํ‚จ๋‹ค) ์ด๋ผ ํ•œ๋‹ค. ์ฃผ ๊ธฐ์–ต์žฅ์น˜(RAM)์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ณผ์ •์„ swap-in, ๋ณด์กฐ ๊ธฐ์–ต์žฅ์น˜๋กœ ๋‚ด๋ณด๋‚ด๋Š” ๊ณผ์ •์„ swap-out ์ด๋ผ ํ•œ๋‹ค. swap ์—๋Š” ํฐ ๋””์Šคํฌ ์ „์†ก์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ• ๋•Œ Swapping ์ด ์‹œ์ž‘๋œ๋‹ค.

๋‹จํŽธํ™” (Fragmentation) : ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๊ณ  ์ œ๊ฑฐ๋˜๋Š” ์ผ์ด ๋ฐ˜๋ณต๋˜๋‹ค๋ณด๋ฉด, ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ‹ˆ ์‚ฌ์ด์— ์‚ฌ์šฉ ํ•˜์ง€ ๋ชปํ•  ๋งŒํผ์˜ ์ž‘์€ ์ž์œ ๊ณต๊ฐ„๋“ค์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋‹จํŽธํ™” ์ด๋‹ค. ๋‹จํŽธํ™”๋Š” 2 ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰œ๋‹ค.

Process A free Process B free Process C ย  ย  ย  ย  ย  ย  free ย  ย  ย  ย  ย  ย  Process D
  • ์™ธ๋ถ€ ๋‹จํŽธํ™”: ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ค‘ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๋Š” ์ผ๋ถ€๋ถ„. ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ(RAM)์—์„œ ์‚ฌ์ด์‚ฌ์ด ๋‚จ๋Š” ๊ณต๊ฐ„๋“ค์„ ๋ชจ๋‘ ํ•ฉ์น˜๋ฉด ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์ด ๋˜๋Š” ๋ถ€๋ถ„๋“ค์ด ๋ถ„์‚ฐ๋˜์–ด ์žˆ์„๋•Œ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‚ด๋ถ€ ๋‹จํŽธํ™”: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์— ํฌํ•จ๋œ ๋‚จ๋Š” ๋ถ€๋ถ„. ์˜ˆ๋ฅผ๋“ค์–ด ๋ฉ”๋ชจ๋ฆฌ ๋ถ„ํ•  ์ž์œ  ๊ณต๊ฐ„์ด 10,000B ์žˆ๊ณ  Process A ๊ฐ€ 9,998B ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด 2B ๋ผ๋Š” ์ฐจ์ด ๊ฐ€ ์กด์žฌํ•˜๊ณ , ์ด ํ˜„์ƒ์„ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋ผ ์นญํ•œ๋‹ค.

์••์ถ• : ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐ„๋“ค์„ ํ•œ์ชฝ์œผ๋กœ ๋ชฐ์•„, ์ž์œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก  ์ด์ง€๋งŒ, ์ž‘์—…ํšจ์œจ์ด ์ข‹์ง€ ์•Š๋‹ค. (์œ„์˜ ๋ฉ”๋ชจ๋ฆฌ ํ˜„ํ™ฉ์ด ์••์ถ•์„ ํ†ตํ•ด ์•„๋ž˜์˜ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ ๋ฐ”๋€Œ๋Š” ํšจ๊ณผ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค)

Process A Process B Process C Process D ย  ย  ย  ย  ย  ย ย  ย  free ย  ย  ย  ย  ย  ย ย  ย 

Paging(ํŽ˜์ด์ง•)

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

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

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

  • ๋‹จ์  : ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ์˜ ๋น„์ค‘์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ํŽ˜์ด์ง€ ํฌ๊ธฐ๊ฐ€ 1,024B ์ด๊ณ  ํ”„๋กœ์„ธ์Šค A ๊ฐ€ 3,172B ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์š”๊ตฌํ•œ๋‹ค๋ฉด 3 ๊ฐœ์˜ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„(1,024 * 3 = 3,072) ํ•˜๊ณ ๋„ 100B ๊ฐ€ ๋‚จ๊ธฐ๋•Œ๋ฌธ์— ์ด 4 ๊ฐœ์˜ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์ด ํ•„์š”ํ•œ ๊ฒƒ์ด๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ 4 ๋ฒˆ์งธ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์—๋Š” 924B(1,024 - 100)์˜ ์—ฌ์œ  ๊ณต๊ฐ„์ด ๋‚จ๊ฒŒ ๋˜๋Š” ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Demand Paging(์š”๊ตฌ ํŽ˜์ด์ง•)

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

ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ๊ฐœ๋ณ„ ํŽ˜์ด์ง€๋“ค์€ ํŽ˜์ด์ €(pager)์— ์˜ํ•ด ๊ด€๋ฆฌ๋œ๋‹ค. ํŽ˜์ด์ €๋Š” ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์— ์‹ค์ œ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋“ค๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ฝ์–ด ์˜ฎ์œผ๋กœ์„œ, ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ๊ฐ„๋‚ญ๋น„์™€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

Page fault trap(ํŽ˜์ด์ง€ ๋ถ€์žฌ ํŠธ๋žฉ)

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

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

๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•

๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ธ ์ƒํ™ฉ์—์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ต์ฒด ํ๋ฆ„์ด๋‹ค.

  1. ๋””์Šคํฌ์—์„œ ํ•„์š”ํ•œ ํŽ˜์ด์ง€์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค
  2. ๋นˆ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์„ ์ฐพ๋Š”๋‹ค.
    1. ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ํฌ์ƒ๋ (victim) ํŽ˜์ด์ง€๋ฅผ ๊ณ ๋ฅธ๋‹ค.
    2. ํฌ์ƒ๋  ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๊ณ , ๊ด€๋ จ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•œ๋‹ค.
  3. ์ƒˆ๋กญ๊ฒŒ ๋น„์›Œ์ง„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋‚ด ํ”„๋ ˆ์ž„์— ์ƒˆ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์˜ค๊ณ , ํ”„๋ ˆ์ž„ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•œ๋‹ค.
  4. ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ์žฌ์‹œ์ž‘

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

FIFO ํŽ˜์ด์ง€ ๊ต์ฒด

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ FIFO(first-in first-out)์˜ ํ๋ฆ„์„ ๊ฐ€์ง„๋‹ค. ์ฆ‰, ๋จผ์ € ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค์–ด์˜จ ํŽ˜์ด์ง€ ์ˆœ์„œ๋Œ€๋กœ ํŽ˜์ด์ง€ ๊ต์ฒด ์‹œ์ ์— ๋จผ์ € ๋‚˜๊ฐ€๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

  • ์žฅ์ 

    • ์ดํ•ดํ•˜๊ธฐ๋„ ์‰ฝ๊ณ , ํ”„๋กœ๊ทธ๋žจํ•˜๊ธฐ๋„ ์‰ฝ๋‹ค.
  • ๋‹จ์ 

    • ์˜ค๋ž˜๋œ ํŽ˜์ด์ง€๊ฐ€ ํ•ญ์ƒ ๋ถˆํ•„์š”ํ•˜์ง€ ์•Š์€ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค(์ดˆ๊ธฐ ๋ณ€์ˆ˜ ๋“ฑ)
    • ์ฒ˜์Œ๋ถ€ํ„ฐ ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•ด์„œ ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์„ ๋†’์ด๋Š” ๋ถ€์ž‘์šฉ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Belady์˜ ๋ชจ์ˆœ: ํŽ˜์ด์ง€๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋Š˜๋ ค๋„ ๋˜๋ ค ํŽ˜์ด์ง€ ๋ถ€์žฌ๊ฐ€ ๋” ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ชจ์ˆœ์ด ์กด์žฌํ•œ๋‹ค.
์ตœ์  ํŽ˜์ด์ง€ ๊ต์ฒด(Optimal Page Replacement)

Belady์˜ ๋ชจ์ˆœ์„ ํ™•์ธํ•œ ์ดํ›„ ์ตœ์  ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ํƒ๊ตฌ๊ฐ€ ์ง„ํ–‰๋˜์—ˆ๊ณ , ๋ชจ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ๋‚ฎ์€ ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์„ ๋ณด์ด๋ฉฐ Belady์˜ ๋ชจ์ˆœ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ์€ ์•ž์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฃผ๋กœ ๋น„๊ต ์—ฐ๊ตฌ ๋ชฉ์ ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

  • ์žฅ์ 

    • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ๊ฐ€์žฅ ๋‚ฎ์€ ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์„ ๋ณด์žฅํ•œ๋‹ค.
  • ๋‹จ์ 

    • ๊ตฌํ˜„์˜ ์–ด๋ ค์›€์ด ์žˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ์˜ ๊ณ„ํš์„ ๋ฏธ๋ฆฌ ํŒŒ์•…ํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
LRU ํŽ˜์ด์ง€ ๊ต์ฒด(LRU Page Replacement)

LRU: Least-Recently-Used
์ตœ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ทผ์‚ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ต์ฒดํ•œ๋‹ค.

  • ํŠน์ง•
    • ๋Œ€์ฒด์ ์œผ๋กœ FIFO ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ์šฐ์ˆ˜ํ•˜๊ณ , OPT์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค๋Š” ๊ทธ๋ ‡์ง€ ๋ชปํ•œ ๋ชจ์Šต์„ ๋ณด์ธ๋‹ค.
LFU ํŽ˜์ด์ง€ ๊ต์ฒด(LFU Page Replacement)

LFU: Least Frequently Used
์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ํŽ˜์ด์ง€๋Š” ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„์งˆ ๊ฑฐ๋ผ๋Š” ๊ฐ€์ •์—์„œ ๋งŒ๋“ค์–ด์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

  • ํŠน์ง•
    • ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŠน์ • ํŽ˜์ด์ง€๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋‹ค, ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ์— ๋จธ๋ฌผ๊ฒŒ ๋˜์–ด ์ดˆ๊ธฐ ๊ฐ€์ •์— ์–ด๊ธ‹๋‚˜๋Š” ์‹œ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค
    • ์ตœ์ (OPT) ํŽ˜์ด์ง€ ๊ต์ฒด๋ฅผ ์ œ๋Œ€๋กœ ๊ทผ์‚ฌํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ž˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค.
MFU ํŽ˜์ด์ง€ ๊ต์ฒด(MFU Page Replacement)

MFU: Most Frequently Used
์ฐธ์กฐ ํšŒ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ํŽ˜์ด์ง€๊ฐ€ ์ตœ๊ทผ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™”๊ณ , ์•ž์œผ๋กœ ๊ณ„์† ์‚ฌ์šฉ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฐ€์ •์— ๊ธฐ๋ฐ˜ํ•œ๋‹ค.

  • ํŠน์ง•
    • ์ตœ์ (OPT) ํŽ˜์ด์ง€ ๊ต์ฒด๋ฅผ ์ œ๋Œ€๋กœ ๊ทผ์‚ฌํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ž˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค.

---

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

์บ์‹œ์˜ ์ง€์—ญ์„ฑ ์›๋ฆฌ

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

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

์ด ๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ์€ ๋Œ€ํ‘œ์ ์œผ๋กœ ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ(Temporal Locality)๊ณผ ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ(Spatial Locality)์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

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

Caching line

์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์บ์‹œ(cache)๋Š” ํ”„๋กœ์„ธ์„œ ๊ฐ€๊นŒ์ด์— ์œ„์น˜ํ•˜๋ฉด์„œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋†”๋‘๋Š” ์žฅ์†Œ์ด๋‹ค. ํ•˜์ง€๋งŒ ์บ์‹œ๊ฐ€ ์•„๋ฌด๋ฆฌ ๊ฐ€๊นŒ์ด ์žˆ๋”๋ผ๋„ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋Š ๊ณณ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ๋ชฐ๋ผ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœํšŒํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์บ์‹œ์— ๋ชฉ์  ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์ ‘๊ทผํ•˜์—ฌ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์บ์‹œ๊ฐ€ ์˜๋ฏธ ์žˆ์–ด์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

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

  1. Full Associative
  2. Set Associative
  3. Direct Map



OS.end