Computer Science/๐Ÿ”’ Operating System

[์šด์˜์ฒด์ œ] PCB์™€ ๋ฌธ๋งฅ ๊ตํ™˜(Context Switching)

J1Yun 2023. 2. 24. 15:00
728x90

PCB (Process Control Block)

  • ์šด์˜์ฒด์ œ๊ฐ€ ์‹œ์Šคํ…œ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์œ ์ง€ํ•ด์•ผํ•˜๋Š” ์ •๋ณด๋“ค์„ ๋‹ด๋Š” ์ปค๋„ ๋‚ด ์ž๋ฃŒ๊ตฌ์กฐ
    • ์ปค๋„ ์ฃผ์†Œ ๊ณต๊ฐ„์˜ data ์˜์—ญ์— ์กด์žฌ
  • ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋“ค์ด ์ €์žฅ๋˜๋Š” ๊ณณ
    • Process ID
    • Process ์ƒํƒœ
    • CPU Regiter ๊ฐ’
    • CPU ์Šค์ผ€์ค„๋ง ์ •๋ณด
    • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ/๊ด€๋ฆฌ ์ •๋ณด
    • ๋“ฑ๋“ฑ
  • Linked List ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ
    • PCB ์ƒ์„ฑ๋งˆ๋‹ค PCB List Head์— ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์—ฐ๊ฒฐ

 

PCB๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

CPU์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ต์ฒดํ•ด์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ์ด๋ฅผ ๋ฌธ๋งฅ ๊ตํ™˜(Context Switching)์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ฌธ๋งฅ ๊ตํ™˜ ์‹œ ํ˜„์žฌ CPU ์ƒ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด(๋ฌธ๋งฅ)์„ ์ž์‹ ์˜ PCB์— ์ €์žฅํ•˜๊ณ , ์ƒˆ๋กญ๊ฒŒ CPU ํ• ๋‹น์„ ๋ฐ›๊ฒŒ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” PCB๋กœ๋ถ€ํ„ฐ ์˜ˆ์ „์— ์ €์žฅํ–ˆ๋˜ ์ž์‹ ์˜ ์ •๋ณด(๋ฌธ๋งฅ)์„ ๋ณต์›์‹œ์ผœ ์ด์–ด์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๋ ‡๋“ฏ PCB๋Š” ๋ฌธ๋งฅ ๊ตํ™˜ ๊ณผ์ •์—์„œ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด/์ƒํƒœ/๋ฌธ๋งฅ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

 

 

๋ฌธ๋งฅ ๊ตํ™˜(Context Switching)

  • CPU/์ฝ”์–ด์—์„œ ์‹คํ–‰์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๋กœ ๊ต์ฒด๋˜๋Š” ๊ฒƒ (ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ -> ์ดํ•˜ ํ”„๋กœ์„ธ์Šค)
  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ CPU ์ œ์–ด๊ถŒ์ด ์ด์–‘๋˜๋Š” ๊ณผ์ •
  • ๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น(Multitasking), ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋ง(Interrupt Handling) ์‹œ ๋ฌธ๋งฅ ๊ตํ™˜ ๋ฐœ์ƒ
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃผ์–ด์ง„ time slice(quantum)๋ฅผ ๋‹ค ์‚ฌ์šฉํ–ˆ๋‹ค๋Š” ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ
    • ์ž…์ถœ๋ ฅ ์š”์ฒญ(IO ์ž‘์—…) ๋“ฑ์— ๋Œ€ํ•œ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ
    • ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ, ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋Œ€๊ธฐ ๋“ฑ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผํ•  ๋•Œ
    • ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ทธ ์™ธ ์ธํ„ฐ๋ŸฝํŠธ๋‚˜ ์‹œ์Šคํ…œ์ฝœ ๋ฐœ์ƒ ์‹œ์—๋Š” ์œ ์ €์—์„œ ์ปค๋„๋กœ ๋ชจ๋“œ๋งŒ ๋ฐ”๋€” ๋ฟ ๋ฌธ๋งฅ ๊ตํ™˜ X
  • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ (๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น)
  • ์งง์€ time slice ๋“ฑ์œผ๋กœ ์ธํ•œ ์žฆ์€ ๋ฌธ๋งฅ ๊ตํ™˜์€ ์˜ค๋ฒ„ ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ

 

Context Switching ๊ณผ์ •

  1. P1 ์‹คํ–‰ ์ค‘ ์šด์˜์ฒด์ œ์—์„œ ํ”„๋กœ์„ธ์Šค์˜ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ
  2. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ์œ ์ € ๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜
  3. ๊ธฐ์กด์— ์‹คํ–‰๋˜์—ˆ๋˜ ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค(P1)์˜ ์ƒํƒœ/์ •๋ณด๋ฅผ ์ž์‹ ์˜ PCB1์— ์ €์žฅ
  4. PCB2๋กœ๋ถ€ํ„ฐ ๋‹ค์Œ์— ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค(P2)์˜ ์ƒํƒœ/์ •๋ณด ๋ณต๊ตฌ
  5. ์ปค๋„ ๋ชจ๋“œ์—์„œ ์œ ์ € ๋ชจ๋“œ๋กœ ์ „ํ™˜
  6. ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค P2 ์‹คํ–‰

 

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ์ „์ด์— ๋”ฐ๋ฅธ ๋ฌธ๋งฅ ๊ตํ™˜์ด ํ•„์š”ํ•œ ์ƒํ™ฉ

ํ•„์š” ์ƒํ™ฉ ์„ค๋ช… ์ „์ด ๊ณผ์ •
dispatch ์ƒˆ๋กญ๊ฒŒ CPU ํ• ๋‹น ๋ฐ›์•„ ์‹คํ–‰ ์ƒํƒœ๋กœ ์ „์ด ์ค€๋น„ → ์‹คํ–‰
(dispatch)
CPU ํ• ๋‹น ์‹œ๊ฐ„ ๋งŒ๋ฃŒ CPU ํ• ๋‹น ์‹œ๊ฐ„ ๋งŒ๋ฃŒ๋กœ ์ค€๋น„ ์ƒํƒœ๋กœ ์ „์ด ์‹คํ–‰ → ์ค€๋น„
(Timeout)
I/O ์ž‘์—… ๋ฐ ํ• ๋‹น I/O ์ž‘์—…์ด ํ•„์š”ํ•˜์—ฌ ์ž‘์—… ์™„๋ฃŒ ์‹œ๊นŒ์ง€ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „์ด ์‹คํ–‰ → ๋Œ€๊ธฐ
(Sleep)
System Call ๋˜๋‹ค๋ฅธ ์„œ๋น„์Šค ํ˜ธ์ถœ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „์ด ์‹คํ–‰ → ๋Œ€๊ธฐ
(Sleep

 

๋ฌธ๋งฅ ๊ตํ™˜์˜ ์˜ค๋ฒ„ํ—ค๋“œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

  • ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ˆ˜์ค€(time slice ์ฃผ๊ธฐ)์„ ๋‚ฎ์ถ”์–ด ๋ฌธ๋งฅ ๊ตํ™˜ ๋ฐœ์ƒ ๋นˆ๋„ ๊ฐ์†Œ
  • ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฌธ๋งฅ ๊ตํ™˜ ๋ถ€ํ•˜ ์ตœ์†Œํ™” (์Šค๋ ˆ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ด€๋ จ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ํ•„์š” X)
  • ์Šคํƒ ์ด์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ์Šคํƒ ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•ด ๋ฌธ๋งฅ ๊ตํ™˜ ๋ถ€ํ•˜ ์ตœ์†Œํ™”

 

 

โญ๏ธ ์ฐธ๊ณ 

 

 

728x90