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

8. Memory Management (1)

by Jaeguk 2023. 5. 2.

OS๊ฐ€ ํ•˜๋Š” Memory Management์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ CPU๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ data์™€ Instruction์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ฃผ์†Œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. PC, MAR์— ๋“ค์–ด์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ๋ณด๊ณ  ๊ฐ€์ ธ์˜ด.

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ, OS๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์—์„œ ํ•˜๋Š” ์ผ์€ ํฌ๊ฒŒ 2๊ฐ€์ง€.
1. ์ฃผ์†Œ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€. (๋ณธ์งˆ์  ๊ธฐ๋Šฅ)
2. virtual memory - ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ํšจ์œจ์  ์‚ฌ์šฉ

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™”์„๋•Œ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์— ์ž์‹ ์˜ address space๋ฅผ ๋ฒ—์–ด๋‚œ ์˜์—ญ์— ์ ‘๊ทผํ•˜๋ ค ํ•˜๋ฉด ๋ง‰์•„์ฃผ๋Š” ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค.
๋Œ€์‹  ์ž์‹ ์˜ ์˜์—ญ์ด ์•„๋‹Œ ์ปค๋„ ์˜์—ญ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ System call์„ ํ†ตํ•ด์„œ ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Multistep Processing of a User Program

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

ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์†Œ์Šค ์ฝ”๋“œ์— ๋“ค์–ด์žˆ๋Š” ํ•จ์ˆ˜๋“ค์ด ์„œ๋กœ๊ฐ€ ์„œ๋กœ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด์„  ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ € C ํŒŒ์ผ์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฑฐ์•ผ! ์ด๋Ÿฐ ๊ฑฐ
์ด ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋งํ‚น์ด๋‹ค. ๋ง์ปค๊ฐ€ object ํŒŒ์ผ๋“ค์„ ๋‹ค ๋ชจ์•„์„œ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์ค€๋‹ค. ๋ฌถ์–ด์ง„ ๊ฒŒ load module์ด๊ณ ,
๋ง์ปค๊ฐ€ ๋งŒ๋“  load module์€ loader๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ํƒ‘์žฌํ•œ๋‹ค. ์ด๋•Œ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ํ˜ธ์ถœํ•œ c library ํ•จ์ˆ˜ ๋“ฑ๋„ ๊ฐ™์ด ๋ฉ”๋ชจ๋ฆฌ์— ํƒ‘์žฌํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋์ด ์•„๋‹ˆ๋ผ dynamic library๋Š” ์‹ค์ œ ํ˜ธ์ถœ ์‹œ์— ๋Ÿฐํƒ€์ž„์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๊ฒŒ ๋œ๋‹ค.

 

Address Space

์ด์ „์—๋„ ๋งํ–ˆ๋“ฏ์ด, ํ”„๋กœ์„ธ์Šค๋Š” Address space์˜ ํ˜•ํƒœ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๊ฒŒ ๋œ๋‹ค.

์™œ Address space์ผ๊นŒ?
๋ฉ”๋ชจ๋ฆฌ์— ํƒ‘์žฌ๋œ ์ด ํ”„๋กœ์„ธ์Šค์˜ ์˜์—ญ์„ ์ฃผ์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์†Œ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์˜์—ญ์ด๋ผ๊ณ  ํ•ด์„œ address space๋ผ๊ณ  ํ•œ๋‹ค.

CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•ด์„œ Instruction์ด๋‚˜ data๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๊ฑฐ๊ธฐ์˜ ๋ฒˆ์ง€์ˆ˜๋ฅผ ์•Œ์•„์•ผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ณ , ๊ทธ ๋ฒˆ์ง€์ˆ˜๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์—์„œ ๋ณ€์ˆ˜ ๋ช…์œผ๋กœ ์„ ์–ธํ•œ ์ด ๋ณ€์ˆ˜ ๋ช…์ด ์ด ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ address space ์ƒ์˜ ์ฃผ์†Œ์™€ ๋งคํ•‘์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜ ๋ช…๊ณผ ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ๋งคํ•‘์‹œ์ผœ ์ฃผ๋Š” ๊ฒƒ์ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ์ค‘์š”ํ•œ ์—ญํ• ์ด๋‹ค.

 

๋ณ€์ˆ˜ ๋ช…๊ณผ ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์„ Binding์ด๋ผ๊ณ  ํ•œ๋‹ค.

Binding์€ ์ผ์–ด๋‚˜๋Š” ์‹œ์ ์— ๋”ฐ๋ผ 3๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

1. Compile time binding.

์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋ฐ”์ธ๋”ฉ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ด๋‹ค.

์ดˆ์ฐฝ๊ธฐ ์ปดํ“จํ„ฐ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ๋ฐ–์— ์—†์„ ๋•Œ, ์˜ค๋กœ์ง€ ํ•œ ์ˆœ๊ฐ„์—๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์˜ OS๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„ ๋ฐ”์ธ๋”ฉ์„ ์ผ๋‹ค.
๊ฐ ๋ณ€์ˆ˜ ๋ช…(์‹ฌ๋ณผ)์˜ ์ฃผ์†Œ๋ฅผ ๋งคํ•‘์„ ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผํ•  ๋•Œ ํ–ˆ๋‹ค. ์ปดํŒŒ์ผ ํ•˜๊ณ  ๋‚˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ์•ˆ์— ๊ฐ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ ๊ฐ’์ด ํ•˜๋“œ ์ฝ”๋”ฉ์ด ๋œ๋‹ค.
=> ์ฝ”๋“œ ์•ˆ์— ์ฃผ์†Œ๊ฐ€ ๋‹ค ๋ฐ•ํ˜€์žˆ์œผ๋‹ˆ๊นŒ CPU๋Š” ๊ทธ๋ƒฅ ๊ฑฐ๊ธฐ์— ์ ‘๊ทผํ•˜๋ฉด ๋œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜๋ฉด DRAM์—์„œ ์ปค๋„ ์˜์—ญ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์˜์—ญ์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ „๋ถ€ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
๊ทธ๋Ÿผ ์ปค๋„ ์˜์—ญ ๋ฐ”๋กœ ์œ„๋ถ€ํ„ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ผ์˜จ๋‹ค ๊ฐ€์ •ํ•˜๊ณ  ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜๋ฉด ๋จ.
=> ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค๋ฅธ OS ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰์‹œํ‚ค๋ฉด ์ปค๋„ ์˜์—ญ์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ € ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘์ ์ด ๋‹ฌ๋ผ์ง„๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ ํ”„๋กœ๊ทธ๋žจ์€ ๊ทธ ๊ธฐ๊ณ„์—์„œ ๋‹ค์‹œ ์ปดํŒŒ์ผ์„ ํ•ด์•ผ ํ•œ๋‹ค.

2. Load time binding.

์ปดํŒŒ์ผํ•  ๋•Œ๋Š” ์ƒ๋Œ€์ ์ธ ์ฃผ์†Œ๋งŒ ์ฝ”๋“œ์— ๋ฐ•์•„๋„ฃ๋Š”๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค์˜ address space๊ฐ€ 0๋ฒˆ์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  0๋ฒˆ์ง€์—์„œ ๋ช‡ ๋ฐ”์ดํŠธ ๋–จ์–ด์ง„ ๊ณณ์— ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ์ƒ๋Œ€์ ์ธ ์ฃผ์†Œ(offset)๋ฅผ ๋ณ€์ˆ˜๋งˆ๋‹ค binding.

์ƒ๋Œ€์ ์ธ ์ฃผ์†Œ๋Š” ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ์ฃผ์†Œ๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹ค์ œ DRAM์˜ 0๋ฒˆ์ง€์— ์˜ฌ๋ผ๊ฐ€๋ฉด ์ผ์น˜ํ•˜๊ฒ ์ง€๋งŒ 0๋ฒˆ์ง€์—๋Š” ๋ฌด์กฐ๊ฑด ์ปค๋„์ด ์˜ฌ๋ผ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿด ์ˆ˜ ์—†๋‹ค. ์‹ค์ œ physicalํ•œ ์ฃผ์†Œ๊ฐ€ ๊ฒฐ์ •๋˜๋Š” ์‹œ์ ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋Š” ์‹œ์ ์— ๊ฒฐ์ •๋œ๋‹ค. ๊ทธ๋•Œ ์ด ํ”„๋กœ๊ทธ๋žจ์ด ํƒ‘์žฌ๋œ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ ์ƒ๋Œ€์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ชจ๋“  ์ฃผ์†Œ๋ฅผ ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ load time์ด๋ผ๊ณ  ํ•จ.

๋งŒ์•ฝ ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ 100๋ฒˆ์ง€๋ถ€ํ„ฐ ํ• ๋‹น๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋ฉด, 100๋ฒˆ์ง€์— ์•„๊นŒ ๋ฐ”์ธ๋”ฉํ•œ ์ƒ๋Œ€ ์ฃผ์†Œ๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ๊ทธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

=> ๋กœ๋“œํ•  ๋‹น์‹œ์— ์‹ค์ œ ์ฃผ์†Œ๊ฐ€ ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— load time binding.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด OS๊ฐ€ ๋‹ฌ๋ผ์ ธ์„œ ์ปค๋„ ์˜์—ญ์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ ธ๋„ ์ƒ๋Œ€ ์ฃผ์†Œ๊ฐ€ ์žˆ์œผ๋ฉด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์˜ฌ๋ผ์˜ฌ ๋•Œ๋„ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์ž„.

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

3. Execution time binding

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

ํ”„๋กœ์„ธ์Šค์˜ ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ๋”๋ผ๋„ ์ƒ๋Œ€ ์ฃผ์†Œ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— (์‹œ์ž‘์„ 0๋ฒˆ์ง€๋กœ ๊ฐ€์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—) ๋ฐ”๋€ ์œ„์น˜์— ๋Œ€ํ•œ ๊ด€๋ฆฌ๋ฅผ OS๊ฐ€ ํ•˜๊ฒŒ ๋˜๊ณ , ์‹œ์ž‘ ์ฃผ์†Œ๊ฐ€ ์•„๊นŒ๋Š” 100๋ฒˆ์ง€์˜€๋Š”๋ฐ ์ด์   200๋ฒˆ์ง€๋กœ ๋ฐ”๋€Œ์—ˆ์–ด ์ด๊ฒƒ๋งŒ ์•Œ๋ ค์ฃผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.
=> ์ƒ๋Œ€ ์ฃผ์†Œ๋ฅผ ์‹ค์ œ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋ญ”๊ฐ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
=> address mapping table ์ด๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ํ•„์š”
=> ์ด ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด์„œ ๋น ๋ฅด๊ฒŒ ์ฃผ์†Œ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋ˆ„๊ตฐ๊ฐ€๋„ ํ•„์š”ํ•˜๋‹ค. ๋งค Instruction์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ”๊ฟ”์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋นจ๋ผ์•ผ ํ•œ๋‹ค. ํ•˜๋“œ์›จ์–ด์˜ ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ๋ฐ–์— ์—†์Œ.
=> ๊ฑ”๊ฐ€ MMU( Memory Management Unit) ์ด๋‹ค.

 

Address Mapping Table

logicalํ•œ 0๋ฒˆ์ง€๋Š” ์‹ค์ œ 500๋ฒˆ์ง€์— ์ €์žฅ๋˜์–ด ์žˆ์–ด. ๋˜๋Š” logicalํ•œ 500๋ฒˆ์ง€๋Š” ์‹ค์ œ 20000๋ฒˆ์ง€์— ์ €์žฅ๋˜์–ด ์žˆ์–ด.
์ด๊ฑธ mapping table์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

0๋ฒˆ์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋ฐ”์ธ๋”ฉํ•œ ์ƒ๋Œ€ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์‹ค์ œ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•„์š”ํ•œ ์ •๋ณด๋“ค์ด ์žˆ๋‹ค.

๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜์˜ ์‹œ์ž‘ ์ฃผ์†Œ์™€ Address space์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”. PCB์•ˆ์—๋Š” ์ด๊ฑธ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์‹ค์ œ๋กœ ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰์ด ๋  ๋•Œ ์ด ๊ฐ’๋“ค์ด CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ์ด ๋œ๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ๋“ค์ด base์™€ limit.

์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ด๋ ค๊ฐ”๋‹ค๊ฐ€ ๋‚˜์ค‘์— ๋‹ค์‹œ ์˜ฌ๋ผ์˜ค๋ฉด base ๊ฐ’์€ ๋ฐ”๋€” ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. limit์€ ์•ˆ ๋ฐ”๋€” ์ˆ˜ ์žˆ์ง€๋งŒ.
=> base๋Š” load time์— ๊ฒฐ์ •์ด ๋œ๋‹ค.

 

Logical vs Physical Address Space

  • Logical address

: ๋…ผ๋ฆฌ ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•˜๋Š” ์ฃผ์†Œ ๊ณต๊ฐ„

CPU๊ฐ€ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ฃผ์†Œ๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ์ด๋‹ค. CPU๊ฐ€ ์–ด๋–ค ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•ด์„œ ๋ณ€์ˆ˜ ๊ฐ’์„ ์ฝ์–ด์˜ค๋ ค๊ณ  ํ•  ๋•Œ, CPU๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๊ณ  ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ฃผ์†Œ. ์ฆ‰, CPU๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์ฃผ์†Œ ์ฒด๊ณ„๋ฅผ Logical address, virtual address ๋ผ๊ณ  ํ•œ๋‹ค.
=> 0๋ฒˆ์ง€๋ฅผ ์‹œ์ž‘ ์ฃผ์†Œ๋กœ ๊ฐ€์ •ํ•ด์„œ ๋งŒ๋“ค์–ด๋‚ธ ์ƒ๋Œ€ ์ฃผ์†Œ

  • Physical address

: ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•˜๋Š” ์ฃผ์†Œ ๊ณต๊ฐ„

์‹ค์ œ DRAM์˜ ์ฃผ์†Œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์ฃผ์†Œ ์ฒด๊ณ„๋ฅผ physical address๋ผ๊ณ  ํ•œ๋‹ค.

 

CPU๊ฐ€ ์–ด๋–ค ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ๋•Œ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–ด๋””์— ์žˆ๋Š”์ง€๋Š” ์‹ ๊ฒฝ์“ฐ์ง€๋ง๊ณ  ๋„ˆ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” Logical address๋ฅผ ์ด์šฉํ•ด์„œ ์ ‘๊ทผํ•ด๋ผ. ์‹ค์ œ๋กœ DRAM์ƒ์˜ ์ฃผ์†Œ๋Š” OS๊ฐ€ ๊ด€๋ฆฌํ•˜๊ฒ ๋‹ค.

CPU๊ฐ€ ์ผ์ผ์ด ๋ชจ๋“  ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์•Œ ํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋œ๋‹ค.

์ด๊ฒŒ compile time binding๊ณผ load time binding์„ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ์ด๋ฏธ ๋ณ€์ˆ˜์— ๋ฐ•ํ˜€์žˆ๋Š” ์ฃผ์†Œ๊ฐ€ physical ์ฃผ์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์— CPU๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” Logical address์™€ ์‹ค์ œ DRAM์˜ Physical address๊ฐ€ ์ผ์น˜ํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ execution time binding์—์„œ๋Š” CPU๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์ฃผ์†Œ์ธ logical address๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ์ด๊ฑธ MMU๊ฐ€ ํ…Œ์ด๋ธ”์„ ๋ณด๊ณ  ์‹ค์ œ physical address๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ฆ‰, CPU๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์ฃผ์†Œ์™€ DRAM์ƒ์˜ ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ๋ฐ–์— ์—†์Œ.
=> Execution time binding์—์„œ๋Š” ๋‘ ์ฃผ์†Œ ์ฒด๊ณ„๊ฐ€ ๋ถ„๋ฆฌ๋œ๋‹ค.
=> ์š”์ฆ˜ ๋Œ€๋ถ€๋ถ„์˜ OS๋Š” Execution time binding์„ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— CPU์˜ ์ฃผ์†Œ ์ฒด๊ณ„์™€ ์‹ค์ œ DRAM์˜ ์ฃผ์†Œ ์ฒด๊ณ„๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅด๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

Memory-Management Unit(MMU)

Execution time binding์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ logical address๊ฐ€ physical address๋กœ ๋ฐ”๋€Œ์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ์ฃผ์†Œ ๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋นจ๋ผ์•ผ ํ•ด์„œ ํ•˜๋“œ์›จ์–ด์˜ ์ง€์›์„ ๋ฐ›๋Š”๋‹ค๊ณ  ํ–ˆ๋‹ค.
=> ๊ทธ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๊ฐ€ MMU์ด๋‹ค.

CPU๊ฐ€ ๋ฐœ์ƒ์‹œํ‚จ Logical addres๋ฅผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ์ž‘ ์ฃผ์†Œ์ธ Base register ๊ฐ’์— ๋”ํ•ด์„œ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

=> ์ด ๊ณผ์ •์„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ํ•ด์ฃผ๋Š” ํ•˜๋“œ์›จ์–ด๊ฐ€ MMU์ด๋‹ค.

 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ์ฃผ์†Œ๋Š” ๊ณ„์†ํ•ด์„œ ๋ฐ”๋€” ๊ฒƒ์ด๋‹ค. ๊ณ„์† ๋ฐ”๋€Œ๋Š” ์‹ค์ œ ์ฃผ์†Œ๋ฅผ ์‹ ๊ฒฝ์“ฐ๋ฉด์„œ  ์ผ์„ ํ•˜๋ฉด CPU๊ฐ€ ์ผ์„ ์ œ๋Œ€๋กœ ํ•˜์ง€ ๋ชป ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— CPU๋Š” logical address๋งŒ ์•Œ๊ณ  ์ผ์„ ํ•˜๋ฉด ์‹ค์ œ ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฑด MMU๊ฐ€ ํ•ด์ค€๋‹ค.

CPU๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋งŒ ์•Œ๊ณ  ์‹ค์ œ ์ฃผ์†Œ๋Š” ์ „ํ˜€ ์•Œ์ง€ ๋ชป ํ•œ๋‹ค.

 

์Œ ๊ทธ๋Ÿฌ๋ฉด ๊ฒฐ๊ตญ MMU๊ฐ€ ํ•˜๋Š” ์ผ์€ Base register์˜ ๊ฐ’์— CPU๊ฐ€ ๋ฐœ์ƒ์‹œํ‚จ ์ƒ๋Œ€ ์ฃผ์†Œ๋ฅผ ๋”ํ•ด์„œ ๋ฆฌํ„ดํ•˜๋Š” ๊ฑด๋ฐ, ํ•˜๋“œ์›จ์–ด๋กœ ๊นŒ์ง€ ๊ตฌ์šธ ํ•„์š”๊ฐ€ ์žˆ์—ˆ์„๊นŒ??

=> ์ด๊ฑด ๋’ค์— ๋‚˜์˜ฌ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์•Œ๊ฒŒ ๋˜๋ฉด ๋‹จ์ˆœํ•œ ๋ง์…ˆ์œผ๋กœ ์ด๋ค„์ง€๋Š” ๊ฑด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.


์ผ๋‹จ ํ•œ ๋ฒˆ address space๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋ฉด ๊ทธ๊ฒŒ ๋ฐ”๋€” ์ผ์ด ๋ญ๊ฐ€ ์žˆ์„๊นŒ?

์ง€๊ธˆ๊นŒ์ง€ ์•Œ๊ณ  ์žˆ๋Š” ์ง€์‹์œผ๋กœ๋งŒ ๋Œ€๋‹ต์„ ์ค€๋‹ค๋ฉด, ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ผ์˜ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด Medium term scheduler๊ฐ€ swap์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ ์ฃผ๋กœ suspend๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ swap out์ด ๋œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ซ’๊ฒจ๋‚œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚˜์ค‘์— suspend๊ฐ€ ํ•ด์ œ๊ฐ€ ๋˜์–ด์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์‹œ์ ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, ์ „์— ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋˜ ์ฃผ์†Œ์— ์ •ํ™•ํžˆ ๋‹ค์‹œ ์˜ฌ๋ผ์˜จ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

๊ฒฐ๊ตญ ํ•œ ๋ฒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ผ์˜ค๋ฉด ๋๊นŒ์ง€ ๊ทธ ์ž๋ฆฌ๋ฅผ ์ง€ํ‚จ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Execution time binding์„ ํ•ด์•ผ ํ•œ๋‹ค. CPU ๋„ˆ๋Š” logical address๋ฅผ ์ด์šฉํ•ด์„œ๋งŒ ์ ‘๊ทผํ•ด, ์‹ค์ œ ์ฃผ์†Œ๋กœ ๋ฐ”๊พธ๋Š” ๊ฑด MMU๊ฐ€ ํ•  ๊ฑฐ๋‹ˆ๊นŒ.
์ฆ‰, ์Šค์™‘์ด ๋™์ž‘ํ•˜๋Š” OS์—์„œ๋Š” Execution time binding์„ ์จ์•ผ ํ•œ๋‹ค. ์“ฐ์ง€ ์•Š๊ณ ๋Š” ๋ณ€ํ™”ํ•˜๋Š” ์ฃผ์†Œ ์ฒด๊ณ„๋ฅผ ๋”ฐ๋ผ๋‹ค๋‹ ์ˆ˜๊ฐ€ ์—†์Œ.

Swap๋œ ํ”„๋กœ์„ธ์Šค์˜ address space๊ฐ€ ์ €์žฅ๋  ๊ณต๊ฐ„์„ Backing store๋ผ๊ณ  ํ•œ๋‹ค. ์ด๊ฑธ ์šฐ๋ฆฐ ๊ทธ๋ƒฅ ๋””์Šคํฌ๋ผ๊ณ  ์•Œ๊ณ  ์žˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ address space๋Š” ๋ฉ์น˜๊ฐ€ ํฌ๋‹ค. ์ด ๋†ˆ์ด swap out ๋  ๋•Œ ๋””์Šคํฌ๋กœ ๋‚ด๋ฆฌ๊ณ  swap in ๋  ๋•Œ ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฑด ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ฆด ๊ฒƒ์ด๋‹ค. ์ด ์‹œ๊ฐ„์ด ๊ธธ๋ฉด ๋„ˆ๋ฌด ๋Š๋ฆฌ๋‹ค๋Š” ๋Š๋‚Œ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ I/O๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•˜๊ณ , ๊ทธ๋ž˜์„œ Backing store์— ๋Œ€ํ•œ ์ ‘๊ทผ์€ ๋น ๋ฅด๊ฒŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚ด๋ฆฌ๊ณ  ์˜ฌ๋ฆฌ๋Š” ์ตœ์ ํ™”๋œ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ผ๋ฐ˜์ ์ธ I/O์™€ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋“œ๋””์Šคํฌ์—๋Š” ์—ฐ์†์ ์œผ๋กœ ์ญ‰ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

ํฌ์ง€ ์•Š์€ data๋Š” ์—ฐ์†์ ์œผ๋กœ ์“ฐ๋ฉด ์˜คํžˆ๋ ค ๊ณต๊ฐ„ ํ™œ์šฉ๋„๊ฐ€ ๋–จ์–ด์ง„๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค์™€ ๊ฐ™์€ ํฐ ๋ฐ์ดํ„ฐ๋Š” ์ญ‰ ์—ฐ์†์ ์œผ๋กœ ์ผ๋‹ค๊ฐ€ ์ญ‰ ์—ฐ์†์ ์œผ๋กœ ์ฝ๋Š” ๊ฒŒ ์ œ์ผ ๋น ๋ฅด๋‹ค.

 

Contiguous Allocation

์•ž์—์„œ ๋งํ•œ Base register์— CPU๊ฐ€ ๋ฐœ์ƒ์‹œํ‚จ Logical address๋ฅผ ๋”ํ•ด์„œ ์‹ค์ œ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ „์ œ ์กฐ๊ฑด์€ ๋ฌด์—‡์ผ๊นŒ?

์ด๊ฑด ํ”„๋กœ์„ธ์Šค์˜ address space๊ฐ€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฐ์†์ ์ธ ๊ณต๊ฐ„์— ์˜ฌ๋ผ์™€ ์žˆ์„ ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

์—ฐ์†์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ํƒ‘์žฌํ•˜๋Š” ๊ธฐ๋ฒ•์„ Contiguous Allocation์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ปค๋„์ด ํ• ๋‹น๋˜๋Š” ์˜์—ญ์„ ์ œ์™ธํ•˜๊ณ , ๋‚˜๋จธ์ง€ ์˜์—ญ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค.
์ด ๊ณต๊ฐ„์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ €์žฅ๋˜๋‹ˆ๊นŒ OS๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.
=> ์ด๊ฒŒ base register์™€ limit register์— ๋“ค์–ด๊ฐ€๋Š” ์ •๋ณด๋‹ค.

 

logical address๋ฅผ ๊ฐ€์ง€๊ณ  ์‹ค์ œ physical address๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ, ์ •์ƒ์ ์ธ ์ ‘๊ทผ์ด๋ผ๋ฉด logical address๋Š” address space์˜ ์ „์ฒด ํฌ๊ธฐ์ธ limit register์˜ ๊ฐ’๋ณด๋‹ค ์ปค์งˆ ์ˆ˜ ์—†๋‹ค.

logical address > limit register ๋ผ๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น ๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋„˜์–ด์„œ์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์— OS๊ฐ€ ๋ง‰์•„์•ผ ํ•œ๋‹ค.

 

Hole

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

์ด๋Ÿฌํ•œ ๋นˆ๊ณต๊ฐ„๋“ค์„ ์šฐ๋ฆฌ๋Š” Hole์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด Hole๋“ค์„ OS๊ฐ€ ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์™œ๋ƒํ•˜๋ฉด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ผ์˜ฌ ๋•Œ hole์— ํ• ๋‹น์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

Dynamic Storage-Allocation Problem

์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ์˜ ๋นˆ ๊ณต๊ฐ„(Hole)์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ ์ƒˆ๋กœ ์˜ฌ๋ผ์˜ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋–ค ๋นˆ ๊ณต๊ฐ„์— ๋„ฃ์„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋นˆ ๊ณต๊ฐ„๋“ค ์ค‘ ์–ด๋””์„ธ ํ• ๋‹นํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์—” ๋Œ€ํ‘œ์ ์œผ๋กœ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • First-fit

: ์•ž์—์„œ๋ถ€ํ„ฐ ์ญ‰ ๋Œ๋ฉด์„œ ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ณต๊ฐ„์— ๋„ฃ๊ฒ ๋‹ค

  • Best-fit

: ์ด ํ”„๋กœ์„ธ์Šค์™€ ๊ฐ€์žฅ ํฌ๊ธฐ๊ฐ€ ๋น„์Šทํ•œ ๋นˆ ๊ณต๊ฐ„์— ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„ฃ๊ฒ ๋‹ค.

  • Worst-fit

: ๋ฌด์กฐ๊ฑด ์ œ์ผ ํฐ hole์— ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„ฃ๊ฒ ๋‹ค.

 

๋ญ”๊ฐ€ ์ด๋ฆ„๋งŒ ๋ณด๋ฉด Worst-fit์ด ์ œ์ผ ์ข‹์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ด๊ณ  Best-fit์ด ์ œ์ผ ์ข‹์€ ๋ฐฉ๋ฒ•์ธ ๊ฒƒ ๊ฐ™์€๋ฐ ๊ณผ์—ฐ ๊ทธ๋Ÿด๊นŒ?

๊ทธ๋ ‡์ง€ ์•Š๋‹ค. best fit์„ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ๋Œ€ํ•œ ๊ฝ‰ ์ฐจ๋„๋ก ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋Š” ๊ณต๊ฐ„์ด ๋„ˆ๋ฌด ํ˜‘์†Œํ•ด์ง„๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์€ ๊ณต๊ฐ„์ด ๋งŽ์ด ๋งŒ๋“ค์–ด์งˆ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฌํ•œ ๊ณต๊ฐ„๋“ค์€ ๋„ˆ๋ฌด ์ž‘์•„์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฉด ์“ธ๋ชจ์—†๋Š” ๊ณต๊ฐ„์ด ๋œ๋‹ค.

๋ฐ˜๋ฉด์— worst fit์€ ํฐ ๊ณต๊ฐ„์— ๋„ฃ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„ฃ์–ด๋„ ๋‚จ๋Š” ๊ณต๊ฐ„์— ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

=> ์–ด๋–ค ๊ฒŒ ์ข‹์€์ง€ ๋‹จ์ •์ ์œผ๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜๋Š” ์—†์Œ.

 

Fragmentation

Fragmentation์€ ์žํˆฌ๋ฆฌ ๊ณต๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

Fragmentation์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์•ผ ํ•œ๋‹ค.

 

External fragmentation์€ ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์ธ๋ฐ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ž‘์•„์„œ ์“ธ๋ชจ ์—†๋Š” ๊ณต๊ฐ„์ด๋‹ค.

=> Best fit ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด External fragmentation์ด ๋งŽ์ด ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

Internal fragmentation์€ ์‹ค์ œ๋กœ ํ• ๋‹น์„ ํ•ด์คฌ๋Š”๋ฐ, ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ์„ ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, 1000 byte๊ฐ€ ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ 1024 byte๋ฅผ ํ• ๋‹นํ•ด์คฌ๋‹ค๋ฉด 24 byte๋Š” ์‚ฌ์šฉ์„ ํ•˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„์ž„.
=> ๋‚จ์€ ๊ณต๊ฐ„์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ํ• ๋‹น์„ ํ•ด์ค€ ๊ณต๊ฐ„์ธ๋ฐ, ์‚ฌ์šฉ์„ ํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„.

์ฆ‰, External์€ ํ• ๋‹น์ด ์•ˆ ๋œ ๋นˆ ๊ณต๊ฐ„์ธ๋ฐ ๋„ˆ๋ฌด ์ž‘์•„์„œ ํ™œ์šฉ๋„๊ฐ€ ๋–จ์–ด์ง€๋Š” ๊ณต๊ฐ„์ด๊ณ  Internal์€ ์‹ค์ œ ํ• ๋‹น์„ ํ•ด์ฃผ์—ˆ๋Š”๋ฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„.

 

Internal fragmentation์€ ์ด๋ฏธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹น์ด ๋œ ๊ณต๊ฐ„์ด๋ผ ์–ด์ฉ” ์ˆ˜๊ฐ€ ์—†์ง€๋งŒ External fragmentation์€ Compaction์„ ํ†ตํ•ด์„œ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

=> ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ address space๋“ค์„ ํ•œ ์ชฝ์œผ๋กœ ์ญ‰ ๋ฐ€๋ฉด External fragmentation๋“ค์ด ๋ชจ์—ฌ์„œ ๊ฝค ํฐ ๊ณต๊ฐ„์ด ๋งŒ๋“ค์–ด์งˆ ๊ฒƒ์ด๋‹ค.
=> ์ด๊ฑธ Compaction์ด๋ผ๊ณ  ํ•œ๋‹ค.

Compaction์„ ์‚ฌ์šฉํ•˜๋ฉด external fragmentation์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฌธ์ œ๋Š” Compaction์ด ๋งค์šฐ heavyํ•œ operation์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
Compaction์„ ํ•˜๊ณ  ๋‚˜๋ฉด ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ base ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ€์–ด ๋ถ™์ด๋Š” ๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ copy๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค.
=> ํ•จ๋ถ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. Compaction์„ ํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ external fragmentation์„ ๋งˆ๊ตฌ ๋ฐœ์ƒ์‹œ์ผœ๋„ ๋˜๊ฒ ๋„ค? ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

 

๊ฒฐ๋ก ์€ Contiguos Allocation ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด Fragmentation์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, ์ด๊ฑธ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊นŒ๋‹ค๋กญ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ž˜์„œ ํƒ„์ƒํ•œ ๊ธฐ๋ฒ•์ด Paging(ํŽ˜์ด์ง•) ๊ธฐ๋ฒ•์ด๋‹ค.

ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์€ External Fragmentation์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

Paging

๋ ˆ๊ณ  ๋ธ”๋Ÿญ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— Address space๋ฅผ ๋ผ์›Œ๋„ฃ๋Š” ๋ฐฉ์‹์ธ๋ฐ ๋˜‘๊ฐ™์€ ์‚ฌ์ด์ฆˆ์˜ ๋ ˆ๊ณ  ๋ธ”๋Ÿญ์„ ๋งŒ๋“ ๋‹ค. ๊ฐ™์€ ์‚ฌ์ด์ฆˆ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๋„ ๋ถ„ํ• , ์–ด๋“œ๋ ˆ์Šค ์ŠคํŽ˜์ด์Šค๋„ ๋ถ„ํ• .

๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ค‘๊ฐ„ ์ค‘๊ฐ„์— ๋ธ”๋Ÿญ์„ ๋ผ์›Œ๋„ฃ๋‹ค ๋ณด๋‹ˆ ์—ฐ์†์ ์ธ ๊ณต๊ฐ„์— ์–ด๋“œ๋ ˆ์Šค ์ŠคํŽ˜์ด์Šค๊ฐ€ ํ• ๋‹น๋œ๋‹ค๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.
=> ์ด๊ฑธ ํ—ˆ์šฉํ•ด ์คŒ์œผ๋กœ์จ External fragmentation์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•.

 

DRAM์„ ๋˜‘๊ฐ™์€ ํฌ๊ธฐ๋กœ ๋ถ„ํ• ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ถ„ํ• ๋œ ๊ฐ๊ฐ์˜ ๊ณต๊ฐ„์„ frame์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ณดํ†ต frame ํฌ๊ธฐ๋Š” 2์˜ ์ง€์ˆ˜์Šน์œผ๋กœ ์ •ํ•œ๋‹ค. (๋ณดํ†ต 4KB๋กœ ๋งŽ์ด ํ•จ)

frame์ด 4KB๋ผ๊ณ  ํ•˜๋ฉด Address๋„ 4KB ๋‹จ์œ„๋กœ ์ž๋ฅธ๋‹ค. ๊ทธ ์ž๋ฅธ 4KB ํ•˜๋‚˜๋ฅผ "ํŽ˜์ด์ง€"๋ผ๊ณ  ํ•œ๋‹ค.
=> ํŽ˜์ด์ง€์™€ frame์˜ ํฌ๊ธฐ๋Š” ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  frame์—๋‹ค๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ง‘์–ด ๋„ฃ๊ฒ ๋‹ค. ๋Œ€์‹  ์—ฐ์†๋œ frame ๊ณต๊ฐ„์— ๋„ฃ์„ ํ•„์š”๋Š” ์—†๋‹ค.

๊ทธ๋Ÿผ ๋ฌด์Šจ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊นŒ??
์—ฐ์†์ ์œผ๋กœ ์ง‘์–ด ๋„ฃ์—ˆ์„ ๋•Œ๋Š” ์‹œ์ž‘ ์ฃผ์†Œ์™€ ์ƒ๋Œ€ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์‹ค์ œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ์ด์ œ๋Š” ์—ฌ๊ธฐ ์ €๊ธฐ์— ํŽ˜์ด์ง€๊ฐ€ ๋“ค์–ด ์žˆ์œผ๋‹ˆ๊นŒ ๋ฐ”๋กœ ์ฐพ์„ ์ˆ˜๊ฐ€ ์—†๋‹ค.
=> ๊ฐ๊ฐ์˜ ํŽ˜์ด์ง€๊ฐ€ ์–ด๋””์— ์žˆ๋Š” frame์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ๋‹ค ์•Œ์•„์•ผ ํ•œ๋‹ค. ์ด๊ฑธ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๊ทธ๊ฑธ ์šฐ๋ฆฌ๋Š” "ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”" ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

ํ…Œ์ด๋ธ”์—๋Š” ๋‚ด ์–ด๋“œ๋ ˆ์Šค ์ŠคํŽ˜์ด์Šค์˜ 1๋ฒˆ ํŽ˜์ด์ง€๋Š” DRAM์˜ 5๋ฒˆ frame์— ๋“ค์–ด์žˆ๋‹ค. ์ด๋Ÿฐ ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ์Œ.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ข‹์€ ์ ์€ ๋นˆ ๊ณต๊ฐ„์ด frame ๋‹จ์œ„๋กœ ๋น„์–ด ์žˆ๋‹ค.
=> ์“ธ๋ชจ ์—†๋Š” ์žํˆฌ๋ฆฌ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค.
=> ์ฆ‰, External fragmentation์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

Contiguos Allocation์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ Address space๊ฐ€ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ํƒ‘์žฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ base ์ฃผ์†Œ์™€ offset์„ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ์—ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ frame ๊ณณ๊ณณ์— ๋ถˆ์—ฐ์†ํ•˜๊ฒŒ ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์— base register์™€ limit register์˜ ๊ฐ’์ด ์˜๋ฏธ๊ฐ€ ์—†๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” CPU๊ฐ€ ๋ฐœ์ƒ์‹œํ‚จ ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์–ด๋–ป๊ฒŒ ์‹ค์ œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ• ๊นŒ?

 

Address Translation Scheme in Paging

ํŽ˜์ด์ง€์˜ ํฌ๊ธฐ๋ฅผ 2์˜ ์ง€์ˆ˜์Šน์œผ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ์ˆœ๊ฐ„ ๋ญ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง€๋ƒ, logical address์˜ bit๋ฅผ ๋ถ„ํ• ํ•ด์„œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ์™€ ํŽ˜์ด์ง€ ๋‚ด๋ถ€์˜ offset์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

logical address๊ฐ€ 2^m์œผ๋กœ ์ฃผ์†Œ ์ฒด๊ณ„๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค๊ณ  ํ•˜๊ณ , page์˜ size๋Š” 2^n์ด๋ผ๊ณ  ํ•˜์ž. ๊ทธ๋Ÿฌ๋ฉด logical address๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ bit๋Š” m๋น„ํŠธ๊ฐ€ ๋˜๊ณ  ํŽ˜์ด์ง€ ๋‚ด๋ถ€์˜ offset์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ bit๋Š” n๋น„ํŠธ๊ฐ€ ๋œ๋‹ค.

logical address๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ „์ฒด m๋น„ํŠธ ์ค‘์—์„œ ์•ž์ชฝ์˜ (m-n) bit๋Š” ๋ช‡ ๋ฒˆ์งธ ํŽ˜์ด์ง€์ธ์ง€ ๋‚˜ํƒ€๋‚ด๊ณ , ์ œ์ผ ๋’ค์˜ n๋น„ํŠธ๋Š” page ๋‚ด๋ถ€์˜ offset์ด ๋˜๋”๋ผ.

์™œ ๊ทธ๋ ‡๊ฒŒ ๋ ๊นŒ?
2^m ์งœ๋ฆฌ Address space๋ฅผ 2^n ํฌ๊ธฐ์˜ ํŽ˜์ด์ง€๋กœ ์ž๋ฅธ๋‹ค๊ณ  ํ•˜์ž. ๊ทธ๋Ÿผ ์ด ํŽ˜์ด์ง€์˜ ์ˆ˜๋Š” 2^(m-n)์ด ๋œ๋‹ค. 2^(m-n)๊ฐœ์˜ ํŽ˜์ด์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” (m-n) ๋น„ํŠธ๊ฐ€ ํ•„์š”. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€ n ๋น„ํŠธ๋Š” ๊ทธ ํŽ˜์ด์ง€ ์•ˆ์—์„œ์˜ offset์ด ๋œ๋‹ค.

๊ฒฐ๊ตญ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” ์ฃผ์†Œ๋ฅผ ํŽ˜์ด์ง€์˜ ์‚ฌ์ด์ฆˆ๋กœ ๋‚˜๋ˆˆ ๋ชซ์ด ๋˜๊ณ , ํŽ˜์ด์ง€ ๋‚ด์—์„œ์˜ offset์€ ๊ทธ ๋‚˜๋จธ์ง€๊ฐ€ ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋‚˜๋ˆ„๊ธฐ๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์—ฐ์‚ฐ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋ˆ„๋Š” ์ˆ˜์ธ ํŽ˜์ด์ง€์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ž˜ ์ •ํ•˜๋ฉด ์žฌ๋ฐŒ๋Š” ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚œ๋‹ค

 

์ดํ•ด๋ฅผ ์œ„ํ•ด 10์ง„์ˆ˜๋กœ  ๋จผ์ € ์ƒ๊ฐ์„ ํ•ด๋ณด์ž.

๋…ผ๋ฆฌ ์ฃผ์†Œ๊ฐ€ 1234 ์ด๊ณ  ํŽ˜์ด์ง€์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ 10^1 ์ด๋ผ๋ฉด

ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” 1234 / 10 = 123 (page #)

๊ทธ๋ฆฌ๊ณ  123๋ฒˆ ํŽ˜์ด์ง€ ๋‚ด์—์„œ์˜ offset์€ 1234 % 10 = 4 (offset)

๊ตณ์ด ๋‚˜๋ˆ„๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ์ˆซ์ž๋ฅผ ๊ทธ๋ƒฅ ์‚ฌ์ด์ฆˆ์˜ ์Šน์ˆ˜๋กœ ์ชผ๊ฐ  ๊ฒƒ์œผ๋กœ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ์™€ offset์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๋’ค์˜ ์˜ˆ๋ฅผ ๋ณด๋ฉด์„œ ๋” ์ดํ•ดํ•ด ๋ณด์ž.

์‹ค์ œ Address space๋Š” ์ด๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ํฌ์ง€๋งŒ ์ดํ•ด๋ฅผ ์œ„ํ•ด Address space์˜ ํฌ๊ธฐ๊ฐ€ 16(2^4)์ด๋ผ๊ณ  ํ•˜์ž.

๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง€์™€ frame์˜ ํฌ๊ธฐ๋Š” 4(2^2)๋ผ๊ณ  ํ•˜์ž.

ํฌ๊ธฐ๊ฐ€ 16์ธ Address space๋ฅผ ํฌ๊ธฐ๊ฐ€ 4์ธ ํŽ˜์ด์ง€๋“ค๋กœ ๋ถ„ํ• ํ–ˆ์œผ๋ฏ€๋กœ 4๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

=> ํŽ˜์ด์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ (4 - 2)bit = 2bit๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ ํŽ˜์ด์ง€ ๋‚ด์—์„œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ offset์œผ๋กœ๋Š” 2 bit๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด CPU๊ฐ€ logical memory ์ƒ์˜ 2๋ฒˆ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž.

2๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด 0010 ์ธ๋ฐ, ์•ž 2bit๋Š” ํŽ˜์ด์ง€์˜ ๋ฒˆํ˜ธ ๋’ค 2bit๋Š” offset์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— 0๋ฒˆ ํŽ˜์ด์ง€์˜ 2๋ฒˆ ๋ฐ์ดํ„ฐ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋กœ ๊ฐ€์„œ 0๋ฒˆ ํŽ˜์ด์ง€๊ฐ€ ์–ด๋”” frame์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋จผ์ € ํŒŒ์•…ํ•œ๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด 0๋ฒˆ ํŽ˜์ด์ง€๋Š” 5๋ฒˆ frame์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง€๊ฐ€ ์–ด๋””์— ์ €์žฅ๋˜๋“  ํŽ˜์ด์ง€ ๋‚ด์—์„œ์˜ offset์€ ๋ฐ”๋€Œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Œ€๋กœ offset์„ 2๋กœ ํ•ด์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์•ž์˜ ๊ณผ์ •์„ ์กฐ๊ธˆ ๋” ์ถ”์ƒ์ ์œผ๋กœ ๋ณด๋ฉด ์ด๋Ÿฐ ๋Š๋‚Œ

 

Free Frames

์•ž์— ๋‚˜์˜จ ๊ณผ์ •์€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์ •๋ณด๊ฐ€ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค๋Š” ์ „์ œ๊ฐ€ ๊น”๋ ค์žˆ๋‹ค.
๊ทธ๋Ÿผ Address space๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๊ฒŒ ๋  ๋•Œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์ •๋ณด๋Š” ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์งˆ๊นŒ.


OS๋Š” memory management๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋น„์–ด ์žˆ๋Š” frame์˜ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ OS๋งˆ๋‹ค ๋‹ค๋ฅด์ง€๋งŒ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

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

0๋ฒˆ ํŽ˜์ด์ง€๋ถ€ํ„ฐ ๋„ฃ๋Š”๋ฐ, ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž์„ ๋ณด๋‹ˆ 14๋ฒˆ์ด ๋น„์–ด์žˆ๋‹ค๊ณ  ๋˜์–ด ์žˆ๋‹ค. 0๋ฒˆ ํŽ˜์ด์ง€๋Š” 14๋ฒˆ frame์— ๋„ฃ๋Š”๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— 0๋ฒˆ์€ 14๋ฒˆ frame์— ๋“ค์–ด์žˆ๋‹ค๋ผ๊ณ  ์“ด๋‹ค. ๊ทธ ๋‹ค์Œ์— 1๋ฒˆ ํŽ˜์ด์ง€๋ฅผ ๋„ฃ์œผ๋ ค๊ณ  ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ดค๋”๋‹ˆ 13๋ฒˆ์ด ๋น„์–ด ์žˆ๋‹ค. 1๋ฒˆ ํŽ˜์ด์ง€๋Š” 3๋ฒˆ frame์— ๋„ฃ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— 1๋ฒˆ ํŽ˜์ด์ง€๋Š” 13๋ฒˆ frame์— ์žˆ๋‹ค๊ณ  ์“ด๋‹ค.
์ด๋ ‡๊ฒŒ ์ญ‰์ญ‰ ๋„ฃ๋Š”๋‹ค.



์—ฌ๊ธฐ์„œ ์˜๋ฌธ. ํŽ˜์ด์ง€๋ฅผ ๋„ฃ์œผ๋ ค๋Š”๋ฐ ๋น„์–ด์žˆ๋Š” frame์ด ์—†์œผ๋ฉด ์–ด๋–กํ• ๊นŒ?? ์ด ๋ฌธ์ œ๋Š” ๋‚˜์ค‘์— virtual memory์—์„œ ๋‹ค๋ฃฌ๋‹ค.

 

Implementation of Page Table

์ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ OS๋Š” ์–ด๋–ค ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ• ๊นŒ?

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

PTBR: ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ์ €์žฅ๋œ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์œ„์น˜๋ฅผ ์ด์šฉํ•ด์„œ ์ฐพ๊ณ ์ž ํ•˜๋Š” ํŽ˜์ด์ง€์˜ ๋ฒˆํ˜ธ๋งŒํผ ๋‚ด๋ ค๊ฐ€๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ €์žฅ๋œ frame์ด ๋‚˜์™€ ์žˆ๋‹ค.

PTLR: ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ

 

์˜ˆ์ „์—๋Š” CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์œ„ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ์ง์ ‘ ๊ทธ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์„œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๋ฉด ๋์—ˆ๋Š”๋ฐ,

ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์“ฐ๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ look up์„ ํ•ด์„œ ์‹ค์ œ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ธ ๋‹ค์Œ์— ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— 2๋ฒˆ ์ ‘๊ทผ์„ ํ•ด์•ผ ํ•œ๋‹ค. (ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•  ๋•Œ ํ•œ ๋ฒˆ, ์‹ค์ œ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ ํ•œ ๋ฒˆ)

๊ทธ๋ž˜์„œ CPU๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— 2๋ฒˆ ์ ‘๊ทผํ•  ์ˆ˜ ๋ฐ–์— ์—†์Œ. ๊ทผ๋ฐ CPU ์ž…์žฅ์—์„œ ๋ฉ”๋ชจ๋ฆฌ access๋Š” ๋งค์šฐ ๋Š๋ฆฌ๋‹ค.
frame์˜ ์‹œ์ž‘ ์ฃผ์†Œ์— offset์„ ๋”ํ•˜๋Š” ๋ณ€ํ™˜์€ MMU ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„, ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผ์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Š๋ ค์ง€๋Š” ๊ฑด ์–ด์ฉ” ์ˆ˜ ์—†์Œ.

๊ทธ๋Ÿผ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์“ฐ๋ฉด ์•ˆ ๋˜๋‚˜??
ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ๋ณต์žก์„ฑ์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ๊ผญ ํ•„์š”ํ•˜๋‹ค.

๊ทธ๋ž˜์„œ TLB(Translation Look-aside Buffer)๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค.
์บ์‹œ๊ฐ™์€ ๊ฐœ๋…. ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ž‘๊ณ  ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ฃผ์†Œ ๋ณ€ํ™˜์„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ๊ฐ€์„œ ํ•˜๊ธฐ ์ „์— TLB์— ๋จผ์ € ๊ฐ€์„œ ์ด๋ฏธ ๋ณ€ํ™˜๋œ ์ •๋ณด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.
TLB๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— 2๋ฒˆ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋นจ๋ผ์ง„๋‹ค.

 

CPU scheduling์— ์˜ํ•ด CPU๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋˜๋ฉด, TLB๋Š” ๋น„์šฐ๊ฒŒ ๋œ๋‹ค.
ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Context switch๊ฐ€ ์ผ์–ด๋‚˜๋ฉด TLB์— ์ €์žฅ๋œ ์ •๋ณด๋Š” ์ž˜๋ชป๋œ ์ •๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„์›Œ๋ฒ„๋ ค์•ผ ํ•œ๋‹ค.

TLB์— ์—†๋Š” ํŽ˜์ด์ง€๋Š” ์–ด์ฉ” ์ˆ˜ ์—†์ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ๊ฐ€์„œ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

=> ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— TLB์—์„œ ์ฃผ์†Œ ๋ณ€ํ™˜์ด ๋Œ€๋ถ€๋ถ„ ์ผ์–ด๋‚˜์•ผ TLB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ TLB๋Š” ๋น ๋ฅด๊ธด ํ•˜์ง€๋งŒ ์ €์žฅ ๊ณต๊ฐ„์ด ๋งค์šฐ ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.
๋”ฐ๋ผ์„œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ๋งค์šฐ ์ž‘์€ ์ผ๋ถ€๊ฐ€ ์ €์žฅ์ด ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ๋งŽ์€ ํžˆํŠธ๊ฐ€ ๋‚ ๊นŒ?

๊ฐ€๋Šฅํ•˜๋‹ค. Locality(์ง€์—ญ์„ฑ) ๋•Œ๋ฌธ์ด๋‹ค. 
์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ํŽ˜์ด์ง€์˜ ์ •๋ณด๋ฅผ TLB์— ์ €์žฅ์„ ํ•ด๋‘๋ฉด ๊ทธ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค TLB์—์„œ ๋ณ€ํ™˜์ด ๋ ํ…Œ๋‹ˆ๊นŒ ํžˆํŠธ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.
=> ๊ทธ๋งŒํผ locality๊ฐ€ ๊ฐ•ํ•˜๋‹ค๋Š” ๋œป.

 

Associative Memory

TLB์—๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€๊ฐ€ ๋„์—„๋„์—„ ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€ ์—”ํŠธ๋ฆฌ๋“ค์ด ์—ฐ์†๋˜๊ฒŒ ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. 
๋•Œ๋ฌธ์— ์œ„์—์„œ๋ถ€ํ„ฐ 3์นธ์„ ๋‚ด๋ ค์˜ค๋ฉด 4๋ฒˆ ํŽ˜์ด์ง€์˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค ์ด๊ฒŒ ๋ณด์žฅ์ด ์•ˆ ๋œ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ์•ž์—์„œ๋ถ€ํ„ฐ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ๋‹ค ์ฐพ์•„๋ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌ๋ฉด TLB๊ฐ€ ์•„๋ฌด๋ฆฌ ๋นจ๋ผ๋„ TLB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํšจ๊ณผ๊ฐ€ ์ค„์–ด๋“ ๋‹ค.
๊ทธ๋ž˜์„œ "Associative Memory"๋ฅผ ์‚ฌ์šฉํ•ด์„œ TLB๋ฅผ ๋งŒ๋“ ๋‹ค.
=> TLB์˜ ๋ชจ๋“  ์—”ํŠธ๋ฆฌ๋ฅผ ๋™์‹œ์— ์ ‘๊ทผํ•ด์„œ ์ฐพ๊ณ ์ž ํ•˜๋Š” ํŽ˜์ด์ง€์˜ ๋ฒˆํ˜ธ๋ฅผ ํ•œ ํ์— ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿผ ์ง€๊ธˆ๊นŒ์ง€์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด์ž.

CPU๊ฐ€ Logical address๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด, ์ œ์ผ ๋จผ์ € Logical address๋กœ๋ถ€ํ„ฐ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ด๊ณ , ๊ทธ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  TLB์—์„œ ์ฐพ๋Š”๋‹ค. ์žˆ์œผ๋ฉด ๋ฐ”๋กœ frame์˜ ๋ฒˆํ˜ธ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์†Œ ๋ณ€ํ™˜์€ ๋์ด ๋‚œ๋‹ค.

๋งŒ์•ฝ TLB์— ์—†์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ์˜ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•ด์„œ frame์˜ ๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ด์„œ ์‹ค์ œ ์ฃผ์†Œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ Locality์— ์˜ํ•ด ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ TLB์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
=> TLB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์˜ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค.

Contiguous allocation๋งŒํผ ์„ฑ๋Šฅ์ด ์ข‹์ง€๋Š” ์•Š์ง€๋งŒ, ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ํฌ์ƒ์œผ๋กœ External fragmentation์„ ์—†์• ๊ณ , ๊ด€๋ฆฌ์ƒ์˜ ์ธก๋ฉด์—์„œ ๋งŽ์€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

Effective Access Time(EAT)

TLB๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์‹œ๊ฐ„ 

=> CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•ด์„œ ์›ํ•˜๋Š” Instruction, Data๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ํ‰๊ท  ์‹œ๊ฐ„.

TLB์—์„œ Look up์„ ํ•˜๋Š” ์‹œ๊ฐ„์„ α ๋ผ๊ณ  ํ•œ๋‹ค. (์ด ์‹œ๊ฐ„์€ ๋งค์šฐ ๋งค์šฐ ์งง์Œ)

๊ทธ๋ฆฌ๊ณ  Memory์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์„ β ๋ผ๊ณ  ํ•œ๋‹ค. (๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด๋ฏ€๋กœ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค)

๊ทธ๋Ÿฌ๋ฉด Best case์˜ ๊ฒฝ์šฐ ๋ชจ๋‘ TLB ํžˆํŠธ๊ฐ€ ๋‚˜๋ฉด EAT = α + β ๊ฐ€ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋‘ TLB ๋ฏธ์Šค๊ฐ€ ๋‚˜๋ฉด EAT = α + 2β ๊ฐ€ ๋œ๋‹ค.

β๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด๋ฏ€๋กœ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” EAT๊ฐ€ α + β์— ๊ฐ€๊น๊ฒŒ ๋˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

=> Localitiy์— ์˜ํ•ด TLB ๋ฏธ์Šค๊ฐ€ ๋‚˜๋Š” ์ผ์€ ์ž˜ ์—†์œผ๋ฏ€๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Memory Protection

ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์“ฐ์ง€ ์•Š์•˜์„ ๋•Œ๋Š” ํ˜„์žฌ ์ ‘๊ทผํ•˜๋Š” ์ฃผ์†Œ๊ฐ€ ์ž˜๋ชป๋œ ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ์ง€ offset์ด limit register์˜ ๊ฐ’๋ณด๋‹ค ํฐ์ง€ ๋น„๊ต๋ฅผ ํ†ตํ•ด MMU์—์„œ ๊ฒ€์‚ฌ๋ฅผ ํ–ˆ์—ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์—์„œ๋Š” ๊ทธ๋Ÿฐ ๊ณผ์ •์ด ์—†๋‹ค.

ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์€ Protection์ด ํ•„์š”๊ฐ€ ์—†์„๊นŒ? ์ž˜๋ชป๋œ ์ฃผ์†Œ์— ์ ‘๊ทผํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์—†์„๊นŒ?
์•„๋‹ˆ๋‹ค. ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์—๋„ Protection์ด ํ•„์š”ํ•˜๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ๊ฐ ์—”ํŠธ๋ฆฌ๋งˆ๋‹ค Protection bit (=Valid-invalid bit) 1๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
์ด ๊ฐ’์ด valid๋กœ ํ‘œํ˜„๋˜์–ด ์žˆ์œผ๋ฉด ์ •์ƒ์ ์ธ ์ ‘๊ทผ์ด๊ณ , invalid๋กœ ๋˜์–ด ์žˆ์œผ๋ฉด ์ž˜๋ชป๋œ ์ ‘๊ทผ์ž„์„ ์˜๋ฏธํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์žˆ์—ˆ๋‹ค (PTLR).

Address space๋งŒํผ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ๋งŒ๋“ค์–ด์ ธ ์žˆ์œผ๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ๊ธธ์ด๋งŒ ๊ฐ€์ง€๊ณ  ์ ‘๊ทผํ•˜๋ ค๋Š” ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๊ทธ ๊ธธ์ด๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ์ž˜๋ชป๋œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ์ž„์„ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.
=> ์‚ฌ์‹ค valid-invalid bit์ด ์—†์–ด๋„ ์ž˜๋ชป๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ ๊ทธ๊ฑธ ์“ฐ์ง„ ์•Š๋Š”๋‹ค.
=> ์ด ์–˜๊ธฐ ์—ญ์‹œ virtual memory ์‹œ๊ฐ„์— ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ valid-invalid bit์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์ด ๋ ๊นŒ?

address space์˜ ํฌ๊ธฐ๊ฐ€ 12,287์ด๊ณ  ํŽ˜์ด์ง€์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ 2^11 ์ด๋ผ๋ฉด ์ด 6๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ์ƒ์„ฑ๋  ๊ฒƒ์ด๋‹ค.

0 ~ 5๋ฒˆ ํŽ˜์ด์ง€์˜ ์—”ํŠธ๋ฆฌ๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— valid๋กœ ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๊ณ  ๋‚˜๋จธ์ง€ ์—”ํŠธ๋ฆฌ๋Š” invalid๋กœ ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‹ค.

 

์Œ ๊ทธ๋Ÿฌ๋ฉด page table์„ address space์— ๋งž์ถฐ์„œ ํ• ๋‹นํ•˜๋ฉด ๋˜์ง€ ์•Š๋‚˜? 5๋ฒˆ๊นŒ์ง€๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋ฉด ๋˜์ง€ ์•Š๋‚˜? ๊ทธ๋Ÿผ valid-invalid bit๊ฐ€ ํ•„์š”๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์€๋ฐ,,

Address space๋ฅผ ์ž˜ ์ƒ๊ฐํ•ด๋ณด์ž ์ œ์ผ ์•„๋ž˜์ชฝ์ธ 0๋ฒˆ๋ถ€ํ„ฐ๋Š” text(code)๊ฐ€ ์ €์žฅ๋˜๊ณ  ๊ทธ ์œ„์—” data, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์œ„์—” heap๊ณผ stack์ด ๋งˆ์ฃผ๋ณด๊ณ  ์žˆ๋‹ค. ์ด๋•Œ stack์€ max๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ์ž๋ผ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค.
์ฆ‰, stack๊ณผ heap์€ ๋ณ€ํ•˜๋Š” ๊ณต๊ฐ„์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜์Œ ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ ์‚ฌ์ด์ฆˆ๋ฅผ ์•Œ ์ˆ˜ ์—†์Œ
=> ๊ทธ๋ž˜์„œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์–ผ๋งˆ๋‚˜ ํฌ๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ• ์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค.

๋˜ํ•œ max๋ฒˆ์ง€๋Š” ๋ช‡ ๋ฒˆ์ง€๋กœ ํ•ด์•ผ ํ•˜๋Š”์ง€๋„ ๋ฌธ์ œ๋‹ค. max๋ฅผ ๋„ˆ๋ฌด ์ž‘๊ฒŒ ์žก์œผ๋ฉด, function call์ด ๊ณ„์† ์ผ์–ด๋‚˜์„œ Stack์ด ์ปค์ง€๊ณ , ๋™์  ํ• ๋‹น์ด ๊ณ„์† ์ผ์–ด๋‚˜์„œ Heap์ด ๊ณ„์† ์ปค์ง€๋ฉด ๋‘˜์ด ์ถฉ๋Œํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

์•ˆ์ „ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด max๋Š” ์–ผ๋งˆ๋‚˜ ํฌ๊ฒŒ?
์ด๋ก ์ ์œผ๋กœ ๊ฐ€์žฅ ํฐ max๋Š” OS๊ฐ€ 32bit ์ฒด๊ณ„๋ฉด 2^32 - 1๋ฒˆ์ง€, 64bit ์ฒด๊ณ„๋ฉด 2^64 - 1๋ฒˆ์ง€๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๊ฒŒ max๊ฐ€ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋„ ์ด์— ๋งž์ถฐ์„œ ๋งŒ๋“ค์–ด์ ธ์•ผ ํ•œ๋‹ค.

heap๊ณผ stack ์‚ฌ์ด์— ๋น„์–ด์žˆ๋Š” ๊ณต๊ฐ„์€ ํ• ๋‹น๋œ ๊ณต๊ฐ„์ด์ง€๋งŒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„์ด๋‹ˆ๊นŒ invalid๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์‹ค์ œ๋กœ heap๊ณผ stack์ด ์‚ฌ์šฉํ•˜๋Š” ์˜์—ญ๋งŒ ๊ฐ€์ง€๊ณ  ํ• ๋‹น์„ ํ•œ๋‹ค๋ฉด, ์ฆ‰ heap๊ณผ stack ์‚ฌ์ด์˜ ๋นˆ ๊ณต๊ฐ„์—๋Š” ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด heap๋˜๋Š” stack์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋ผ์„œ ํŽ˜์ด์ง€๊ฐ€ ์ƒ๊ฒจ๋‚˜๋ฉด ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ์ด๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
=> ๊ทธ๋ž˜์„œ Stack์€ ์ œ์ผ ๋ max๋กœ ๋ฐ€์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๊ณ  ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ์ถฉ๋ถ„ํžˆ ํฌ๊ฒŒ ๋งŒ๋“ค์–ด์ ธ์•ผ ํ•œ๋‹ค.

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

 

Shared Pages

ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์˜ ํฐ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ํŽ˜์ด์ง€ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ address space๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ณดํ˜ธ๋ฅผ ๋ฐ›๋Š”๋‹ค.
=> ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚ด ์˜์—ญ์— ๋“ค์–ด์™€์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ง‰ ์จ๋ฒ„๋ฆฌ๋ฉด ํฐ์ผ๋‚˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

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

๋‘ ํ”„๋กœ์„ธ์Šค๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์ง€๋งŒ ๋‘˜ ๋‹ค gcc๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ code ๋ถ€๋ถ„์€ ์ผ์น˜ํ•œ๋‹ค. (๋‘˜ ๋‹ค gcc ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด ์žˆ์Œ).

๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ ‘๊ทผ์€ read-only์ด๋‹ค.
๋”ฐ๋ผ์„œ read-only๊ฐ€ ๋ณด์žฅ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด ํ•˜๋‚˜์˜ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
=> ์ฝ”๋“œ ์˜์—ญ์€ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒ ๋‹ค.

์ด๊ฒŒ ์™œ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์˜ ์žฅ์ ์ด๋ƒ

contiguous allocation์„ ํ•˜๋ฉด address space ๊ณต์œ ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค. Instruction์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ž์ฒด๊ฐ€ address space์˜ ์‹œ์ž‘ ์ง€์ ์—์„œ offset์„ ์‚ฌ์šฉํ•ด์„œ ์ ‘๊ทผ์„ ํ•œ๋‹ค. ์ฆ‰, address space์‹œ์ž‘ ์ฃผ์†Œ๊ฐ€ ๋˜‘๊ฐ™์ง€ ์•Š์€ ์ด์ƒ์€ ๊ณต์œ ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‹œ์ž‘ ์ฃผ์†Œ๊ฐ€ ๊ฐ™์œผ๋ฉด ๋‹ค๋ฅธ ์˜์—ญ๋„ ๊ณต์œ ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์ด๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

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

 

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

 

728x90

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

10. Virtual Memory (1)  (1) 2023.05.12
9. Memory Management (2)  (0) 2023.05.07
6. Process Syncronization (2)  (0) 2023.04.07
5. Process Synchronization (1)  (0) 2023.03.30
4. CPU Scheduling  (3) 2023.03.24