๋ณธ ๊ฒ์๊ธ์ 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) ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์ผ์ ์ ์ง์ํจ ๊ฒฝ์ฐ, ์์คํ ์ด ์ฌ๋ฌ ์ด์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์ ์ ์ค๋จ์ํจ ๊ฒฝ์ฐ (๋ฉ๋ชจ๋ฆฌ์ ๋๋ฌด ๋ง์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ ์์ ๋)
'๐ฅ CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] ์ค๋ ๋ (Thread) (0) | 2023.02.24 |
---|---|
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ๊ด๋ฆฌ (0) | 2023.02.16 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค (0) | 2023.02.12 |
[์ด์์ฒด์ ] ํ๋ก๊ทธ๋จ์ ์คํ (1) | 2023.02.01 |
[์ด์์ฒด์ ] I/O์ ์ํ - ์ธํฐ๋ฝํธ(Interrupt)์ ์์คํ ์ฝ(System Call) (1) | 2023.01.14 |