[Computer Science][Operating System] ๐Ÿ–ฅ๏ธ PCB์™€ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ

๊น€์ƒ์šฑยท2024๋…„ 8์›” 11์ผ
0
post-thumbnail

Process Management

CPU๊ฐ€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด CPU ์Šค์ผ€์ค„๋ง์„ ํ™œ์šฉํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ CPU๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ํŠน์„ฑ์„ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ process Metadata์ž…๋‹ˆ๋‹ค.

  • Process Metadata
    • Process ID
    • Process State
    • Process Priority
    • CPU Registers
    • Owner
    • CPU Usage
    • Memory Usage

์ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ PCB(Process Control Block)๋ผ๋Š” ๊ตฌ์กฐ์ฒด์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

PCB(Process Control Block) ๐Ÿ“œ

PCB๋Š” ํ”„๋กœ์„ธ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ, ๊ฐ PCB๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ -> ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ -> ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์— (์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ) ์ƒ์„ฑ -> ์ด ํ”„๋กœ์„ธ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์ด PCB์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

PCB๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”? โ“

CPU๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ต์ฒด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์‹œ ํ• ๋‹น๋ฐ›์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋  ๋•Œ) ์ด๋•Œ, ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•  ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ PCB์— ์ €์žฅํ•ด๋‘๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

PCB๋Š” ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌ๋˜๋‚˜์š”? ๐Ÿ”—

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

์ด๋ ‡๊ฒŒ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ, CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด(ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ •๋ณด)๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ณผ์ •์„ Context Switching์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

Context Switching์ด๋ž€? โณ

ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ณต์›ํ•˜๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ ๊ทธ ์ƒํƒœ๋ฅผ ๋ณด๊ด€ํ•˜๊ณ , ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋˜ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ์ด์ „์— ๋ณด๊ด€ํ•œ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ๊ธฐ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ธฐํ™”์™€ ๊ฐ™์€ ๋ฌด๊ฑฐ์šด ์ž‘์—…์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CPU๋Š” ์ด์ „ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ PCB์— ๋ณด๊ด€ํ•˜๊ณ , ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ PCB์—์„œ ์ฝ์–ด ๋ ˆ์ง€์Šคํ„ฐ์— ์ ์žฌํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ์‹คํ–‰ ์ค‘์ธ CPU ์‚ฌ์šฉ ํ—ˆ๊ฐ€ ์‹œ๊ฐ„์ด ์†Œ์ง„๋˜๊ฑฐ๋‚˜, ์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— Context Switching์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready -> Running, Running -> Ready, Running -> Waiting์ฒ˜๋Ÿผ ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค!

Context Switching์˜ OverHead๋ž€? โš ๏ธ

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

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

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


[1] velog - [์šด์˜์ฒด์ œ]CPU ์Šค์ผ€์ค„๋ง(feat. PCB, Context Switching) (https://velog.io/@tjdtn0219/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9CCPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81feat.-PCB-Context-Switching)
[2] ํ‹ฐ์Šคํ† ๋ฆฌ - [์šด์˜์ฒด์ œ] CPU ์Šค์ผ€์ค„๋ง - ๐Ÿ’ปํ‰๋ฒ”ํ•œ ๊ณต๋Œ€์ƒ์˜ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป (https://rob-coding.tistory.com/31)
[3] GitHub - [Operating System - Chapter 5] CPU ์Šค์ผ€์ค„๋ง (https://imbf.github.io/computer-science(cs)/2020/10/18/CPU-Scheduling.html)
[4] ํ‹ฐ์Šคํ† ๋ฆฌ - [์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ] 4๊ณผ๋ชฉ - ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ, CPU ์Šค์ผ€์ค„๋ง ... (https://pupbani.tistory.com/132)

0๊ฐœ์˜ ๋Œ“๊ธ€