์ด์์ฒด์ ์ ์ปดํจํฐ
[OS] SECTION 3.1 ์ด์์ฒด์ ์ ์ปดํจํฐ
OS๋ ์ฌ์ฉ์๊ฐ ์ปดํจํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃจ๊ฒ ํด์ฃผ๋ ์ธํฐํ์ด์ค์ด๋ค.
OS๋ ํ์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ ์์คํ ์์์ ํจ์จ์ ์ผ๋ก ๋ถ๋ฐฐํ๋ค.
์ด์์ฒด์ ↔ ํ์จ์ด (ํ๋์จ์ด์ ์ ์ด์ ๊ตฌ๋์ ๋ด๋นํ๋ OS)
3.1 ์ด์์ฒด์ ์ ์ปดํจํฐ
3.1.1 ์ด์์ฒด์ ์ ์ญํ ๊ณผ ๊ตฌ์กฐ
์ด์์ฒด์ ์ ์ญํ
- CPU ์ค์ผ์ค๋ง๊ณผ ํ๋ก์ธ์ค ๊ด๋ฆฌ
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- ๋์คํฌ ํ์ผ ๊ด๋ฆฌ
- I/O ๋๋ฐ์ด์ค ๊ด๋ฆฌ
์์คํ ์์ ๊ด๋ฆฌ, ์ฌ์ฉ์์ ์ปดํจํฐ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ง์,
์ด์์ฒด์ ์ ๊ตฌ์กฐ
GUI : ์ฌ์ฉ์๊ฐ ์ ์์ฅ์น์ ์ํธ ์์ฉํ ์ ์๋๋ก ํ๋
์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ํ ํํ
๋ฆฌ๋
์ค ์๋ฒ : GUI๊ฐ ์๊ณ CUI๋ง ์์
* CUI : ๊ทธ๋ํฝ์ด ์๋ ๋ช
๋ น์ด๋ก ์ฒ๋ฆฌํ๋ ์ธํฐํ์ด์ค
CUI๋ ์๋๊ฐ ๋น ๋ฅด๊ณ ๋ฆฌ์์ค๋ฅผ ์ ๊ฒ ์ฌ์ฉํ๋ค. ํ์ง๋ง ํธ์์ฑ์ด ๋จ์ด์ง๋ค.
๋๋ถ๋ถ์ ์๋ฒ ์ปดํจํฐ๋ CUI ๊ธฐ๋ฐ์ผ๋ก ์ด์๋๋ค.
์์คํ ์ฝ
- ์ด์์ฒด์ ๊ฐ ์ปค๋์ ์ ๊ทผํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ด๋ค.
- ์ด์์ฒด์ ์ ์๋น์ค๋ฅผ ๋ฐ๊ธฐ ์ํด ์ปค๋ ํจ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ๋ค.
- ํ๋ก์ธ์ค๋ ์ค๋ ๋์์ ์ด์์ฒด์ ๋ก ์์ฒญ์ ํ ๋ ์์คํ ์ฝ์ ๊ฑฐ์ณ ์ ๋ฌ๋๋ค.
์ฐธ๊ณ : https://fjvbn2003.tistory.com/306
modebit
- 1๋๋ 0์ ๊ฐ์ ๊ฐ์ง๋ ํ๋๊ทธ ๋ณ์
- modebit์ ์ฐธ๊ณ ํด์ ์ ์ ๋ชจ๋์ ์ปค๋ ๋ชจ๋๋ฅผ ๊ตฌ๋ถํ๋ค.
- I/O ๋๋ฐ์ด์ค์ ๋ณด์์ ์ํด ์ฌ์ฉ๋๋ค.
- 0์ ์ปค๋ ๋ชจ๋ , 1์ ์ ์ ๋ชจ๋
3.1.2 ์ปดํจํฐ์ ์์
CPU(Central Processing Unit)
- ์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น, ์ ์ด์ฅ์น, ๋ ์ง์คํฐ๋ก ๊ตฌ์ฑ๋์ด ์๋ ์ปดํจํฐ ์ฅ์น
- ์ธํฐ๋ฝํธ์ ์ํด ๋จ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ๋ช ๋ น์ด๋ฅผ ํด์ํด์ ์คํํ๋ ์ผ๊พผ
์ปค๋์ด ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ํ๋ก์ธ์ค๋ก ๋ง๋ค๋ฉด CPU๊ฐ ์ฒ๋ฆฌํ๋ค.
์ ์ด์ฅ์น(Control Unit)
- ํ๋ก์ธ์ค ์กฐ์์ ์ง์ํ๋ CPU์ ํ ๋ถํ
- ์ /์ถ๋ ฅ์ฅ์น ๊ฐ ํต์ ์ ์ ์ดํ๊ณ ๋ช ๋ น์ด๋ค์ ์ฝ๊ณ ํด์ํ๋ฉฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์์๋ฅผ ๊ฒฐ์
๋ ์ง์คํฐ(Register)
- CPU ์์ ์๋ ๋งค์ฐ ๋น ๋ฅธ ์์๊ธฐ์ต์ฅ์น
- ์ฐ์ฐ ์๋๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ์์ญ ๋ฐฐ์์ ์๋ฐฑ ๋ฐฐ๊น์ง ๋น ๋ฅด๋ค.
- CPU๋ ๋ ์ง์คํฐ๋ฅผ ๊ฑฐ์ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น(Arithmetic Logic Unit)
- ์ฐ์ ์ฐ์ฐ๊ณผ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฐํ๋ ๋์งํธ ํ๋ก
### CPU์ ์ฐ์ฐ ์ฒ๋ฆฌ
1. ์ ์ด์ฅ์น๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ง์คํฐ์ ๊ณ์ฐํ ๊ฐ์ ๋ก๋ํ๋ค.
2. ์ ์ด์ฅ์น๊ฐ ๋ ์ง์คํฐ์ ์๋ ๊ฐ์ ๊ณ์ฐํ๋ผ๊ณ ์ฐ์ ๋
ผ๋ฆฌ์ฐ์ฐ์ฅ์น์ ๋ช
๋ นํ๋ค.
3. ์ ์ด์ฅ์น๊ฐ ๊ณ์ฐ๋ ๊ฐ์ ๋ ์ง์คํฐ์ ์ ๋ฌํ๋ค.
์ธํฐ๋ฝํธ(Interrupt)
- ์ด๋ค ์ ํธ๊ฐ ๋ค์ด์์ ๋ CPU๋ฅผ ์ ๊น ์ ์ง์ํค๋ ๊ฒ
- IO ๋๋ฐ์ด์ค๋ก ์ธํ ์ธํฐ๋ฝํธ, ์ฐ์ ์ฐ์ฐ์์์ ์ธํฐ๋ฝํธ, ํ๋ก์ธ์ค ์ค๋ฅ ๋ฑ์ด ์๋ค.
์ธํฐ๋ฝํธ ๋ฐ์ ์
1. ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๊ฐ ๋ชจ์ฌ ์๋ ์ธํฐ๋ฝํธ ๋ฒกํฐ๋ก ๊ฐ๋ค
2. ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๊ฐ ์คํ๋๋ค.
* ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์ : ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ฅผ ํธ๋ค๋งํ๊ธฐ ์ํ ํจ์.
์ปค๋ ๋ด๋ถ์ IRQ๋ฅผ ํตํด ํธ์ถ๋๋ฉฐ request_irq()๋ฅผ ํตํด ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ๋ฑ๋กํ ์ ์๋ค.
- ํ๋์จ์ด ์ธํฐ๋ฝํธ
- IO ๋๋ฐ์ด์ค์์ ๋ฐ์ํ๋ ์ธํฐ๋ฝํธ๋ฅผ ๋งํ๋ค.
- ์์ฐจ์ ์ผ๋ก ์ธํฐ๋ฝํธ ์คํ์ ์ค์งํ๊ณ ์ด์์ฒด์ ์ ์์คํ ์ฝ์ ์์ฒญํ๋ค.
- ์ดํ ๋๋ฐ์ด์ค์ ์๋ ์์ ๋ก์ปฌ ๋ฒํผ์ ์ ๊ทผํ์ฌ ์ผ์ ์ํํ๋ค.
- ์ํํธ์จ์ด ์ธํฐ๋ฝํธ
- ํธ๋ฉ(trap)์ด๋ผ๊ณ ๋ ํ๋ค.
- ํ๋ก์ธ์ค ์ค๋ฅ ๋ฑ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ์์คํ ์ฝ์ ํธ์ถํ ๋ ๋ฐ๋ํ๋ค.
DMA์ปจํธ๋กค๋ฌ(Direct Memory Access)
- I/O ๋๋ฐ์ด์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ํ๋์จ์ด ์ฅ์น
- CPU์ ๋ถํ๋ฅผ ๋ง์์ค๋ค
- ํ๋์ ์์ ์ CPU์ DMA ์ปจํธ๋กค๋ฌ๊ฐ ๋์์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
DMA์ปจํธ๋กค๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์์ฑํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ์ฌ์ดํด์ ์ด๊ธฐํํ ์ ์๋ค
๋ฉ๋ชจ๋ฆฌ(Memory)
- ์ ์ํ๋ก์์ ๋ฐ์ดํฐ๋ ์ํ, ๋ช ๋ น์ด ๋ฑ์ ๊ธฐ๋กํ๋ ์ฅ์น
- RAM์ ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ๋ ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์๋ก ๋ง์ ์ผ์ ๋์์ ํ ์ ์๋ค.
ํ์ด๋จธ(Timer)
- ํน์ ํ๋ก๊ทธ๋จ์ ์๊ฐ ์ ํ์ ๋ค๋ ์ญํ ์ ํ๋ค.
๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ(Device Controller)
- ์ปดํจํฐ์ ์ฐ๊ฒฐ๋์ด ์๋ I/O ๋๋ฐ์ด์ค๋ค์ ์์ CPU๋ฅผ ๋งํ๋ค.