ํ๋ก์ธ์ค : ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ
ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ(context) : ํ๋ก์ธ์ค๊ฐ ํ์ฌ ์ด๋ค ์ํ์์ ์ํ๋๊ณ ์๋์ง ์ ํํ ๊ท๋ช ํ๊ธฐ ์ํด ํ์ํ ์ ๋ณด.
- CPU์ ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ
- Program Counter
- ๊ฐ์ข register
- ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ
- code, data, stack
- ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ ๊ตฌ์กฐ
- PCB
- Kernel stack
ํ๋ก์ธ์ค์ ์ํ
- ์คํ(running)
- CPU๋ฅผ ์ก๊ณ instruction์ ์ํ์ค์ธ ์ํ
- ์ค๋น(ready)
- CPU๋ง ๋ณด์ ํ๋ฉด ๋น์ฅ ๋ช ๋ น์ ์คํํ ์ ์๋ ์ํ(๋ฉ๋ชจ๋ฆฌ ๋ฑ ๋ค๋ฅธ ์กฐ๊ทผ์ ๋ชจ๋ ๋ง์กฑํ๊ณ ์์)
- ๋ด์(blocked, wait, sleep)
- CPU๋ฅผ ์ฃผ์ด๋ ๋น์ฅ instruction์ ์ํํ ์ ์๋ ์ํ
- ํ๋ก์ธ์ค๊ฐ ์์ฒญํ ์ ์ถ๋ ฅ ์์ ์ด ์งํ์ค์ธ ๊ฒฝ์ฐ
- ์ค์ง(suspended, stopped)
- ์ธ๋ถ์ ์ธ ์ด์ ๋ก ํ๋ก์ธ์ค์ ์ํ์ด ์ ์ง๋ ์ํ (๋ํ์ ์ธ ์ : ์ค๊ธฐ์ค์ผ์ค๋ฌ์ ์ค์ ์์)
- ํ๋ก์ธ์ค๋ ํต์งธ๋ก ๋์คํฌ์ swap out ๋๋ค
Blocked : ์์ ์ด ์์ฒญํ event๊ฐ ๋ง์กฑ๋๋ฉด Ready
Suspended : ์ธ๋ถ์์ resumeํด ์ฃผ์ด์ผ Active
๋ฌธ๋งฅ ๊ตํ(Context Switch)
- cpu๋ฅผ ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์
- cpu๊ฐ ๋ค๋ฅธ ํ๋ก๊ฒ์ค์๊ฒ ๋์ด๊ฐ ๋ ์ด์์ฒด์ ๋ ๋ค์์ ๊ณผ์ ์ ์ํ
- cpu๋ฅผ ๋ด์ด์ฃผ๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๊ทธ ํ๋ก์ธ์ค์ PCB์ ์ ์ฅ
- cpu๋ฅผ ์๋กญ๊ฒ ์ป๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ PCB์์ ์ฝ์ด์ด
- System call์ด๋ Interrupt ๋ฐ์์ ๋ฐ๋์ context swich๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๋
CPU ๋์คํจ์น
- ์ค๋น์ํ์ ์๋ ํ๋ก์ธ์๋ค ์ค์์ CPU๋ฅผ ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ ํํ ํ ์ค์ ๋ก CPU์ ์ ์ด๊ถ์ ๋๊ฒจ๋ฐ๋ ๊ณผ์
ํ๋ก์ธ์ค ์ ์ด๋ธ๋ก
- ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋ง๋ค ์ ์งํ๋ ์ ๋ณด๋ค์ ๋ด๋ ์ปค๋ ๋ด์ ์๋ฃ๊ตฌ์กฐ
ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค๋งํ๊ธฐ ์ํ ํ
- ์์ ํ : ์์คํฌ ๋ด์ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ
- ์ค๋นํ : CPU๋ง ์ป์ผ๋ฉด ๋น์ฅ ์คํ๋ ์ ์๋ ํ๋ก์ธ์ค ์งํฉ
- ์ฅ์นํ : ํน์ ์์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ค์ ์ค ์ธ์ฐ๊ธฐ ์ํด ์์๋ณ๋ก ๋๋ ํ
์ค์ผ์ค๋ฌ
- ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ(=์์
์ค์ผ์ค๋ฌ)
- ์์ ํ๋ก์ธ์ค ์ค ์ด๋ค ๊ฒ๋ค์ ready queue๋ก ๋ณด๋ผ ์ง ๊ฒฐ์
- ํ๋ก์ค์ธ์ memory(๋ฐ ๊ฐ์ข ์์)์ ์ฃผ๋ ๋ฌธ์
- degree of Multiprogramming์ ์ ์ด
- time sharing system์ ๋ณดํต ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์์ (๋ฌด์กฐ๊ฑด ready)
- ๋จ๊ธฐ ์ค์ผ์ค๋ฌ(=CPU ์ค์ผ์ค๋ฌ)
- ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋ค์๋ฒ์ running์ํฌ ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์๊ฒ cpu๋ฅผ ์ฃผ๋ ๋ฌธ์
- ์ถฉ๋ถํ ๋นจ๋ผ์ผ ํจ(ms ๋จ์)
- ์ค๊ธฐ ์ค์ผ์ค๋ฌ (=Swapper)
- ์ฌ์ ๊ณต๊ฐ์ ๋ง๋ จํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋ฅผ ํต์งธ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ์ซ์๋
- ํ๋ก์ธ์ค์๊ฒ์ memory๋ฅผ ๋บ๋ ๋ฌธ์
- degree of Multiprogramming์ ์ ์ด
์ค๋ ๋(Thread)
- lightweight process
- ํ๋ก์ธ์ค ํ๋์ cpu ์ํ๋จ์๊ฐ ์ฌ๋ฌ๊ฐ ์๋ ๊ฒฝ์ฐ
- thread๊ฐ ๋ณ๋๋ก ๊ฐ์ง๊ณ ์๋ ๋ถ๋ถ
- program counter
- registers
- stack
- thread๊ฐ ๊ณตํต์ผ๋ก ๊ฐ์ง๊ณ ์๋ ๋ถ๋ถ (=task)
- code
- data
- OS resources
- ๋ค์ค ์ค๋ ๋ ๊ตฌ์กฐ : ํ๋์ ์๋ฒ ์ค๋ ๋๊ฐ blocked์ํ์ธ ๋์, ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์คํ(running)๋์ด ๋น ๋ฅธ ์ฒ๋ฆฌ ๊ฐ๋ฅ
ํ๋ก์ธ์ค ์์ฑ
- ์ด์์ฒด์ ๋ฅผ ํตํด์๋ง ์์ฑ์ด ๊ฐ๋ฅ
- ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ณต์ ํด์ ์์ฑ
- ์์์ ๋ถ๋ชจํ๋ก์ธ์ค์ ์ฃผ์๊ณต๊ฐ์ ๋ณต์ฌ.
- ๊ทธ ๊ณต๊ฐ์ ์๋ก์ด ํ๋ก๊ทธ๋จ์ ์ฌ๋ฆผ.
- ์ ๋์ค์ ์
- fork() ์์คํ
์ฝ์ด ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์์ฑ
- ๋ถ๋ชจ๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌ
- ์ฃผ์ ๊ณต๊ฐ ํ ๋น
- exec() ์์คํ ์ฝ์ ํตํด ์๋ก์ด ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆผ
- fork() ์์คํ
์ฝ์ด ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์์ฑ
- ํ๋ก์ธ์ค๊ฐ ๋ง์ง๋ง ๋ช
๋ น์ ์ํํ ํ ์ด์์ฒด์ ์๊ฒ ์ด๋ฅผ ์๋ ค์ค(exit)
- ์์์ด ๋ถ๋ชจ์๊ฒ output data๋ฅผ ๋ณด๋(wait ์์คํ ์ฝ์ ํตํด)
- ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์์์ ์ํ์ ์ข
๋ฃ์ํด (abort)
- ์์์ด ํ ๋น ์์์ ํ๊ณ์น๋ฅผ ๋์ด์ ๊ฒฝ์ฐ
- ์์์๊ฒ ํ ๋น๋ ํ์คํฌ๊ฐ ๋ ์ด์ ํ์ํ์ง ์์๊ฒฝ์ฐ
- ๋ถ๋ชจ๊ฐ ์ข ๋ฃ(exit)ํ๋ ๊ฒฝ์ฐ
ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ์์คํ ์ฝ
- fork() : ์์์ ์์ฑ (copy)
- exec() : ์๋ก์ด ํ๋ก๊ทธ๋จ์ ๋ฎ์ด์์
- wait() : ์์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ sleep
- exit() : ์ข ๋ฃ
ํ๋ก์ธ์ค ๊ฐ ํ๋ ฅ
- ์์น์ ์ผ๋ก ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ค์ธ์ ์ํ์ ์ํฅ์ ๋ฏธ์น์ง ๋ชปํจ
- IPC ( Interprocess Communication)
- ๋ฉ์์ง ์ ๋ฌ (message passing) : ์ปค๋์ ํตํด ๋ฉ์์ง ์ ๋ฌ
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ(shared memory) : ์ผ๋ถ ์ฃผ์ ๊ณต๊ฐ์ ๊ณต์
- ์ปค๋์ด ๋๊ธฐํ๋ฅผ ์ฑ ์์ง์ง ์๋๋ค!
'๐ฅ๏ธ์ปดํจํฐ๊ณผํ:CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
OSI 7 Layer (0) | 2024.04.17 |
---|---|
[์ด์์ฒด์ ]6์ฅ. cpu์ค์ผ์ค๋ง (2) | 2024.01.16 |
[์ด์์ฒด์ ]4์ฅ-ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ์ ์คํ (0) | 2023.06.20 |
[์ด์์ฒด์ ]3์ฅ-์ปดํจํฐ ์์คํ ์ ๋์ ์๋ฆฌ (0) | 2023.06.20 |
[์ด์์ฒด์ ]2์ฅ-์ด์์ฒด์ ๊ฐ์ (0) | 2023.06.20 |