# ์šด์˜์ฒด์ œ




# ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ์ฐจ์ด

ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•˜๋ฉฐ, ์Šค๋ ˆ๋“œ๋Š” ์ด ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„ ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ตœ์†Œ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ ๋ณ„๋„์˜ ์ฃผ์†Œ๊ณต๊ฐ„์„ ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹น๋ฐ›๋Š”๋‹ค. (code, data, heap, stack)

์Šค๋ ˆ๋“œ๋Š” ์ด์ค‘์— stack๋งŒ ๋”ฐ๋กœ ํ• ๋‹น๋ฐ›๊ณ  ๋‚˜๋จธ์ง€ ์˜์—ญ์€ ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ ์„œ๋กœ ๊ณต์œ ํ•œ๋‹ค.

# [์š”์•ฝ]

ํ”„๋กœ์„ธ์Šค : ์ž์‹ ๋งŒ์˜ ๊ณ ์œ  ๊ณต๊ฐ„๊ณผ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉ

์Šค๋ ˆ๋“œ : ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ๊ณต๊ฐ„๊ณผ ์ž์›์„ ๊ณต์œ ํ•˜๋ฉด์„œ ์‚ฌ์šฉ



# ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๊ฑธ ๊ตณ์ด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋กœ ํ•˜๋Š” ์ด์œ ๋Š”?

ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ๊ฐ์†Œํ•จ์œผ๋กœ์จ ์ž์›์˜ ํšจ์œจ์  ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•จ

ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ (IPC)๋ณด๋‹ค ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ํ†ต์‹  ๋น„์šฉ์ด ์ ์–ด ์ž‘์—…๋“ค ๊ฐ„ ๋ถ€๋‹ด์ด ๊ฐ์†Œํ•จ

๋Œ€์‹ , ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ณต์œ  ์ž์›์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด '๋™๊ธฐํ™”'์— ์‹ ๊ฒฝ์จ์•ผ ํ•œ๋‹ค.



# ๊ต์ฐฉ์ƒํƒœ(DeadLock)๊ฐ€ ๋ฌด์—‡์ด๋ฉฐ, 4๊ฐ€์ง€ ์กฐ๊ฑด์€?

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์–ป์ง€ ๋ชปํ•ด ๋‹ค์Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

์‹œ์Šคํ…œ์ ์œผ๋กœ ํ•œ์ •๋œ ์ž์›์„ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž„

๊ต์ฐฉ์ƒํƒœ์˜ 4๊ฐ€์ง€ ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

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

์ด 4๊ฐ€์ง€ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ๊ต์ฐฉ์ƒํƒœ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

(์ˆœํ™˜๋Œ€๊ธฐ๋Š” ์ ์œ ๋Œ€๊ธฐ์™€ ๋น„์„ ์ ์„ ๋ชจ๋‘ ๋งŒ์กฑํ•ด์•ผ๋งŒ ์„ฑ๋ฆฝํ•ฉ. ๋”ฐ๋ผ์„œ 4๊ฐ€์ง€๊ฐ€ ์„œ๋กœ ๋…๋ฆฝ์ ์ด์ง„ ์•Š์Œ)



# ๊ต์ฐฉ์ƒํƒœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 4๊ฐ€์ง€

  • ์˜ˆ๋ฐฉ
  • ํšŒํ”ผ
  • ๋ฌด์‹œ
  • ๋ฐœ๊ฒฌ



# ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต (์ƒ-ํ•˜์ธต ์ˆœ)

๋ ˆ์ง€์Šคํ„ฐ
์บ์‹œ
๋ฉ”๋ชจ๋ฆฌ
ํ•˜๋“œ๋””์Šคํฌ



# ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜ First fit, Next fit, Best fit ๊ฒฐ๊ณผ

  • First fit : ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฒ€์‚ฌํ•ด์„œ ํฌ๊ธฐ๊ฐ€ ์ถฉ๋ถ„ํ•œ ์ฒซ๋ฒˆ์งธ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น
  • Next fit : ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฐธ์กฐํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•ด ๊ณต๊ฐ„์„ ์ฐพ์Œ
  • Best fit : ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฒ€์‚ฌํ•ด์„œ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ณต๊ฐ„์— ํ• ๋‹น



# ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ฅธ ํŽ˜์ด์ง€ ํดํŠธ ๋ฐฉ์‹

OPT : ์ตœ์  ๊ต์ฒด. ์•ž์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํŽ˜์ด์ง€ ๊ต์ฒด (์‹คํ˜„ ๊ฐ€๋Šฅ์„ฑ ํฌ๋ฐ•)

FIFO : ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋œ ์ˆœ์„œ๋Œ€๋กœ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

LRU : ์ตœ๊ทผ์— ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

LFU : ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

NUR : ์ตœ๊ทผ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด



# ์™ธ๋ถ€ ๋‹จํŽธํ™”์™€ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋ž€?

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

๋‚ด๋ถ€ ๋‹จํŽธํ™” : ์ž‘์—…์— ํ•„์š”ํ•œ ๊ณต๊ฐ„๋ณด๋‹ค ๋งŽ์€ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›์Œ์œผ๋กœ์จ ๋ฐœ์ƒํ•˜๋Š” ๋‚ด๋ถ€์˜ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„



# ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ž€?

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



# ํŽ˜์ด์ง•๊ณผ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์ด๋ž€?

# ํŽ˜์ด์ง•

ํŽ˜์ด์ง€ ๋‹จ์œ„์˜ ๋…ผ๋ฆฌ-๋ฌผ๋ฆฌ ์ฃผ์†Œ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•. ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์ด ํ•˜๋‚˜์˜ ์—ฐ์†์ ์ธ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š” ์ œ์•ฝ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ• ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋ถ„๋ฆฌํ•ด์•ผํ•จ(์ฃผ์†Œ์˜ ๋™์  ์žฌ๋ฐฐ์น˜ ํ—ˆ์šฉ), ๋ณ€ํ™˜์„ ์œ„ํ•œ MMU ํ•„์š”

ํŠน์ง• : ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ์Œ. ํŽ˜์ด์ง€๊ฐ€ ํด์ˆ˜๋ก ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋„ ์ปค์ง

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

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



# ๋ฎคํ…์Šค, ์„ธ๋งˆํฌ์–ด๊ฐ€ ๋ญ”์ง€, ์ฐจ์ด์ ์€?

# ์„ธ๋งˆํฌ์–ด

์šด์˜์ฒด์ œ์—์„œ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘์†์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์‹ ํ˜ธ ๊ณต์œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ—ˆ์šฉ์น˜๋งŒํผ๋งŒ ๋™์‹œ์— ์‚ฌ์šฉ์ž ์ ‘๊ทผ ๊ฐ€๋Šฅ ์Šค๋ ˆ๋“œ๋“ค์€ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๊ณ , ์„ธ๋งˆํฌ์–ด๋Š” ์นด์šดํŠธ๊ฐ€ ํ•˜๋‚˜์”ฉ ์ค„์–ด๋“ค๊ฒŒ ๋˜๋ฉฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ธ ๊ฒฝ์šฐ(์นด์šดํŠธ=0) ๋‹ค์Œ ์ž‘์—…์€ ๋Œ€๊ธฐ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค

# ๋ฎคํ…์Šค

์ƒํ˜ธ๋ฐฐ์ œ, ์ œ์–ด๋˜๋Š” ์„น์…˜์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น ์„น์…˜์— ์ ‘๊ทผํ•˜๋ ค๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค์„ ๊ฐ•์ œ์ ์œผ๋กœ ๋ง‰์Œ์œผ๋กœ์จ ์ฒซ๋ฒˆ์žฌ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•ด๋‹น ์„น์…˜์„ ๋น ์ ธ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ (๋Œ€๊ธฐ์—ด(ํ) ๊ตฌ์กฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ)

# ์ฐจ์ด์ 
  • ์„ธ๋งˆํฌ์–ด๋Š” ๋ฎคํ…์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฎคํ…์Šค๋Š” ์„ธ๋งˆํฌ์–ด๊ฐ€ ๋  ์ˆ˜ ์—†์Œ
  • ์„ธ๋งˆํฌ์–ด๋Š” ์†Œ์œ  ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ฎคํƒ์Šค๋Š” ์†Œ์œ ๊ฐ€ ๊ฐ€๋Šฅํ•จ
  • ๋™๊ธฐํ™”์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฆ„



# Context Switching์ด๋ž€?

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด, ์ด์ „์˜ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์ ์žฌํ•˜๋Š” ์ž‘์—…

ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์€ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ PCB์— ๊ธฐ๋ก๋จ



# ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ vs ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ ์ฐจ์ด๋Š”?

# ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ

์žฅ์  : context switching์ด ์—†์–ด์„œ ์ปค๋„ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์Œ (์Šค๋ ˆ๋“œ ์ „ํ™˜ ์‹œ ์ปค๋„ ์Šค์ผ€์ค„๋Ÿฌ ํ˜ธ์ถœํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ)

๋‹จ์  : ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ปค๋„๋กœ ์ง„์ž…ํ•˜๋Š” ์ˆœ๊ฐ„, ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋“ค๋„ ์ „๋ถ€ ์ •์ง€๋จ (์ปค๋„์ด ์Šค๋ ˆ๋“œ์˜ ์กด์žฌ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—)

# ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ

์žฅ์  : ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ํšจ์œจ์ ์ž„. ์ปค๋„ ์Šค๋ ˆ๋“œ๋ฅผ ์“ฐ๋ฉด ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋Š” CPU๊ฐ€ ์•„๋ฌด๋ฆฌ ๋งŽ์•„๋„ ์ปค๋„ ๋ชจ๋“œ์˜ ์Šค์ผ€์ค„์ด ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ฐ CPU์— ํšจ์œจ์ ์œผ๋กœ ์Šค๋ ˆ๋“œ ๋ฐฐ๋‹นํ•  ์ˆ˜๊ฐ€ ์—†์Œ

๋‹จ์  : context switching์ด ๋ฐœ์ƒํ•จ. ์ด ๊ณผ์ •์—์„œ ํ”„๋กœ์„ธ์„œ ๋ชจ๋“œ๊ฐ€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์™€ ์ปค๋„ ๋ชจ๋“œ ์‚ฌ์ด๋ฅผ ์›€์ง์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์ด ๋Œ์•„๋‹ค๋‹ ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค.



# ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ž€?

ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์™€ ์‹ค์ œ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ

๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ = ์‹ค์ œ + ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์•ˆ๋จ

๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์„œ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ๋งž์ง€๋งŒ, ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์“ด๋‹ค๊ณ  ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜

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

์ฆ‰, ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ๋†€๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„์ด ์—†๊ฒŒ ๊ณ„์† ์ผ์„ ์‹œํ‚ค๋Š” ๊ฒƒ. ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด '๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ'



# fork()์™€ vfork()์˜ ์ฐจ์ด์ ์€?

fork()๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉ

vfork()๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•จ. ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— fork()๋ณด๋‹ค ์ƒ์„ฑ ์†๋„ ๋น ๋ฆ„. ํ•˜์ง€๋งŒ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์›์— ๋Œ€ํ•œ race condition์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ exitํ•˜๊ฑฐ๋‚˜ execute๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „๊นŒ์ง€ block๋œ๋‹ค



# Race Condition์ด๋ž€?

๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณตํ†ต ์ž์›์„ ๋ณ‘ํ–‰์ ์œผ๋กœ ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋•Œ, ๊ณต์šฉ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ์ˆœ์„œ์— ๋”ฐ๋ผ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ƒํ™ฉ

Race Condition์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Œ. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ํ”ผํ•ด์•ผ ํ•˜๋ฉฐ ์ƒํ˜ธ๋ฐฐ์ œ๋‚˜ ์ž„๊ณ„๊ตฌ์—ญ์œผ๋กœ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.



# ๋ฆฌ๋ˆ…์Šค์—์„œ ์‹œ์Šคํ…œ ์ฝœ๊ณผ ์„œ๋ธŒ๋ฃจํ‹ด์˜ ์ฐจ์ด๋Š”?

์šฐ์„  ์ปค๋„์„ ํ™•์ธํ•˜์ž



์ปค๋„์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋‘˜๋Ÿฌ์‹ธ๊ณ  ์žˆ์Œ

์ฆ‰, ์ปค๋„์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ API์™€ ๊ฐ™์Œ


์„œ๋ธŒ๋ฃจํ‹ด(Subr>outine)์€ ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ API๋ฅผ ์–˜๊ธฐํ•˜๋Š” ๊ฒƒ

stdio.h์— ์žˆ๋Š” printf๋‚˜ scanf
string.h์— ์žˆ๋Š” strcmp๋‚˜ strcpy



# ์„œ๋ธŒ๋ฃจํ‹ด๊ณผ ์‹œ์Šคํ…œ ์ฝœ์˜ ์ฐจ์ด๋Š”?

์„œ๋ธŒ๋ฃจํ‹ด์ด ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๊ณ , ์‹œ์Šคํ…œ ์ฝœ์ด ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์„œ๋ธŒ๋ฃจํ‹ด์— ๋ณด๋ƒ„

์‹œ์Šคํ…œ ์ฝœ ํ˜ธ์ถœ ์‹œ, ์ปค๋„์ด ํ˜ธ์ถœ๋˜๊ณ  ์ปค๋„์ด ์ˆ˜ํ–‰ํ•œ ์ž„์˜์˜ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์‹œ์Šคํ…œ ์ฝœ๋กœ ๋ณด๋ƒ„

์ฆ‰, ์ง„ํ–‰ ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์„œ๋ธŒ๋ฃจํ‹ด์ด ์‹œ์Šคํ…œ ์ฝœ ํ˜ธ์ถœ โ†’ ์‹œ์Šคํ…œ ์ฝœ์€ ์ปค๋„ ํ˜ธ์ถœ 
โ†’ ์ปค๋„์€ ์ž์‹ ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚˜์˜จ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ์Šคํ…œ ์ฝœ์—๊ฒŒ ๋ณด๋ƒ„ 
โ†’ ์‹œ์Šคํ…œ ์ฝœ์ด ๋‹ค์‹œ ์„œ๋ธŒ๋ฃจํ‹ด์—๊ฒŒ ๋ณด๋ƒ„

์‹ค๋ฌด๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๋‘˜์˜ ํฐ ์ฐจ์ด๋Š” ์—†์Œ(api๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋™์ผ)





์ตœ์ข… ์ˆ˜์ • : 12/17/2022, 7:23:59 AM