reference: kocw์ ๋ฐํจ๊ฒฝ ๊ต์๋ ๊ฐ์์ ๊ถ์ง์ฑ ๊ต์๋ ๊ฐ์(๋ํ ์ ๊ท ์์
)
์์
์ ๋ฃ๊ณ ๋์ ๊ฐ์ ๊ต์ฌ๋ฅผ ํ์ดํํ๊ณ ํ๊ธฐํ ๋ถ๋ถ์ ์ถ๊ฐ์ ์ผ๋ก ์ ๋ฆฌํ์์ต๋๋ค.
์น๋ทฐ์์ toc๋ฅผ ์ ๊ณตํฉ๋๋ค.
github์ md ํ์ผ๋ก ๋ณด๋ ๊ฒ ํธํ์๋ค๋ฉด, ์ฌ๊ธฐ๋ก ์ด๋ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
1. ํ๋ก์ธ์ค์ ๊ฐ๋
Process is a program in execution
์ด์์๋ ํ๋์ ์๋ช ์ฒด๋ก ์๊ฐํ ์ ์๋ค.
ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ (context)
์ฌ๊ธฐ์ ๋ฌธ๋งฅ์ด๋ ์๊ฐ์ ๋ฐ๋ผ ๋ณํํ๋ ํ๋ก์ธ์ค์ ํ์ฌ ์ํ๋ฅผ ์๋ฏธํ๋ค.
- CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ
- Program Counter
- ๊ฐ์ข register
- ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ
- code, data, stack
- ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ ๊ตฌ์กฐ
- PCB (process control block)
- Kernel stack
2. ํ๋ก์ธ์ค์ ์ํ
ํ๋ก์ธ์ค๋ ์ํ (state)๊ฐ ๋ณ๊ฒฝ๋์ด ์ํ๋๋ค.
- Running
- CPU ๋ฅผ ์ก๊ณ instruction์ ์ํ ์ค์ธ ์ํ
- Ready
- ๋ฉ๋ชจ๋ฆฌ ๋ฑ ๋ค๋ฅธ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๊ณ CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ํ
- Blocked (wait, sleep)
- CPU๋ฅผ ์ฃผ์ด๋ ๋น์ฅ instruction์ ์ํํ ์ ์๋ ์ํ
- Process ์์ ์ด ์์ฒญํ event(์: I/O)๊ฐ ์ฆ์ ๋ง์กฑ๋์ง ์์ ์ด๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- (์) ๋์คํฌ์์ file์ ์ฝ์ด์์ผ ํ๋ ๊ฒฝ์ฐ
- New
- ํ๋ก์ธ์ค๊ฐ ์์ฑ ์ค์ธ ์ํ
- Terminated
- ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ ์ค์ธ ์ํ
- ์ํ(execution)์ด ๋๋ ์ํ
- ๋ท ์ฒ๋ฆฌ๊ฐ ๋จ์ ์ํ
! ํ๋ก์ธ์ค๊ฐ ์์ฑ์ด ๋์ง ์์๋ค๋ฉด ๋ง ๊ทธ๋๋ก ํ๋ก์ธ์ค๊ฐ ์๋๋ค. ์ข ๋ฃ๊ฐ ๋์๋ค๋ฉด ์ญ์ ํ๋ก์ธ์ค๊ฐ ์๋๋ค.
! CPU๋ฅผ ๋ด๋๋ 3๊ฐ์ง๋ 1. ํ ๋น ์๊ฐ ๋ง๋ฃ 2. ์ค๋๊ฑธ๋ฆฌ๋ ์์ (i/o ๊ฐ์) 3. ์ข ๋ฃ๋ ๋
๋ฐ๋ก ์๋ ๊ทธ๋ฆผ์ ํ์คํ๊ฒ ๊ธฐ์ตํด๋์!
CPU๋ ํ ๊ฐ ๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ๋งค์๊ฐ ํ๋์ ๊ธฐ๊ณ์ด๋ฅผ ์คํํ๋ค.
๊ณต์ ๋ฐ์ดํฐ๋ ํ๋ก์ธ์ค๋ค๋ผ๋ฆฌ ๊ฐ์ด ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋งํ๋ค.
- Q. disk์ ๊ด๋ จ๋ interrupt๋ ํ๋์จ์ด interrupt์ผ๊น ์ํํธ์จ์ด interrupt์ผ๊น?
- A. ๋ ๋ค ์ด๋ค.
- ๋จผ์ disk I/O๋ฅผ ํ๊ธฐ ์ํด์ ํ๋ก๊ทธ๋จ์ด ์ง์ ๋ชปํ๊ณ OS์ ์์ฒญํด์ผ ํ๋ค.
- ์ฌ๊ธฐ์ system call ์ ํ๊ธฐ ๋๋ฌธ์ sw interrupt์ด๋ค.
- I/O๊ฐ ๋ค ๋๋ฌ์ ๋ disk controller๊ฐ cpuํํ interrupt๋ฅผ ๊ฑธ์ด์ I/O ๊ฐ ๋๋ฌ๋ค๊ณ ์๋ ค์ฃผ๋ ๊ฒ์ hw interrupt์ด๋ค.
ํ๋ก์ธ์ค์ ์ํ ๋ณํ๋
์กฐ๊ธ ๋ ์์ธํ ๊ทธ๋ฆฐ ํ๋ก์ธ์ค์ ์ํ ๋ณํ๋์ด๋ค.
๊ต์๋์ด ๋ง์ํ์๊ธธ, ํ๋ก์ธ์ค์ ์ํ ๋ณํ๋๋ฅผ ๊ทธ๋ฆฌ๋ผ๊ณ ํ๋ฉด exit, new๋ฅผ ์ ์ธํ๊ณ Running 1๊ฐ, Blocked์ Suspended Blocked, Ready์ Suspended Ready ์ด๋ ๊ฒ 5๊ฐ๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฒ์ด ์ ํฉํ๋ค๊ณ ํ์ จ๋ค.
2๊ฐ์ Running ๋ถ๋ถ์ ์ง์คํด๋ณด์. A๋ผ๋ ํ๋ก๊ทธ๋จ์ด CPU๋ฅผ ๊ฐ์ง๊ณ ๋์๊ฐ๊ณ ์๋๋ฐ ๊ทธ ๋์ค์ disk controller๊ฐ interrupt๋ฅผ ๋ฐ์์ํจ ๊ฒฝ์ฐ. ์ด ๋ CPU๋ ์ด์์ฒด์ ๋ก ๋์ด๊ฐ๋๋ฐ A๋ผ๋ ํ๋ก์ธ์ค๋ ์ฌ์ ํ Running ์ผ๋ก ๊ฐ์ฃผ๋๋ค. System call๋ก ์ปค๋์ ์ฝ๋๋ฅผ ์คํํ ๋๋ ํด๋น ํ๋ก์ธ์ค๋ Running ์ํ๋ผ๋ ๋ป์ด๋ค. ๋ค๋ง ํ๋ก์ธ์ค๊ฐ ์ปค๋ ๋ชจ๋์์ ์คํ๋๊ณ ์๋ ๊ฒ์ด๋ค.
Blocked์ I/O ๋๋ฌธ์ ๋ ์ ์๋๋ฐ ๊ทธ๋ฌ๋ค๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํต์งธ๋ก ๋นผ์๊ธฐ๋ฉด(=inactive) Suspended Blocked ์ํ๊น์ง ๋์ด๊ฐ๊ฒ ๋๋ค. ์ด ํ I/O ์์ ์ด ๋๋ฌ์ ๋ Suspended Ready ์ํ๋ก ๋์๊ฐ ์ ์๋ค.
3. Process Control Block (PCB)
์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋น ์ ์งํ๋ ์ ๋ณด CPU ์๊ฒ ๋บ๊ฒผ์ ๋ ๋ฌธ๋งฅ์ ์ ์ฅํ๊ณ ์์ด์ผ ํจ.
์์น
- OS ์ปค๋ ์ฃผ์ ๊ณต๊ฐ ์ค์์ PCB๋ฅผ ํ๋ก์ธ์ค๋ง๋ค ๊ฐ๊ฐ ๊ฐ์ง๊ณ ์์
๊ตฌ์ฑ ์์ (๊ตฌ์กฐ์ฒด๋ก ์ ์ง)
- OS๊ฐ ๊ด๋ฆฌ์ ์ฌ์ฉํ๋ ์ ๋ณด
- Process state, Process ID (PID)
- scheduling information, priority
- CPU ์ํ ๊ด๋ จ ํ๋์จ์ด ๊ฐ
- Program counter, registers
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ
- Code, data, stack์ ์์น ์ ๋ณด
- ํ์ผ ๊ด๋ จ
- Open file descriptors
4. ๋ฌธ๋งฅ ๊ตํ (Context Switch)
CPU๋ฅผ ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์
CPU ๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋์ด๊ฐ ๋ ์ด์์ฒด์ ๋ ๋ค์์ ์ํํ๋ค.
- CPU๋ฅผ ๋ด์ด์ฃผ๋(๋นผ์๊ธฐ๋) ํ๋ก์ธ์ค A์ ์ํ(๋ฌธ๋งฅ)๋ฅผ ํ๋ก์ธ์ค A์ PCB์ ์ ์ฅ
- CPU๋ฅผ ์๋กญ๊ฒ ์ป๋ ํ๋ก์ธ์ค B์ ์ํ(๋ฌธ๋งฅ)๋ฅผ ํ๋ก์ธ์ค B์ PCB์์ ์ฝ์ด์ด
์ฃผ์ํ ์ : System call ์ด๋ Interrupt ๋ฐ์ ์ ๋ฐ๋์ context switch๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๋๋ค.
1๋ฒ์ ๊ฒฝ์ฐ, CPU์ ์ํ ์ ๋ณด ๋ฑ A์ context ์ผ๋ถ๋ฅผ A์ PCB์ ์ ์ฅํด์ผ ํ๊ธด ํ์ง๋ง, overhead ๊ฐ ๊ต์ฅํ ์ ์ ์์ ์ด๋ค.
5. (ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ฅด๋งํ๊ธฐ ์ํ) ํ
ํ๋ก์ธ์ค๋ค์ ๊ฐ ํ๋ค์ ์ค๊ฐ๋ฉฐ ์ํ๋๋ค.
- Job queue
- ํ์ฌ ์์คํ ๋ด์ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์งํฉ
- Ready queue
- ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์์ผ๋ฉด์ CPU๋ฅผ ์ก์์ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
- ํ๋์๋ priority queue ๋ก ์ฐ์ ์์ ๋์ ์น๊ตฌ๋ค๋ถํฐ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
- Device queues
- I/O device์ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
6. ์ค์ผ์ค๋ฌ (Scheduler)
์ด์์ฒด์ ์์ ์ค์ผ์ค๋ง ํ๋ ํน์ ์ฝ๋์ ๋ถ์ธ ์ด๋ฆ์ด๋ค. ํ๋์จ์ด๊ฐ ์๋๋ค.
- Long-term scheduler (์ฅ๊ธฐ ์ค์ผ์ค๋ฌ or job scheduler)
- ์์ ํ๋ก์ธ์ค ์ค ์ด๋ค ๊ฒ๋ค์ ready queue๋ก ๋ณด๋ผ์ง ๊ฒฐ์
- ์์ ์ํ๋์ admitted ๊ณผ์ ์ ํด๋นํจ
- ํ๋ก๊ทธ๋จ์ ์คํ์ํฌ ๋ ๋ฌด์กฐ๊ฑด CPU๋ฅผ ์ป์ ์ ์๋ ๊ฒ ์๋๊ณ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ผ์์ผ์ง๋ง CPU ๊ธฐ๊ณ์ด ์คํ์ด ๊ฐ๋ฅํ๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด์ค๋๋ก ํ๋ฝํด์ฃผ๋ admitted์ ์ญํ ์ ํ๋ค.
- ํ๋ก์ธ์ค์ memory (๋ฐ ๊ฐ์ข ์์)์ ์ฃผ๋ ๋ฌธ์
- degree of Multiprogramming์ ์ ์ด --- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ๊ฐ๋ ๊ฒ
- time sharing system(์ฆ ์ฐ๋ฆฌ๊ฐ ๋ค๋ฃจ๋ ์ผ๋ฐ์ ์ธ OS)์๋ ๋ณดํต ์ฅ๊ธฐ ์ค์ผ์ฅด๋ฌ๊ฐ ์์.
- ์์ ํ๋ก์ธ์ค ์ค ์ด๋ค ๊ฒ๋ค์ ready queue๋ก ๋ณด๋ผ์ง ๊ฒฐ์
- Short-term scheduler (๋จ๊ธฐ ์ค์ผ์ค๋ฌ or CPU scheduler)
- ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋ค์ ๋ฒ์ running ์ํฌ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์ CPU๋ฅผ ์ฃผ๋ ๋ฌธ์
- ์ถฉ๋ถํ ๋นจ๋ผ์ผ ํจ (millisecond ๋จ์)
- Medium-term scheduler (์ค๊ธฐ ์ค์ผ์ค๋ฌ or Swapper)
- ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์๊ธฐ ๋๋ฌธ์, ์์๋ ํ๋ก๊ทธ๋จ์ ๋ค ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด์ค๋๋ฐ ๋ฉ๋ชจ๋ฆฌ ๊ฒฝํฉ์ด ์ฌํด์ ์์คํ ์ฑ๋ฅ์ด ์๋์ฌ ์ ์๋ค. ๊ทธ๋ฐ ์ํฉ์์๋ ์ฌ์ ๊ณต๊ฐ ๋ง๋ จ์ ์ํด ํ๋ก์ธ์ค๋ฅผ ํต์งธ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ์ซ์๋ธ๋ค. ์ด ๋ฐฉ๋ฒ์ด ํจ์จ์ ์ด๋ผ๊ณ ํ๋ค.
- ํ๋ก์ธ์ค์๊ฒ์ memory๋ฅผ ๋บ๋ ๋ฌธ์
- degree of Multiprogramming์ ์ ์ด
7. Thread
7-1. Thread ๊ฐ๋
ํ๋ก์ธ์ค ์ค์์ CPU ์ํ๋จ์๋ฅผ ์ค๋ ๋๋ผ ๋ถ๋ฅธ๋ค. A thread (or lightweight process) is a basic unit of CPU utilization
- Thread์ ๊ตฌ์ฑ
- program counter
- register set
- stack space
- Thread๊ฐ ๋๋ฃ thread์ ๊ณต์ ํ๋ ๋ถ๋ถ (=task)
- code section
- data section
- OS resources
- ์ ํต์ ์ธ ๊ฐ๋ ์ heavyweight process๋ ํ๋์ thread๋ฅผ ๊ฐ์ง๊ณ ์๋ task๋ก ๋ณผ ์ ์๋ค.
- ๋ค์ค ์ค๋ ๋๋ก ๊ตฌ์ฑํธ ํ์คํฌ ๊ตฌ์กฐ์์๋ ํ๋์ ์๋ฒ ์ค๋ ๋๊ฐ blocked (waiting) ์ํ์ธ ๋์์๋ ๋์ผํ ํ์คํฌ ๋ด์ **๋ค๋ฅธ ์ค๋ ๋๊ฐ ์คํ(running)**๋์ด **๋น ๋ฅธ ์ฒ๋ฆฌ**๋ฅผ ํ ์ ์๋ค.
- ์) ๋คํธ์ํฌ๋ก ์น ํ์ด๋ฅผ ์ฝ์ด์ค๋ ๋์์๋ ํ๋ฉด์ ๋น์ฅ ๋ณด์ฌ์ค ์ ์๋ ๊ฒ๋ง์ด๋ผ๋ ๋ณด์ฌ์ฃผ๋ฉด ์๋ต์ฑ์ด ๋น ๋ฅด๊ฒ ๋๊ปด์ง.
- ๋ ์ ํํ, html ๋ฌธ์๋ฅผ ์ฝ์ด์์ ํ๋ฉด์ ํ์ํ๋ ค๊ณ ํ ๋, ํ ์คํธ๋ง ์๋ ๊ฒ ์๋๋ผ ์ด๋ฏธ์ง๋ ์์. ์ด๋ฏธ์ง ๊ฐ์ ๊ฒฝ์ฐ๋ url๋ก ๋ฐ์์ค๋ ค๋ฉด ์น ์๋ฒ์ ์์ฒญ์ ํด์ผํจ. ์ด ์ด๋ฏธ์ง ์์ฒญ ๋ฐ์์ค๋ ๊ฒ์ ๋ง๋ฅ blocked ์ํ๋ก ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค. ํ๋์ ์ค๋ ๋๊ฐ ๋คํธ์ํฌ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค๋ ๋์์ ๋ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋น์ฅ ํ์ํ ์ ์๋ text๋ผ๋ ๋จผ์ ํ์ํ๋ค.
- ๋์ผํ ์ผ์ ์ํํ๋ ๋ค์ค ์ค๋ ๋๊ฐ ํ๋ ฅํ์ฌ ๋์ ์ฒ๋ฆฌ์จ(throughput)๊ณผ ์ฑ๋ฅ ํฅ์์ ์ป์ ์ ์๋ค.
- ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๋ ฌ์ฑ์ ๋์ผ ์ ์๋ค.
7-2. Thread ์์น
7-3. Thread์ ์ด์
- Responsiveness (์๋ต์ฑ์ด ๋น ๋ฅด๋ค)
- ์) ๋ฉํฐ์ค๋ ๋ ์น, if one thread is blocked (๋คํธ์ํฌ), another thread continues (ํ๋ฉด)
- Resource Sharing (์์ ๊ณต์ )
- n๊ฐ์ ์ค๋ ๋๋ binary code, data, resource of process ๋ฅผ ๊ณต์ ํ ์ ์๋ค.
- Economy
- ํ๋ก์ธ์ค ํ๋๋ฅผ ๋ง๋๋ ๊ฒ์ ๋นํด์ ์ค๋ ๋ ํ๋๋ฅผ ๋ง๋๋ ๊ฒ์ 30๋ฐฐ ํจ์จ์ ์ด๊ณ
- ๋ฌธ๋งฅ ๊ตํํ๋ ๊ฒ๋ณด๋ค ์ค๋ ๋๋ฅผ ๋ง๋ค์ด ํ์ฉํ๋ ๊ฒ์ 5๋ฐฐ ํจ์จ์ ์ด๋ค.
- Utilization of MP Architectures
- MP: multi processor
- ๋ณ๋ ฌ๋ก ๊ณ์ฐ ๊ฐ๋ฅ, ์๋ฅผ ๋ค๋ฉด 1000 X 1000 ํ๋ ฌ ๊ณฑ์ ์ ์ํํ ๋
7-4. Thread ๊ตฌํ
์ค๋ ๋์ ์กด์ฌ๋ฅผ ์ด์์ฒด์ ๊ฐ
- ์๊ณ ์๋ ๊ฒฝ์ฐ: Kernal Threads
- OS๊ฐ A ์ค๋ ๋ ใ ก> B ์ค๋ ๋ ์ํํ ์ ์์.
- OS zใ ๋์ด ์ง์ ์ง์ํด์ฃผ๋ ์ค๋ ๋๋ฅผ ์ฌ์ฉํจ.
- ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ: User Threads
- ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ์ค๋ ๋๋ก ๋ง๋ค์์ง๋ง ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ๋จ์์ ์ค๋ ๋๋ฅผ ๊ด๋ฆฌํจ.
๊ตฌํ๊ณผ ๊ด๋ จ๋ ๋ ๋ค๋ฅธ ์ด์๋ก real-time threads๋ ์๋ค๊ณ ํจ.
'OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
7์ฅ Deadlock (0) | 2021.06.19 |
---|---|
6์ฅ Process Synchronization (0) | 2021.06.19 |
5์ฅ CPU scheduling (0) | 2021.06.18 |
4์ฅ Process Management (0) | 2021.06.18 |
2์ฅ System Structure & Program Execution (0) | 2021.06.18 |
1์ฅ Introduction to Operating System (0) | 2021.06.18 |