1. CPU, Process, Memory
(1) CPU, Process, Memory

ํ๋ก์ธ์ค(Process) ๋ ์ปดํจํฐ์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋งํ๋ฉฐ ๊ฐ ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ(Memory) ๊ณต๊ฐ์ ํ ๋น๋ฐ์ ์คํ๋๊ธฐ ์ํด ๋๊ธฐํ๊ณ ์๋ค. ํ๋ก์ธ์ค๋ ๋ช ๋ น์ด์ ๋ฐ์ดํฐ ์งํฉ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ด ๋ ํ๋ก์ธ์ค์ ๋ช ๋ น์ด๋ฅผ CPU(Central Process Unit) ์์ ์คํ์ํจ๋ค.
(2) I/O (Input/Output)

ํ๋ก์ธ์ค ๋ CPU ์ฐ์ฐ ์ธ์๋ ๋คํธ์ํฌ ๋๋ ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. ์ด์ ๊ฐ์ ํ์๋ฅผ I/O(Input/Output) ๋ผ๊ณ ํ๋ค. I/O ๋ ์ธ๋ถ์์ ์๋ต์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ blocking I/O, ์๋ต์ด ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค๋ฅธ ์์ ์ ํ๋ Non-Blocking I/O ๊ฐ ์๋ค.
2. Multi-(Programming, Tasking, Processing, Threading)
(1) Multi-Programming

์ด๊ธฐ์ ์ปดํจํฐ์ CPU ๋ ๋จ์ผ ์ฝ์ด๋ง ์กด์ฌํ๋ค. ํ ์ฝ์ด๋ ํ ํ๋ก์ธ์ค๋ง ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ CPU ์ฌ์ฉ๋ฅ ์ด ์ข์ง ๋ชปํ๋ค. ์๋ฅผ ๋ค์ด blocking I/O ์ ๊ฐ์ ์๋ต์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ์๋ CPU ๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฅผ ๊ฐ์ ํ๊ณ ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋๊ณ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ I/O ๋ฐ์ํ๋ฉด CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ(MultiProgramming) ์ด๋ค.
(2) Multi-Tasking
๋ฉํฐํ๋ก๊ทธ๋๋ฐ์๋ ๋จ์ ์ด ์กด์ฌํ๋ค. ํน์ ํ๋ก์ธ์ค(Process01)์ด ๊ณ์ํด์ I/O ์์ด CPU ๋ฅผ ์ ์ ํ๊ณ ์๋ค๋ฉด Process01 ์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค(Process02) ๋ CPU ๋ฅผ ์ ์ ํ ์ ์๋ค. ์ด์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ ๋ฉํฐํ์คํน(MultiTasking) ์ด๋ค. ํ๋ก์ธ์ค๊ฐ CPU ๋ฅผ ์ฌ์ฉํ ๋ ์์ฃผ ์งง์ ์๊ฐ(quantum) ๋ง ์คํํ ์ ์๋๋ก ํ๋ค.(์๋ถํ ๋ฐฉ์) ์ฆ, ํ๋์ CPU ๊ฐ ๋ ํ๋ก์ธ์ค๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์คํํ๋ค.
๋ฉํฐํ์คํน(MultiTasking) ์ ์ฌ์ฉ์ ์ ์ฅ์์ ๋ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํํ๋ ๊ฒ์ฒ๋ผ ๋๋ผ๋๋ก ํ๋ ์ฅ์ ์ด ์์ง๋ง ์๋์ ๊ฐ์ ๋จ์ ๊ณผ ์๊ตฌ์ฌํญ์ด ์กด์ฌํ๋ค.
- ์ค์ ๋ก ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ ์์
์ ์ํํ์ง ๋ชปํ๋ค.
- ๋์ผ ์ฝ์ด๊ฐ ๋ฑ์ฅํ๋ฉด์ ๋์ฑ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์๋ค. ํ๋์ ํ๋ก์ธ์ค์ ํ๋์ ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋์ ์์ ๋จ์๋ง ์คํํ๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ์ ํ๊ณ๊ฐ ์์๋ค.
- ํ๋ก์ธ์ค์ ์ปจํ
์คํธ ์ค์์นญ ๋น์ฉ์ ํฌ๋ค.
- ์ด์ ์ ๋ฉํฐ์ฐ๋ ๋๊ฐ ๋์ ๋๊ธฐ ์ด์ ์๋ ์์ ๋์ ๋๋ฆฌ๊ธฐ ์ํด์๋ ๋์ผํ ํ๋ก์ธ์ค๋ฅผ 2๊ฐ๋ฅผ ์คํํ๋ค. ํ์ง๋ง ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ ๊ณต์ (e.g. data, code, heap) ์ ๊ณต์ ํ์ง ์์ IPC(Inter Process Communication) ์ด ํ์ํ๋ค. ๊ณต์ ํ์ง ์๋ ๋ฐ์ดํฐ๊ฐ ๋ง์ผ๋ฉด ํ๋ก์ธ์ค๋ฅผ ์ํ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ๋ ์ง์คํฐ์ ์๋ ๊ทธ๋งํผ ๋ง์์ง๊ธฐ ๋๋ฌธ์ ์์คํ ์ ๋ถ๋ด์ ์ค๋ค.
(3) Multi-Threading

์ฐ๋ ๋(Thread) ๋ CPU ์์ ์คํ๋๋ ๋จ์(unit of execution) ์ ๋งํ๋ค. ํ๋์ ํ๋ก์ธ์ค์๋ ์ต์ ํ ๊ฐ ์ด์์ ์ฐ๋ ๋๋ฅผ ๊ฐ์ง ์ ์๊ณ ์ฐ๋ ๋๋ ํ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ(e.g. code, data, heap) ์ ๊ณต์ ํ๋ค. (stack ์ ๋ณ๋๋ก ๊ด๋ฆฌํ๋ค.)
์ด์ ๋ฉํฐํ์คํน ๋ฐฉ์์ ๋จ์ ์ ํด๊ฒฐํ๊ณ ์ ํด์ ๋์ ํ๋ ๊ฐ๋ ์ด ๋ฉํฐ ์ฐ๋ ๋ฉ(Multi-Threading) ์ด๋ค. ๋ฉํฐ ์ฐ๋ ๋๋ ํ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฌ๋ฌ ์์ ์ ์คํํ๋๋ฐ ๋ชฉ์ ์ด ์๋ค. ์ฆ, ๋จ์ผ ์ฝ์ด ๊ธฐ์ค ํ ํ๋ก์ธ์ค์ 2๊ฐ ์ด์์ ์ฐ๋ ๋ ์ด์์ผ๋ก ๊ด๋ฆฌ๋๋ ๋ฐฉ์์ ๋งํ๋ค. ๋ฉํฐ ์ฐ๋ ๋ ๋ฐฉ์์ ์๋์ ๊ฐ์ ์ฅ์ ์ ๊ฐ์ง๋ค.
- ์์คํ
์์ ์๋ชจ ๊ฐ์
- ํ๋ก์ธ์ค ์์ฑ ๋ฐ ์์์ ํ ๋นํ๋ ์์คํ ์ฝ์ด ์ค์ด๋ค์ด ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- Context Switching ์ด ๋น ๋ฅด๋ค.
- ์ค๋ ๋ ๊ฐ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค ์ํ๋ฅผ ๋ฐฑ์
ํ ํ์๊ฐ ์๋ค.
(๊ฐ์ ํ๋ก์ธ์ค ์ํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ด ๋ฐ๋์ง ์์ ๋น ๋ฅด๋ค.) - MMU ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ์ฐธ์กฐ๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์๊ณ TLB(Translation Look-aside Buffer) ๋ฅผ ๋น์์ค ํ์๊ฐ ์๋ค.
- ์ค๋ ๋ ๊ฐ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค ์ํ๋ฅผ ๋ฐฑ์
ํ ํ์๊ฐ ์๋ค.
(4) Multi-Processing

๋ฉํฐ ํ๋ก์ธ์ฑ(Multi-Processing) ์ CPU ์ ์ฝ์ด๊ฐ 2๊ฐ ์ด์์ผ๋ก ํ๋ก์ธ์ค์ ์์ ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค. ๋์ผ ์ฝ์ด๊ฐ ํ ํ๋ก์ธ์ค์ ๋ ์ฐ๋ ๋๊ฐ ์คํ๋ ์ ์๊ณ , ๋ ํ๋ก์ธ์ค์ ๊ฐ ์ฐ๋ ๋๊ฐ ์คํํ๊ธฐ๋ ํ๋ค.
Reference
'๐ computer-science' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์บ์ ์ ๋ฆฌ (Cache Summary) (0) | 2025.03.09 |
|---|---|
| ํด์ ํ ์ด๋ธ(Hash Table) (0) | 2024.02.19 |
| thread type & model (0) | 2024.02.15 |
| ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ (Virtual Memory) (0) | 2024.01.26 |
