Skip to content

Latest commit

ย 

History

History
588 lines (336 loc) ยท 37 KB

os.md

File metadata and controls

588 lines (336 loc) ยท 37 KB

๐Ÿซ OS QnA

Process, Thread

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”? (Context, Context Switching, Blocked ์ƒํƒœ์™€ Suspended ์ƒํƒœ ์ฐจ์ด)

ํ”„๋กœ์„ธ์Šค๋ž€ ๋””์Šคํฌ์— ์‹คํ–‰ ํŒŒ์ผ๋กœ ์กด์žฌํ•˜๋˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์ปจํƒ์ŠคํŠธ๋ž€ CPU ์Šค์ผ€์ฅด๋ง์— ์˜ํ•ด CPU ์ ์œ ๊ถŒ์„ ๋นผ์•—๊ฒผ๋‹ค๊ฐ€ ๋‹ค์‹œ ํš๋“ํ•˜๊ฒŒ ๋˜์—ˆ์„๋•Œ ์ด์ „์˜ ์ƒํƒœ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค ๋ฌธ๋งฅ์€ ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
    • CPU ์˜ ์ˆ˜ํ–‰ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋“œ์›จ์–ด ์ปจํƒ์ŠคํŠธ = PC๊ฐ’, ๋ ˆ์ง€์Šคํ„ฐ๊ฐ’
    • ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ = code, data, stack
    • ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ์ปค๋„ ์ž๋ฃŒ๊ตฌ์กฐ์ธ PCB

์ปจํƒ์ŠคํŠธ ์Šค์œ„์นญ์ด๋ž€ CPU ์ ์œ ๊ถŒ์ด ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ณผ์ •์—์„œ ์ ์œ ๊ถŒ์„ ๋นผ์•—๊ธฐ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ํ˜„์žฌ ์ปจํƒ์ŠคํŠธ๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด PCB์— CPU์˜ pc๊ฐ’๊ณผ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ ์ €์žฅํ•ด๋‘๊ณ , ์ ์œ ๊ถŒ์„ ์–ป๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์ด์ „์˜ ์ปจํƒ์ŠคํŠธ๋ฅผ ๋ณต์›ํ•˜๊ธฐ ์œ„ํ•ด PCB์˜ pc๊ฐ’๊ณผ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ CPU์— ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

blocked ์ƒํƒœ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ cpu ์ ์œ ๊ถŒ์„ ๊ฐ€์ง€๊ณ  ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ io์ž‘์—…๊ณผ ๊ฐ™์€ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ํ• ๊ฒฝ์šฐ์˜ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” cpu ์ ์œ ๊ถŒ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , io์ž‘์—…์„ ๋งˆ์น˜๋ฉด ready ์ƒํƒœ๊ฐ€ ๋˜์–ด ready queue์— ๋Œ€๊ธฐํ•˜์—ฌ cpu ์Šค์ผ€์ฅด๋Ÿฌ์—๊ฒŒ ์Šค์ผ€์ฅด๋ง ๋‹นํ•˜๊ธธ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

suspended ์ƒํƒœ๋Š” CPU ๋˜๋Š” ์™ธ๋ถ€(์‚ฌ๋žŒ, ์ค‘๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ)์— ์˜ํ•ด ๊ฐ•์ œ๋กœ ์ •์ง€๋‹นํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ด ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋นผ์•—๊ฒจ ๋””์Šคํฌ๋กœ swap out๋˜๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€์—์„œ ์žฌ๊ฐœ ํ•ด์ค˜์•ผ activeํ•œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


์Šค์ผ€์ฅด๋Ÿฌ์— ๋Œ€ํ•ด ์•„์‹œ๋‚˜์š”? (์Šค์ผ€์ฅด๋Ÿฌ ์ข…๋ฅ˜)

์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ•ด์ค„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ์ปค๋„ ์ฝ”๋“œ๋ฅผ ์ง€์นญํ•ฉ๋‹ˆ๋‹ค.

3๊ฐ€์ง€ ์Šค์ผ€์ฅด๋Ÿฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์žฅ๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ (job ์Šค์ผ€์ฅด๋Ÿฌ)

    ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ์–ด๋–ค new ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹นํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์Šค์ผ€์ฅด๋Ÿฌ์ž…๋‹ˆ๋‹ค.

    ์ด ์Šค์ผ€์ฅด๋Ÿฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ์˜ฌ๋ผ๊ฐˆ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์—์„œ๋Š” ์žฅ๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. (new ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์•„ ๊ณง๋ฐ”๋กœ ready ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค)

    ๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ์˜ฌ๋ผ๊ฐˆ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์ค‘๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ์ค‘๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ (swapper)

    ์ค‘๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ๊ฒฝ์šฐ, ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณจ๋ผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋นผ์•—๊ณ  ๋””์Šคํฌ๋กœ swap out ์‹œํ‚ค๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

    ์ค‘๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋นผ์•—๊ธด ํ”„๋กœ์„ธ์Šค๋Š” suspended ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

  • ๋‹จ๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ (cpu ์Šค์ผ€์ฅด๋Ÿฌ)

    cpu ์ ์œ ๊ถŒ์„ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹นํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์Šค์ผ€์ฅด๋Ÿฌ์ž…๋‹ˆ๋‹ค.

    ์Šค์ผ€์ฅด๋ง์ด ์ผ์–ด๋‚˜๋Š” ๋‹จ์œ„๊ฐ€ ๋ฐ€๋ฆฌ์„ธ์ปจ๋“œ๋กœ ๊ต‰์žฅํžˆ ์ž์ฃผ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.


์Šค๋ ˆ๋“œ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์Šค๋ ˆ๋“œ๋ž€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜์— CPU ์ˆ˜ํ–‰ ๋‹จ์œ„๋งŒ ์—ฌ๋Ÿฌ๊ฐœ ๋‘์—ˆ์„ ๋•Œ ๊ทธ ๊ฐ๊ฐ์„ ์Šค๋ ˆ๋“œ๋ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๋ณ„๋„๋กœ cpu ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์ •๋ณด์ธ pc๊ฐ’๊ณผ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ์˜์—ญ์ค‘ code, data ์˜์—ญ์€ ๊ณต์œ ํ•˜์ง€๋งŒ stack ์˜์—ญ์€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. code ์˜์—ญ์„ ์ˆ˜ํ–‰ํ•˜๋‹ค ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์ผ์–ด๋‚˜๋ฉด, ํ•ด๋‹น ํ•จ์ˆ˜์— ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ stack์— ์Œ“์•„ ๋‘๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ ๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ stack ์˜์—ญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์Šค๋ ˆ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด

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

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ์žฅ๋‹จ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋Š”

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

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š”

  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ ์ž์›์„ ๊ณต์œ ํ•˜๋ฉฐ ์ž‘์—…์„ ๋‚˜๋ˆ„์–ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค
  • ์žฅ์ 
    • ์ผ๋‹จ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ code, data๊ณผ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ ์ž์›ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์„ธ์Šค์˜ IPC์™€ ๊ฐ™์€ ํ†ต์‹ ์„ ์œ„ํ•œ ๊ธฐ์ˆ ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ์‘๋‹ต์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ํ•˜๋‚˜์˜ ํƒญ์—์„œ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋‹ค์šด ๋ฐ›์œผ๋ฉด, ๊ทธ์™€ ๋™์‹œ์— ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค์šด ๋ฐ›์€ html์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ์ƒํ™ฉ์ฒ˜๋Ÿผ ์‘๋‹ต์„ฑ์„ ๋†’ํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ์ 
    • ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ์— ๋”ฐ๋ฅธ ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™๊ธฐํ™” ๋ฌธ์ œ๋Š” ๋ฎคํ…์Šค, ์„ธ๋งˆํฌ์–ด ๋ฐฉ์‹์„ ํ™œ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ „์ฒด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

IPC์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”

IPC๋ž€ ํ”„๋กœ์„ธ์Šค๊ฐ„์— ํ†ต์‹  ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค ๋ผ๋ฆฌ์˜ ํ†ต์‹ ์€ ์›์น™์ ์œผ๋กœ ์ œํ•œ๋˜์–ด์žˆ์ง€๋งŒ IPC ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ shared memory, message passing ๊ธฐ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

message passing

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„์„ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉฐ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ํ†ต์‹ ํ•˜๋ ค๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ด๋ฆ„์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œ์‹œํ•˜์—ฌ ์ „๋‹ฌํ•˜๋Š” direct communication๋ฐฉ์‹๊ณผ
  • mailbox๋˜๋Š” port๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” indirect communication ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.

shared memory ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด

  • ์ปค๋„๋กœ๋ถ€ํ„ฐ ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ ๊ณต์œ ํ•  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ณ , ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ†ตํ•ด ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CPU ์Šค์ผ€์ค„๋Ÿฌ & ์Šค์ผ€์ฅด๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

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

์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ• ์ค‘ FCFS์˜ ๋‹จ์ ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”. FCFS ๋Š” ๋Œ€๊ธฐ ํ์— ๋„์ฐฉํ•œ ์ˆœ์„œ์— ๋”ฐ๋ผ CPU๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธด ์ž‘์—…์ด ์งง์€ ์ž‘์—…์„ ์˜ค๋žซ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ค€๋น„ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ๊ฐ€์žฅ CPU ์š”๊ตฌ๋Ÿ‰์ด ์ ์€ ๊ฒƒ์„ ๋จผ์ € ์‹คํ–‰์‹œ์ผœ ์ฃผ๋Š” SJF(Shortest Job First)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Process Synchronization

ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™๊ธฐํ™” ํ•ด์•ผํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๊ณต์œ  ๋ฐ์ดํ„ฐ์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด data inconsistency๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • ๋™๊ธฐํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ค ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋‚˜์š”??

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


Race condition์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

  • race condition์€ ์–ธ์ œ ๋ฐœ์ƒํ•˜๋‚˜์š”?

์ฒซ ๋ฒˆ์งธ๋Š” ์ปค๋„ ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์— ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ์™€ ํ”„๋กœ์„ธ์Šค๊ฐ€ system call์„ ํ•˜์—ฌ ์ปค๋„๋ชจ๋“œ๋กœ ์ง„์ž…ํ•˜์—ฌ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘ context switch๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ์—์„œ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ์ปค๋„ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ ์ž…๋‹ˆ๋‹ค.


Critical region์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
  • Criticla region ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์„ธ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งํ•ด์ฃผ์„ธ์š”
    mutual exclusion, progress, bound waiting์ž…๋‹ˆ๋‹ค. mutual exclusion์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„๊ตฌ์—ญ์— ์žˆ์„ ๋•Œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๊ณ , progress๋Š” ์ž„๊ณ„๊ตฌ์—ญ์— ๋“ค์–ด๊ฐ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๋‹ค๋ฉด ์–ด๋А ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ฒƒ์ธ์ง€ ์ ์ ˆํžˆ ์„ ํƒํ•ด์ค˜์•ผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ bound waiting ๋Š” ๊ทธ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ ์ž„๊ณ„๊ตฌ์—ญ์— ๋“ค์–ด๊ฐ€๊ธฐ ์œ„ํ•ด ์˜์›ํžˆ ๊ธฐ๋‹ค๋ ค์„œ๋Š” ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์—๋Š” ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

    semaphore, mutex, monitor๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Semaphore, mutex, monitor์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

    mutex๋Š” ์ž„๊ณ„ ๊ตฌ์—ญ์„ ๋ณดํ˜ธํ•˜๊ณ  ๊ฒฝ์Ÿ์ƒํƒœ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ mutex lock์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์ž„๊ณ„๊ตฌ์—ญ์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ๋ฝ์„ ํš๋“ํ•ด์•ผํ•˜๊ณ , ์ž„๊ณ„๊ตฌ์—ญ์„ ๋น ์ ธ๋‚˜์˜ฌ ๋•Œ ๋ฝ์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. mutual exclusion์„ ์ œ๊ณตํ•˜์ง€๋งŒ bounded waiting ์กฐ๊ฑด์„ ์œ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„๊ตฌ์—ญ๋‚ด์— ์žˆ์„ ๋•Œ while๋ฌธ์„ ํ†ตํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋น ์ ธ๋‚˜์˜ค์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ์‹œ๊ฐ„์ด ์งง์„ ๋•Œ mutex๋Š” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

    semaphore๋Š” ์ž์›์˜ ๊ฐœ์ˆ˜๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ—ˆ์šฉ๊ฐ€๋Šฅํ•œ counter์˜ ๊ฐœ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ์„ธ๋งˆํฌ์–ด๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค์— ์˜ํ•ด ๊ณต์œ ๋˜๋Š” ๋ณ€์ˆ˜๋กœ ์ •์˜ํ•˜๊ณ  ์ด ๋ณ€์ˆ˜๋Š” ์˜ค์ง P, V๋ผ๋Š” atomicํ•œ ์—ฐ์‚ฐ์— ์˜ํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    monitor๋Š” mutex์™€ condition variable์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ํ•จ์œผ๋กœ์จ ์ž„๊ณ„๊ตฌ์—ญ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. monitor๋Š” ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์„ธ๋งˆํฌ์–ด๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒํ˜ธ ๋ฐฐ์ œ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ฐ ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋“ˆ, ์šด์˜์ฒด์ œ ๋‚ด๋ถ€์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ๋‹ˆํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค.


Mutex vs. Semaphore vs. Monitor๋ฅผ ๋งํ•ด์ฃผ์„ธ์š”
  • Mutex vs. Semaphore

์„ธ๋งˆํฌ์–ด๋Š” ๋ฎคํ…์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌดํ…์Šค๋Š” ์„ธ๋งˆํฌ์–ด๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค. ๋˜ ์„ธ๋งˆํฌ์–ด๋Š” ์†Œ์œ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋ฎคํ…์Šค๋Š” ์†Œ์œจํ•  ์ˆ˜ ์žˆ๊ณ  ์†Œ์œ ํ•œ ์‚ฌ๋žŒ์ด ๋ฐ˜๋“œ์‹œ ์›์ƒํƒœ๋กœ ๋Œ๋ ค๋†“์•„์•ผํ•œ๋‹ค. ๋ฎคํ…์Šค์˜ ๊ฒฝ์šฐ ๋ฎคํ…์Šค๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์ด ๋ฎคํ…์Šค๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์„ธ๋งˆํฌ์–ด๋Š” ์†Œ์œ ํ•˜์ง€ ์•Š๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์„ธ๋งˆํฌ์–ด๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฎคํ…์Šค๋Š” ๋™๊ธฐํ™”๋Œ€์ƒ์ด 1๊ฐœ ์„ธ๋งˆํฌ์–ด๋Š” ๋™๊ธฐํ™” ๋Œ€์ƒ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  • Semaphore vs. monitor

์ž๋ฐ”์—์„œ๋Š” ๋ชจ๋‹ˆํ„ฐ๋ฅผ ๋ชจ๋“  ๊ฐ์ฒด์—๊ฒŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜์ง€๋งŒ c์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์„ธ๋งˆํฌ์–ด๋Š” ์นด์šดํ„ฐ๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ’์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ƒํ˜ธ๋ฐฐ์ œ๋‚˜ ์ •๋ ฌ์˜ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ ์‹œ ๋งค๋ฒˆ ๊ฐ’์„ ๋”ฐ๋กœ ์ง€์ •ํ•ด์ค˜์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋ชจ๋‹ˆํ„ฐ๋Š” ์ด๋Ÿฌํ•œ ์ผ๋“ค์ด ์บก์Аํ™”๋˜์–ด ์žˆ์–ด์„œ ๊ฐœ๋ฐœ์ž๋Š” ์นด์šดํ„ฐ ๊ฐ’์„ 0 ๋˜๋Š” 1๋กœ ์ฃผ์–ด์•ผํ•˜๋Š” ๊ณ ๋ฏผ์„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

  • monitor vs. mutex

๋ฎคํ…์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ ๊ฐ„์— ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ๊ฐ„์— ๋™๊ธฐํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐ˜๋ฉด์— ๋ชจ๋‹ˆํ„ฐ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ๊ฐ„์— ๋™๊ธฐํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฎคํ…์Šค๋Š” ์šด์˜์ฒด์ œ ์ปค๋„์— ์˜ํ•ด์„œ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— system call๋กœ ์ธํ•˜์—ฌ ์†๋„๊ฐ€ ๋А๋ฆฌ๊ณ  ๊ทธ์— ๋ฐ˜ํ•ด ๋ชจ๋‹ˆํ„ฐ๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ทธ ์ž์ฒด์—์„œ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ & ๋ธ”๋กœํ‚น๊ณผ ๋…ผ๋ธ”๋กœํ‚น

๋น„๋™๊ธฐ, ๋™๊ธฐ, ๋ธ”๋กœํ‚น, ๋…ผ๋ธ”๋กœํ‚น์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

์ฒ˜๋ฆฌํ•ด์•ผํ•  ์ž‘์—…๋“ค์„ ์–ด๋– ํ•œ ํ๋ฆ„์œผ๋กœ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€์— ๋”ฐ๋ผ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • 2๊ฐœ ์ด์ƒ์˜ ์ฃผ์ฒด๊ฐ€ ์ž‘์—…์„ ๋™์‹œ์— ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜, ๋™์‹œ์— ๋๋‚ด๊ฑฐ๋‚˜, ํ•œ ์ฃผ์ฒด๊ฐ€ ์ž‘์—…์„ ๋๋ƒ„๊ณผ ๋™์‹œ์— ๋‹ค๋ฅธ ์ฃผ์ฒด๊ฐ€ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋Š” ํ๋ฆ„์„ ๋™๊ธฐ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„๋™๊ธฐ๋ž€ 2๊ฐœ ์ด์ƒ์˜ ์ฃผ์ฒด๊ฐ€ ๊ฐ์ž ๋ณ„๋„์˜ ์‹œ์ž‘์‹œ๊ฐ„ ๋˜๋Š” ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ๋ฆ„์ž…๋‹ˆ๋‹ค.

์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…์ด ์ „์ฒด์ ์ธ ์ž‘์—…์˜ ํ๋ฆ„์„ ๋ง‰๋Š”์ง€ ์•ˆ๋ง‰๋Š”์ง€์— ๋”ฐ๋ผ ๋ธ”๋กœํ‚น๊ณผ ๋…ผ๋ธ”๋กœํ‚น์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋น„๋™๊ธฐ, ๋™๊ธฐ, ๋ธ”๋กœํ‚น, ๋…ผ๋ธ”๋กœํ‚น์˜ ๊ฐ ์กฐํ•ฉ์˜ ํŠน์ง•์„ ๋งํ•ด์ฃผ์„ธ์š”

๋™๊ธฐ + ๋ธ”๋กœํ‚น

  • ํ”ํ•˜๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋™๊ธฐ ์ž‘์—… ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ๋™๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์— 2๊ฐœ ์ด์ƒ์˜ ์ฃผ์ฒด๊ฐ€ ์ž‘์—… ํ๋ฆ„์„ ๋งž์ถฅ๋‹ˆ๋‹ค. ๊ธฐ๋ŠฅA๊ฐ€ ๋จผ์ € ๊ฐœ๋ฐœ๋œ ํ›„์—์•ผ ๊ธฐ๋ŠฅB๋ฅผ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ์˜ˆ์‹œ๋กœ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ธ”๋กœํ‚น์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ŠฅA๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ „์ฒด์ ์ธ ์ž‘์—…์˜ ํ๋ฆ„์ด ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. ๊ธฐ๋ŠฅA์™€ ๊ธฐ๋ŠฅB๋ฅผ ๋™์‹œ์— ๊ฐœ๋ฐœํ•  ์ˆ˜ ์—†๊ณ , ๊ธฐ๋ŠฅA์˜ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ํ›„์—์•ผ ๊ธฐ๋ŠฅB์˜ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น

  • ๋ชจ๋“  ์‹คํ–‰๊ณผ ํ๋ฆ„์ด ์ˆœ์ฐจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ์–ดํ•˜๊ธฐ ์‰ฌ์šด ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค.
    • ๋™๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ŠฅA์™€ ๊ธฐ๋ŠฅB์˜ ๊ฐœ๋ฐœ ์ˆœ์„œ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋…ผ๋ธ”๋กœํ‚น์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ŠฅA๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ์ „์ฒด์ ์ธ ์ž‘์—… ํ๋ฆ„์ด ๋ฉˆ์ถ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๊ธฐ๋ŠฅA์˜ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” polling ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

      ๋™์‹œ์— ๋™๊ธฐ์ ์ธ ์ž‘์—…์ด๋ผ ๊ธฐ๋ŠฅA๊ฐ€ ๊ฐœ๋ฐœ๋˜๋Š” ๋™์•ˆ ๊ธฐ๋ŠฅB๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์˜ ์ˆœ์„œ๋Š” Aโ†’ B์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ + ๋ธ”๋กœํ‚น

  • ์ž‘์—…์˜ ํ๋ฆ„์„ ๋น„๋™๊ธฐ๋กœ ์„ค๊ณ„ํ–ˆ์ง€๋งŒ ๋ธ”๋กœํ‚น์ด๊ธฐ ๋•Œ๋ฌธ์— ๋™๊ธฐ + ๋ธ”๋กœํ‚น๊ณผ ๊ฐ™์€ ํ๋ฆ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€์žฅ ๋น„ํšจ์œจ์ ์ธ ๋ชจ๋ธ๋กœ ์˜๋„์น˜ ์•Š๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์ง๊ด€์ ์ธ ์ฝ”๋“œ ํ๋ฆ„์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ž‘์—…์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ ์ž ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋น„๋™๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ŠฅA์™€ ๊ธฐ๋Šฅ B์˜ ๊ฐœ๋ฐœ ์ˆœ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ๊ฐœ๋ฐœํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.
    • ๋ธ”๋กœํ‚น์ด๋ผ ๊ธฐ๋ŠฅA๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ์—๋Š” ๊ธฐ๋Šฅ B๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ŠฅA์˜ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๊ณ  ๋‚˜์„œ ๊ธฐ๋Šฅ B๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น

  • ์„ฑ๋Šฅ๊ณผ ์ž์›์˜ ํšจ์œจ ์ธก๋ฉด์—์„œ ๊ฐ€์žฅ ์šฐ์ˆ˜ํ•œ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค.
    • ๋น„๋™๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ŠฅA์™€ ๊ธฐ๋Šฅ B์˜ ๊ฐœ๋ฐœ ์ˆœ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    • ๋…ผ๋ธ”๋กœํ‚น์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ŠฅA๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ๊ธฐ๋ŠฅB๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์กฐํ•ฉ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”? ๊ทธ ์ด์œ ๋Š”?

๋น„๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น ์กฐํ•ฉ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์ˆœ์„œ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋น„๋™๊ธฐ) ๋˜ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ์ž‘์—… ํ๋ฆ„์ด ๋ฉˆ์ถ”์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์— ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋…ผ๋ธ”๋กœํ‚น)


์–ด๋–ค ์กฐํ•ฉ์ด ๊ฐ€์žฅ ๋น„ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”? ๊ทธ ์ด์œ ๋Š”?

๋น„๋™๊ธฐ + ๋ธ”๋กœํ‚น ์กฐํ•ฉ์ด ๊ฐ€์žฅ ๋น„ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์ˆœ์„œ์— ๊ตฌ์•  ๋ฐ›์ง€ ์•Š๊ณ  ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ๋˜๋Š” ๋™์•ˆ ์ž‘์—… ํ๋ฆ„์ด ๋ฉˆ์ถฐ ๋™์‹œ์— ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ์ „์ฒด์ ์ธ ์ž‘์—… ํ๋ฆ„์ด ์˜๋„์น˜ ์•Š๊ฒŒ ์ •ํ•ด์ง‘๋‹ˆ๋‹ค.

Deadlock

deadlock์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ฐ๋“œ๋ฝ์€ ํ”„๋กœ์„ธ์Šค๊ฐ„์— ์„œ๋กœ๊ฐ€ ๊ฐ€์ง„ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ block๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ž์›์„ ๋™์‹œ ์ถฉ์กฑํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.


deadlock ๋ฐœ์ƒ ์กฐ๊ฑด 4๊ฐ€์ง€๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ฐœ์ƒ ์กฐ๊ฑด์—๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ, ๋น„์„ ์ , ์ ์œ  ๋Œ€๊ธฐ, ์ˆœํ™˜ ๋Œ€๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํ˜ธ ๋ฐฐ์ œ๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๊ณต์œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋น„์„ ์  ์กฐ๊ฑด์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ๋‚ด๋†“์„ ๋ฟ ๊ฐ•์ œ๋กœ ๋นผ์•—๊ธฐ์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ ๋‹ค์Œ์œผ๋กœ ์ ์œ ๋Œ€๊ธฐ๋Š” ์ž์›์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ์ž์›์„ ๊ธฐ๋‹ค๋ฆด ๋•Œ ๋ณด์œ  ์ž์›์„ ๋†“์ง€ ์•Š๊ณ  ๊ณ„์† ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆœํ™˜๋Œ€๊ธฐ๋Š” ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ์‚ฌ์ดํด์ด ํ˜•์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„ 4๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋™์‹œ์— ์„ฑ๋ฆฝํ•  ๋•Œ deadlock์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

4๊ฐ€์ง€๋ฅผ ์ „๋ถ€ ์ด์–ด์„œ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์„œ๋กœ ์ƒํ˜ธ๋ฐฐ์ œ ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋กœ์˜ ์ž์›์„ ์›ํ•˜๋ฉด ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๊ณ  ๋‹ค๋ฅธ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ์ž์›์„ ๋†“์ง€ ์•Š๊ณ  ๊ณ„์† ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๋˜ ๋น„์„ ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค ์ž์›์„ ๋นผ์•—์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


deadlock ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์—๋Š” ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

deadlock ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์—๋Š” deadlock prevention, deadlock avoidance, deadlock detection and recovery, deadlock ignorance๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • deadlock prevention์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ž์› ํ• ๋‹น ์‹œ ๋ฐ๋“œ๋ฝ์˜ 4๊ฐ€์ง€ ํ•„์š” ์กฐ๊ฑด ์ค‘ ์–ด๋А ํ•˜๋‚˜๋ฅผ ๋งŒ์กฑํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ์„  mutual exclusion์„ ๋ถ€์ •ํ•˜๋ฉด ๊ณต์œ ํ•ด์„œ๋Š” ์•ˆ๋˜๋Š” ์ž์›์— mutual exclusion์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

hold and wait๋ฅผ ๋ถ€์ •ํ•˜๊ฒŒ ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘ ์‹œ ๋ชจ๋“  ํ•„์š”ํ•œ ์ž์›์„ ํ• ๋‹น ๋ฐ›๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ž์›์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ ๋ณด์œ  ์ž์›์„ ๋ชจ๋‘ ๋‚ด๋†“๊ณ  ๋‹ค์‹œ ์š”์ฒญํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์„ ์  ๋ถ€์ •์˜ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค ์ž์›์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ ๋ณด์œ ํ•œ ์ž์›์ด ์„ ์ ๋˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๋ชจ๋“  ํ•„์š”ํ•œ ์ž์›์„ ์–ป์„ ์ˆ˜ ์žˆ์„ ๋•Œ ๊ทธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆœํ™˜ ๋Œ€๊ธฐ ๋ถ€์ •์€ ์ž์›์— ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ž์›์„ ์š”๊ตฌํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฐฉ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜์™€ starvation ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

  • deadlock avoidance๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

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

ํšŒํ”ผ์˜ ๊ฒฝ์šฐ ์ž์›์˜ ์œ ํ˜• ๋‹น ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. 1๊ฐœ ์ธ์Šคํ„ด์Šค๋ผ๋ฉด ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜๊ณ  2๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค๋ผ๋ฉด bankerโ€™s ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ž์›ํ• ๋‹น ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค์„œ ๋ฏธ๋ž˜ ์ž์› ํ• ๋‹น์‹œ ๊ทธ๋ž˜ํ”„๊ฐ€ ์‚ฌ์ดํด์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ์š”์ฒญ ์ž์›์„ ํ• ๋‹นํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • bankerโ€™s algorithm์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

  • deadlock detection and recovery๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

ํƒ์ง€๋Š” single instance์˜ ๊ฒฝ์šฐ wait-for graph๋ฅผ multiple instance๋ผ๋ฉด bankers algorithm์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

  • deadlock recovery๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ ์ฒซ ๋ฒˆ์งธ๋กœ process๋ฅผ ๋๋‚ด๋Š” ๋ฐฉ์‹๊ณผ ์ž์› ์„ ์ ์„ ํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ๋๋‚ด๋Š” ๋ฐฉ์‹์€ ๋ชจ๋“  ๊ต์ฐฉ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํด์„ ์ธ์œ„์ ์œผ๋กœ ์—†์• ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์ž์›์„ ์„ ์ ํ•˜๊ฒŒ ๋‘๋Š” ๊ฒƒ์ธ๋ฐ ์•ˆ์ „์ƒํƒœ๋กœ rollbackํ•˜์—ฌ process๋ฅผ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ๋˜๋ฉด ๊ธฐ์•„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์†ํ•ด์„œ ํฌ์ƒ ํ”„๋กœ์„ธ์Šค๋กœ ์„ ์ •๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • deadlock ignorance๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

deadlock์ด ์‹œ์Šคํ…œ์ด ์ฑ…์ž„์ง€์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„๋Œ€ ์šด์˜์ฒด์ œ๋Š” ์ด๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์› ๋„๊ธฐ๊ฐ€ ์ด ๋ฐฉ๋ฒ• ์ค‘์— ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค.

Paging

์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ์˜์—ญ์˜ ํ• ๋‹น ๋ฐฉ๋ฒ•์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”. -> (์—ฐ์† ํ• ๋‹น, ๋ถˆ์—ฐ์† ํ• ๋‹น) ๊ฐ๊ฐ์˜ ์ข…๋ฅ˜ ํŠน์ง• ์„ค๋ช…

์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ์˜์—ญ์˜ ํ• ๋‹น ๋ฐฉ๋ฒ•์—๋Š” ๋จผ์ € ํฌ๊ฒŒ ์—ฐ์† ํ• ๋‹น๊ณผ ๋ถˆ์—ฐ์† ํ• ๋‹น์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ์† ํ• ๋‹น์€ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฐ์†์ ์ธ ๊ณต๊ฐ„์— ์ ์žฌ๋˜๋„๋ก ํ•˜๋Š” ํ• ๋‹น์ด๊ณ  ๋ถˆ์—ฐ์† ํ• ๋‹น์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฌ๋Ÿฌ ์˜์—ญ์— ๋ถ„์‚ฐ๋˜์–ด ์˜ฌ๋ผ๊ฐ€๋Š” ํ• ๋‹น์ž…๋‹ˆ๋‹ค. ์—ฐ์†ํ• ๋‹น์—๋Š” ๊ณ ์ • ๋ถ„ํ•  ๋ฐฉ์‹๊ณผ ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹์ด ์กด์žฌํ•˜๋Š”๋ฐ์š”. ๊ณ ์ • ๋ถ„ํ•  ๋ฐฉ์‹์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฃผ์–ด์ง„ ๊ฐœ์ˆ˜๋งŒํผ์˜ ์˜๊ตฌ์ ์ธ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ฏธ๋ฆฌ ๋‚˜๋ˆ„์–ด๋‘๊ณ  ๊ฐ ํŒŒํ‹ฐ์…˜์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์— ๋ฐ˜ํ•ด ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ํŒŒํ‹ฐ์…˜์˜ ํฌ๊ธฐ, ๊ฐœ์ˆ˜๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋ถˆ์—ฐ์† ํ• ๋‹น์—๋Š” paging, segmenting, paged segmentation ๋ฐฉ์‹์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.


Paging ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

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


Paging์˜ ์žฅ๋‹จ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

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

Cache Locality

์บ์‹œ์˜ ์ง€์—ญ์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์†๋„๊ฐ€ ๋น ๋ฅธ ์žฅ์น˜์™€ ๋А๋ฆฐ ์žฅ์น˜๊ฐ„์˜ ์†๋„์ฐจ์— ๋”ฐ๋ฅธ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฒ”์šฉ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CPU ๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ์–ด๋А ์ •๋„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์บ์‹œ์˜ ์„ฑ๋Šฅ์€ ์ž‘์€ ์šฉ๋Ÿ‰์˜ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— CPU ๊ฐ€ ์ดํ›„์— ์ฐธ์กฐํ• , ์“ธ๋ชจ ์žˆ๋Š” ์ •๋ณด๊ฐ€ ์–ด๋А ์ •๋„ ๋“ค์–ด์žˆ๋А๋ƒ์— ๋”ฐ๋ผ ์ขŒ์šฐ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ๋•Œ ์ ์ค‘์œจ(Hit rate)์„ ๊ทน๋Œ€ํ™” ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ(Locality)์˜ ์›๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ง€์—ญ์„ฑ์˜ ์ „์ œ์กฐ๊ฑด์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์€ ๋ชจ๋“  ์ฝ”๋“œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ Access ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ํŠน์„ฑ์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Locality๋ž€ ๊ธฐ์–ต ์žฅ์น˜ ๋‚ด์˜ ์ •๋ณด๋ฅผ ๊ท ์ผํ•˜๊ฒŒ Access ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์–ด๋А ํ•œ ์ˆœ๊ฐ„์— ํŠน์ • ๋ถ€๋ถ„์„ ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ํŠน์„ฑ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ์€ ๋Œ€ํ‘œ์ ์œผ๋กœ ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ(Temporal Locality)๊ณผ ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ(Spatial Locality)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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


์บ์‹œ ๋ผ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

์บ์‹œ์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜์—ฌ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ• ๋•Œ ์บ์‹œ๋ผ์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Virtual Memory2

ํŽ˜์ด์ง€ ๊ต์ฒด๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

CPU๊ฐ€ ์ฐธ์กฐํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ํŽ˜์ด์ง€๊ฐ€ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด page fault๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

page fault๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋””์Šคํฌ์—์„œ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์˜ page frame์œผ๋กœ ๋ถˆ๋Ÿฌ ๋“ค์ž…๋‹ˆ๋‹ค.

๋น„์–ด์žˆ๋Š” page frame์ด ์—†์„ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๊ธฐ์กด์— ์ ์žฌ๋œ page frame๊ณผ ์‚ฌ์šฉํ•  page frame์„ ๊ต์ฒด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” ๋ฌด์—‡์ด ์žˆ๋‚˜์š”? ๊ฐ๊ฐ์˜ ํŠน์ง•์€?

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” Optimal, FIFO, LRU, LFU, Clock ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Optimal

    • ๋ฏธ๋ž˜์— ์ฐธ์กฐ๋  ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ๊ฐ€์ •์ด ์ „์ œ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ฐ€์žฅ ๋จผ ๋ฏธ๋ž˜์— ์ฐธ์กฐ๋  ํŽ˜์ด์ง€๋ฅผ victim ํŽ˜์ด์ง€๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

      ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์ด ๊ฐ€์žฅ ์ž‘์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ชจ๋“  ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ์˜ upper bound๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

  • FIFO

    • ๋จผ์ € swap in ๋œ ํŽ˜์ด์ง€๋ฅผ victim ํŽ˜์ด์ง€๋กœ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

      ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ page frame์ด ๋Š˜์–ด๋‚˜๋ฉด ์˜คํžˆ๋ ค ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์ด ๋†’์•„์ง€๋Š” FIFO Anomaly๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • LRU

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

      ํŽ˜์ด์ง€ ๋ถ€์žฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ์  ์ด์ „์˜ ํŽ˜์ด์ง€ ์ฐธ์กฐ ์ด๋ ฅ์„ ์ฐธ๊ณ ํ•˜์—ฌ victim ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • LFU

    • ํŽ˜์ด์ง€์˜ ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ victim ํŽ˜์ด์ง€๋กœ ์„ ํƒํ•˜๋Š” ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

      ๊ฐ€์žฅ ์ ์€ ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ง„ ํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋‹ค๋ฉด, ์ž„์˜๋กœ victim ํŽ˜์ด์ง€๋ฅผ ์„ ์ •ํ•ฉ๋‹ˆ๋‹ค.

  • Clock

    • ํŽ˜์ด์ง€์— reference bit๋ฅผ ๋‘์–ด ํฌ์ธํ„ฐ๋ฅผ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™์‹œํ‚ค๋ฉด์„œ reference bit๊ฐ€ 0์ธ ํŽ˜์ด์ง€๋ฅผ victim ํŽ˜์ด์ง€๋กœ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

      ํฌ์ธํ„ฐ๋ฅผ ์ด ๋‘๋ฒˆ ํšŒ์ „์‹œํ‚ต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํšŒ์ „์—์„œ๋Š” ํŽ˜์ด์ง€์˜ reference bit๊ฐ€ 1์ธ ๊ฒƒ์„ 0์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํšŒ์ „์—์„œ ํŽ˜์ด์ง€์˜ reference bit๊ฐ€ 0์ธ ๊ฒƒ์„ victim ํŽ˜์ด์ง€๋กœ ์„ ์ •ํ•ฉ๋‹ˆ๋‹ค.

      ๋งŒ์•ฝ ํŽ˜์ด์ง€์— Write ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์กŒ๋‹ค๋ฉด modified bit๊ฐ€ 1์ด ๋ฉ๋‹ˆ๋‹ค. reference bit๊ฐ€ 0์ด๋ฉด์„œ modified bit๊ฐ€ 1์ธ ํŽ˜์ด์ง€๋Š” disk ๋กœ swap outํ•  ๋•Œ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ๋””์Šคํฌ์— ๋ฐ˜์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— IO ์ž‘์—…์ด ๋™๋ฐ˜๋ฉ๋‹ˆ๋‹ค.

      ์„ฑ๋Šฅ์„ ์œ„ํ•ด reference bit๊ฐ€ 0์ธ ํŽ˜์ด์ง€๋“ค ์ค‘ modified bit๊ฐ€ 0์ธ ํŽ˜์ด์ง€๋ฅผ ์šฐ์„ ์ ์œผ๋กœ victim ํŽ˜์ด์ง€๋กœ ์„ ์ •ํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.


FIFO์™€ LRU์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

FIFO ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1๋ฒˆ์งธ๋กœ ๋“ค์–ด์˜จ ํŽ˜์ด์ง€๊ฐ€ ์ตœ๊ทผ๊นŒ์ง€ ์ฐธ์กฐ๋์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  victim ํŽ˜์ด์ง€๋กœ ์„ ์ •๋ฉ๋‹ˆ๋‹ค.

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


LRU์™€ LFU์„ ๋น„๊ตํ•ด๋ณด์„ธ์š”. LRU์™€ LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ๋Š”์ง€ ์•„์‹œ๋‚˜์š”? ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋งํ•ด๋ณด์„ธ์š”

LRU์™€ LFU ๋น„๊ต

  • LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํŽ˜์ด์ง€ ๋ถ€์žฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ง์ „์˜ ํŽ˜์ด์ง€ ์ฐธ์กฐ ์‹œ์ ๋งŒ ํ™•์ธํ•˜์ง€๋งŒ, LFU๋Š” ์žฅ๊ธฐ์ ์ธ ์‹œ๊ฐ„ ๊ทœ๋ชจ๋ฅผ ํ™•์ธํ•˜์—ฌ victim ํŽ˜์ด์ง€๋ฅผ ์„ ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€์˜ ์ธ๊ธฐ๋„(์ฐธ์กฐ ํšŸ์ˆ˜)๋ฅผ ์ •ํ™•ํžˆ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
  • LFU๋Š” ํŽ˜์ด์ง€ ์ฐธ์กฐ ์‹œ์ ์˜ ์ตœ๊ทผ์„ฑ์„ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๊ฑฐ์˜ ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€์ผ์ง€๋ผ๋„ ๊ณผ๊ฑฐ์— ๋งŽ์ด ์ฐธ์กฐ๋˜์—ˆ๋‹ค๋ฉด victim ํŽ˜์ด์ง€๋กœ ์„ ์ •๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ ์–ด์ง‘๋‹ˆ๋‹ค.
  • LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ๊ตฌํ˜„์ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

LRU, LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„

  • LRU

    • ์ฐธ์กฐ ์‹œ์ ์ด ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ๊ณ ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— LinkedList๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€๋ฅผ tail์— ๊ฐ€์žฅ ์˜ค๋ž˜์ „์— ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€๋ฅผ head์— ๋‘ก๋‹ˆ๋‹ค.

      ํŽ˜์ด์ง€๊ฐ€ ์žฌ์ฐธ์กฐ ๋˜๋ฉด, ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์ฐธ์กฐ ์‹œ์ ์€ ๊ฐ€์žฅ ์ตœ๊ทผ์ด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ LinkedList์˜ ๋งˆ์ง€๋ง‰(tail)์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ž…๋‹ˆ๋‹ค.

      victim ํŽ˜์ด์ง€๋ฅผ ์„ ์ •ํ•  ๋•Œ LinkedList์˜ head์— ์œ„์น˜ํ•œ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ž…๋‹ˆ๋‹ค.

  • LFU

    • ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Heap ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

      ํŽ˜์ด์ง€๊ฐ€ ์žฌ์ฐธ์กฐ๋˜๋ฉด, ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ Heap ๊ตฌ์กฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(logN)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

      victim ํŽ˜์ด์ง€๋ฅผ ์„ ์ •ํ•  ๋•Œ, root ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ž…๋‹ˆ๋‹ค. ์ดํ›„ heapify๋ฅผ ํ†ตํ•ด Heap ๊ตฌ์กฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(logN)์ด๋ฏ€๋กœ ์ด O(logN)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.


ํŽ˜์ด์ง• ์‹œ์Šคํ…œ์—์„œ LRU, LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ๊ทธ ์ด์œ ๋Š”? ๊ทธ๋Ÿผ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํŽ˜์ด์ง• ์‹œ์Šคํ…œ์— ์ ์šฉํ• ๊นŒ์š”?

ํŽ˜์ด์ง• ์‹œ์Šคํ…œ์—์„œ LRU, LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ์šด์˜์ฒด์ œ์ธ๋ฐ, LRU, LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์‚ฌ์šฉ๋  ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ์šด์˜์ฒด์ œ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

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

์šด์˜์ฒด์ œ๊ฐ€ ๋ฐ˜ ์ชฝ์งœ๋ฆฌ ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ํŽ˜์ด์ง• ์‹œ์Šคํ…œ์—์„œ LRU, LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ํŽ˜์ด์ง• ์‹œ์Šคํ…œ์—์„œ ์ ์šฉ๊ฐ€๋Šฅํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Clock ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค


Clock ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋™์ž‘๋ฐฉ์‹์„ ๋งํ•ด์ฃผ์„ธ์š”

ํŽ˜์ด์ง€์— reference bit๋ฅผ ๋‘์–ด ํฌ์ธํ„ฐ๋ฅผ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™์‹œํ‚ค๋ฉด์„œ reference bit๊ฐ€ 0์ธ ํŽ˜์ด์ง€๋ฅผ victim ํŽ˜์ด์ง€๋กœ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

ํฌ์ธํ„ฐ๋ฅผ ์ด ๋‘๋ฒˆ ํšŒ์ „์‹œํ‚ต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํšŒ์ „์—์„œ๋Š” ํŽ˜์ด์ง€์˜ reference bit๊ฐ€ 1์ธ ๊ฒƒ์„ 0์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํšŒ์ „์—์„œ ํŽ˜์ด์ง€์˜ reference bit๊ฐ€ 0์ธ ๊ฒƒ์„ victim ํŽ˜์ด์ง€๋กœ ์„ ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ํŽ˜์ด์ง€์— Write ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์กŒ๋‹ค๋ฉด modified bit๊ฐ€ 1์ด ๋ฉ๋‹ˆ๋‹ค. reference bit๊ฐ€ 0์ด๋ฉด์„œ modified bit๊ฐ€ 1์ธ ํŽ˜์ด์ง€๋Š” disk ๋กœ swap outํ•  ๋•Œ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ๋””์Šคํฌ์— ๋ฐ˜์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— IO ์ž‘์—…์ด ๋™๋ฐ˜๋ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ์„ ์œ„ํ•ด reference bit๊ฐ€ 0์ธ ํŽ˜์ด์ง€๋“ค ์ค‘ modified bit๊ฐ€ 0์ธ ํŽ˜์ด์ง€๋ฅผ ์šฐ์„ ์ ์œผ๋กœ victim ํŽ˜์ด์ง€๋กœ ์„ ์ •ํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.


Thrashing์ด ๋ฌด์—‡์ธ๊ฐ€์š”? ์ด๋ฅผ ์˜ˆ๋ฐฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

์“ฐ๋ ˆ์‹ฑ์ด๋ž€ ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์ด ๊ณ„์†ํ•ด์„œ ๋†’์•„์ง€๋Š” ์•…์ˆœํ™˜์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด ๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค page frame์ด ์ ๊ฒŒ ํ• ๋‹น๋˜์–ด ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
  2. ํŽ˜์ด์ง€ ๋ถ€์žฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํŽ˜์ด์ง€๊ฐ€ swap out, swap in๋  ๋•Œ IO ์ž‘์—…์ด ๋™๋ฐ˜๋˜๊ธฐ ๋•Œ๋ฌธ์— CPU ์ด์šฉ๋ฅ ์ด ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค.
  3. ์šด์˜์ฒด์ œ๋Š” ๋‚ฎ์€ CPU ์ด์šฉ๋ฅ ์„ ๋ณด๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์ด๋Š” ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์„ ๋”์šฑ ๋†’ํ˜€ ์ƒํ™ฉ์„ ์•…ํ™” ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ์“ฐ๋ ˆ์‹ฑ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์“ฐ๋ ˆ์‹ฑ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ Working Set์•Œ๊ณ ๋ฆฌ์ฆ˜, PFF(Page Fault Frequency) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


Page ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ํฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘์œผ๋ฉด

  • ํŽ˜์ด์ง€ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๊ณ , ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งŽ์ด ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ด๋ถ€ ์กฐ๊ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.
  • ํŽ˜์ด์ง€์— ํ•„์š”ํ•œ ์ •๋ณด์˜ ๋น„์œจ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์ด์šฉ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค

ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ๋ฉด

  • ์ฐธ์กฐ๋œ ์ฃผ์†Œ์˜ ์ธ์ ‘ ์ฃผ์†Œ๋ฅผ ๋‹ค์‹œ ์ฐธ์กฐํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค๋Š” ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ ํ™œ์šฉ ์ธก๋ฉด์—์„œ ์ข‹์Šต๋‹ˆ๋‹ค.
  • ํ•œ ๋ฒˆ์˜ ๋””์ŠคํŠธ ํ—ค๋” ์›€์ง์ž„์œผ๋กœ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— Disk Transfer ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ์ข‹์Šต๋‹ˆ๋‹ค.

Segmentation

Virtual Memory1

FileSystem