๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HYU/์šด์˜์ฒด์ œ(OS)

10. Virtual Memory (1)

by Jaeguk 2023. 5. 12.

Virtual Memory๋Š” Physical Memory์˜ ๊ณต๊ฐ„ ์‚ฌ์šฉ ํšจ์œจ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ธฐ์ˆ ์ด๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ memory management๋Š” virtual memory๊ฐ€ ์—†๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— ์ „๊ฐœ๊ฐ€ ๋˜์—ˆ๋‹ค.

 

Virtual Memory

ํฐ๋…ธ์—๋งŒ ๋จธ์‹ ์— ๋”ฐ๋ฅด๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  address space๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์•ผ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค.
=> ์ด๋ก ์ ์œผ๋กœ๋Š” ๊ทธ๋ ‡๋‹ค.

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

์ด์ œ๋ถ€ํ„ฐ ์ด๋ก ๊ณผ ์‹ค์ œ๋Š” ๋‹ค๋ฅด๋‹ค.

์‹ค์ œ๋กœ CPU๊ฐ€ ์ ‘๊ทผํ•˜๋Š” Instruction๊ณผ ๋ฐ์ดํ„ฐ๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ์ž.
๋‹น์žฅ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ ํ”„๋กœ์„ธ์Šค ๊ด€์ ์œผ๋กœ ๋ณด๋ฉด ์ „์ฒด address space ์ค‘ ์ผ๋ถ€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์œผ๋ฏ€๋กœ ๋” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋™์‹œ์— ๋” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  address space๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ฒ ํ•™์ด ๊นจ์ ธ๋ฒ„๋ฆฐ๋‹ค.

์ด ์ฒ ํ•™์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์‹ค์งˆ์ ์œผ๋กœ ์ผ๋ถ€๋งŒ ์˜ฌ๋ผ์˜ค๊ฒŒ ํ•ด์„œ ํšจ์œจ์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ??

CPUํ•œํ…Œ๋Š” ์ด ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  address space๊ฐ€ ๋‹ค ์˜ฌ๋ผ์˜จ ๊ฒƒ์ฒ˜๋Ÿผ ์†์ธ๋‹ค.
๊ทธ๋ฆฌ๊ณ ๋Š” ๋’ค์—์„œ OS๊ฐ€ CPU๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๋ถ€๋ถ„์€ ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์„ ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”์˜๊ฒŒ ์ผ์„ ํ•œ๋‹ค.
=> OS๋Š” ์ผ๋ถ€๋งŒ ์˜ฌ๋ผ์˜จ ๊ฑธ ์•Œ์ง€๋งŒ CPU์™€ ํ”„๋กœ์„ธ์Šค๋Š” ๋ชจ๋“  address space๊ฐ€ ๋‹ค ์˜ฌ๋ผ์˜จ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด CPU๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์„ ๋•Œ๋งŒ ์ž˜ ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฉด ๋ฌธ์ œ์—†์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.
=> page๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ

์ฆ‰, logical address space์™€ physical address space๊ฐ€ ๋ถ„๋ฆฌ๊ฐ€ ๋œ๋‹ค.
=> CPU๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฑด logical address space, OS๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฑด physical address space.

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ข‹์€ ์  ์ค‘ ํ•˜๋‚˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์‹ค์ œ ์ฃผ์†Œ๋Š” ๋ชจ๋ฅด๊ณ  logical address๋งŒ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— OS๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด physical address space๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋Ÿผ์—๋„ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ฐœ๋ณ„์ ์œผ๋กœ logical address space๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋…๋ฆฝ์ ์ธ ๊ณต๊ฐ„์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์ •์ด ๊ฐ€์ ธ๋‹ค์ฃผ๋Š” ์ถ”๊ฐ€์ ์ธ ์ด์ ๋„ ์žˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ ค๋ฉด fork๋ฅผ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ address space๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค.
virtual memory ๊ฐœ๋…์ด ์—†์„ ๋•Œ๋Š” ์‹ค์ œ๋กœ ๋…๋ฆฝ์ ์ธ physical address ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์„œ address space๋ฅผ ๋ณต์‚ฌํ•ด์คฌ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ virtual mermoy ๊ฐœ๋…์ด ๋„์ž…๋˜๋ฉด, ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” logical address space๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  ์‹ค์ œ๋กœ๋Š” ๋ถ€๋ชจ์˜ address space๊ฐ€ ์ €์žฅ๋œ physical memory๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
=> ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
=> ๋˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ๊ฐ€ ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋น ๋ฅด๊ฒŒ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ž์‹ ๋˜๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•ด์„œ ๊ฐ’์„ ๋ฐ”๊พธ๋ ค๊ณ  ํ•˜๋ฉด ๊ทธ๋•Œ๋Š” ์–ด์ฉ” ์ˆ˜ ์—†์ด ์‹ค์ œ๋กœ ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„์„ ๋ณ„๋„๋กœ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค.

 

Demand paging

์ง€๊ธˆ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์€ ๋ถ€๋ถ„์„ CPU๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ ‘๊ทผํ•˜๊ฒŒ ๋  ๋•Œ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค.

์ด๊ฒƒ๋งŒ ํ•ด๊ฒฐํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ํฐ ๋ฌธ์ œ์—†์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.

์šฐ๋ฆฌ๋Š” paging ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— virtual memory๋ฅผ ๋ฐฐ์šธ ๊ฒƒ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ์ „์ฒด address space ์ค‘ ์ผ๋ถ€ ํŽ˜์ด์ง€๋Š” ์‹ค์ œ physical memory์— ์˜ฌ๋ผ์™€ ์žˆ์„ ๊ฒƒ์ด๊ณ  ์ผ๋ถ€ ํŽ˜์ด์ง€๋Š” ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.
๊ทธ๋Ÿฐ๋ฐ CPU๊ฐ€ ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์€ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด OS๋Š” ์žฌ๋น ๋ฅด๊ฒŒ ํ•ด๋‹นํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค.

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

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

 

Virtual memory larger than Physical memory

Virtual memory๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ํšจ๊ณผ :

์‹ค์ œ ํ”„๋กœ์„ธ์Šค์˜ logical address space์˜ ํฌ๊ธฐ๊ฐ€ DRAM์˜ ํฌ๊ธฐ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์  ํ• ๋‹น์„ ๋งŽ์ด ํ•ด์„œ ์ ์  ์ปค์ง€๋‹ค ๋ณด๋ฉด ์‹ค์ œ DRAM์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ปค์งˆ ์ˆ˜๋„ ์žˆ๋‹ค.
=> ๊ทธ๋Ÿฌ๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ž‘์„ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๋Š”๋ฐ, virtual memory๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ํŽ˜์ด์ง€๋งŒ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋ฉด ๋˜๋ฏ€๋กœ ๊ทธ ๊ฒฝ์šฐ์—๋„ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.

 

Demand paging

ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ ค ํ•  ๋•Œ๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋˜๋ฉด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ๋‹ค.

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

๋ฐ˜์‘์„ฑ์€ ์™œ ์ข‹์•„์งˆ๊นŒ?

CPU๊ฐ€ ์‹ค์ œ๋กœ ์ ‘๊ทผ์„ ํ•ด์•ผ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ๋•Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์•„๋ฌด๋Ÿฐ ํŽ˜์ด์ง€๋„ ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋ณ„๋„์˜ ์ค€๋น„ ๊ณผ์ • ์—†์ด ๋ฐ”๋กœ ์ˆ˜ํ–‰์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์‹ค์ œ๋กœ ํŽ˜์ด์ง€๊ฐ€ ์˜ฌ๋ผ์™€ ์žˆ๋Š”์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ valid, invalid bit์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋˜ํ•œ ์ด ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ํ•ฉ๋ฒ•์ ์ธ ์ ‘๊ทผ์ธ์ง€ ํ•ฉ๋ฒ•์ ์ด์ง€ ์•Š์€ ์ ‘๊ทผ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์šฉ๋„๋กœ๋„ ์‚ฌ์šฉ๋œ๋‹ค.

 

Swap์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์• ๋ฅผ Swapper๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ๊ทธ ์ค‘์—์„œ๋„ page ๋‹จ์œ„๋กœ swap์„ ํ•˜๋Š” Swapper๋ฅผ Pager๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋Œ€ํ•ด ์—”ํŠธ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์žˆ์ง€๋งŒ, ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ์—”ํŠธ๋ฆฌ๋งˆ๋‹ค ํ‘œ์‹œ๋œ valid-invalid bit์˜ ์—ญํ• ์ด ํ•œ ์ธต ๋” ์ค‘์š”ํ•ด์ง„๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์—”ํŠธ๋ฆฌ๊ฐ€ invalid๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” 3๊ฐ€์ง€๋กœ ๋‚˜๋ˆ ์„œ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

1. illegal

CPU๊ฐ€ ๋ฐœ์ƒ์‹œํ‚จ logical address๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—” ์™„์ „ํžˆ ์ž˜๋ชป๋œ ์ฃผ์†Œ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์–ด ํ”„๋กœ์„ธ์Šค์˜ address space๋Š” 10๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ, 11๋ฒˆ์งธ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—” ์ž˜๋ชป๋œ ์ ‘๊ทผ์ด๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ํ”„๋กœ์„ธ์Šค์˜ ์‚ฌ์ด์ฆˆ์— ๋”ฑ ๋งž์ถฐ์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์—”ํŠธ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
=> ์ด ์—”ํŠธ๋ฆฌ๋Š” invalid๋กœ ํ‘œ์‹œ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

 

2. not in memory

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

 

3. obsolete

๋ฉ”๋ชจ๋ฆฌ์—๋„ ์˜ฌ๋ผ์™€ ์žˆ๊ณ , ํ•ฉ๋ฒ•์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ ‘์ธ๋ฐ๋„ invalid๋ผ๊ณ  ํ‘œํ˜„๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

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

์ด๋•Œ๋Š” ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ฝ์–ด์™€์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์•ผ ํ•œ๋‹ค.

 

์‹ค์ œ๋กœ ๊ทธ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๋ฏ€๋กœ, ์ฒ˜์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์–ด๋– ํ•œ ํŽ˜์ด์ง€๋„ ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š๋‹ค.
=> ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์—”ํŠธ๋ฆฌ๊ฐ€ invalid์—์„œ ์‹œ์ž‘ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ logical address๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ฒŒ ๋˜๋ฉด, ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์— ์˜ํ•ด MMU๋Š” ๊ทธ ํŽ˜์ด์ง€๊ฐ€ ์‹ค์ œ๋กœ ๋ช‡ ๋ฒˆ frame์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ์ฐพ๊ธฐ ์œ„ํ•ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ look up์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ํ•ด๋‹น ์—”ํŠธ๋ฆฌ๊ฐ€ invalid๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์œผ๋ฉด ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๊ทธ๋•Œ๋Š” page fault๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
=> ์ปค๋„ ์ฝ”๋“œ์˜ page fault handler๊ฐ€ ๋””์Šคํฌ์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

 

๋งŒ์•ฝ CPU๊ฐ€ 0๋ฒˆ ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์„ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, MMU๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—์„œ 0๋ฒˆ ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” ์—”ํŠธ๋ฆฌ๋ฅผ ์ฐพ์„ ๊ฒƒ์ด๊ณ  valid๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ frame์˜ ์‹œ์ž‘์ฃผ์†Œ๋ฅผ ์ฐพ์•„์„œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ CPU์—๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ CPU๊ฐ€ 1๋ฒˆ ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•˜๋ฉด, MMU๋Š” ๋˜‘๊ฐ™์ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ look upํ•ด์„œ 1๋ฒˆ ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” ์—”ํŠธ๋ฆฌ๋ฅผ ์ฐพ์„ ๊ฒƒ์ด๊ณ  invalid๋กœ ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ผ๋Š” ๋œป์ด๋ฏ€๋กœ Page fault๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. 

 

Page Fault

OS๋Š” ์–ด๋– ํ•œ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ์ฒ˜๋ฆฌํ• ๊นŒ?

 

ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ MMU๊ฐ€ ์ ‘๊ทผํ•œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์—”ํŠธ๋ฆฌ๊ฐ€ invalid๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋จผ์ € invalid๋ผ๊ณ  ํ‘œ์‹œ๋˜์–ด ์žˆ๋Š” ์ด์œ ๊ฐ€ illegal reference์ธ์ง€๋ฅผ ํŒ๋‹จํ•œ๋‹ค.
๋งŒ์•ฝ ์ž˜๋ชป๋œ ์ฃผ์†Œ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด๋ผ๋ฉด ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์ด์ƒ ๋™์ž‘์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ abort๋ฅผ ์‹œ์ผœ๋ฒ„๋ฆฐ๋‹ค.

์ œ๋Œ€๋กœ๋œ ์˜์—ญ์— ์ ‘๊ทผ์„ ํ•˜๋Š”๋ฐ invalid๋ผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์€ ํŽ˜์ด์ง€๊ฑฐ๋‚˜, update๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๊ณผ๊ฑฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฐ ํŽ˜์ด์ง€๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋‹ค.
=> ์ด ๋‘ ๊ฒฝ์šฐ๋Š” ๋ชจ๋‘ ๋””์Šคํฌ์—์„œ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

 

์ด์ œ ํŽ˜์ด์ง€๋ฅผ ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด ๊ฒƒ์ธ๋ฐ, ๊ทธ๋Ÿผ ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ ๋นˆ frame์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
=> ๋นˆ frame์ด ์กด์žฌํ•˜๋ฉด ๊ฑฐ๊ธฐ์— ์˜ฌ๋ฆฌ๋ฉด ๋์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋ชจ๋“  frame์ด ๊ฐ€๋“ ์ฐฌ ์ƒํ™ฉ์ด๋ผ๋ฉด ์ด๋ฏธ ์˜ฌ๋ผ์˜จ ํŽ˜์ด์ง€ ์ค‘์— ํ•˜๋‚˜๋ฅผ ์ซ’์•„๋‚ด๊ณ  ๋นˆ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•ด์•ผ ํ•œ๋‹ค.
=> Replace

๋นˆ ๊ณต๊ฐ„์ด ํ™•๋ณด๋˜๋ฉด ๋””์Šคํฌ์—์„œ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์™€์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.

 

๋””์Šคํฌ I/O๊ฐ€ ๋๋‚˜๊ณ  ๋‚˜๋ฉด( ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ  ๋‚˜๋ฉด ) valid/invalid bit๋ฅผ valid๋กœ ๋ฐ”๊พธ๊ณ  ํŽ˜์ด์ง€๊ฐ€ ์ €์žฅ๋œ frame์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์—”ํŠธ๋ฆฌ์— ๊ธฐ๋กํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ๋Š” ๋””์Šคํฌ I/O๊ฐ€ ๋ฐœ์ƒํ•ด์„œ wait ์ƒํƒœ๊ฐ€ ๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ready ์ƒํƒœ๋กœ ๋ฐ”๊พธ๊ณ  ready queue์— ํŽธ์ž…์‹œํ‚จ๋‹ค.

 

page fault๊ฐ€ ๋ฐœ์ƒํ•ด์„œ wait ์ƒํƒœ๊ฐ€ ๋˜์—ˆ๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์‹œ ready๊ฐ€ ๋˜์–ด CPU๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฉด trap์ด ๋๋‚˜๊ฒŒ ๋˜๊ณ , ์ ‘๊ทผํ•˜๋ ค๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์œผ๋ฏ€๋กœ ์›๋ž˜ ์ˆ˜ํ–‰ํ•˜๋ ค๋˜ ์ฝ”๋“œ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

Page fault๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณผ์ •์„ ๊ฐ„๋žตํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ฆผ์ด๋‹ค.

 

Difficulties in actual HW design

์œ„์—์„œ ์‚ดํŽด๋ณธ page fault๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต๋‹ค.

๋ช…๋ น์–ด๋ฅผ fetchํ•˜๋Š” ๊ณผ์ •์ด๋‚˜ operand(ํ”ผ์—ฐ์‚ฐ์ž)๋ฅผ fetchํ•˜๋Š” ๊ณผ์ •์—์„œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Worst Case๋ฅผ ์‚ดํŽด๋ณด์ž.

Instruction์ด updateํ•˜๋ ค๋Š” destination์ด ์—ฌ๋Ÿฌ ๊ณณ์ผ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Destination address๊ฐ€ 10 byte์— copy๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ 5 byte๋Š” ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€ ๋ ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ€ ์žˆ๊ณ , ๋‚˜๋จธ์ง€ 5 byte๋Š” ๋‘ ๋ฒˆ์งธ ํŽ˜์ด์ง€ ์ฒซ ๋ถ€๋ถ„์— ๋“ค์–ด ์žˆ๋‹ค๋ฉด?

์ฆ‰, ์นดํ”ผํ•ด์•ผ ํ•  ๋Œ€์ƒ์ด 2๊ฐœ์˜ ํŽ˜์ด์ง€์— ๊ฑธ์ณ์„œ ์žˆ๋‹ค๋ฉด?
์ผ๋‹จ ์ด instruction์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ๊ณ , source address๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ฒƒ๋„ ์„ฑ๊ณต์„ ํ–ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  destination address์˜ ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋ฐ์—๋„ ์„ฑ๊ณตํ–ˆ๋‹ค, ๊ทธ๋Ÿผ ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€์—๋Š” source ๋ฐ์ดํ„ฐ๊ฐ€ copy๊ฐ€ ๋˜๊ฒ ์ง€,
๊ทธ๋Ÿฐ๋ฐ ๋‘ ๋ฒˆ์งธ ํŽ˜์ด์ง€๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ผ๋ฉด, ๋‘ ๋ฒˆ์งธ ํŽ˜์ด์ง€์—๋Š” copy๋ฅผ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

=> page fault๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๋ช…๋ น ์ˆ˜ํ–‰ ๋„์ค‘์— page fault๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค.
๊ทธ๋Ÿผ ์ด ํ”„๋กœ์„ธ์Šค๋Š” I/O๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  wait ์ƒํƒœ๋กœ ๊ฐ€์•ผ ํ•œ๋‹ค.

ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ณ  ๋‹ค์‹œ ๋Œ์•„์˜ค๋ฉด ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๋ช…๋ น์–ด๋ฅผ fetchํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€๋Š” ์ด๋ฏธ ์นดํ”ผ๊ฐ€ ๋๋‚˜๋ฒ„๋ฆฐ ์ƒํƒœ์ด๋‹ค.
์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์‹œ CPU๋ฅผ ์žก์•„์„œ ์™„์ „ํžˆ copy๋ฅผ ๋งˆ์น  ๋•Œ๊นŒ์ง€๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์ง„ ์ƒํƒœ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

๋ช…๋ น์ด ์ˆ˜ํ–‰๋˜๋˜ ๋„์ค‘์— ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ณ  ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

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

์ผ๋‹จ์€ ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์—„์ฒญ ์–ด๋ ค์šด ์ผ์ด๊ตฌ๋‚˜ ์ •๋„๋งŒ ์•Œ๊ณ  ๋„˜์–ด๊ฐ€์ž.

 

Performance of Demand Paging

Demad Paging ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์„ฑ๋Šฅ์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

[Swap page out if nedded] ๋ผ๊ณ  ํ‘œ๊ธฐ๋œ ์ด์œ ๋Š”? ๋น„์–ด ์žˆ๋Š” frame์ด ์—†์œผ๋ฉด ๊ธฐ์กด์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ํŽ˜์ด์ง€์ค‘ ํ•˜๋‚˜๋ฅผ ์ซ“์•„๋‚ด์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด๋•Œ ์ซ“๊ฒจ๋‚˜๋Š” ํŽ˜์ด์ง€๋Š” ๋‹ค์‹œ ๋””์Šคํฌ์— ์จ์•ผํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์“ฐ์ง€ ์•Š์•„๋„ ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์˜ ํŽ˜์ด์ง€์™€ ํ•˜๋“œ ๋””์Šคํฌ์˜ ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์ด ์ผ์น˜ํ•˜๋ฉด, ์ฆ‰ ๋ฐ์ดํ„ฐ์˜ update๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๊ตณ์ด swap out์„ ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์€ 200ns์ด๊ณ , ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์€ 8ms๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ํ•˜์ž.

ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋””์Šคํฌ I/O๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์ด๋‹ค.

์ด๋•Œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— 1000๋ฒˆ ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค 1๋ฒˆ์”ฉ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, p = 0.001์ด ๋œ๋‹ค.

๊ทธ๋•Œ์˜ EAT๋Š” 8.2 μs๋กœ ๊ทธ๋ƒฅ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ๋ณด๋‹ค ๋ฌด๋ ค 40๋ฐฐ๋‚˜ ๋Š๋ ค์ง„๋‹ค.

์ด ์ •๋„๋ฉด ์‚ฌ์šฉ์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฒŒ ์•„๋‹Œ๊ฐ€??

 

Pure demand paging :

CPU๊ฐ€ ์ ‘๊ทผํ•  ๋•Œ๋งŒ Swap์ด ๋ฐœ์ƒํ•ด์„œ ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์•„๋ฌด๋Ÿฐ ํŽ˜์ด์ง€๋„ ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š๋‹ค.

Locality of reference :

ํ•œ ๋ฒˆ ๊ฐ€์ง€๊ณ  ์˜จ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ์ž์ฃผ ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋ฉด ํŽ˜์ด์ง€ ํดํŠธ ํ•œ ๋ฒˆ์œผ๋กœ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์‹ค์ œ๋กœ locality๊ฐ€ ๋งค์šฐ ๊ฐ•ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ํดํŠธ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์‹ฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— virtual memory๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ธ๊ธฐ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ์ซ’์•„๋‚ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์— ์ค‘์š”ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

=> ์‹œ์Šคํ…œ์ด locality๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

=> ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด locality ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ์ค‘์š”ํ•˜๋‹ค.

 

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

์ด๊ฒƒ์„ Page replacement(ํŽ˜์ด์ง€ ๊ต์ฒด)๋ผ๊ณ  ํ•˜๊ณ , ๋ฐ€๋ ค๋‚˜๋Š” ํŽ˜์ด์ง€๋ฅผ victim page๋ผ๊ณ  ํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ์ดํ›„์— ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ์ˆ˜์ •์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.
=> ์ˆ˜์ •์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๊ตณ์ด swap out์„ ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค.
=> ์ˆ˜์ •์ด ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด dirty bit๋ฅผ 1๋กœ ํ‘œ์‹œํ•˜๊ณ , dirty bit๊ฐ€ 1์ธ ํŽ˜์ด์ง€๋Š” ๋””์Šคํฌ์— ๋‹ค์‹œ ์จ์ค˜์•ผ ํ•œ๋‹ค(swap out).

 

victim page๋ฅผ ์„ ์ •ํ•  ๋•Œ, Locality๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

 

Page-Replacement Algorithms

Victim page๋ฅผ ์„ ์ •ํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ, CPU๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ •ํ•ด๋†“๊ณ  ์ด ์ˆœ์„œ๋Œ€๋กœ ์ ‘๊ทผํ–ˆ์„ ๋•Œ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๊ฐ€์žฅ ์ ๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•œ๋‹ค.

์‹œ๋ฎฌ๋ ˆ์ด์…˜์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—, ํ•˜๋‚˜ ์ƒ๊ฐํ•ด๋ณด์ž.

๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ปค์ง€๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋œ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ƒ์‹์ ์œผ๋กœ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

1. First In First Out (FIFO) Algorithm

ํŽ˜์ด์ง€ ๊ต์ฒด๋„ ์–ด๋–ค ์ˆœ์„œ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ซ“์•„๋‚ผ์ง€๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์Šค์ผ€์ค„๋ง์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šค์ผ€์ค„๋ง ์ •์ฑ…์—์„œ ํ•ญ์ƒ ๊ณ ๋ ค๋˜๋Š” ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๊ฐ€ FIFO ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ–ˆ๋‹ค.

victim page๋ฅผ ์„ ์ •ํ•  ๋•Œ, ๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์— 3๊ฐœ์˜ ํŽ˜์ด์ง€ frame์ด ์กด์žฌํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, 9๋ฒˆ์˜ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ณต๊ฐ„์„ ๋Š˜๋ ค์„œ 4๊ฐœ์˜ ํŽ˜์ด์ง€ frame์ด ์กด์žฌํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, 10๋ฒˆ์˜ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

์ƒ์‹์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ํ˜„์ƒ์ด๋‹ค.

=> Belady's Anomaly (Belady์˜ ์ด์ƒํ˜„์ƒ)

FIFO๋Š” ์ข‹์€ Replacement Algorithm์ด ๋  ์ˆ˜ ์—†๋‹ค.

 

2. Optimal Algorithm

FIFO ๋ฐฉ์‹์—์„œ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋“ฏ์ด ์ฐจํ›„์— ์ ‘๊ทผ๋  ํŽ˜์ด์ง€๊ฐ€ victim์œผ๋กœ ์„ ์ •๋˜๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๊ฐ€๊นŒ์šด ์‹œ๊ฐ„์— ์ ‘๊ทผ๋  ํŽ˜์ด์ง€๋Š” victim์œผ๋กœ ์„ ์ •ํ•˜์ง€ ๋ง์ž๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
=> ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฏธ๋ž˜์— ์ ‘๊ทผ๋  ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ์•Œ์•„์•ผ ํ•˜๋Š”๋ฐ ์‹ ์ด ์•„๋‹Œ ์ด์ƒ ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋ž˜๋„ ์•Œ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ด๋Ÿฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ตœ์ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์„ค์ •ํ•˜์ž.
=> ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์šด ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ผ ๊ฒƒ์ด๋‹ค.

ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ์ ์—์„œ ์ฐจํ›„์— ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ ‘๊ทผ๋  ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ํ–ˆ์„ ๋•Œ๋Š” ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ 6๋ฒˆ ๋ฐœ์ƒํ•œ๋‹ค.

 

3. Least Recently Used Algorithm

๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ข‹์€ ์ •๋ณด๋Š” ๊ณผ๊ฑฐ์˜ ์ •๋ณด๋ผ๊ณ  ํ–ˆ๋‹ค.

Locality์— ์˜ํ•ด ๊ณผ๊ฑฐ์— ์ž์ฃผ ์ ‘๊ทผ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ฏธ๋ž˜์—๋„ ์ž์ฃผ ์ ‘๊ทผ๋  ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ตœ๊ทผ์— ์ ‘๊ทผ๋œ ํŽ˜์ด์ง€๋Š” ์•ž์œผ๋กœ๋„ ์ ‘๊ทผ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์„ ๊ฒƒ์ด๋‹ค.
=> ์ตœ๊ทผ์— ๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ์ ‘๊ทผ์ด ๋œ ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•œ๋‹ค.

๊ณผ๊ฑฐ์˜ ์ ‘๊ทผ ํ–‰ํƒœ๋ฅผ ๋ณด๊ณ  ๋ฏธ๋ž˜์— ์ ‘๊ทผ๋  ๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์ธก.

optimal์€ ๋ฏธ๋ž˜๋ฅผ ๋‚ด๋‹ค๋ดค๋‹ค๋ฉด, LRU๋Š” ๊ณผ๊ฑฐ๋ฅผ ๋ณธ๋‹ค.

 

LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ปดํ“จํ„ฐ๋ฅผ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋ชจ๋‘๊ฐ€ ์•Œ๊ณ ์žˆ์–ด์•ผ ํ•  ๋งŒํผ ์‹œ์Šคํ…œ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

 

LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ OS์— ๊ตฌํ˜„ํ•˜๋ ค๋ฉด, ์ผ๋‹จ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ๊ฐ๊ฐ์˜ ํŽ˜์ด์ง€๊ฐ€ ์ตœ๊ทผ์— ์–ธ์ œ ์ ‘๊ทผ๋˜์—ˆ๋Š”์ง€ timestamp๊ฐ€ ๋‹ค ์ฐํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๊ฐ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ timestamp ์ •๋ณด๋“ค์ด ๋ณ„๋„๋กœ ๊ด€๋ฆฌ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

OS์—์„œ ํŽ˜์ด์ง€ ๋ฐฐ์—ด ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค.
=> ๋ฐ”๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋งคํ•‘ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— column ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ตœ๊ทผ์— ์ ‘๊ทผ๋œ ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•œ๋‹ค๋ฉด, ๋ชจ๋“  ํŽ˜์ด์ง€๋“ค์ด ์–ธ์ œ ์ ‘๊ทผ๋˜์—ˆ๋Š”์ง€ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. 

๊ทธ๋Ÿฐ๋ฐ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ๊ธฐ๋กํ•˜๋Š” space ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ๊ทธ๋ ‡๋‹ค๊ณ  ์น˜๊ณ , victim์„ ์„ ์ •ํ•ด์•ผ ํ•  ๋•Œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ ํŽ˜์ด์ง€์˜ timestamp๋ฅผ ๋ณด๊ณ  min ๊ฐ’์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค. => O(N)์ด ์†Œ์š”๋œ๋‹ค.
time ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋„ˆ๋ฌด ํฌ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋‚˜๋ฉด ํŽ˜์ด์ง€ ํดํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” O(N)์— ๊ฑธ์ณ ๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ์ ‘๊ทผ๋œ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

๊ทธ๋Ÿผ LRU๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฑด๊ฐ€?
LRU์™€ ๋น„์Šทํ•˜์ง€๋งŒ ํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ํ™• ์ค„์–ด๋“œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์—†์„๊นŒ?
=> LRU approximation algorithm

 

๊ทธ ์ „์— LRU ๊ตฌํ˜„์˜ ๋ฐฉ์‹์„ ์กฐ๊ธˆ ๋ณ€๊ฒฝํ•ด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

Counter implementation

timestamp๋ฅผ ์ฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํƒ€์ด๋จธ๋ผ๋Š” device์—์„œ ์‹œ๊ฐ„ ๊ฐ’์„ ๋ฐ›์•„์™€์•ผ ํ•˜๋Š”๋ฐ, ํƒ€์ด๋จธ๋„ ์žฅ์น˜์ด๋ฏ€๋กœ I/O๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•œ๋‹ค.
๋ฌผ๋ก  ๋””์Šคํฌ ์ ‘๊ทผ์ฒ˜๋Ÿผ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” I/O๋Š” ์•„๋‹ˆ์ง€๋งŒ ๊ทธ๋ž˜๋„ I/O๋‹ˆ๊นŒ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ์€ ๊ฑธ๋ฆฐ๋‹ค.
๊ตณ์ด ์ •ํ™•ํ•œ ์‹œ๊ฐ„์„ ๋ฐ›์•„์™€์„œ ๊ธฐ๋กํ•  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ??

CPU count๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ณ , CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค Count๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

=> ์ฆ‰, CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•œ ํšŸ์ˆ˜๊ฐ€ CPU count๊ฐ€ ๋œ๋‹ค.

CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ, ํ•ด๋‹น ํŽ˜์ด์ง€์— Count ๊ฐ’์„ ๊ธฐ๋กํ•œ๋‹ค.
์ด Count ๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ํŽ˜์ด์ง€๊ฐ€ ๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ์ ‘๊ทผ๋œ ํŽ˜์ด์ง€๊ฐ€ ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์—ฌ์ „ํžˆ victim์„ ์ฐพ๊ธฐ ์œ„ํ•ด O(N)์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค๋Š” ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

Stack implementation

ํŽ˜์ด์ง€๋“ค์„ double linked list๋กœ ๊ตฌํ˜„ํ•ด์„œ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ ‘๊ทผ๋œ ํŽ˜์ด์ง€๋ฅผ ์Šคํƒ์˜ ๊ฐ€์žฅ ์œ„๋กœ ์˜ฌ๋ฆฐ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋ชจ๋“  ํŽ˜์ด์ง€๋“ค์€ prev์™€ next ํฌ์ธํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— double linked list์ด๋‹ค.

ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ์ ์—์„œ Stack์˜ ์ œ์ผ ์•„๋ž˜์— ์žˆ๋Š” ํŽ˜์ด์ง€๊ฐ€ ๊ฐ€์žฅ ์ ‘๊ทผ๋œ์ง€ ์˜ค๋ž˜๋œ ํŽ˜์ด์ง€๊ฐ€ ๋œ๋‹ค.

O(1)๋งŒ์— victim์„ ์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด Stack์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

7์„ ์ ‘๊ทผํ–ˆ์„ ๋•Œ, 7์„ top์œผ๋กœ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

7์„ ์œ„๋กœ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” 6๋ฒˆ ํฌ์ธํ„ฐ์— ์ ‘๊ทผ์„ ํ•ด์„œ ํฌ์ธํ„ฐ ๊ฐ’์„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.
=> ์ฆ‰, 6๋ฒˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.
์ด Stack์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

victim ์„ ์ • ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งค์šฐ ์ปค์ง„๋‹ค.

 

Search๋ฅผ ์œ„ํ•œ overhead์™€ ์ž๋ฃŒ ๊ตฌ์กฐ ์œ ์ง€๋ฅผ ์œ„ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ํ•˜๋‚˜๋ฅผ ์ค„์ด๋ฉด ํ•˜๋‚˜๊ฐ€ ์ปค์ง€๋Š” ๊ด€๊ณ„๋‹ค.

LRU๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด์ฉ” ์ˆ˜ ์—†์ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.
์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๋ ค๋ฉด LRU ์„ฑ๋Šฅ์„ ์กฐ๊ธˆ ํฌ๊ธฐํ•  ์ˆ˜ ๋ฐ–์— ์—†๊ฒ ๋‹ค.

 

LRU Approximation Algorithms

Reference bit

ํŽ˜์ด์ง€๋งˆ๋‹ค ์ด ํŽ˜์ด์ง€๊ฐ€ ์ฐธ์กฐ๊ฐ€ ๋์œผ๋ฉด 1, ์ฐธ์กฐ๊ฐ€ ์•ˆ ๋์œผ๋ฉด 0์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค.
์ฒ˜์Œ์— ์ด ํŽ˜์ด์ง€๊ฐ€ ์˜ฌ๋ผ์˜ค๋ฉด 0์œผ๋กœ ์„ค์ •๋˜๊ณ , ๋‚˜์ค‘์— ์ด ํŽ˜์ด์ง€๊ฐ€ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ฐธ์กฐ๋˜๋ฉด 1๋กœ ๋ฐ”๋€๋‹ค.
์ด ๊ฐ’์€ ์ฃผ๊ธฐ์ ์œผ๋กœ 0์œผ๋กœ ๋‹ค์‹œ reset์„ ํ•ด์ค€๋‹ค.

victim์„ ์„ ์ •ํ•  ๋•Œ reference bit์ด 0์ธ ์• ๋“ค์„ victim์œผ๋กœ ์„ ์ •ํ•˜๊ฒ ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Searchํ•  ๋•Œ bit๊ฐ€ 0์ธ ์• ๋“ค ์ค‘ ์•„๋ฌด๊ฑฐ๋‚˜ ํ•˜๋‚˜๋ฅผ ์ฐพ์œผ๋ฉด ๋˜๋ฏ€๋กœ, Search ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งŽ์ด ์ค„์–ด๋“ ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ victim์„ ์„ ์ •ํ•ด์•ผ ํ•˜๋Š” ์‹œ์ ์— 0์ธ ์• ๋“ค์ด ๊ฝค ๋งŽ์ด ์žˆ์„ํ…๋ฐ, ๊ทธ ์ค‘์— ๋ˆ„๊ฐ€ ๋” ์˜ค๋ž˜ ์ „์— ์ฐธ์กฐ๋๋Š”์ง€๋Š” ๊ตฌ๋ถ„์ด ์•ˆ ๋œ๋‹ค.
=> ์ด๊ฑด ๋„ˆ๋ฌด ์‹ฌํ•˜๊ฒŒ ๊ฐ„๋žตํ™”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

 

Additional Reference Bits Algorithm

Reference bit 1๋น„ํŠธ ์™ธ์— ์ถ”๊ฐ€์ ์ธ Reference bit๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ฃผ๊ธฐ์ ์œผ๋กœ 0์œผ๋กœ resetํ•˜์ง€ ๋ง๊ณ , ํ˜„์žฌ Reference bit๋ฅผ Most Significant Bit(MSB)์— ์ ๊ณ  shift right ํ•œ๋‹ค.

=> ์ฆ‰, ๊ณผ๊ฑฐ์˜ ์ ‘๊ทผ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

8๊ฐœ์˜ ์ถ”๊ฐ€์ ์ธ ๋น„ํŠธ๊ฐ€ ๊ณผ๊ฑฐ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋น„ํŠธ๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ space ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋˜‘๊ฐ™์ด ๋ชจ๋“  ํŽ˜์ด์ง€์˜ Additional Reference bit๋ฅผ ํ™•์ธํ•ด์„œ victim์„ ์„ ์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ time ์˜ค๋ฒ„ํ—ค๋“œ๋„ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.
=> ์ด๊ฒƒ๋„ ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ์ข€ ๊ทธ๋ ‡๋‹ค.

 

Clock algorithm

๊ฐ ํŽ˜์ด์ง€๋Š” 1bit์˜ Reference bit๋ฅผ ๊ฐ–๊ณ , ํŽ˜์ด์ง€๋“ค์€ Circular queue์— ๊ด€๋ฆฌ๋œ๋‹ค.

๋‹ค์Œ ๋ฒˆ์— victim์œผ๋กœ ์„ ์ •๋  ํŽ˜์ด์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์žˆ๋‹ค.
=> ์ด ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•œ๋‹ค.

์ด ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŽ˜์ด์ง€์˜ reference bit๊ฐ€ 0์ด๋ฉด ๊ทธ๋ƒฅ ์–˜๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•œ๋‹ค.

์ด ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŽ˜์ด์ง€์˜ reference bit๊ฐ€ 1์ด๋ฉด ์ตœ๊ทผ์— ์ฐธ์กฐ๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ์ด ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•˜์ง€ ์•Š๊ณ  reference bit๋ฅผ 0์œผ๋กœ ๋ฐ”๊พผ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํฌ์ธํ„ฐ๋ฅผ ํ•œ ์นธ ์˜ฎ๊ฒจ์„œ ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•œ๋‹ค.
=> reference bit๊ฐ€ 0์ธ ์• ๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ํฌ์ธํ„ฐ๋ฅผ ์ „์ง„

Reference bit algorithm๊ณผ์˜ ์ฐจ์ด๋Š” reference bit algorithm์—์„œ๋Š” 0๋“ค ์‚ฌ์ด์—์„œ ๋ˆ„๊ฐ€ ๋” ์˜ค๋ž˜๋๋Š”์ง€๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ๋Š” ๋„๋Š” ์ˆœ์„œ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉ๊ธˆ ์ „์— 0์œผ๋กœ ๋ฐ”๊พผ ๋น„ํŠธ์™€ ์•„๊นŒ ์ „์— 0์œผ๋กœ ๋ฐ”๊พผ ๋น„ํŠธ๋Š” ์ˆœ์„œ ์ƒ์˜ ์ฐจ์ด๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

0์œผ๋กœ ๋ฐ”๊พธ๊ณ  ํ•œ ๋ฐ”ํ€ด๋ฅผ ๋Œ๊ณ  ๋‹ค์‹œ ์™”์„ ๋•Œ ์—ฌ์ „ํžˆ 0์ด๋ฉด, ํ•œ ๋ฐ”ํ€ด๋ฅผ ๋Œ ๋™์•ˆ ์ ‘๊ทผ์ด ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ๊ทธ๋•Œ๋Š” victim์œผ๋กœ ์„ ์ •ํ•œ๋‹ค.

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด, 0์ธ bit ์‚ฌ์ด์—๋„ ๋” ์˜ค๋ž˜ ์ „์— ์ฐธ์กฐ๊ฐ€ ๋˜์—ˆ๋˜ ํŽ˜์ด์ง€๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๋‹ค์‹œ ๋Œ์•„์™”์„ ๋•Œ ๋” ๋จผ์ € ๋งŒ๋‚œ 0์ด ๋” ์˜ค๋ž˜ ์ „์— 0์œผ๋กœ ๋ฐ”๋€ bit์ผ ๊ฒƒ์ด๋‹ค.
=> ์–˜๊ฐ€ victim์œผ๋กœ ์„ ์ •๋˜์–ด์•ผ ํ•œ๋‹ค.

 

Second change(clock) page-replacement algorithm์€ ์„ฑ๋Šฅ์ด ์ข‹์œผ๋ฉด์„œ๋„ space overhead์™€ time overhead๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํฌ์ง€ ์•Š์€ ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.


Counting Algorithms

์ง€๊ธˆ๊นŒ์ง€๋Š” ์ ‘๊ทผ ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ์ ‘๊ทผ๋œ ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ–ˆ๋‹ค.

์ ‘๊ทผ ์‹œ์ ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ์ ‘๊ทผ ๋นˆ๋„๋„ ์ค‘์š”ํ•œ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ํŽ˜์ด์ง€๋Š” ๋ฐ”๋กœ ์ง์ „์— ํ•œ ๋ฒˆ ์ ‘๊ทผ์ด ๋˜์—ˆ๊ณ , ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋Š” ์—„์ฒญ ๋งŽ์ด ์ ‘๊ทผ์ด ๋˜์—ˆ๋Š”๋ฐ ๋ฐฉ๊ธˆ ์ „์—๋Š” ์ ‘๊ทผ์ด ๋˜์ง€ ์•Š์•˜๋‹ค.

LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋งŽ์ด ์ ‘๊ทผ๋œ ํŽ˜์ด์ง€๊ฐ€ ๋ฐฉ๊ธˆ ์ „์— ์ ‘๊ทผ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ด์œ ๋กœ ๊ฐ€์ฐจ์—†์ด victim์œผ๋กœ ์„ ์ •์ด ๋œ๋‹ค.

 

LFU (Least Frequently Used) Algorithm

์ตœ๊ทผ ์ ‘๊ทผ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•˜๋Š” ๋ฐฉ์‹

 

MFU (Most Frequently Used) Algorithm

์ตœ๊ทผ์— ๊ฐ€์žฅ ์ž์ฃผ ์ ‘๊ทผ๋œ ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•˜์ž๋Š” ๋ฐฉ์‹

 

๋ง๋„ ์•ˆ ๋˜๋Š” ์†Œ๋ฆฌ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‚˜๋ฆ„์˜ ์ฒ ํ•™์ด ์žˆ๋‹ค.

์ ‘๊ทผ ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ํŽ˜์ด์ง€๋Š” ์ตœ๊ทผ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์„œ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ๋‹ค๋Š” ์•„์ด๋””์–ด
=> ์•ž์œผ๋กœ ์ž์ฃผ ์ ‘๊ทผ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

์ ‘๊ทผ ๋นˆ๋„๊ฐ€ ๋†’์•˜๋˜ ํŽ˜์ด์ง€๋Š” ์˜ค๋ž˜ ์ „์— ์˜ฌ๋ผ์™€์„œ ์ถฉ๋ถ„ํžˆ ์ ‘๊ทผ์ด ๋˜์—ˆ์œผ๋ฏ€๋กœ ์•ž์œผ๋กœ๋Š” ์ ‘๊ทผ ๋นˆ๋„๊ฐ€ ๋‚ฎ์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— victim์œผ๋กœ ์„ ์ •ํ•œ๋‹ค.

 

์‹œ์Šคํ…œ์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ, ์–ด๋–ค ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋Œ๋ฆฌ๋Š” ์‹œ์Šคํ…œ์ธ์ง€์— ๋”ฐ๋ผ LFU๊ฐ€ ์ข‹์€ ๊ฒฝ์šฐ๋„ ์žˆ๊ณ  MFU๊ฐ€ ์ข‹์€ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. => ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ข‹๋‹ค๊ณ  ๋‹จ์ •์ง€์–ด ์–˜๊ธฐํ•  ์ˆ˜ ์—†๋‹ค.

๋Œ€์‹  ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์–ด๋–ค ๊ฒƒ์ด ๋” ์ข‹์€์ง€๋ฅผ ๋”ฐ์ ธ๋ดค์„ ๋•Œ LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐ€์žฅ ์ข‹๋”๋ผ.

 

โ€ป ๋ณธ ๋‚ด์šฉ์€ ํ•œ์–‘๋Œ€ํ•™๊ต ๊ฐ•์ˆ˜์šฉ ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

728x90

'HYU > ์šด์˜์ฒด์ œ(OS)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

11. Virtual Memory (2)  (0) 2023.05.19
7. Deadlocks  (0) 2023.05.18
9. Memory Management (2)  (0) 2023.05.07
8. Memory Management (1)  (0) 2023.05.02
6. Process Syncronization (2)  (0) 2023.04.07