๋๊ธฐ์ ์ ์ถ๋ ฅ๊ณผ ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ
- ๋๊ธฐ์ ์
์ถ๋ ฅ(synchronous I/O)
- I/O ์์ฒญ ํ ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋ ํ์์ผ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋์ด๊ฐ
- ๊ตฌํ ๋ฐฉ๋ฒ 1
- I/O๊ฐ ๋๋ ๋๊น์ง CPU๋ฅผ ๋ญ๋น์ํด
- ๋งค์์ ํ๋์ I/O๋ง ์ผ์ด๋ ์ ์์
- ๊ตฌํ ๋ฐฉ๋ฒ 2 (์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ)
- I/O๊ฐ ์๋ฃ๋ ๋๊น์ง ํด๋น ํ๋ก๊ทธ๋จ์๊ฒ์ CPU๋ฅผ ๋นผ์์
- I/O ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค์ ๊ทธ ํ๋ก๊ทธ๋จ์ ์ค ์ธ์
- ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ CPU๋ฅผ ์ค
- ๋น๋๊ธฐ์ ์
์ถ๋ ฅ (asynchronous I/O)
- I/O๊ฐ ์์๋ ํ ์ ์ถ๋ ฅ ์์ ์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ฆ์ ๋์ด๊ฐ
⇒ ๋ ๊ฒฝ์ฐ ๋ชจ๋ I/O์ ์๋ฃ๋ ์ธํฐ๋ฝํธ๋ก ์๋ ค์ค
Thread
A thread(or lightweight process) is a basic unit of CPU utilization
- ํ๋ก์ธ์ค ํ๋์ ์ฌ๋ฌ๊ฐ ๋๊ณ ์๋ CPU ์ํ ๋จ์
- Thread์ ๊ตฌ์ฑ (thread ๊ฐ ๋ณ๋๋ก ๊ฐ์ง๊ณ ์๋ ๋ถ๋ถ)
- Program counter: ์ฝ๋์ ์ด๋ ๋ถ๋ถ์ ์คํํ๊ณ ์๋๊ฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ์ง์คํฐ
- Register set
- Stack space
- Thread๊ฐ ๋๋ฃ thread์ ๊ณต์ ํ๋ ๋ถ๋ถ(=task)
- code section
- data section
- OS resources
- ์ ํต์ ์ธ ๊ฐ๋ ์ heavyweight process๋ ํ๋์ thread๋ฅผ ๊ฐ์ง๊ณ ์๋ task๋ก ๋ณผ ์ ์๋ค
- ๋ค์ค ์ค๋ ๋๋ก ๊ตฌ์ฑ๋ ํ์คํฌ ๊ตฌ์กฐ์์๋ ํ๋์ ์๋ฒ ์ค๋ ๋๊ฐ blocked(waiting) ์ํ์ธ ๋์์๋ ๋์ผํ task ๋ด์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์คํ(running)๋์ด ๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
- → ๋น ๋ฅธ ์๋ต์ฑ ์ ๊ณต
- ์์ ์ ์ฝ ๊ฐ๋ฅ
- ํ๋์ ํ๋ก์ธ์ค ์์์ ์ค๋ ๋๋ผ๋ฆฌ binary code, data, resource of the process๋ฅผ ๊ณต์
- if ๊ฐ์ ์ผ์ ํ๋ Process๋ฅผ ์ฌ๋ฌ๊ฐ ๋์๋๋๋ค๋ฉด ๊ฐ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ์ผํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ๋ฐ์
- ๋์ผํ ์ผ์ ์ํํ๋ ๋ค์ค ์ค๋ ๋๊ฐ ํ๋ ฅํ์ฌ ๋์ ์ฒ๋ฆฌ์จ(throughput)๊ณผ ์ฑ๋ฅ ํฅ์์ ์ป์ ์ ์๋ค.
- ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๋ ฌ์ฑ์ ๋์ผ ์ ์๋ค.
'๐ฅ CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] Process Management | ์์คํ ์ฝ, CPU burst time (0) | 2022.08.24 |
---|---|
[์ด์์ฒด์ ] ํ๋ก์ธ์ค (1) | Process State, Context Switch, Scheduler (0) | 2022.08.11 |
[์ด์์ฒด์ ] Program Execution | ํ๋ก๊ทธ๋จ ์คํ (0) | 2022.08.10 |
[์ด์์ฒด์ ] System Structure (0) | 2022.07.28 |
[์ด์์ฒด์ ] Introduction to Operating System (0) | 2022.07.28 |