๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸง Operating System

[OS / ์šด์˜ ์ฒด์ œ] Scheduling Queue, PCB in Linux, Scheduling Queue, Queue Diagram, Context Switch, Process Creation, Process Creation in UNIX

by UKHYUN22 2022. 3. 24.
728x90

Scheduling Queue

Process๊ฐ€ ๋‹น์žฅ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€๋ฐ ํ•  ์ˆ˜ ์—†์„ ๋•Œ Queue์—์„œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค. Shared Resource ๋ณ„๋กœ Waiting Queue๊ฐ€ ๋‹ค ๊ฐœ๋ณ„๋กœ ์กด์žฌํ•œ๋‹ค. ์ž์‹ ์˜ ์ฐจ๋ก€๊ฐ€ ๋˜๋ฉด Scheduler๊ฐ€ ์„ ํƒ์„ ํ•˜๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

PCB in Linux

์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋Œ์•„๊ฐ€๋ฉด์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์ตœ๋Œ€์˜ ์‹œ๊ฐ„์„ time slice๋ผ๊ณ  ํ•œ๋‹ค. parent ์—๋Š” Parent process๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. Parent process์˜ task_struct๋Š” ์‹œ์Šคํ…œ์— ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š”๋ฐ child๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. Children์€ ์ž๊ธฐ๋ณด๋‹ค ๋‚ฎ์€ Process ๊ฐ€๋ฆฌํ‚จ๋‹ค. ํฌ์ธํ„ฐ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฆฌ์ŠคํŠธ์˜ ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ€์žˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŒŒ์ผ์„ ์˜คํ”ˆํ•˜๋Š”๋ฐ, ๊ทธ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ files_sturct๋ผ๊ณ  ํ•œ๋‹ค. mm_struct๋Š” Memory Mack์— ๋Œ€ํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

 

Scheduling Queue

PCB ๋“ค์˜ Linked List๋กœ Queue๊ฐ€ ๊ตฌํ˜„๋˜์–ด์žˆ๋‹ค. ๊ฐ Entry๊ฐ€ PCB๊ฐ€ ๋œ๋‹ค. ์–ด๋–ค Process๊ฐ€ ๋Œ๋‹ค๊ฐ€ IO์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๋ฉด, Ready Queue์—์„œ Disk Queue๋กœ ์ด๋™ํ•  ํ…๋ฐ ๊ทธ๋•Œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋ ๊นŒ? Queue insertion์œผ๋กœ ์ง‘์–ด๋„ฃ์œผ๋ฉด ๋œ๋‹ค. 

 

Queue Diagram

Queue์—์„œ Queue๋กœ ๊ณ„์† ์ด๋™ํ•œ๋‹ค. Ready Queue์—์„œ ์ธ์ƒ์„ ์‹œ์ž‘ํ•˜๊ณ  Scheduler๊ฐ€ ์„ ํƒ์„ ํ•ด์„œ CPU์—์„œ ์‹คํ–‰์ด ๋œ๋‹ค. IO request๋ฅผ Interrupt๋กœ ํ•˜๊ฒŒ ๋œ๋‹ค. IO์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๋ฐ”๋กœ ์ด๋™ํ•˜์ง€ ๋ชปํ•˜๊ณ  Queue๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ž์‹ ์˜ ์ฐจ๋ก€๊ฐ€ ๋˜๋ฉด IO๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๋‹ค์‹œ CPU๋กœ ๋Œ์•„์˜ค๊ฒŒ ๋œ๋‹ค. Time slice๊ฐ€ ๋๋‚ฌ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์€ Interrupt๊ฐ€ ์ž‘์šฉํ•˜๊ฒŒ ๋œ๋‹ค. fork ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด Child๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๊ณ  ์ด ๋˜ํ•œ Ready Queue์—์„œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค. 

 

Schedulers

Job Queue์—์„œ ์„ ํƒํ•˜๋Š” Job Scheduler์™€ Ready Queue์—์„œ ์„ ํƒํ•˜๋Š” CPU Scheduler๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์š”๋“ฌ Job Scheduler๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค. Window์™€ Linux๋Š” Job Scheduler๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

Schedulers

Short Term Scheduler๋Š” ์ž์ฃผ ์‹คํ–‰์ด ๋œ๋‹ค. 1์ดˆ์— 10๋ฒˆ ์ด์ƒ ์‹คํ–‰์ด ๋œ๋‹ค. 

 

Schedulers

CPU Time์„ ์ฐจ์ง€ํ•˜๋ ค๋Š” ๊ฒฝ์Ÿ์ด ์‹ฌํ•ด์ง„๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ Ready Queue์— ๋“ค์–ด์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ 2๊ฐœ ์žˆ์œผ๋ฉด ์ „์ฒด์ ์ธ ํšจ์œจ์ด ๋–จ์–ด์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. degree of multiprogram์ด ๋„ˆ๋ฌด ์ปค์ง€์ง€๋„ ์•Š๊ณ  ์ž‘์•„์ง€์ง€๋„ ์•Ÿใ„ด๊ฒŒ ์กฐ์ ˆํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๊ฐ€ ๋œ๋‹ค.

I/O bound process - word, PowerPoint, browser, VI,

CPU bound process - ์ปดํŒŒ์ผ๋Ÿฌ, ๋™์˜์ƒ ์ธ์ฝ”๋”, ์‹ ๊ฒฝ๋ง Trainer, 

Scheduling์˜ History๋ฅผ ํ™•์ธํ•ด์„œ IO bound์™€ CPU bound๋ฅผ ํ™•์ธํ•œ๋‹ค. 

 

Scheduler

Unix์™€ Window์—๋Š” Long Term Scheduler๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ process๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. self adjusting nature of human...ใ…‹ใ…‹

midterm scheduler๋Š” CPU์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋‚ด๋ณด๋‚ด๋Š” swap out ์„ ๋งํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

Context Switch

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ์ผ์ •์‹œ๊ฐ„์ด ์ง€๋‚˜์„œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜์–ด๊ฐ€๋Š”๋ฐ ๊ทธ๋•Œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€๊ฐ€ Switching์ด๋ผ๊ณ  ํ•œ๋‹ค. P0๋ฅผ Switching ํ•  ๋•Œ P0์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•œ๋‹ค. 1. ์ด์ „ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ €์žฅํ•œ๋‹ค. 2. ๋Œ๋‹ค๊ฐ€ ๋ฉˆ์ท„์„ ๋•Œ ์ €์žฅํ•œ ๋‚ด์šฉ์„ ์ฝ์–ด์™€์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ์ด์ „์˜ ์ง„ํ–‰๋˜์—ˆ๋˜ ๋‚ด์šฉ์ด ๋ณต์›๋œ๋‹ค. 

 

Context Switch

๋ž˜์ง€์Šคํ„ฐ์˜ ๋‚ด์šฉ๋“ค์„ PCB์— ํ†ต์งธ๋กœ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ segment table์ด๋ผ๋Š” ์ •๋ณด๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฐ ์ •๋ณด๋“ค๋„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉˆ์ถ”๋Š” ์ˆœ๊ฐ„ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ์ˆœ๊ฐ„ ์ฝ์–ด์˜ค๊ฒŒ ๋œ๋‹ค. ์–ธ์ œ ์ด๋ฃจ์–ด์ง€๋Š”๊ฐ€? Multasking๊ณผ Interrupt Handling์—์„œ Context Switching์ด ๋ฐœ์ƒํ•œ๋‹ค. 

 

Operations on Process

 

Process create -> fork

Process termination -> exit

 

Process Creation

Parent๊ฐ€ Child๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •. Process Creation์€ Process๊ฐ€ Child์˜ Process๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. ์ƒˆ๋กœ์šด pid๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด Process call์ด ๋œ๋‹ค. ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค ๊ฐ„์—”๋Š” Parent - child Process๊ฐ€ ์žˆ๋‹ค? ๋‹น์—ฐํ•˜๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์ด ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋Š”๋ฐ ๊ฐ€์žฅ ์ฒ˜์Œ ๋งŒ๋“ค์–ด์ง€๋Š” Process == Hardware Process๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ ํ”„๋กœ์„ธ์Šค๋Š” Parent๊ฐ€ ์—†๋‹ค. ์ค‘๊ฐ„์— Terminated ๋˜๋ฉด ์•„๋ž˜์— ์žˆ๋Š” child๋ฅผ ancestor node์™€ ์–ด๋–ป๊ฒŒ ๋“  ์—ฐ๊ฒฐ์„ ํ•ด์„œ ํ•˜๋‚˜์˜ ์ „์ฒด์ ์ธ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

 

Displaying Process Information

UNIX์˜ ps ๋ช…๋ น์–ด. Window์—์„œ๋Š” task ๋งค๋‹ˆ์ €๊ฐ€ ์žˆ๋‹ค. 

 

Process Creation

1. Resource.

Parent์˜ resource๋ฅผ ๊ณต์œ ํ•  ๊ฒƒ์ธ๊ฐ€? 

2. Execution

Child๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ์ˆœ๊ฐ„ Parent๋„ ์‹คํ–‰๋˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ธ๊ฐ€?

3. Address Space

ํ”„๋กœ๊ทธ๋žจ Codeํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์€๊ฐ€?

 

Process Creation in UNIX

forkํ•  ๋•Œ ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค. fork๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด child๋Š” fork ๋‹ค์Œ๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— main ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒํƒœ ๋˜ํ•œ ๋™์ผํ•˜๋ฏ€๋กœ fork๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ดํ›„์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. A๊ฐ€ B๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น fork์˜ ๋ฆฌํ„ด ๊ฐ’์€ B์˜ pid ๊ฐ’์ด ๋œ๋‹ค. B์˜ ์ž…์žฅ์—์„œ fork์˜ ๋ฆฌํ„ด ๊ฐ’์€ 0์ด ๋œ๋‹ค. ๋ฆฌํ„ด ๊ฐ’์ด Parent์™€ Child๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์˜ˆ์ด๋‹ค. 

 exe() family๊ฐ€ ์กด์žฌํ•œ๋‹ค. 

 

Example of Process Creation

fork๋ฅผ ํ•˜๋ฉด pid๋Š” ๋‹ค๋ฅด์ง€๋งŒ execlp()๋ฅผ ํ•˜๋ฉด Pid๊ฐ€ ๋™์ผํ•˜๋‹ค. Fork ํ•ด๋†“๊ณ  ๋ฆฌํ„ด ๊ฐ’์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค. Child๋ฅผ ๋ฐ›์ง€ ์•Š์•„๋„ Child๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ Parent์™€ Child๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ๋ผ๋ฉด ๋‹ค ๋ฐ›์•„์•ผ ํ•œ๋‹ค. child_pid์— ์˜๋ฏธ์žˆ๋Š” ์ˆซ์ž์ด๋ฉด Child์ด๊ณ  ๊ทธ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด Parent๋ผ๋Š” ๊ฒƒ์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

More About fork

forkํ•  ๋•Œ parent์˜ ๋ชจ๋“  Content๊ฐ€ childํ•œํ…Œ ๋ณต์‚ฌ๋œ๋‹ค. Fork ์ด์ „์— File์„ Open ํ–ˆ์„ ๋•Œ ํŒŒ์ผ์„ ์—ด๊ณ  ์ฝ์—ˆ๋˜ ์ƒํƒœ ๋˜ํ•œ ๊ณต์œ  ๋œ๋‹ค. 

 

exec Family

exe function์€ ์™œ์ด๋ฆฌ ๋งŽ์€๊ฑด๊ฐ€. ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋‹ค ๋‹ค๋ฅด๋‹ค. exe ๋์— p๋กœ ๋๋‚˜๋Š” ํ•จ์ˆ˜๋“ค์€ Path๊ฐ€ ์ €์ ˆ๋กœ ์ ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋“ค์ด๋‹ค.