๐ Process
โจ ํ๋ก์ธ์ค์ ๊ฐ๋
- Process ia a program in execution
๐ข ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ (context)
- ํน์ ์์ ์ ๋๊ณ ๋ณด์์๋ ํด๋น ํ๋ก์ธ์ค๊ฐ ์ด๋๊น์ง ์คํํ๊ณ ์ด๋ค ์ํ์ธ๊ฐ
- ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ฉด ์ฃผ์๋ฅผ ๋ง๋ค๊ณ CPU๊ฐ ํด๋น ํ๋ก์ธ์ค ์ํ ์์
- ์ด๋ ์์ ์ ํ๋ก์ธ์ค๋ ์ด๋๊น์ง ์์๋๊ฐ?
- CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ
- Program Counter - ์ด๋ ๊ฐ๋ฆฌํค๊ณ ์๋๊ฐ? (ํ๋ก์ธ์ค์ ์ด๋ ๋ถ๋ถ์ธ๊ฐ?)
- ๊ฐ์ข
register - ์ด๋ค instruction๊น์ง ์คํํ๋๊ฐ?
- ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ
- code, data, stack ์ ์ด๋ค ๋ด์ฉ์ด ๋ค์ด์๋๊ฐ ?
- ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ ๊ตฌ์กฐ
- PCB (Process Control Block)
- Process๊ฐ ํ๋ ์๊ธธ ๋ ๋ง๋ค ์ด์์ฒด์ ๋ PCB๋ ํ๋์ฉ ๋๊ณ ์์ผ๋ฉด์ CPU, memory๋ฅผ ์ผ๋ง๋ ์ฃผ์ด์ผ ํ ์ง ๊ด๋ฆฌ.
- ์ด์์ฒด์ ๊ฐ PCB๋ฅผ ์ด๋ป๊ฒ ํ๊ฐํ๋์ง ์์์ผ ํจ
- OS์์ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ
- Kernel stack
- ๊ฐ ํ๋ก์ธ์ค๊ฐ ์ํ ๋ถ๊ฐ๋ฅํ ์์
์ ์ํด ์์คํ
์ฝ์ ํ ๋ ์์ด๋ ์คํ
- ํ๋ก์ธ์ค๋ณ๋ก ์ปค๋ ์คํ์ ๋ฐ๋ก ๋
- ๋ฉํฐ ํ์คํน์ ์ํด ํ๋ก์ธ์ค๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ฌธ๋งฅ์ ๋ฐฑ์
ํด๋์ด์ผ ํจ.
โจ ํ๋ก์ธ์ค์ ์ํ (Process State)
๐ข ํ๋ก์ธ์ค๋ ์ํ(state)๊ฐ ๋ณ๊ฒฝ๋๋ฉฐ ์ํ๋๋ค
- Running
- CPU๋ฅผ ์ก๊ณ instruction์ ์ํ์ค์ธ ์ํ
- Ready
- CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ(๋ฉ๋ชจ๋ฆฌ ๋ฑ ๋ค๋ฅธ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๊ณ )
- ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ์ํ. CPU๋ง ์ป์ผ๋ฉด ๋๋ ์ํ
- Blocked (wait, sleep)
- CPU๋ฅผ ์ฃผ์ด๋ ๋น์ฅ instruction์ ์ํํ ์ ์๋ ์ํ
- Process ์์ ์ด ์์ฒญํ event(์: I/O)๊ฐ ์ฆ์ ๋ง์กฑ๋์ง ์์ ์ด๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- ์ ) ๋์คํฌ์์ file์ ์ฝ์ด์์ผ ํ๋ ๊ฒฝ์ฐ
- Suspended (stopped)
- ์ธ๋ถ์ ์ธ ์ด์ (์ค๊ธฐ ์ค์ผ์ค๋ฌ, ์ฌ์ฉ์ etc)๋ก ํ๋ก์ธ์ค์ ์ํ์ด ์ ์ง๋ ์ํ
- ํ๋ก์ธ์ค๋ ํต์งธ๋ก ๋์คํฌ์ swop out ๋๋ค.
- ex) ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์ผ์ ์ ์ง ์ํจ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๋ค์ ์ฌ๊ฐํ ๋๊น์ง Activeํ ์ํ๊ฐ ๋ ์ ์์
- New
- ํ๋ก์ธ์ค๊ฐ ์์ฑ์ค์ธ ์ํ
- Terminated
- ์ํ(excution)์ด ๋๋ ์ํ (์์ง ํ๋ก์ธ์ค๋ kill ๋์ง ์์)
โจ Process Control Block (PCB)
- ์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋น ์ ์งํ๋ ์ ๋ณด
- ๋ค์์ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ์ง๋ค. (๊ตฌ์กฐ์ฒด๋ก ์ ์ง)
(1) OS๊ฐ ๊ด๋ฆฌ์ ์ฌ์ฉํ๋ ์ ๋ณด
- Process state, Process ID
- scheduiling information, Priority
(2) CPU ์ํ ๊ด๋ จ ํ๋์จ์ด ๊ฐ
- Program counter, registers
(3) ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ
- Code, data, stack์ ์์น ์ ๋ณด
(4) ํ์ผ ๊ด๋ จ
โจ ๋ฌธ๋งฅ ๊ตํ (Context Switch)
- CPU๋ฅผ ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์
- CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋์ด๊ฐ ๋ ์ด์์ฒด์ ๋ ๋ค์์ ์ํ (๋ฉ๋ชจ๋ฆฌ ์ปค๋์์ ์ํ)
- CPU๋ฅผ ๋ด์ด์ฃผ๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๊ทธ ํ๋ก์ธ์ค์ PCB์ ์ ์ฅ
- CPU๋ฅผ ์๋กญ๊ฒ ์ป๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ PCB์์ ์ฝ์ด์ด
- System call์ด๋ (ํ๋์จ์ด) Interrupt ๋ฐ์์ ๋ฐ๋์ context switch๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๋
- not context swtich: process A โ OS โ process A
- ์ด๋๋ CPU ์ํ ์ ๋ณด ๋ฑ context์ ์ผ๋ถ๋ฅผ PCB์ saveํด์ผ ํ์ง๋ง Overhead๊ฐ ์ ์
- context switch: process A โ process B
- ์บ์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ ์ง์(flush) โ ํฐ Overhead
- ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ก๋ถํฐ CPU๊ฐ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ๋ ๊ฒ์ context switch๋ผ๊ณ ํ์ง ์์
โจ ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค๋งํ๊ธฐ ์ํ ํ
- Job queue
- ํ์ฌ ์์คํ
๋ด์ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์งํฉ
- Ready queue
- ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์์ผ๋ฉด์ CPU๋ฅผ ์ก์์ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
- Device queues
- I/O device์ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
- ํ๋ก์ธ์ค๋ค์ ๊ฐ ํ๋ค์ ์ค๊ฐ๋ฉฐ ์ํ๋๋ค.
โจ ์ค์ผ์ค๋ฌ (Scheduler)
- Long-term Scheduler (์ฅ๊ธฐ ์ค์ผ์ค๋ฌ or job scheduler)
- ์์ ํ๋ก์ธ์ค ์ค ์ด๋ค ๊ฒ๋ค์ ready queue๋ก ๋ณด๋ผ ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์ memory (๋ฐ ๊ฐ์ข
์์)์ ์ฃผ๋ ๋ฌธ์
- ์์๋ ๋, ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ admit
- 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์ ์ ์ด
โจ Thread
"A thread (or lightweight process) is a basic unit of CPU utilization"
- Process ๋ด๋ถ์ CPU ์ํ๋จ์๊ฐ ์ฌ๋ฌ๊ฐ ์๋ ๊ฒ
๐ข Thread์ ๊ตฌ์ฑ
- program counter
- register set
- stack space
๐ข Thread๊ฐ ๋๋ฃ thread์ ๊ณต์ ํ๋ ๋ถ๋ถ (=task)
- code section
- data section
- OS resources
๐ข ์ ํต์ ์ธ ๊ฐ๋
์ heavyweight process๋ ํ๋์ thread๋ฅผ ๊ฐ์ง๊ณ ์๋ task๋ก ๋ณผ ์ ์๋ค.
๐ข ์ฅ์
- ๋ค์ค thread๋ก ๊ตฌ์ฑ๋ ํ์คํฌ ๊ตฌ์กฐ์์๋ ํ๋์ ์๋ฒ thread๊ฐ blocked (waiting) ์ํ์ธ ๋์์๋ ๋์ผํ task ๋ด์ ๋ค๋ฅธ thread๊ฐ ์คํ(running) ๋์ด ๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
- ๋์ผํ ์ผ์ ์ํํ๋ ๋ค์ค thread๊ฐ ํ๋ ฅํ์ฌ ๋์ ์ฒ๋ฆฌ์จ (throughput)๊ณผ ์ฑ๋ฅ ํฅ์์ ์ป์ ์ ์๋ค.
- thread๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๋ ฌ์ฑ์ ๋์ผ ์ ์๋ค.
- Responsiveness
- ex) multi-threaded Web - if one thread is blocked (ex. network), another thread continues (ex. display)
- Resourece Sharing
- n threads can share binary code, data, resource of the process
- Economy
- creating & CPU switching thread (rather than a process)
- Solaris์ ๊ฒฝ์ฐ ์ ๋ ๊ฐ์ง overhead๊ฐ ๊ฐ๊ฐ 30๋ฐฐ, 5๋ฐฐ
- Utilization of MP Architectures
- each thread may be running in parallel on a different processor
โจ Implementation of Threads
๐ข Some are supported by kernal > kenel Threads
- Windows 95/98/NT
- Solaris
- Digital UNIX, Mach
๐ขOthers are supported by library > User Threads
- POSIX Pthreads
- Mach C-threads
- Solaris threads
๐ข Some are real-time threads
๐ ์ง๋ฌธ
โจ Question
- ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด๋ฅผ ์ค๋ช
ํด๋ณด์ธ์.
- ๋๊ธฐ์ ์
์ถ๋ ฅ๊ณผ ๋น๋๊ธฐ์ ์
์ถ๋ ฅ์ ์ฐจ์ด์ ๋ํด ์ค๋ช
ํด๋ณด์ธ์.
โจ Answer
- ํ๋ก์ธ์ค๋ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋งํ๊ณ , ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด๋ถ์ CPU ์ํ๋จ์๊ฐ ์ฌ๋ฌ๊ฐ ์๋ ๊ฒ์ ๋งํ๋ค. ํ๋ก์ธ์ค๋ ์์์ ์ด์์ฒด์ ๋ก๋ถํฐ ํ ๋น๋ฐ๊ณ , ์ค๋ ๋๋ ํ๋ก์ธ์ค๋ก๋ถํฐ ํ ๋น๋ฐ๋๋ค. ํ๋ก์ธ์ค๋ณด๋ค ๋ฌธ๋งฅ ๊ตํ์๋ ์ฉ์ดํ๋ฉฐ ํ๋์ ์ค๋ ๋๊ฐ blocked ์ํ์ผ ๋ ๋ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์คํ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
- ๋๊ธฐ์ ์
์ถ๋ ฅ์ I/O ์์ฒญ ํ ์
์ถ๋ ฅ ์์
์ด ์๋ฃ๋ ํ์์ผ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋์ด๊ฐ์ง๋ง ๋น๋๊ธฐ์ ์
์ถ๋ ฅ์ I/O๊ฐ ์์๋ ํ ์
์ถ๋ ฅ ์์
์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ฆ์ ๋์ด๊ฐ๋ค.