๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒCS/OS

[OS] ํŽ˜์ด์ง• & ์„ธ๊ทธ๋จผํ…Œ์ด์…˜

by dar0m! 2021. 10. 13.

Paging vs Segmentation

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

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

์ด๋ ‡๊ฒŒ ํ• ๋‹น๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์žฅ์น˜(MMU : memory management unit)์— ์˜ํ•ด ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋งตํ•‘์ด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์˜์‹ํ•  ํ•„์š” ์—†์ด ์•Œ์•„์„œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž‘์—…ํ•œ๋‹ค.

 

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

 

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

ํŽ˜์ด์ง€ ๋‹จ์œ„์˜ ๋…ผ๋ฆฌ-๋ฌผ๋ฆฌ ์ฃผ์†Œ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•.

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

์˜ˆ์‹œ

  • 50byte ํฌ๊ธฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ํŽ˜์ด์ง•์˜ ํฌ๊ธฐ๋Š” 10byte๋กœ ๋‚˜๋ˆ ๋ณด์ž.
  • ํ”„๋กœ์„ธ์Šค P1์€ 5๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ 5๊ณณ์— ๋‚˜๋ˆ ์„œ ํ• ๋‹นํ–ˆ๋‹ค.
  • CPU๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์ •ํ•œ๋Œ€๋กœ ์—ฐ์†์ ์ธ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๊ณ  ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€๊ธฐ ์ „์— ๊ฐ ํŽ˜์ด์ง€์˜ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚˜๋ˆˆ ์กฐ๊ฐ์„ Page๋ผ ํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚˜๋ˆˆ ์กฐ๊ฐ์„ Frame์ด๋ผ ํ•œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๋Š” ํŽ˜์ด์ง€์˜ ์ง‘ํ•ฉ์ด๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋ ˆ์ž„์˜ ์ง‘ํ•ฉ์ด๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด MMU์˜ ์žฌ๋ฐฐ์น˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•ด์„œ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ ํŽ˜์ด์ง€์˜ ์‹ค์ œ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์žฌ๋ฐฐ์น˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”(Page Table)์ด๋ผ ํ•œ๋‹ค.

์žฅ์ 

  • ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์—†๋‹ค.

๋‹จ์ 

  • ํŽ˜์ด์ง€๊ฐ€ ํด ์ˆ˜๋ก ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ์˜ ๋น„์ค‘์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.
  • Ex) Page ํฌ๊ธฐ : 1024B, ํ”„๋กœ์„ธ์Šค A๊ฐ€ 3172์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์š”๊ตฌํ•œ๋‹ค๋ฉด 3๊ฐœ์˜ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„(1024 x 3 = 3072)์„ ๊ตฌ์„ฑํ•˜๊ณ ๋„ 100B๊ฐ€ ๋‚จ๊ธฐ ๋•Œ๋ฌธ์— ์ด 4๊ฐœ์˜ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์ด ํ•„์š”ํ•˜๋‹ค. ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์—๋Š” 924B์˜ ์—ฌ์œ  ๊ณต๊ฐ„์ด ๋‚จ๊ฒŒ ๋˜๋Š” ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

1.1. ์ฃผ์†Œ ๋ณ€ํ™˜(Address Translation)

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

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

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

  • ์ด ๊ทœ์น™์— ๋Œ€ํ•œ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž.
    • Page size = 16bytes
    • Page Table = 5,3,2,8,1,4
    • ๋…ผ๋ฆฌ ์ฃผ์†Œ 50๋ฒˆ์ง€๋Š” ๋ฌผ๋ฆฌ์ฃผ์†Œ ๋ช‡ ๋ฒˆ์ง€์ธ๊ฐ€?
  • ํ”„๋กœ์„ธ์Šค P๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ๋ชจ์Šต์ด๋‹ค. CPU๊ฐ€ 50๋ฒˆ์ง€ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ p์™€ d ๊ฐ’์œผ๋กœ ๋‚˜๋ˆ ์•ผ ํ•œ๋‹ค.
  • d๋Š” ํŽ˜์ด์ง€ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š”๋ฐ, ํ˜„์žฌ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋Š” 16byte์ด๋‹ค. ์ด๋Š” 2^4์ด๋ฏ€๋กœ d = 4์ด๋‹ค.
  • p๋Š” d๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํฌ๊ธฐ์ด๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด ์‹ค์ œ๋กœ p,d๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด์ž. ํ˜„์žฌ ๋…ผ๋ฆฌ ์ฃผ์†Œ๋Š” 50์ด๋ฉฐ, ์ด์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด 110010์ด๋‹ค. ๋จผ์ €, d๋Š” 4์ด๋ฏ€๋กœ ์ด์ง„์ˆ˜์˜ ๋’ค์—์„œ 4์นธ์ด d์— ํ•ด๋‹น๋œ๋‹ค. d๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ 2์นธ์ด p๊ฐ€ ๋œ๋‹ค.
  • 50 = 110010, p = 11, d = 0010
  • p๋Š” ์ด์ง„์ˆ˜ 11์ด๊ณ , ์‹ญ์ง„์ˆ˜๋กœ 3์ด๋‹ค. ์ฆ‰, ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ 3์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ํŽ˜์ด์ง€ 3๋ฒˆ์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ๋Š” 8๋ฒˆ์ด๋ฏ€๋กœ, ๋ฌผ๋ฆฌ์ฃผ์†Œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” f ๊ฐ’์€ 8์ด ๋œ๋‹ค.
  • f = 1000, d = 0010, ๋ฌผ๋ฆฌ์ฃผ์†Œ = 10000010
  • ์ตœ์ข…์ ์œผ๋กœ ๋ฌผ๋ฆฌ์ฃผ์†Œ๋Š” f์™€ d๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฌผ๋ฆฌ์ฃผ์†Œ๋Š” ์ด์ง„์ˆ˜๋กœ 10000010์ด ๋˜๊ณ , ์‹ญ์ง„์ˆ˜๋กœ 130๋ฒˆ์ง€๊ฐ€ ๋œ๋‹ค. ์ฆ‰, ๋ณ€์œ„๋Š” 2์ด๋ฏ€๋กœ 8๋ฒˆ์งธ ํ”„๋ ˆ์ž„์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋Š” 130์—์„œ 2๋ฅผ ๋บ€ 128๋ฒˆ์ง€(16*8)๊ฐ€ ๋œ๋‹ค.

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•˜๋ฉด์„œ ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์ด ๋“ฑ์žฅํ–ˆ์ง€๋งŒ, ํŽ˜์ด์ง•์€ ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

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

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

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

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

1.4. ๋ณดํ˜ธ์™€ ๊ณต์œ 

1.4.1. ๋ณดํ˜ธ(Protection)

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

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

1.4.2. ๊ณต์œ (Sharing)

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

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

 

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

์‚ฌ์šฉ์ž/ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ด€์ ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•.

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

  • ํ”„๋กœ์„ธ์Šค๋ฅผ ์„œ๋กœ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ์ ์ธ ๋ธ”๋ก ๋‹จ์œ„์ธ '์„ธ๊ทธ๋จผํŠธ(Segment)'๋กœ ๋ถ„ํ• ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๋ฉฐ, ๊ฐ ์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๋Š” ์ผ์ •ํ•˜์ง€ ์•Š๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๋ฅผ Code + Data + Stack ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ ์—ญ์‹œ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜์˜ ๋ชจ์Šต์ด๋‹ค. ๋ฌผ๋ก , code, data, stack ๊ฐ๊ฐ ๋‚ด๋ถ€์—์„œ ๋” ์ž‘์€ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋‚˜๋ˆŒ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•  ๋•Œ๋Š” ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค. ํ•˜์ง€๋งŒ, ํ…Œ์ด๋ธ”์€ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์„ ์œ„ํ•œ ํ…Œ์ด๋ธ”์€ ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”์€ ์„ธ๊ทธ๋จผํŠธ ๋ฒˆํ˜ธ(s)์™€ ์‹œ์ž‘ ์ฃผ์†Œ(base), ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ(limit)๋ฅผ ์—”ํŠธ๋ฆฌ๋กœ ๊ฐ–๋Š”๋‹ค.
  • ์„ธ๊ทธ๋จผํŠธ์—์„œ ์ฃผ์†Œ๋ณ€ํ™˜ ์—ญ์‹œ, ํŽ˜์ด์ง•๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ํ•œ ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์€ ์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๋Š” ์ผ์ •ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํ…Œ์ด๋ธ”์— limit ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  CPU์—์„œ ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๋„˜์–ด์„œ๋Š” ์ฃผ์†Œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.

์œ„ ๊ทธ๋ฆผ์€ ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”๊ณผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ชจ์Šต์ด๋‹ค.

  • ํŽ˜์ด์ง• ์ฃผ์†Œ๋ณ€ํ™˜๊ณผ ๋™์ผํ•˜๊ฒŒ d(๋ณ€์œ„ : ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’)๋Š” ๋…ผ๋ฆฌ์ฃผ์†Œ์™€ ๋ฌผ๋ฆฌ์ฃผ์†Œ๊ฐ€ ๋™์ผํ•˜๋‹ค.
  • ๋ฌผ๋ฆฌ์ฃผ์†Œ a๋Š” base[s]+d ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.
  • ๋…ผ๋ฆฌ ์ฃผ์†Œ(2, 100) -> ๋ฌผ๋ฆฌ์ฃผ์†Œ 4400๋ฒˆ์ง€
  • ๋…ผ๋ฆฌ ์ฃผ์†Œ(1, 500) -> limit์ด 400๋ฐ–์— ์•ˆ๋˜๋ฏ€๋กœ ์ธํ„ฐ๋ŸฝํŠธ๋กœ ์ธํ•ด ํ”„๋กœ์„ธ์Šค ๊ฐ•์ œ ์ข…๋ฃŒ(๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚จ)

์žฅ์ 

  • ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์—†๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํšจ์œจ ๊ฐœ์„ 

๋‹จ์ 

  • ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

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

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

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

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

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

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

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

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

๊ฒฐ๋ก ์ ์œผ๋กœ

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

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

 

์ฐธ๊ณ 

๋Œ“๊ธ€