ํ๋ก์ธ์ค์ ๊ฐ๋
⇒ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ
ํ๋ก์ธ์ค์ ๊ตฌ์ฑ
: ํ๋ก๊ทธ๋จ ์ฝ๋(text section), ํ๋ก๊ทธ๋จ ์นด์ดํฐ, ํ๋ก์ธ์ ๋ ์ง์คํฐ
- Stack: ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์ ์ฅํ๋ ์์ญ
- Data section: ํ๋ก๊ทธ๋จ์ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ
- Heap: ์ฝ๋ ์์ญ๊ณผ๋ ๋ณ๋๋ก ์ ์ง๋๋ ์์ ์์ญ
- Code: ์คํ ๋ช ๋ น์ ํฌํจํ๋ ๋ฉ๋ชจ๋ฆฌ์ด๊ฑฐ๋ ๋ชฉ์ ํ์ผ์ ์๋ ํ๋ก๊ทธ๋จ ์์ญ
- ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ(context)
- CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ
- Program Counter
- ๊ฐ์ข register
- ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ
- code, data, stack
- ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ๊ตฌ์กฐ
- PCB
- Kernel stack
- CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ
ํ๋ก์ธ์ค์ ์ํ (Process State)
- ํ๋ก์ธ์ค๋ ์ํ(state)๊ฐ ๋ณ๊ฒฝ๋๋ฉฐ ์คํ๋๋ค.
- Running
- CPU๋ฅผ ์ก๊ณ instruction์ ์ํ ์ค์ธ ์ํ
- Ready
- CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ(๋ฉ๋ชจ๋ฆฌ ๋ฑ ๋ค๋ฅธ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๊ณ )
- Blocked(wait, sleep)
- CPU๋ฅผ ์ฃผ์ด๋ ๋น์ฅ instruction์ ์ํํ ์ ์๋ ์ํ
- Process ์์ ์ด ์์ฒญํ event(ex. I/O)๊ฐ ์ฆ์ ๋ง์กฑ๋์ง ์์ ์ด๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- ์์ ์ด ์์ฒญํ event๊ฐ ๋ง์กฑ๋๋ฉด Ready
- Suspended (stopped)
- ์ธ๋ถ์ ์ธ ์ด์ ๋ก ํ๋ก์ธ์ค์ ์ํ์ด ์ ์ง๋ ์ํ
- ํ๋ก์ธ์ค๋ ํต์งธ๋ก ๋์คํฌ์ swap out๋๋ค.
์์คํ ์ด ์ฌ๋ฌ ์ด์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์ ์ ์ค๋จ์ํด
(๋ฉ๋ชจ๋ฆฌ์ ๋๋ฌด ๋ง์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ ์์ ๋) - New
- ํ๋ก์ธ์ค๊ฐ ์์ฑ ์ค์ธ ์ํ
- Terminated
- ์ํ(execution)์ด ๋๋ ์ํ
ํ๋ก์ธ์ค์ ์ํ๋
Process Control Block(PCB): task control block
- ์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค ๋น ์ ์งํ๋ ์ ๋ณด
- ๊ฐ process๋ OS์์ PCB์ ์ํด ํํ
- ๋ค์์ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ์ง๋ค. (๊ตฌ์กฐ์ฒด๋ก ์ ์ง)
- OS๊ฐ ๊ด๋ฆฌ์ ์ฌ์ฉํ๋ ์ ๋ณด
- Process state, Process ID
- scheduling information, priority
- scheduling information: priorites, scheduling queue pointers
- CPU ์ํ ๊ด๋ จ ํ๋์จ์ด ๊ฐ
- Program counter, registers
- program counter: location of instruction to next execute
- CPU registers: contents of all process - centric registers
- Program counter, registers
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ
- Code, data, stack์ ์์น ์ ๋ณด
- ํ์ผ ๊ด๋ จ
- Open file descriptors
- OS๊ฐ ๊ด๋ฆฌ์ ์ฌ์ฉํ๋ ์ ๋ณด
๋ฌธ๋งฅ ๊ตํ(Context Switch)
: Switching of execution information
- CPU๋ฅผ ํ ํ๋ก์ธ์ค(or ์ค๋ ๋) ์์ ๋ค๋ฅธ ํ๋ก์ธ์ค(or ์ค๋ ๋)๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์
- ํ๋์ ์์ (or ํ๋ก์ธ์ค)์์ ๋ค๋ฅธ ์์ (or ํ๋ก์ธ์ค)๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํด ์ปดํจํฐ์ CPU๊ฐ ๋ฐ๋ฅด๋ ์์ ์ด ์ถฉ๋ํ์ง ์๋๋ก ํ๋ ์ ์ฐจ
- CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋์ด๊ฐ ๋ ์ด์์ฒด์ ๋ ๋ค์์ ์ํ
- CPU๋ฅผ ๋ด์ด์ฃผ๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๊ทธ ํ๋ก์ธ์ค์ PCB์ ์ ์ฅ
- CPU๋ฅผ ์๋กญ๊ฒ ์ป๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ PCB์์ ์ฝ์ด์ด
- System call ์ด๋ interrupt ๋ฐ์ ์ ๋ฐ๋์ context switch๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๋
(1)์ ๊ฒฝ์ฐ์๋ CPU ์ํ ์ ๋ณด ๋ฑ context์ ์ผ๋ถ๋ฅผ PCB์ saveํด์ผ ํ์ง๋ง ๋ฌธ๋งฅ๊ตํ์ ํ๋ (2)์ ๊ฒฝ์ฐ ๊ทธ ๋ถ๋ด์ด ํจ์ฌ ํผ (ex. cache memory flush)
ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค๋งํ๊ธฐ ์ํ ํ
- Job Queue
- ํ์ฌ ์์คํ ๋ด์ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์งํฉ
- Ready queue
- ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์์ผ๋ฉด์ CPU๋ฅผ ์ก์์ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
- Device queues
- I/O device์ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
- ํ๋ก์ธ์ค๋ค์ ๊ฐ ํ๋ค์ ์ค๊ฐ๋ฉฐ ์ํ๋๋ค.
์ค์ผ์ค๋ฌ
- Long-term scheduler (์ฅ๊ธฐ ์ค์ผ์ค๋ฌ or job scheduler)
- ์์ ํ๋ก์ธ์ค ์ค ์ด๋ค ๊ฒ๋ค์ ready queue๋ก ๋ณด๋ผ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์ memory(๋ฐ ๊ฐ์ข ์์)์ ์ฃผ๋ ๋ฌธ์
- degree of Multiprogramming์ ์ ์ด
- time sharing system์๋ ๋ณดํต ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์์ (๋ฌด์กฐ๊ฑด ready)
- Short-term scheduler (๋จ๊ธฐ ์ค์ผ์ค๋ฌ or CPU scheduler)
- ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋ค์๋ฒ์ running ์ํฌ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์ CPU๋ฅผ ์ฃผ๋ ๋ฌธ์
- ์ถฉ๋ถํ ๋นจ๋ผ์ผํจ (millisecond ๋จ์)
- Medium-Term scheduler (์ค๊ธฐ ์ค์ผ์ค๋ฌ or Swapper)
- ์ฌ์ ๊ณต๊ฐ ๋ง๋ จ์ ์ํด ํ๋ก์ธ์ค๋ฅผ ํต์งธ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ์ซ์๋
- ํ๋ก์ธ์ค์๊ฒ์ memory๋ฅผ ๋บ๋ ๋ฌธ์
- degree of Multiprogramming์ ์ ์ด
'๐ฅ CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] Process Management | ์์คํ ์ฝ, CPU burst time (0) | 2022.08.24 |
---|---|
[์ด์์ฒด์ ] ํ๋ก์ธ์ค (2) | ๋๊ธฐ/๋น๋๊ธฐ์ ์ ์ถ๋ ฅ, Thread (0) | 2022.08.24 |
[์ด์์ฒด์ ] Program Execution | ํ๋ก๊ทธ๋จ ์คํ (0) | 2022.08.10 |
[์ด์์ฒด์ ] System Structure (0) | 2022.07.28 |
[์ด์์ฒด์ ] Introduction to Operating System (0) | 2022.07.28 |