๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Dev Blog
CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

by ์œ ์ง„์˜ 2023. 5. 20.
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์šด์˜์ฒด์ œ ๊ฐ•์˜์™€ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ ๊ต์žฌ์— ๋Œ€ํ•œ TIL์ž…๋‹ˆ๋‹ค.

 

์ €๋ฒˆ ํฌ์ŠคํŒ…์€ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฐ์น˜(Placement) ์ •์ฑ…์— ๊ด€ํ•œ ๊ฒƒ์ด์—ˆ๋‹ค๋ฉด, ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ(Fetch) ์ •์ฑ…์— ๊ด€ํ•œ ๊ฒƒ์ด๋‹ค.

์š”๊ตฌ ํŽ˜์ด์ง•

์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“ˆ์„ ์ „๋ถ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค ์‹คํ–‰ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ชจ๋“ˆ์€ ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๊ธฐ๋Šฅ์„ ์š”๊ตฌํ•  ๋•Œ์™€ ๊ฐ™์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌํ•  ๋•Œ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ์š”๊ตฌ ํŽ˜์ด์ง•(Demand Paging)์ด๋ผ๊ณ  ํ•œ๋‹ค.
 
์บ์‹œ๊ฐ™์ด ์•ž์œผ๋กœ ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒ๋˜๋Š” ๋ถ€๋ถ„์„ ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์“ธ๋ชจ์—†๊ฒŒ ๋˜๋ฉด ํ”ผํ•ด๊ฐ€ ๋งค์šฐ ํฌ๋ฏ€๋กœ ํ˜„๋Œ€์˜ ์šด์˜์ฒด์ œ๋Š” ์š”๊ตฌ ํŽ˜์ด์ง•์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ ์š”๊ตฌ ํŽ˜์ด์ง•์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌํ•  ๋•Œ๊นŒ์ง€ ํŽ˜์ด์ง€๋ฅผ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ์ตœ๋Œ€ํ•œ ๋ฏธ๋ฃจ๊ธฐ ๋•Œ๋ฌธ์—, ์“ฐ๊ธฐ ์‹œ์  ๋ณต์‚ฌ(Copy On Write)์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๋“ฏ, ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๊ฒŒ์œผ๋ฅธ ์Šค์™€ํผ(Lazy Swapper)๋ผ๊ณ  ํ•œ๋‹ค.

ํŽ˜์ด์ง€ ๋ถ€์žฌ(Page Fault)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ ๊ทธ ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ์ƒํ™ฉ์„ ํŽ˜์ด์ง€ ๋ถ€์žฌ๋ผ๊ณ  ํ•œ๋‹ค. ํŽ˜์ด์ง€ ๋ถ€์žฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์Šค์™‘ ์˜์—ญ์—์„œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค(Swap-In).

์ฐธ๊ณ ๋กœ, ์„ธ๊ทธ๋จผํ…Œ์ด์…˜ ์˜ค๋ฅ˜(Segmentation Fault)์™€ ํŽ˜์ด์ง€ ๋ถ€์žฌ(Page Fault)์˜ ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  ์„ธ๊ทธ๋จผํ…Œ์ด์…˜ ์˜ค๋ฅ˜ ํŽ˜์ด์ง€ ๋ถ€์žฌ
์›์ธ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๊ด€๋ จ ์˜ค๋ฅ˜ ์š”๊ตฌ ํŽ˜์ด์ง€์˜ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์žฌ
ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ํ”„๋กœ์„ธ์Šค ๊ฐ•์ œ ์ข…๋ฃŒ Swap-In

 

ํŽ˜์ด์ง€ ๋ถ€์žฌ์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ์•Œ๋ ค๋ฉด ๋จผ์ € ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ(PTE: Page Table Entry)

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜(ํ•œ ํ–‰)๋ฅผ PTE๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 


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

๋‹ค์Œ์€ ๊ฐ๊ฐ์˜ ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๋“ค์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์ด๋‹ค.

์ ‘๊ทผ ๋น„ํŠธ(Access bit)
ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํ›„ ์‚ฌ์šฉํ•œ ์ ์ด ์žˆ์œผ๋ฉด 1, ์—†์œผ๋ฉด 0์ด ๋œ๋‹ค. ์ฐธ์กฐ ๋น„ํŠธ(Reference bit)๋ผ๊ณ ๋„ ํ•œ๋‹ค.

๋ณ€๊ฒฝ ๋น„ํŠธ(Modified bit)
ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํ›„ ๋ฐ์ดํ‹ฐ ๋ณ€๊ฒฝ์ด ์žˆ์—ˆ๋‹ค๋ฉด 1, ์—†์—ˆ๋‹ค๋ฉด 0์ด ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ์˜ค์—ผ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ๋กœ ๋”ํ‹ฐ ๋น„ํŠธ(Dirty bit)๋ผ๊ณ ๋„ ํ•œ๋‹ค.

์œ ํšจ ๋น„ํŠธ(Valid bit)
ํŽ˜์ด์ง€๊ฐ€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์œผ๋ฉด 0, ์Šค์™‘ ์˜์—ญ์— ์žˆ์œผ๋ฉด 1์ด ๋œ๋‹ค. ํ˜„์žฌ ๋น„ํŠธ(Present bit)๋ผ๊ณ ๋„ ํ•œ๋‹ค.


์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ๋น„ํŠธ
ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ๊ถŒํ•œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋งŒ์•ฝ, ์ฝ๊ธฐ ๊ถŒํ•œ์ด ์—†๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฝ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค ํ•  ๋•Œ ์ ‘๊ทผ์„ ์ฐจ๋‹จํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์„ธ ๊ฐ€์ง€ ๋น„ํŠธ๋ฅผ ํ•ฉ์ณ์„œ ์ ‘๊ทผ ๊ถŒํ•œ ๋น„ํŠธ(Rights bit)๋ผ๊ณ ๋„ ํ•œ๋‹ค.

ํŽ˜์ด์ง€ ๋ถ€์žฌ๋Š” ์š”์ฒญํ•œ ํŽ˜์ด์ง€์˜ PTE์—์„œ ์œ ํšจ ๋น„ํŠธ๊ฐ€ 1์ผ ๊ฒฝ์šฐ์˜ ์ƒํ™ฉ์„ ์˜๋ฏธํ•œ๋‹ค.

ํŽ˜์ด์ง€ ๋ถ€์žฌ ๋ฐœ์ƒ ์‹œ ์กฐ์น˜

 

1๋ฒˆ ๊ทธ๋ฆผ

 

2๋ฒˆ ๊ทธ๋ฆผ


2๋ฒˆ ๊ทธ๋ฆผ์€ 1๋ฒˆ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ํ™˜๊ฒฝ์—์„œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŽ˜์ด์ง€ 3์„ ์š”์ฒญํ–ˆ์„ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์–ด๋–ค ์ž‘์—…์„ ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ค€๋‹ค. ๋‹ค์Œ์€ ์ž‘์—…์— ๋Œ€ํ•œ ์ผ๋ จ์˜ ๊ณผ์ •์ด๋‹ค.

  • ํŽ˜์ด์ง€ 3์— ๋Œ€ํ•œ PTE์˜ ์œ ํšจ ๋น„ํŠธ๊ฐ€ 1์ด๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ๋ถ€์žฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž๋Š” PTE์˜ ์ฃผ์†Œ ํ•„๋“œ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์Šค์™‘ ์˜์—ญ ๋‚ด ์ฃผ์†Œ, ์ฆ‰ 0๋ฒˆ์— ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋น„์–ด ์žˆ๋Š” 5๋ฒˆ ํ”„๋ ˆ์ž„์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
  • ์Šค์™‘์ธ์ด ์™„๋ฃŒ๋˜๋ฉด PTE 3์˜ ์œ ํšจ ๋น„ํŠธ๋Š” 1์—์„œ 0์œผ๋กœ, ์ฃผ์†Œ ํ•„๋“œ ๊ฐ’์€ ํ”„๋ ˆ์ž„ 5๋ฒˆ์œผ๋กœ ๋ฐ”๊พธ๊ณ , ํ”„๋ ˆ์ž„ 5๋ฒˆ์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌํ•œ๋‹ค.


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

3๋ฒˆ ๊ทธ๋ฆผ


3๋ฒˆ ๊ทธ๋ฆผ์€ 2๋ฒˆ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ํ™˜๊ฒฝ, ์ฆ‰ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋นˆ ํ”„๋ ˆ์ž„์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์–ด๋–ค ์ž‘์—…์„ ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ค€๋‹ค.



๋Œ“๊ธ€