[๐Ÿ‘จ๐Ÿปโ€๐Ÿ”ฌCS ์Šคํ„ฐ๋”” 1์ฃผ์ฐจ] - OS(์šด์˜์ฒด์ œ 3)

๊น€์œค์ค€ยท2023๋…„ 12์›” 7์ผ

CS ์Šคํ„ฐ๋””

๋ชฉ๋ก ๋ณด๊ธฐ
3/13
post-thumbnail

9. ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)

๊ณต์œ  ์ž์›์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•  ๋•Œ, ๊ฒฐ๊ณผ ๊ฐ’์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ
โžก๏ธ ๋™์‹œ ์ ‘๊ทผ ์‹œ

"๊ฒฝ์Ÿ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ"

  1. ์ปค๋„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ค‘์— ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ
    • ๋ฌธ์ œ์  : ์ปค๋„ ๋ชจ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋‹ค ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
    • ํ•ด๊ฒฐ๋ฒ• : ์ปค๋„ ๋ชจ๋“œ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ, ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ disable ์‹œ์ผœ CPU ์ œ์–ด๊ถŒ์„ ๊ฐ€์ ธ๊ฐ€์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค.
  2. ํ”„๋กœ์„ธ์Šค๊ฐ€ System Call์„ ํ•˜์—ฌ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘์— ๋ฌธ๋งฅ ๊ตํ™˜(Context Switching)์ด ๋ฐœ์ƒํ•  ๋•Œ.
    • ๋ฌธ์ œ์  : ํ”„๋กœ์„ธ์Šค A๊ฐ€ ์ปค๋„ ๋ชจ๋“œ์—์„œ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์ค‘, ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์–ด CPU ์ œ์–ด๊ถŒ์ด ํ”„๋กœ์„ธ์Šค B๋กœ ๋„˜์–ด๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ.(ํ”„๋กœ์„ธ์Šค B๊ฐ€ ์ž‘์—…์— ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ)
    • ํ•ด๊ฒฐ๋ฒ• : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„๋ชจ๋“œ์—์„œ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์–ด๋„ CPU ์ œ์–ด๊ถŒ์ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ํ•จ.
  3. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ์ปค๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ ‘๊ทผํ•  ๋•Œ.
    • ๋ฌธ์ œ์  : ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ CPU(๋ฉ€ํ‹ฐ ์ฝ”์–ด)๊ฐ€ ๋™์‹œ์— ์ปค๋„ ๋‚ด๋ถ€์˜ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์—ฌ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
    • ํ•ด๊ฒฐ๋ฒ• : ์ปค๋„ ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ฐ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค, ๊ทธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ lock/unlock์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•

10. ์„ธ๋งˆํฌ์–ด & ๋ฎคํ…์Šค

๊ณต์œ ๋œ ์ž์›์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด์„œ ๋ฌธ์ œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋•Œ ๊ณต์œ ๋œ ์ž์›์˜ ๋ฐ์ดํ„ฐ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œ์„ ๋‘์–ด์•ผ ํ•œ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒƒ์ด ์„ธ๋งˆํฌ์–ด

1. ์„ธ๋งˆํฌ์–ด

๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•

๋™๊ธฐํ™” ๋Œ€์ƒ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ—ˆ์šฉ์น˜๋งŒํผ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ฒŒ ํ•œ๋‹ค.

โœ”๏ธ ์ž„๊ณ„ ๊ตฌ์—ญ(Critical Section)

  • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์ˆ˜ํ–‰๋  ๋•Œ, ๊ฐ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ณต์œ  ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋ถ€๋ถ„

    ๊ณต์œ  ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•  ๋•Œ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ ํ”„๋กœ์„ธ์Šค ์ž„๊ณ„ ๊ตฌ์—ญ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค.

์„ธ๋งˆํฌ์–ด P, V ์—ฐ์‚ฐ

P : ์ž„๊ณ„ ๊ตฌ์—ญ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์ˆ˜ํ–‰ (ใ…๋กœ์„ธ์Šค ์ง„์ž… ์—ฌ๋ถ€๋ฅผ ์ž์›์˜ ๊ฐœ์ˆ˜(S)๋ฅผ ํ†ตํ•ด ๊ฒฐ์ •)

V : ์ž…๊ณ„ ๊ตฌ์—ญ์—์„œ ๋‚˜์˜ฌ ๋•Œ ์ˆ˜ํ–‰ (์ž์› ๋ฐ˜๋‚ฉ ์•Œ๋ฆผ, ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊นจ์šฐ๋Š” ์‹ ํ˜ธ)

๐ŸŽจ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

P(S);

// -- ์ž„๊ณ„ ๊ตฌ์—ญ --

V(S)
procedure P(S)   //--> ์ตœ์ดˆ S๊ฐ’์€ 1์ž„
    while S=0 do wait  //--> S๊ฐ€ 0๋ฉด 1์ด ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•จ
    S := S-1   //--> S๋ฅผ 0๋กœ ๋งŒ๋“ค์–ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด ์˜ค์ง€ ๋ชปํ•˜๋„๋ก ํ•จ
end P

--- ์ž„๊ณ„ ๊ตฌ์—ญ ---

procedure V(S) //--> ํ˜„์žฌ์ƒํƒœ๋Š” S๊ฐ€ 0์ž„
    S := S+1   //--> S๋ฅผ 1๋กœ ์›์œ„์น˜์‹œ์ผœ ํ•ด์ œํ•˜๋Š” ๊ณผ์ •
end V

์ด๋ฅผ ํ†ตํ•ด, ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ P ํ˜น์€ V๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๋™์•ˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ ๋‹นํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. P์™€ V๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž„๊ณ„๊ตฌ์—ญ์— ๋Œ€ํ•˜ ์ƒํ˜ธ๋ฐฐ์ œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

2. ๋ฎคํ…์Šค

์ž„๊ณ„ ๊ตฌ์—ญ์„ ๊ฐ€์ง„ ์Šค๋ ˆ๋“œ๋“ค์˜ ์‹คํ–‰์‹œ๊ฐ„์ด ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š๊ณ  ๊ฐ๊ฐ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ 
"์ƒํ˜ธ๋ฐฐ์ œ์˜ ์•ฝ์ž์ด๋‹ค."

ํ•ด๋‹น ์ ‘๊ทผ์„ ์กฐ์œจํ•˜๊ธฐ ์œ„ํ•ด lock๊ณผ unlock์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • lock : ํ˜„์žฌ ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐˆ ๊ถŒํ•œ์„ ์–ป์–ด์˜ด (๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ ์ˆ˜ํ–‰ ์ค‘์ด๋ฉด(lock์ƒํƒœ) ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
  • unlock : ํ˜„์žฌ ์ž„๊ณ„ ๊ตฌ์—ญ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ–ˆ์Œ์„ ์•Œ๋ฆผ. (๋Œ€๊ธฐ ์ค‘์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์Œ)

๋ฎคํ…์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜

  1. ๋ฐ์ปค ์•Œ๊ณ ๋ฆฌ์ฆ˜
    flag์™€ turn ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐˆ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ์‹
    • flag[n] : ํ”„๋กœ์„ธ์Šค n์ด ์ž„๊ณ„๊ตฌ์—ญ์— ์ง„์ž…ํ• ๋•Œ 0๊ณผ 1๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ํ•จ์ˆ˜.
    • turn : ๋ˆ„๊ฐ€ ์ž„๊ณ„๊ตฌ์—ญ์— ๋“ค์–ด๊ฐˆ ์ฐจ๋ก€์ธ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜
while(true) {
    flag[i] = true; // ํ”„๋กœ์„ธ์Šค i๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ ์ง„์ž… ์‹œ๋„
    while(flag[j]) { // ํ”„๋กœ์„ธ์Šค j๊ฐ€ ํ˜„์žฌ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์žˆ๋Š”์ง€ ํ™•์ธ
        if(turn == j) { // j๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ์ค‘์ด๋ฉด
            flag[i] = false; // ํ”„๋กœ์„ธ์Šค i ์ง„์ž… ์ทจ์†Œ
            while(turn == j); // turn์ด j์—์„œ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
            flag[i] = true; // j turn์ด ๋๋‚˜๋ฉด ๋‹ค์‹œ ์ง„์ž… ์‹œ๋„
        }
    }
}

// ------- ์ž„๊ณ„ ๊ตฌ์—ญ ---------

turn = j; // ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ๋๋‚˜๋ฉด turn์„ ๋„˜๊น€
flag[i] = false; // flag ๊ฐ’์„ false๋กœ ๋ฐ”๊ฟ” ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ์™„๋ฃŒ๋ฅผ ์•Œ๋ฆผ
  1. ํ”ผํ„ฐ์Šจ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋ฐ์ปค์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ƒ๋Œ€๋ฐฉ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ์—๊ฒŒ ์ง„์ž… ๊ธฐํšŒ๋ฅผ ์–‘๋ณดํ•˜๋Š” ๊ฒƒ์˜ ์ฐจ์ด
while(true) {
    flag[i] = true; // ํ”„๋กœ์„ธ์Šค i๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ ์ง„์ž… ์‹œ๋„
    turn = j; // ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ง„์ž… ๊ธฐํšŒ ์–‘๋ณด
    while(flag[j] && turn == j) { // ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง„์ž… ์‹œ๋„ํ•˜๋ฉด ๋Œ€๊ธฐ
    }
}

// ------- ์ž„๊ณ„ ๊ตฌ์—ญ ---------

flag[i] = false; // flag ๊ฐ’์„ false๋กœ ๋ฐ”๊ฟ” ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ์™„๋ฃŒ๋ฅผ ์•Œ๋ฆผ
  1. ์ œ๊ณผ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜. ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์˜ ๋ฒˆํ˜ธํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•œ๋‹ค.
while(true) {
    
    isReady[i] = true; // ๋ฒˆํ˜ธํ‘œ ๋ฐ›์„ ์ค€๋น„
    number[i] = max(number[0~n-1]) + 1; // ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ค‘์— ๊ฐ€์žฅ ํฐ ๋ฒˆํ˜ธ ๋ฐฐ์ • 
    isReady[i] = false; // ๋ฒˆํ˜ธํ‘œ ์ˆ˜๋ น ์™„๋ฃŒ
    
    for(j = 0; j < n; j++) { // ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค ๋ฒˆํ˜ธํ‘œ ๋น„๊ต
        while(isReady[j]); // ๋น„๊ต ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฒˆํ˜ธํ‘œ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
        while(number[j] && number[j] < number[i] && j < i);
        
        // ํ”„๋กœ์„ธ์Šค j๊ฐ€ ๋ฒˆํ˜ธํ‘œ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ
        // ํ”„๋กœ์„ธ์Šค j์˜ ๋ฒˆํ˜ธํ‘œ < ํ”„๋กœ์„ธ์Šค i์˜ ๋ฒˆํ˜ธํ‘œ
    }
}

// ------- ์ž„๊ณ„ ๊ตฌ์—ญ ---------

number[i] = 0; // ์ž„๊ณ„ ๊ตฌ์—ญ ์‚ฌ์šฉ ์ข…๋ฃŒ

์„ธ๋งˆํฌ์–ด์™€ ๋ฎคํ…์Šค ์“ฐ์ž„

์„ธ๋งˆํฌ์–ด๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์ผ์ • ์ž์›์„ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
๋ฎคํ…์Šค๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ๋…์ ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.


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

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

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

  1. ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
    "ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ์ปค๋‹ค๋ž€ ๊ณต๊ฐ„์— ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น๋˜์–ด์•ผ ํ•จ"

    • ๊ณ ์ • ๋ถ„ํ•  ๊ธฐ๋ฒ• : ์ฃผ๊ธฐ์–ต์žฅ์น˜๊ฐ€ ๊ณ ์ •๋œ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ถ„ํ•  (๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฐœ์ƒ)

    • ๋™์  ๋ถ„ํ•  ๊ธฐ๋ฒ• : ํŒŒํ‹ฐ์…˜๋“ค์ด ๋™์  ์ƒ์„ฑ๋˜๋ฉฐ ์ž์‹ ์˜ ํฌ๊ธฐ์™€ ๊ฐ™์€ ํŒŒํ‹ฐ์…˜์— ์ ์žฌ (์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฐœ์ƒ)

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

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

  2. ๋ถˆ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
    "ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ฃผ์†Œ ๊ณต๊ฐ„์— ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•"

    • ํŽ˜์ด์ง€ : ๊ณ ์ • ์‚ฌ์ด์ฆˆ์˜ ์ž‘์€ ํ”„๋กœ์„ธ์Šค ์กฐ๊ฐ

    • ํ”„๋ ˆ์ž„ : ํŽ˜์ด์ง€ ํฌ๊ธฐ์™€ ๊ฐ™์€ ์ฃผ๊ธฐ์–ต์žฅ์น˜ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ

    • ๋‹จํŽธํ™” : ๊ธฐ์–ต ์žฅ์น˜์˜ ๋นˆ ๊ณต๊ฐ„ or ์ž๋ฃŒ๊ฐ€ ์—ฌ๋Ÿฌ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋‰˜๋Š” ํ˜„์ƒ

    • ์„ธ๊ทธ๋จผํŠธ : ์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ๋…ผ๋ฆฌ์ ์ธ ๋ธ”๋ก์ด ์—ฐ์†์  ๊ณต๊ฐ„์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ

      ๊ณ ์ • ํฌ๊ธฐ : ํŽ˜์ด์ง•
      ๊ฐ€๋ณ€ ํฌ๊ธฐ : ์„ธ๊ทธ๋จผํŠธ

    • ๋‹จ์ˆœ ํŽ˜์ด์ง•

      • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ํ”„๋ ˆ์ž„๋“ค๊ณผ ๊ฐ™์€ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ๊ท ๋“ฑ ํŽ˜์ด์ง€๋กœ ๋‚˜๋‰จ
      • ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚จ๋Š” ํ”„๋ ˆ์ž„์— ์ ์ ˆํžˆ ๋ฐฐ์น˜๋œ๋‹ค
      • ์™ธ๋ถ€ ๋‹จํŽธํ™” X
      • ์†Œ๋Ÿ‰์˜ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋งŒ ์กด์žฌ
    • ๋‹จ์ˆœ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜

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

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


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

ํŽ˜์ด์ง€ ๋ถ€์žฌ ๋ฐœ์ƒ -> ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•จ -> ํ˜„์žฌ ํ• ๋‹น๋œ ํŽ˜์ด์ง€ ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ๊ต์ฒดํ• ์ง€ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

๐Ÿ˜’ ..์ข€๋” ์ƒ๊ฐํ•ด๋ณด๋ฉด

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์š”๊ตฌ ํŽ˜์ด์ง€ ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์€ ๊ทธ๋Œ€๋กœ ๋‘”๋‹ค

ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ€๋“ ์ฐจ๊ฒŒ๋˜๊ณ , ๊ธฐ์กด ํŽ˜์ด์ง€๊ฐ€ ์‚ฌ์šฉ๋œ ํ›„์—๋„ ์ž๋ฆฌ๋งŒ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ์ถ”๊ฐ€๋กœ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์•ˆ์“ฐ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋นผ๊ณ  ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋บ„์ง€ ์ •ํ•ด์•ผ ํ•œ๋‹ค.

์ด์™•์ด๋ฉด ์ˆ˜์ •๋˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•ด์•ผ ์ข‹๋‹ค.

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

Page Reference String

CPU๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์ฆ‰์ • ์ฃผ์†Œ๋ฅผ ์š”๊ตฌํ•จ

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ์ฃผ์†Œ๋“ค์€ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜๋ฉด ํŽ˜์ด์ง€ ๊ฒฐํ•จ์ด ์—†๋‹ค.

๋”ฐ๋ผ์„œ CPU์˜ ์ฃผ์†Œ ์š”๊ตฌ์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ๊ฒฐํ•จ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์€ ์ƒ๋žตํ•˜์—ฌ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ
Page Reference String

  1. FIFO ์•Œ๊ณ ๋ฆฌ์ฆ˜

    first-In First-Out. ๋ฉ”๋ชจ๋ฆฌ์— ๋จผ์ € ์˜ฌ๋ผ์˜จ ํŽ˜์ด์ง€๋ฅผ ๋จผ์ € ๋‚ด๋ณด๋‚ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

    victim page : out์ด ๋˜๋Š” ํŽ˜์ด์ง€๋Š”, ๊ฐ€์žฅ ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํŽ˜์ด์ง€

    ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ, ํŠนํžˆ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ์—์„œ ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•

    ์ดˆ๊ธฐํ™” ์ฝ”๋“œ : ์ฒ˜์Œ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰๋  ๋•Œ ์ตœ์ดˆ ์ดˆ๊ธฐํ™”๋ฅผ ์‹œํ‚ค๋Š” ์—ญํ• ๋งŒ ์ง„ํ–‰ํ•˜๊ณ , ๋‹ค๋ฅธ ์—ญํ• ์€ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋นผ๋„ ๊ดœ์ฐฎ์Œ.

  2. OPT(์ตœ์  ํŽ˜์ด์ง€ ๊ต์ฒด) ์•Œ๊ณ ๋ฆฌ์ฆ˜

    Optimal ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์•ž์œผ๋กœ ๊ฐ€์žฅ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์žฅ ์šฐ์„ ์ ์œผ๋กœ ๋‚ด๋ณด๋ƒ„

    FIFO์— ๋น„ํ•ด ํŽ˜์ด์ง€ ๊ฒฐํ•จ์˜ ํšŸ์ˆ˜๋ฅผ ๋งŽ์ด ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

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

  3. LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜

    Least-Recently-Used, ์ตœ๊ทผ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ • ๋จผ์ € ๋‚ด๋ ค๋ณด๋‚ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

    ์ตœ๊ทผ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์œผ๋ฉด, ๋‚˜์ค‘์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ์•„์ด๋””์—์„œ ๋‚˜์˜ด.

    OPT์˜ ๊ฒฝ์šฐ ๋ฏธ๋ž˜ ์˜ˆ์ธก์ด์ง€๋งŒ, LRU์˜ ๊ฒฝ์šฐ ๊ณผ๊ฑฐ๋ฅผ ๋ณด๊ณ  ํŒ๋‹จํ•˜๋ฏ€๋กœ ์‹ค์งˆ์ ์œผ๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜.

    OPT ๋ณด๋‹ค๋Š” ํŽ˜์ด์ง€ ๊ฒฐํ•จ์ด ๋” ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋‚˜๋งˆ ์ตœ์ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํšจ์œจ์„ ๋ณด์—ฌ์ฃผ์–ด
    ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ž„

0๊ฐœ์˜ ๋Œ“๊ธ€