๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅ CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ KOCW ์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜์˜ <์šด์˜์ฒด์ œ> ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ ,
<ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ปดํ“จํ„ฐ๊ตฌ์กฐ + ์šด์˜์ฒด์ œ> ์ฑ…์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
๊ฒŒ์‹œ๊ธ€์— ํฌํ•จ๋˜๋Š” ์ด๋ฏธ์ง€ ์ž๋ฃŒ๋Š” <์šด์˜์ฒด์ œ> ๊ฐ•์˜์— ํฌํ•จ๋œ ๊ฐ•์˜ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

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

 

1. ์ƒ์„ฑ ์ƒํƒœ - new 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ ์ค‘์ธ ์ƒํƒœ๋ฅผ ์ƒ์„ฑ ์ƒํƒœ(new) ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

2. ์‹คํ–‰ ์ƒํƒœ - running 

CPU๋ฅผ ํ• ๋‹น ๋ฐ›์•„ ์‹คํ–‰ ์ค‘(= instruction์„ ์ˆ˜ํ–‰ ์ค‘)์ธ ์ƒํƒœ๋ฅผ ์‹คํ–‰ ์ƒํƒœ(running)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ๋Š” CPU๊ฐ€ ํ•˜๋‚˜์ธ ์ปดํ“จํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋งค ์ˆœ๊ฐ„ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ ์ƒํƒœ์ธ ํ”„๋กœ์„ธ์Šค๋Š” ํ• ๋‹น๋œ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

3. ์ค€๋น„ ์ƒํƒœ - ready

CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ค€๋น„ ์ƒํƒœ(ready)์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ž…๋‹ˆ๋‹ค.

๋‹จ, ์ค€๋น„ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์‹คํ–‰์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ์ค€๋น„๊ฐ€ ๋‹ค ๋๋‚˜์žˆ๋Š”(๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ๋‹ค๋ฅธ ์กฐ๊ฑด ๋ชจ๋‘ ๋งŒ์กฑ) ํ”„๋กœ์„ธ์Šค๋“ค์ž…๋‹ˆ๋‹ค. ๋‹น์žฅ์ด๋ผ๋„ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์•„์ง ์ž์‹ ์˜ ์ฐจ๋ก€๊ฐ€ ์•„๋‹ˆ๊ธฐ์— ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

4. ๋Œ€๊ธฐ ์ƒํƒœ - blocked

CPU๋ฅผ ์–ป์–ด๋„ ๋‹น์žฅ instruction ์ˆ˜ํ–‰์ด ๋ถˆ๊ฐ€ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๋Œ€๊ธฐ ์ƒํƒœ(blocked)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์ž์‹ ์ด ์š”์ฒญํ•œ ์ด๋ฒคํŠธ(๋Œ€๋ถ€๋ถ„ I/O ์ž‘์—…)๊ฐ€ ์ฆ‰์‹œ ๋งŒ์กฑ๋˜์ง€ ์•Š์•„ ์ด๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ๋กœ, ์š”์ฒญ ์ด๋ฒคํŠธ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์‹œ ์ค€๋น„ ์ƒํƒœ(ready)๋กœ CPU ํ• ๋‹น์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

5. ์ข…๋ฃŒ ์ƒํƒœ - terminated

์ข…๋ฃŒ ์ƒํƒœ (terminated)๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰(execution)์ด ๋๋‚˜ ์ข…๋ฃŒ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์šด์˜์ฒด์ œ๋Š” PCB์™€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

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

 

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋„

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

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

 

1. Job Queue : Ready + Device

ํ˜„์žฌ ์‹œ์Šคํ…œ ๋‚ด์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ

 

2. Ready Queue

ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์žˆ์œผ๋ฉด์„œ, CPU๋ฅผ ํ• ๋‹น ๋ฐ›์•„ ์‹คํ–‰๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ

 

3. Device Queue

I/O device ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ

 

ํ”„๋กœ์„ธ์Šค๋Š” Ready ํ, Device ํ๋ฅผ ์˜ค๊ฐ€๋ฉฐ ์‹คํ–‰๋˜๋ฉฐ, ์œ„์™€ ๊ฐ™์€ ์Šค์ผ€์ค„๋ง ํ๋Š” PCB์˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์Šค์ผ€์ค„๋Ÿฌ (Scheduler)

์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ์— ๋„ฃ๊ณ  ๋นผ์ฃผ๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ํ”„๋กœ์„ธ์Šค์˜ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Short-term scheduler (๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ, CPU scheduler)

  • ๋ณดํ†ต ์Šค์ผ€์ค„์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋‹จ์œ„๊ฐ€ millisecond ๋‹จ์œ„ (์žฆ์€ ์Šค์ผ€์ค„์ด ์ด๋ฃจ์–ด์ง)
  • ๋‹ค์Œ์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šคํ•œํ…Œ CPU๋ฅผ ํ• ๋‹นํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ • (๋‹ค์Œ๋ฒˆ์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ running ์‹œํ‚ฌ์ง€)

Long-term scheduler (์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ, job scheduler)

  • ์‹œ์ž‘(new) ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋–ค ๊ฒƒ๋“ค์„ ready queue๋กœ ๋ณด๋‚ผ์ง€ ๊ฒฐ์ • (new → ready ๊ณผ์ •์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ admit)
  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ด๋–ค ํ”„๋กœ์„ธ์Šคํ•œํ…Œ ์ค„์ง€๋ฅผ ๊ฒฐ์ •
  • degree of multiprogramming์„ ์ œ์–ด (๋ฉ”๋ชจ๋ฆฌ์— ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ ๋ช‡ ๊ฐœ๋ฅผ ์˜ฌ๋ ค๋†“์„์ง€๋ฅผ ๊ฒฐ์ •)
  • time sharing system์—๋Š” ๋ณดํ†ต ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์—†์Œ (๋ฌด์กฐ๊ฑด ready)

Medium-term scheduler (์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ, Swapper)

  • ์—ฌ์œ  ๊ณต๊ฐ„ ๋งˆ๋ จ์„ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ต์งธ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ์ซ“์•„๋ƒ„
  • Ready/Running -(Medium-term Scheduler)-> Suspended
  • ์ „์ฒด์ ์œผ๋กœ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง€๋„๋ก degree of multiprogramming์„ ์ œ์–ด (๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ด๋ฆผ)
  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์— suspended ์ƒํƒœ๊ฐ€ ์ถ”๊ฐ€ ๋˜๊ฒŒ ๋จ

ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ - Suspended(Stopped)

Suspended ์ƒํƒœ๋Š” ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€๋œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋กœ, ์™ธ๋ถ€์ ์ธ ์ด์œ ๋กœ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰์ด ์ •์ง€๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ Suspended ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ํ†ต์งธ๋กœ ๋””์Šคํฌ์— swap out ๋ฉ๋‹ˆ๋‹ค.

Suspended ์ƒํƒœ๋Š” swap out์ด ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์™„์ „ํžˆ ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋˜๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— CPU ๊ด€์ ์—์„œ ์•„๋ฌด์ผ์„ ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. (but I/O ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ด์—ˆ๋‹ค๋ฉด ์ด๊ฒƒ์ด ์ง„ํ–‰๋˜์–ด Suspended Ready ์ƒํƒœ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.)

 

ex) ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์ผ์‹œ ์ •์ง€์‹œํ‚จ ๊ฒฝ์šฐ, ์‹œ์Šคํ…œ์ด ์—ฌ๋Ÿฌ ์ด์œ ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž ์‹œ ์ค‘๋‹จ์‹œํ‚จ ๊ฒฝ์šฐ (๋ฉ”๋ชจ๋ฆฌ์— ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ผ์™€ ์žˆ์„ ๋•Œ)

 

Suspended๊ฐ€ ์ถ”๊ฐ€๋œ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋„