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 ํ์ ๋ ํ์ผ์ ์ด๊ณ ์ฝ์๋ ์ํ ๋ํ ๊ณต์ ๋๋ค.