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

ํ”„๋กœ์„ธ์Šค vs ํ”„๋กœ๊ทธ๋žจ

ํ”„๋กœ๊ทธ๋žจ : ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋“ค์˜ ๋ชจ์Œ 

ํ”„๋กœ์„ธ์Šค : ํ”„๋กœ๊ทธ๋žจ์ด ์ปค๋„์— ๋“ฑ๋ก๋œ ์ƒํƒœ๋ฅผ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•œ๋‹ค.

  • ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ปค๋„์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.  

JOB : ํ”„๋กœ๊ทธ๋žจ + ๋ฐ์ดํ„ฐ 

 

ํ”„๋กœ์„ธ์Šค๋ž€? 

  1. ์ปค๋„์— ๋“ฑ๋ก๋œ ์ปค๋„์˜ ๊ด€๋ฆฌํ•˜์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ 
  2. ๊ฐ์ข… ์ž์›์„ ์š”์ฒญํ•˜๊ณ  ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋™์  ๊ฐœ์ฒด 
  3. PCB๋ฅผ ํ• ๋‹น ๋ฐ›์€ ๊ฐœ์ฒด 

 

PCB๋ž€? 

  1. ์ปค๋„๋‚ด์— ์กด์žฌํ•˜๋ฉฐ, ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 
  2. PCB์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•„๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ์Šค์ผ€์ค„๋ง ์ •๋ณด
  • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด
  • ์ž…์ถœ๋ ฅ ์ƒํƒœ ์ •๋ณด
  • ๋ฌธ๋งฅ ์ €์žฅ ์˜์—ญ
  • ๊ณ„์ • ์ •๋ณด(๋‹ค์ค‘ ์‹œ์Šคํ…œ์ธ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ์ •๋ณด) 

 

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

Created State (-> ready or suspended ready) 

ํ”„๋กœ๊ทธ๋žจ์„ ์ปค๋„์— ๋“ฑ๋กํ•œ ์ƒํƒœ, PCB๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•œ ์ƒํƒœ์ด๋‹ค.  ์ด ์ƒํƒœ์—์„œ ์ปค๋„์€ ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต๊ฐ„์„ ์ฒดํฌํ•˜์—ฌ ์–ด๋–ค ์ƒํƒœ๋กœ ์ „์ด๋ ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค. 

if(memory ์ถฉ๋ถ„) {
	ready state๋กœ ์ „์ด
}
else {
	suspended ready๋กœ ์ „์ด
}

Ready State (-> running)

ํ”„๋กœ์„ธ์„œ ์™ธ์— ๋ชจ๋“  ์ž์›์„ ํ• ๋‹น ๋ฐ›์€ ์ƒํƒœ, ํ”„๋กœ์„ธ์„œ๋งŒ ํ• ๋‹น ๋˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ด๋‹ค.  ํ”„๋กœ์„ธ์„œ๊ฐ€ ํ• ๋‹น๋˜์–ด ์‹คํ–‰์ด ๋œ๋‹ค๋ฉด running ์ƒํƒœ๋กœ ์ „์ด๋œ๋‹ค.

while(!๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น) {
	ready	
}

running

Running State (-> ready or asleep)

ํ”„๋กœ์„ธ์„œ์™€ ๋ชจ๋“  ์ž์›์„ ํ• ๋‹น ๋ฐ›์€ ์ƒํƒœ์ด๋‹ค. ๋งŒ์•ฝ ํ”„๋กœ์„ธ์„œ ์Šค์ผ€์ค„๋ง์— ์˜ํ•˜์—ฌ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ”„๋กœ์„ธ์„œ๋ฅผ ๋บ๊ธฐ๊ฒŒ ๋œ๋‹ค๋ฉด ready ์ƒํƒœ๋กœ ์ „์ด๋˜๋ฉฐ, I/O์™€ ๊ฐ™์€ ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฝ์šฐ์—๋Š” asleep ์ƒํƒœ๋กœ ์ „์ด๋˜์–ด ํ”„๋กœ์„ธ์Šค๋Š” ์ž ์— ๋น ์ง€๊ฒŒ ๋œ๋‹ค. 

while(!์ž‘์—… ์ข…๋ฃŒ) {
	running;
    if(I/O ๋ฐœ์ƒ) {
    	asleep;
    }
    
    if(ํ”„๋กœ์„ธ์„œ ํ• ๋‹น ์ทจ์†Œ) {
    	ready;
    }
}

Blocked/Asleep State (-> ready)

ํ”„๋กœ์„ธ์„œ ์™ธ์— ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ, I/O๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ์ƒํƒœ๋กœ ์ „์ด๋œ๋‹ค. ๋งŒ์•ฝ์— ๋Œ€๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„์— ๋ฐ”๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ Ready ์ƒํƒœ๋กœ ์ „์ด๋œ๋‹ค.

Suspended State 

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ๋ฐ›์ง€ ๋ชปํ•œ(ํ˜น์€ ๋นผ์•—๊ธด) ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์ธํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋นผ์•—๊ธฐ๋Š” ์ƒํ™ฉ์ด ์˜ค๊ฒŒ ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์˜ ์ƒํƒœ๋„ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ƒํƒœ๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค๋ฉด ์ž ์‹œ ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํ˜น์€ ์•„์˜ˆ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ๊ธฐ๋กํ•˜๊ณ  ์žˆ๋Š” Memory Image๋ฅผ Swap Device์— ์ €์žฅํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ Swap-out์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ Memory Image๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์šฉ์‹œํ‚ค๋Š” ๊ณผ์ •์„ Swap-in์ด๋ผ๊ณ  ํ•œ๋‹ค.

Terminated/Zombie State 

ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰์ด ๋๋‚œ ์ƒํƒœ, ์ž์›์„ ๋ฐ˜๋‚ฉํ•˜๊ณ  ์ปค๋„๋‚ด์— ์ผ๋ถ€ PCB ์ •๋ณด๋งŒ ๋ณด๊ด€ํ•œ๋‹ค.

์™œ ์™„์ „ํžˆ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  ์ผ๋ถ€ ์ •๋ณด๋ฅผ ๋ณด๊ด€ํ• ๊นŒ? 

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

 

Reference

https://sites.google.com/view/hpclab/courses/operating-system

 

HPC Lab., KOREATECH - Operating System

Operating System (CSE132)

sites.google.com