PCB & Context Switching

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ

CPU๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

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

ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก (Process Control Block, PCB)

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

ํ”„๋กœ์„ธ์Šค๋ฅผ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญํ•  ๋•Œ ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•ด ๋‘ฌ์•ผ ๋‹ค์Œ์— ๋˜‘๊ฐ™์€ ์ž‘์—…์„ ์ด์–ด์„œ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๊ณ , ์ƒˆ๋กœ ํ•ด์•ผ ํ•  ์ž‘์—…์˜ ์ƒํƒœ ๋˜ํ•œ ์•Œ์•„์•ผ ์–ด๋””์„œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์—…์„ ์‹œ์ž‘ํ• ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ฆ‰, PCB๋Š” ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ž„์‹œ ์ €์žฅ์†Œ์ด๋‹ค. PCB๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ƒ์„ฑ๋˜๋ฉฐ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ œ๊ฑฐ๋œ๋‹ค.

PCB์— ์ €์žฅ๋˜๋Š” ์ •๋ณด

img.png
  • ํฌ์ธํ„ฐ(Pointer) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

  • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ(Process State) : ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ์ •๋ณด(new, ready, running, waiting, terminated๋ฅผ ์ €์žฅ)

  • ํ”„๋กœ์„ธ์Šค ์•„์ด๋””(Process ID, PID) : ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์œ ํ•œ ์•„์ด๋””

  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(Program Counter) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ

  • ๋ ˆ์ง€์Šคํ„ฐ(Registers) : ํ”„๋กœ์„ธ์Šค์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ƒํƒœ๋ฅผ ์ €์žฅ

  • ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ(Memory Limits) : ์šด์˜์ฒด์ œ์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฒ”์œ„

  • ์—ด๋ฆฐ ํŒŒ์ผ ๋ชฉ๋ก(List of Open Files) : ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด ์—ด๋ฆฐ ํŒŒ์ผ ๋ชฉ๋ก

๊ฐ PCB๋Š” ์ฃผ์†Œ๊ฐ€ ์žˆ๊ณ , ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋„ ๊ฐ–๊ณ  ์žˆ์œผ๋‹ˆ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List)๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๊ณผ์ •

img_1.png
  1. CPU๋Š” Process P1์„ ์‹คํ–‰ํ•œ๋‹ค.(Executing)

  2. ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜ Interrupt ๋˜๋Š” system call์ด ๋ฐœ์ƒํ•œ๋‹ค.(CPU๋Š” idle(๋Œ€๊ธฐ) ์ƒํƒœ)

  3. CPU๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Process P1์˜ ์ƒํƒœ๋ฅผ PCB์— ์ €์žฅํ•œ๋‹ค.(Saving)

  4. Process P2์˜ ์ƒํƒœ๋ฅผ PCB์—์„œ ์ฝ์–ด CPU๊ฐ€ ์‹คํ–‰ํ•œ๋‹ค.(Loading)

  5. CPU๋Š” Process P2๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.(Executing)

  6. ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜ Interrupt ๋˜๋Š” system call์ด ๋ฐœ์ƒํ•œ๋‹ค.(CPU๋Š” idle(๋Œ€๊ธฐ) ์ƒํƒœ)

  7. CPU๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Process P2์˜ ์ƒํƒœ๋ฅผ PCB์— ์ €์žฅํ•œ๋‹ค.(Saving)

  8. Process P1์˜ ์ƒํƒœ๋ฅผ PCB์—์„œ ์ฝ์–ด CPU๊ฐ€ ์‹คํ–‰ํ•œ๋‹ค.(Loading)

  9. CPU๋Š” Process P1์„ ์ค‘๊ฐ„ ์‹œ์ ๋ถ€ํ„ฐ ์‹คํ–‰ํ•œ๋‹ค.(Executing)

Context Switching์˜ Overhead

Context Switching์€ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ผ์–ด๋‚˜์ง€๋งŒ, ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • PCB ์ €์žฅ ๋ฐ ๋ณต์› ๋น„์šฉ

  • CPU Cache ์ดˆ๊ธฐํ™” ๋น„์šฉ

  • ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง ๋น„์šฉ

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

์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง

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

ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง

์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ์‹คํ–‰์„ ์ „ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ ๋กœ, ํ”„๋กœ์„ธ์Šค ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ๊ณผ ๋‹ค๋ฅธ ์ ์€ ์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์Šค๋ ˆ๋“œ๋“ค์„ ๊ตํ™˜ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

img_4.png

TCB(Thread Control Block)

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

img_2.png

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

  • ๋ฎคํ…์Šค(mutex) : ์ž„๊ณ„ ๊ตฌ์—ญ์— 1๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋™๊ธฐํ™” ๊ธฐ๋ฒ•

  • ์„ธ๋งˆํฌ์–ด(semaphore) : ์ž„๊ณ„ ๊ตฌ์—ญ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ณ , counter๋ฅผ ๋‘์–ด์„œ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ์ œํ•œํ•˜๋Š” ๊ธฐ๋ฒ•

ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ

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

1. TCB์™€ PCB์˜ ์ฐจ์ด์ 

  • ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์Šค๋ ˆ๋“œ๋“ค์€ text, data, heap ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ณ , TCB์—๋Š” stack ๋ฐ ๊ฐ„๋‹จํ•œ ๋ ˆ์ง€์Šคํ„ฐ ํฌ์ธํ„ฐ ์ •๋ณด๋งŒ์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— PCB๋ณด๋‹ค TCB๊ฐ€ ๊ฐ€๋ฒผ์›Œ ๋” ๋นจ๋ฆฌ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹ค.

2. ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ธฐํ™” ์—ฌ๋ถ€

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

img_3.png
  • ํ”„๋กœ์„ธ์Šค ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์œผ๋กœ ์ธํ•ด CPU๊ฐ€ ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š”๋ฐ ์ด๊ฒƒ์ด ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด ๋ถ€๋‹ด์ด ๋˜๋Š” ์š”์†Œ์ด๋‹ค.

  • ์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ, ํ”„๋กœ์„ธ์Šค ๋‚ด ์Šค๋ ˆ๋“œ ๊ฐ„์— ์Šคํƒ๊ณผ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ’ ๋“ฑ ์ผ๋ถ€ ์ปจํ…์ŠคํŠธ ์ •๋ณด๋งŒ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋‹ค๋งŒ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ CPU ์ฝ”์–ด์—์„œ ์‹คํ–‰๋  ๋•Œ๋Š” ํ•ด๋‹น ์ฝ”์–ด์˜ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์ •๋ณด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค.

3. ์ž์› ๋™๊ธฐํ™” ๋ฌธ์ œ

์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ heap ์˜์—ญ์— ์ ‘๊ทผํ•  ๋•Œ, ์ด์ „ ์Šค๋ ˆ๋“œ๊ฐ€ ์ด๋ฏธ ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‘ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์„ ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ฒฝ์Ÿ ์กฐ๊ฑด (race condition) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

Last updated