๐Ÿ“–ํ”„๋กœ์„ธ์Šค

๐Ÿ“–PCB (Process Control Block)

PCB๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ณด๋ฅผ ์ €์žฅํ•ด๋‘” ๊ณณ์œผ๋กœ, ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • ์šด์˜์ฒด์ œ๋Š” ๋น ๋ฅด๊ฒŒ PCB์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ PCB๋ฅผ ๊ด€๋ฆฌ
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด Process Metadata๋ฅผ PCB์— ์ €์žฅ (1 Process : 1 PCB)

๐Ÿ“ŽProcess Metadata

PCB๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์— ๊ด€ํ•œ ์ •๋ณด

  • ํ”„๋กœ์„ธ์Šค ๋ฒˆํ˜ธ(PID) : ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๋Š” ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž๋ฅผ ์ €์žฅํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ID ๋˜๋Š” PID๋ผ๋Š” ๊ณ ์œ ํ•œ ID๊ฐ€ ํ• ๋‹น๋จ
  • ํ”„๋กœ์„ธ์Šค ํ˜„์žฌ ์ƒํƒœ : ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ ์ƒํƒœ (์ƒ์„ฑ(New), ์ค€๋น„(Ready), ์‹คํ–‰(Running), ๋Œ€๊ธฐ(Waiting), ์ข…๋ฃŒ(Terminated))๋ฅผ ์ €์žฅ
  • ํฌ์ธํ„ฐ : ํ”„๋กœ์„ธ์Šค์˜ ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๋Š” ํฌ์ธํ„ฐ ์ •๋ณด
  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(PC) : ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด ์‹คํ–‰๋  ๋‹ค์Œ ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ์นด์šดํ„ฐ ๊ฐ’์„ ์ €์žฅํ•จ
  • ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด : ๋ˆ„์‚ฐ๊ธฐ, ๋ฒ ์ด์Šค, ๋ ˆ์ง€์Šคํ„ฐ ๋ฐ ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” CPU ๋ ˆ์ง€์Šคํ„ฐ์— ์žˆ๋Š” ์ •๋ณด. ์Šคํƒ ํฌ์ธํ„ฐ(SP) ๋˜ํ•œ ๋ ˆ์ง€์Šคํ„ฐ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ์‹œ์Šคํ…œ ์Šคํƒ ํฌ์ธํ„ฐ์˜ Top ์ฃผ์†Œ๋ฅผ ์ €์žฅ
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด : ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋จ. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”, ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ” ๋“ฑ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ
  • ์ž…,์ถœ๋ ฅ ์ƒํƒœ ์ •๋ณด : ์ž…์ถœ๋ ฅ์žฅ์น˜, ๊ฐœ๋ฐฉ๋œ ํŒŒ์ผ ๋ชฉ๋ก

๐Ÿ“ŽPCB์— Process Metadata๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณผ์ •

  1. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰
  2. ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ
  3. ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์— Stack, Data, Code ์ƒ์„ฑ
  4. ์ด ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋“ค์„ PCB์— ์ €์žฅ

๐Ÿ“ŽPCB๊ฐ€ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐฉ์‹

Linked List ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ

  • PCB List Head์— PCB๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๋ถ™์Œ
  • ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ ธ์žˆ๋Š” Linked list์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์šฉ์ด
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด PCB๋„ ์ œ๊ฑฐ๋จ

๐Ÿ“ŽPCB๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

CPU์—์„œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ต์ฒด ์ž‘์—…์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ, ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•  Block ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๊ฐ’์„ PCB์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•จ

๐Ÿ“–Context Switching

ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ PCB์— ์ €์žฅํ•˜๊ณ , ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ํ”„๋กœ์„ธ์Šค์˜ PCB ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ ˆ์ง€์Šคํ„ฐ์— ๊ฐ’์„ ์ ์žฌํ•˜๋Š” ๊ณผ์ • (ํ”„๋กœ์„ธ์Šค ๊ต์ฒด ๊ณผ์ •) ์ฆ‰, ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ, CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ

  • Context Switching์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready โ†’ Running, Running โ†’ Ready, Running โ†’ Block ์ฒ˜๋Ÿผ ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ์— ๋ฐœ์ƒ

๐Ÿ“ŽContext Switching์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

1. ์ธํ„ฐ๋ŸฝํŠธ(Interrupt)

2. ์‹œ์Šคํ…œ ์ฝœ(System Call)

๐Ÿ“ŽContext Switching์ด ํ•„์š”ํ•œ ์ด์œ 

CPU๊ฐ€ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ (์‹ค์ œ๋กœ CPU๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ)

๐Ÿ“ŽContext Switching ๊ณผ์ •

context switching

  1. Process P0์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘, ์–ด๋– ํ•œ ์ด์œ ๋กœ ์ธํ„ฐ๋ŸฝํŠธ๋‚˜ ์‹œ์Šคํ…œ ์ฝœ์ด ๋ฐœ์ƒ
  2. P0์ด ์œ ์ € ๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜๊ณ  P0์€ Ready๋กœ ์ƒํƒœ ๋ณ€๊ฒฝ
  3. P0์˜ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ์ •๋ณด๋ฅผ PCB์— ์ €์žฅ
  4. P1์˜ PCB ์ •๋ณด๋ฅผ ํ†ตํ•ด CPU ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด๋ฅผ ์”€
  • Program Counter : ์–ด๋А ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ• ์ง€์— ๋Œ€ํ•œ ์ •๋ณด
  • Stack Pointer : ํ”„๋กœ์„ธ์Šค์˜ ์Šคํƒ ์˜์—ญ ๋งˆ์ง€๋ง‰ ์ฃผ์†Œ์— ๋Œ€ํ•œ ์ •๋ณด
  1. P1 ํ”„๋กœ์„ธ์Šค๋ฅผ ์ปค๋„ ๋ชจ๋“œ์—์„œ ์œ ์ € ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•ด ์‹คํ–‰

Context Switching์„ ํ•  ๋•Œ, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ• ํ…๋ฐ Context Switching์„ ํ•˜๋Š” ์ด์œ ?

ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰ ์ค‘ ์ž…์ถœ๋ ฅ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ CPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ ๋˜๋Š”๋ฐ ์ด CPU๊ฐ€ ๋‚ญ๋น„๋˜๋Š” ์‹œ๊ฐ„ ๋™์•ˆ ์ฐจ๋ผ๋ฆฌ overhead๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ Context Switching์„ ํ†ตํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒŒ ์ „์ฒด์ ์œผ๋กœ ๋ดค์„ ๋•Œ ๋” ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— overhead๋ฅผ ๊ฐ์ˆ˜ํ•˜๊ณ  Context Switching์„ ํ•จ

๐Ÿ”–Context Switching ์˜ค๋ฒ„ํ—ค๋“œ Context Switching์— ๊ฑธ๋ฆฐ ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ