ํ๋ก์ธ์ค์ ๊ฐ๋
a program in execution
ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ(context)
ํน์ ์์ ์์ ํด๋น ํ๋ก์ธ์ค๊ฐ ์ด๋๊น์ง ์คํ์ ํ๋์ง ๊ท๋ช ํ๋ ์์
- 1) CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ : Program Counter, ๊ฐ์ข
register
- register๊ฐ ํ์ฌ ์ด๋ค ๊ฐ์ ๊ฐ์ง๋๊ฐ
- 2) ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ : code, data, stack
- code : ํ์ฌ ์ด๋๊น์ง ์ํํ๋๊ฐ
- data : ํ์ฌ ๋ณ์์ ๊ฐ์ด ๋ฌด์์ธ๊ฐ
- stack : ๋ฌด์จ ๋ด์ฉ์ ์ด๋๊น์ง ์ ์ฅํ๋๊ฐ
- 3) ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ ๊ตฌ์กฐ : PCB(Process Control Block), Kernel stack
- process ์์ฑ๋ ๋๋ง๋ค pcb๋ฅผ ๋์ด ๊ด๋ฆฌ
- kernel stack : system call ์ kernel(์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ํ๋ ์ฝ๋)์์ ์ผ ์ฒ๋ฆฌ
-> ํจ์ ํธ์ถ ์ ํ๋ก์ธ์ค๋ง๋ค ๋ณ๋๋ก stack ๋์ด ์ ๋ณด ๊ผฌ์์ ๋ง์ - multitasking ๋ฑ์ ํตํด cpu๋ฅผ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๊ณ ์์ -> ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ ํ์ ์ ํตํด ์ ํํ time sharing์ ๋ชฉํ๋ก ํจ.
ํ๋ก์ธ์ค์ ์ํ Process State
ํ๋ก์ธ์ค๋ ์ํ(state)๊ฐ ๋ณ๊ฒฝ๋๋ฉฐ ์ํ๋๋ค
1) Running : CPU๋ฅผ ์ก๊ณ instruction์ ์ํ์ค์ธ ์ํ
2) Ready : CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ(๋ฉ๋ชจ๋ฆฌ ๋ฑ ๋ค๋ฅธ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑ -> ํ์ํ ๋ถ๋ถ์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ์ฌ๋ผ์ ์์)
3) Blocked(wait, sleep)
- CPU๋ฅผ ์ฃผ์ด๋ ๋น์ฅ instruction์ ์ํํ ์ ์๋ ์ํ.
- process ์์ ์ด ์์ฒญํ event(I/O)๊ฐ ์ฆ์ ๋ง์กฑ๋์ง ์์ ์ด๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ(ํ๋ก์ธ์ค๋ ์์์ ์ผ์ ํ๊ณ ์์)
ex1) code๊ฐ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ง ์๊ณ disk์ ์๋ ์ํ
ex2) disk์์ file์ ์ฝ์ด์์ผ ํ๋ ๊ฒฝ์ฐ
4) Suspended(stopped)
- ์ค๊ธฐ ์ค์ผ์ค๋ฌ๋ก ์ธํด ์๊ธด ์ํ
- ์ธ๋ถ์ ์ธ ์ด์ ๋ก ํ๋ก์ธ์ค์ ์ํ์ด ์ ์ง๋ ์ํ
- ํ๋ก์ธ์ค๋ ํต์งธ๋ก ๋์คํฌ์ swap out๋๋ค
ex1) ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์ผ์ ์ ์ง์ํจ ๊ฒฝ์ฐ(break key)
ex2) ์์คํ swapper์ด ์ฌ๋ฌ ์ด์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์ ์ ์ค๋จ์ํด(๋ฉ๋ชจ๋ฆฌ์ ๋๋ฌด ๋ง์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ ์์ ๋)
- new : ํ๋ก์ธ์ค๊ฐ ์์ฑ์ค์ธ ์ํ
- terminated : ์ํ execution์ด ๋๋ ์ํ(์ ๋ฆฌํ ๊ฒ์ด ๋จ์์์)
* Blocked : ์์ ์ด ์์ฒญํ event๊ฐ ๋ง์กฑ๋๋ฉด ready (์ผ์ ํ๊ณ ์์)
* Suspended : ์ธ๋ถ์์ resumeํด์ฃผ์ด์ผ active (์ํ์ด ์ ์ง๋์ด ์์)
ํ๋ก์ธ์ค ์ํ๋
- running(user mode) : ํ๋ก์ธ์ค๊ฐ ์์ ์ ์ฝ๋๋ฅผ ์ํ
- running(monitor mode) : ์ด์์ฒด์ ์ ์ฝ๋๋ฅผ ์ํ(์ด์์ฒด์ ๊ฐ runningํ๊ณ ์๋ค X. kernel ์ฝ๋๊ฐ ์ํ๋๋ค)
- blocked : I/O๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ & ๊ณต์ ๋ฐ์ดํฐ ์ ๊ทผ ๋ง๋ ๊ฒฝ์ฐ
Process Control Block(PCB)
์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค ๋น ์ ์งํ๋ ์ ๋ณด
๋ค์์ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ์ง ๊ตฌ์กฐ์ฒด๋ก ์ ์งํ๋ค
- OS๊ฐ ๊ด๋ฆฌ์ ์ฌ์ฉํ๋ ์ ๋ณด
- Process state(ready/running/blocked), process ID
- scheduling information, priority : ์ฐ์ ์์ ์ค์ผ์ฅด๋ง
- CPU ์ํ ๊ด๋ จ ํ๋์จ์ด ๊ฐ : program counter, registers
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ : code, data, stack์ ์์น ์ ๋ณด
- ํ์ผ ๊ด๋ จ : open file descriptors
๋ฌธ๋งฅ ๊ตํ Context Switch
CPU๋ฅผ ํ (์ฌ์ฉ์) ํ๋ก์ธ์ค์์ ๋ค๋ฅธ (์ฌ์ฉ์) ํ๋ก์ธ์ค๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์
CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋์ด๊ฐ ๋ ์ด์์ฒด์ ๋ ๋ค์์ ์ํ
- CPU๋ฅผ ๋บ๊ธธ ๋์ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๊ทธ ํ๋ก์ธ์ค์ PCB(์ปค๋ ์ฃผ์ ๊ณต๊ฐ)์ ์ ์ฅ
- CPU๋ฅผ ์ป๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ PCB์์ ์ฝ์ด์ด
System call์ด๋ interrupt(HW) ๋ฐ์์ ๋ฐ๋์ context switch๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๋
(์ฌ์ฉ์ ํ๋ก์ธ์ค -> ์ด์์ฒด์ ๋ก CPU ๋์ด๊ฐ)
(1) CPU ์ํ ์ ๋ณด ๋ฑ context์ ์ผ๋ถ๋ฅผ PCB์ saveํด์ผ ํ์ง๋ง ๋ฌธ๋งฅ๊ตํ์ ํ๋ (2)์ ๊ฒฝ์ฐ ๊ทธ ๋ถ๋ด์ด ํจ์ฌ ํผ
ex) cache memory flush
ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค๋ง ํ๊ธฐ ์ํ ํ
ํ๋ก์ธ์ค๋ค์ ๊ฐ ํ๋ฅผ ์ค๊ฐ๋ฉฐ ์ํ๋๋ค.
1) Job Queue : ํ์ฌ ์์คํ ๋ด์ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์งํฉ(include ready queue, device queue)
2) Ready Queue : ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์์ผ๋ฉด์ CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
3) Device Queues : I/O device์ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
๊ทธ๋ฆผ) interrupt๊ฐ ๋ฐ์ํ์ ์ ready ์ํ๋ก ๋์ด๊ฐ๋ ๊ฒ์ ์๋
์ค์ผ์ฅด๋ฌ Scheduler
- Long-term scheduler ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ / job scheduler
- ์์ ํ๋ก์ธ์ค ์ค ์ด๋ค ๊ฒ๋ค์ ready queue๋ก ๋ณด๋ผ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์ memory(๋ฐ ๊ฐ์ข ์์)์ ์ฃผ๋ ๋ฌธ์ (memory์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ admit)
- degree of multiprogramming์ ์ ์ด(๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์๋ process์ ์ -> ๋๋ฌด ์ ๊ฑฐ๋ ๋ง์ผ๋ฉด ์ฑ๋ฅ ์ด์)
- time sharing system์๋ ๋ณดํต ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์์(๋ฌด์กฐ๊ฑด ready)
-> ์์ฆ์ process ์์ํ๋ฉด ๊ทธ๋ฅ ๋ฐ๋ก ready ์ํ๋ก ๋ค์ด๊ฐ
- Short-term scheduler ๋จ๊ธฐ ์ค์ผ์ค๋ฌ / CPU scheduler
- ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋ค์๋ฒ์ running ์ํฌ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์ CPU๋ฅผ ์ฃผ๋ ๋ฌธ์
- ์ถฉ๋ถํ ๋นจ๋ผ์ผ ํจ(milisecond ๋จ์)
- Medium-term scheduler ์ค๊ธฐ ์ค์ผ์ค๋ฌ / Swapper
- ์ฌ์ ๊ณต๊ฐ ๋ง๋ จ์ ์ํด ํ๋ก์ธ์ค๋ฅผ ํต์งธ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ์ซ์๋
- ํ๋ก์ธ์ค์๊ฒ์ memory๋ฅผ ๋บ๋ ๋ฌธ์
- degree of multiprogramming์ ์ ์ด
- ํ์ฌ ๋๋ค์์ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ -> suspended ์ํ ์ถ๊ฐ
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๋ก ๋ณผ ์ ์๋ค.
Benifits of Threads
- ๋ค์ค ์ค๋ ๋๋ก ๊ตฌ์ฑ๋ task ๊ตฌ์กฐ์์๋ ํ๋์ ์๋ฒ ์ค๋ ๋๊ฐ blocked/waiting ์ํ์ธ ๋์์๋ ๋์ผํ task ๋ด์ ๋ค๋ฅธ thread๊ฐ ์คํrunning๋์ด ๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
- ์์ ์ ์ฝ : ๋์ผํ ์ผ์ ์ํํ๋ ๋ค์ค thread๊ฐ ํ๋ ฅํ์ฌ ๋์ ์ฒ๋ฆฌ์จ(throughput)๊ณผ ์ฑ๋ฅ ํฅ์์ ์ป์ ์ ์๋ค
-> ์ฌ๋ฌ ๊ฐ์ process๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ code/data/stack์ ์๋ก ๋ง๋ค์ด์ผ ํจ - ๋ณ๋ ฌ์ฑ์ ๋์ผ ์ ์๋ค : ๋ค์ค CPU ์ปดํจํฐ์๋ง ํ์
- 1) Responsiveness ์๋ต์ฑ
- multi-threaded web : ํ๋์ thread๊ฐ blocked๋์ด๋ ๋ค๋ฅธ thread๋ continues
- ๋๊ธฐ์ ์ ์ถ๋ ฅ : I/O๋ฅผ ์ป๋ ๋์ block
- ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ : I/O๋ฅผ ์ป๋ ๋์์๋ ํ๋ฉด์ ๋ค๋ฅธ text ๋์์ค
- 2) Resource Sharing : n threads can share binary code, data, resource of the process
- 3) Economy
- ํ๋ก์ธ์ค ํ๋ ๋ง๋๋ ๊ฒ๋ณด๋ค thread ํ๋ ๋ง๋๋ ๊ฒ ๋ ๊ฒฝ์ ์ ์ด๋ค
- ํ๋ก์ธ์ค ๊ฐ์ ๋ฌธ๋งฅ๊ตํ overhead > thread๊ฐ์ ๋ฌธ๋งฅ ๊ตํ overhead
- creating & CPU switching thread(rather than a process)
- solaris์ ๊ฒฝ์ฐ ์ ๋ ๊ฐ์ง overhead๊ฐ ๊ฐ๊ฐ 30๋ฐฐ, 5๋ฐฐ
- 4) Utilization of MP Architectures : each thread may be running in parallel on a different processor
Implementation of threads
1) kernel thread(supported by kernel)
- thread๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ค๋ ๊ฒ์ system์ด ์๊ณ ์์ -> system์ด thread ๊ด๋ฆฌ
- windows series, solaris, digital UNIX, Mach
2) user thread(supported by library)
- thread๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ค๋ ๊ฒ์ system์ด ๋ชจ๋ฆ -> process ๋ณธ์ธ์ด thread ๊ด๋ฆฌ -> ์ ์ฝ ์กฐ๊ฑด ์กด์ฌ
- POSIX Pthreads, Mach C-threads, Solaris threads
- some are real-time threads
'๐ป CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] 5. CPU Scheduling (0) | 2022.11.27 |
---|---|
[์ด์์ฒด์ ] 4. Process Management (0) | 2022.11.27 |
[์ด์์ฒด์ ] 2. System Structure & Program Execution 2 (0) | 2022.11.20 |
[์ด์์ฒด์ ] 2. System Structure & Program Execution 1 (0) | 2022.11.20 |
[์ด์์ฒด์ ] 1. Introduction to Operating Systems (0) | 2022.11.13 |
๋๊ธ