-
[ ๋ฉด์ ์ ์ํ cs ์ ๊ณต์ง์ ๋ ธํธ ์ ๋ฆฌ ] 3.์ด์์ฒด์ : ์ด์์ฒด์ ์ ์ปดํจํฐBook 2024. 4. 16. 16:17๋ฐ์ํ
์ด์์ฒด์ (OS, Operating System)๋?
์ฌ์ฉ์๊ฐ ์ปดํจํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃจ๊ฒ ํด์ฃผ๋ ์ธํฐํ์ด์ค๋ก, ๋ฉ๋ชจ๋ฆฌ์ ์ปค๋์์ญ์ ์ ์ฌ๋๋ฉฐ, ์คํํ ํ๋ก๊ทธ๋จ์ ํ์ํ ์์์ ํ ๋นํ๊ณ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์คํ๋๋๋ก ๋๋๋ค.
์ด์์ฒด์ ์ ์ ์ฌํ์ง๋ง ์ํํธ์จ์ด๋ฅผ ์ถ๊ฐ๋ก ์ค์นํ ์ ์๋ ๊ฒ์ ํ์จ์ด(firmware)๋ผ๊ณ ํ๋ค.
์ด์์ฒด์ ๋ฅผ ์์์ผ ํ๋ ์ด์ ?
ํ๋์จ์ด์ ์์ฉ ํ๋ก๊ทธ๋จ ์ฌ์ด์ ์์นํด ์๋ ์ด์์ฒด์ ๋ ๊ฐ๋ฐ ์ ํ๋์จ์ด์ ์ ๊ทผํ๋ ์ฝ๋๋ฅผ ์ง์ ์ง์ง์๊ฒ ํด์ฃผ๋ ์ญํ ์ ํ๋๋ฐ, ์ด๋ฌํ ์ด์์ฒด์ ์์ด ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
3.1 ์ด์์ฒด์ ์ ์ปดํจํฐ
3.1.1 ์ด์์ฒด์ ์ ์ญํ ๊ณผ ๊ตฌ์กฐ
3.1.2 ์ปดํจํฐ์ ์์3.1 ์ด์์ฒด์ ์ ์ปดํจํฐ
3.1.1 ์ด์์ฒด์ ์ ์ญํ ๊ณผ ๊ตฌ์กฐ
- ์ด์์ฒด์ ์ ์ญํ
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ : ํ์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๋ค ํ๋ก์ธ์ค์ ์ผ๋งํผ ํ ๋นํด์ผ ํ๋์ง ๊ด๋ฆฌํ๋ค.
- CPU ์ค์ผ์ค๋ง๊ณผ ํ๋ก์ธ์ค ๊ด๋ฆฌ : CPU ์์ ๊ถ์ ์ด๋ค ํ๋ก์ธ์ค์ ํ ๋นํ ์ง, ํ๋ก์ธ์ค์ ์์ฑ๊ณผ ์ญ์ , ์์ ํ ๋น ๋ฐ ๋ฐํ์ ๊ด๋ฆฌํ๋ค.
- ๋์คํฌ ํ์ผ ๊ด๋ฆฌ : ๋์คํฌ ํ์ผ์ ์ด๋ ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ณด๊ดํ ์ง ๊ด๋ฆฌํ๋ค.
- I/O ๋๋ฐ์ด์ค ๊ด๋ฆฌ : ๋ง์ฐ์ค, ํค๋ณด๋์ ๊ฐ์ด ์ปดํจํฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ ๊ด๋ฆฌํ๋ค.
* ์ปค๋(kernel)?
์ด์์ฒด์ ์ ํต์ฌ ์๋น์ค๋ฅผ ๋ด๋นํ๋ ๋ถ๋ถ์ผ๋ก ๋ง์น ์ฌ๋์ ์ฌ์ฅ๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค.
(์ด์์ฒด์ ์๋ ์ํ์ง๋ง ์ปค๋์๋ ์ํ์ง ์๋ ๊ธฐ๋ฅ : GUI/CUI ( ์ฌ์ฉ์์ ์ปดํจํฐ ๊ฐ์ ํต๋ก์ผ ๋ฟ ์ด์์ฒด์ ์ ํต์ฌ ๊ธฐ๋ฅ(์ปค๋)์ ์๋)
* ์ด์ค๋ชจ๋์ ์์คํ ํธ์ถ
์์์ ์์ ์ ์ํด ์ด์์ฒด์ ๊ฐ ์์ ์ ๊ทผ์ ๋ํํ๋๋ฐ ์ด ๋ง์ธ ์ฆ์จ, ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์์ ์ ๊ทผํ๋ ค๋ฉด ์ด์์ฒด์ ์ ์ฝ๋๋ฅผ ์คํํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
์ด์ค๋ชจ๋๋ CPU๊ฐ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๋ชจ๋๋ฅผ ์ฌ์ฉ์๋ชจ๋์ ์ปค๋๋ชจ๋๋ก ๊ตฌ๋ถํ๋ ๋ฐฉ์์ด๋ค.
์์คํ ํธ์ถ์์๋ > ์ปค๋๋ชจ๋๋ก ๋ณํ๋จ(์ผ์ข ์ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ! ์ด๋ฏธ ๋ด๋ถ์ ์ด์์ฒด์ ๋ง๋ค ์์คํ ํธ์ถ ๋ช ๋ น์ด์ ์ญํ ์ด ์ ํด์ ธ ์์)
* ์ด์์ฒด์ ์ ํต์ฌ ์๋น์ค
1. ํ๋ก์ธ์ค ๊ด๋ฆฌ
๋์๋ค๋ฐ์ ์ผ๋ก ์คํ/์์ฑ/์ญ์ ๋๋ ๋ค์ํ ํ๋ก์ธ์ค๋ฅผ ์ผ๋ชฉ์์ฐํ๊ฒ ๊ด๋ฆฌ
- ํ๋ก์ธ์ค์ ์ค๋ ๋, ํ๋ก์ธ์ค ๋๊ธฐํ, ๊ต์ฐฉ์ํ ํด๊ฒฐ
2. ์์ ์ ๊ทผ ๋ฐ ํ ๋น
1) CPU
- CPU ์ค์ผ์ค๋ง ( ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋จผ์ , ์ผ๋ง๋ ์ค๋ ์คํํ ๊น?)
2) ๋ฉ๋ชจ๋ฆฌ
- ํ์ด์ง, ์ค์ํ..
3) ์ ์ถ๋ ฅ์ฅ์น
3.ํ์ผ ์์คํ ๊ด๋ฆฌ
๊ด๋ จ๋ ์ ๋ณด๋ฅผ ํ์ผ์ด๋ผ๋ ๋จ์๋ก ์ ์ฅ ์ฅ์น์ ๋ณด๊ด
ํ์ผ๋ค์ ๋ฌถ์ด ํด๋(๋๋ ํ ๋ฆฌ ๋จ์๋ก ์ ์ฅ ์ฅ์น์ ๋ณด๊ด- ์ด์์ฒด์ ์ ๊ตฌ์กฐ
GUI/CUI, ์์คํ ์ฝ, ์ปค๋, ๋๋ผ์ด๋ฒ๋ฅผ ์ด์์ฒด์ ๋ผ๊ณ ํ๋ค.
* GUI(Graphical User Interface, ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค)
์ฌ์ฉ์๊ฐ ์ ์์ฅ์น์ ์ํธ์์ฉํ ์ ์๋๋ก ํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ํํ๋ก ๋ช ๋ น์ด ์ฐฝ์ด ์๋ ์์ด์ฝ์ ๋ง์ฐ์ค๋ก ํด๋ฆญํ๋ ๋์์ผ๋ก ์ปดํจํฐ์ ์ํธ์์ฉ ํ ์ ์๊ฒ ํด์ค๋ค.
* CUI(Character User Interface, ๋ฌธ์(์ฝ์) ์ฌ์ฉ์ ์ธํฐํ์ด์ค)
๊ทธ๋ํฝ์ด ์๋ ๋ช ๋ น์ด๋ก ์ฒ๋ฆฌํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ปํ๋ค.
* ๋๋ผ์ด๋ฒ
ํ๋์จ์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ํํธ์จ์ด๋ฅผ ๋ปํ๋ค.
- ์์คํ
์ฝ
์ด์์ฒด์ ๊ฐ ์ปค๋์ ์ ๊ทผํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ด๋ฉฐ ์ ์ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ์๋น์ค๋ฅผ ๋ฐ๊ธฐ ์ํด ์ปค๋ ํจ์๋ฅผ ํธ์ถํ ๋ ์ด๋ค.
์ ์ ํ๋ก๊ทธ๋จ์ด I/O ์์ฒญ์ผ๋ก ํธ๋ฉ(trap)์ ๋ฐ๋ํ๋ฉด ์ฌ๋ฐ๋ฅธ I/O ์์ฒญ์ธ์ง ํ์ธํ ํ ์ ์ ๋ชจ๋๊ฐ ์์คํ ์ฝ์ ํตํด ์ปค๋ ๋ชจ๋๋ก ๋ณํ๋์ด ์คํ๋๋ค.
์๋ฅผ๋ค์ด I/O ์์ฒญ์ธ fs.readFile()์ด๋ผ๋ ํ์ผ ์์คํ ์ ํ์ผ์ ์ฝ๋ ํจ์๊ฐ ๋ฐ๋ํ๋ค๋ฉด ์ ์ ๋ชจ๋์์ ํ์ผ์ ์ฝ์ง ์๊ณ ์ปค๋ ๋ชจ๋๋ก ๋ค์ด๊ฐ ํ์ผ์ ์ฝ๊ณ ๋ค์ ์ ์ ๋ชจ๋๋ก ๋์๊ฐ ๊ทธ ๋ค์ ์๋ ์ ์ ํ๋ก๊ทธ๋จ์ ๋ก์ง์ ์ํํ๋ค. ์ด ๊ณผ์ ์ ํตํด ์ปดํจํฐ ์์์ ๋ํ ์ง์ ์ ๊ทผ์ ์ฐจ๋จํ ์ ์๊ณ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก๋ถํฐ ๋ณดํธํ ์ ์๋ค.
ํ๋ก์ธ์ค๋ ์ค๋ ๋์์ ์ด์์ฒด์ ๋ก ์ด๋ ํ ์์ฒญ์ ํ ๋ ์์คํ ์ฝ์ด๋ผ๋ ์ธํฐํ์ด์ค์ ์ปค๋์ ๊ฑฐ์ณ ์ด์์ฒด์ ์ ์ ๋ฌ๋๋ค.
์ด ์์คํ ์ฝ์ ํ๋์ ์ถ์ํ ๊ณ์ธต์ผ๋ก, ์ด๋ฅผ ํตํด ๋คํธ์ํฌ ํต์ ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ๋ฎ์ ๋จ๊ณ์ ์์ญ ์ฒ๋ฆฌ์ ๋ํ ๋ถ๋ถ์ ๋ง์ด ์ ๊ฒฝ์ฐ์ง ์๊ณ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
* modebit
1 ๋๋ 0์ ๊ฐ์ ๊ฐ์ง๋ ํ๋๊ทธ ๋ณ์๋ก, ์์คํ ์ฝ์ด ์๋๋ ๋ modebit์ ์ฐธ๊ณ ํด์ ์ ์ ๋ชจ๋(1, ์ ์ ๊ฐ ์ ๊ทผํ ์ ์๋ ์์ญ์ ์ ํ์ ์ผ๋ก ๋๋ฉฐ ์ปดํจํฐ ์์์ ํจ๋ถ๋ก ์นจ๋ฒํ์ง ๋ชปํ๋ ๋ชจ๋)์ ์ปค๋ ๋ชจ๋(0, ๋ชจ๋ ์ปดํจํฐ ์์์ ์ ๊ทผํ ์ ์๋ ๋ชจ๋)๋ฅผ ๊ตฌ๋ถํ๋ค.
3.1.2 ์ปดํจํฐ์ ์์
- CPU(Central Processing Unit)
์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น, ์ ์ด์ฅ์น, ๋ ์ง์คํฐ๋ก ๊ตฌ์ฑ๋์ด ์๋ ์ปดํจํฐ ์ฅ์น๋ฅผ ๋งํ๋ฉฐ ์ธํฐ๋ฝํธ์ ์ํด ๋จ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ๋ช ๋ น์ด๋ฅผ ํด์ํด์ ์คํํ๋ ์ผ๊พผ์ด๋ค.
๊ด๋ฆฌ์ ์ญํ ์ ํ๋ ์ด์์ฒด์ ์ ์ปค๋์ด ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ํ๋ก์ธ์ค๋ก ๋ง๋ค๋ฉด ์ผ๊พผ์ธ CPU๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ค. - ์ ์ด์ฅ์น(CU, Control Unit)
ํ๋ก์ธ์ค ์กฐ์์ ์ง์ํ๋ CPU์ ํ ๋ถํ์ด๋ค.
์ ์ถ๋ ฅ์ฅ์น ๊ฐ ํต์ ์ ์ ์ดํ๊ณ ๋ช ๋ น์ด๋ค์ ์ฝ๊ณ ํด์ํ๋ฉฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์์๋ฅผ ๊ฒฐ์ ํ๋ค. - ๋ ์ง์คํฐ
CPU์์ ์๋ ๋งค์ฐ ๋น ๋ฅธ ์์๊ธฐ์ต์ฅ์น๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
CPU์ ์ง์ ์ฐ๊ฒฐ๋์ด ์์ด ์ฐ์ฐ ์๋๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ์์ญ ๋ฐฐ์์ ์๋ฐฑ ๋ฐฐ ๋น ๋ฅด๋ฉฐ, CPU๋ ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ๋ ์ง์คํฐ๋ฅผ ๊ฑฐ์ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค. - ์ฐ์ ๋
ผ๋ฆฌ์ฐ์ฐ์ฅ์น(ALU, Arithmetic Logic Unit)
๋ง์ , ๋บ์ ๊ฐ์ ๋ ์ซ์์ ์ฐ์ ์ฐ์ฐ๊ณผ ๋ฐฐํ์ ๋ ผ๋ฆฌํฉ, ๋ ผ๋ฆฌ๊ณฑ ๊ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฐํ๋ ๋์งํธ ํ๋ก์ด๋ค.
* CPU์ ์ฐ์ฐ ์ฒ๋ฆฌ
โ ์ ์ด์ฅ์น๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ฐํ ๊ฐ์ ๋ก๋ํ๊ณ ๋ ์ง์คํฐ์๋ ๋ก๋ํ๋ค.
โ ์ ์ด์ฅ์น๊ฐ ๋ ์ง์คํฐ์ ์๋ ๊ฐ์ ๊ณ์ฐํ๋ผ๊ณ ์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น์ ๋ช ๋ นํ๋ค.
โ ์ ์ด์ฅ์น๊ฐ ๊ณ์ฐ๋ ๊ฐ์ ๋ค์ ๋ ์ง์คํฐ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ณ์ฐํ ๊ฐ์ ์ ์ฅํ๋ค. - ์ธํฐ๋ฝํธ
์ด๋ค ์ ํธ๊ฐ ๋ค์ด์์ ๋ CPU๋ฅผ ์ ๊น ์ ์ง์ํค๋ ๊ฒ์ ๋งํ๋ค.
ํค๋ณด๋, ๋ง์ฐ์ค ๋ฑ IO ๋๋ฐ์ด์ค๋ก ์ธํ ์ธํฐ๋ฝํธ, 0์ผ๋ก ์ซ์๋ฅผ ๋๋๋ ์ฐ์ ์ฐ์ฐ์์์ ์ธํฐ๋ฝํธ, ํ๋ก์ธ์ค ์ค๋ฅ ๋ฑ์ผ๋ก ๋ฐ์ํ๋ค.
์ธํฐ๋ฝํธ๊ฐ ๋ฐ์๋๋ฉด ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์(์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ฅผ ํธ๋ค๋งํ๊ธฐ ์ํ ํจ์, ์ปค๋ ๋ด๋ถ์ IRQ๋ฅผ ํตํด ํธ์ถ๋๋ฉฐ request_irq()๋ฅผ ํตํด ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ๋ฑ๋กํ ์ ์์)๊ฐ ๋ชจ์ฌ ์๋ ์ธํฐ๋ฝํธ ๋ฒกํฐ๋ก ๊ฐ์ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๊ฐ ์คํ๋๋ค. ์ธํฐ๋ฝํธ ๊ฐ์๋ ์ฐ์ ์์๊ฐ ์๊ณ ์ฐ์ ์์์ ๋ฐ๋ผ ์คํ๋๋ฉฐ ์ธํฐ๋ฝํธ๋ ํ๋์จ์ด ์ธํฐ๋ฝํธ์ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
* ํ๋์จ์ด ์ธํฐ๋ฝํธ
ํค๋ณด๋๋ฅผ ์ฐ๊ฒฐํ๋ค๊ฑฐ๋ ๋ง์ฐ์ค๋ฅผ ์ฐ๊ฒฐํ๋ ์ผ ๋ฑ์ IO ๋๋ฐ์ด์ค์์ ๋ฐ์ํ๋ ์ธํฐ๋ฝํธ๋ฅผ ๋งํ๋ค.
์ด๋ ์ธํฐ๋ฝํธ ๋ผ์ธ์ด ์ค๊ณ๋ ์ดํ ์์ฐจ์ ์ธ ์ธํฐ๋ฝํธ ์คํ์ ์ค์งํ๊ณ ์ด์์ฒด์ ์ ์์คํ ์ฝ์ ์์ฒญํด์ ์ํ๋ ๋๋ฐ์ด์ค๋ก ํฅํด ๋๋ฐ์ด์ค์ ์๋ ์์ ๋ก์ปฌ ๋ฒํผ์ ์ ๊ทผํ์ฌ ์ผ์ ์ํํ๋ค.
* ์ํํธ์จ์ด ์ธํฐ๋ฝํธ
ํธ๋ฉ(trap)์ด๋ผ๊ณ ๋ ํ๋ฉฐ ํ๋ก์ธ์ค ์ค๋ฅ ๋ฑ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ์์คํ ์ฝ์ ํธ์ถํ ๋ ๋ฐ๋ํ๋ค. - DMA ์ปจํธ๋กค๋ฌ
I/O๋๋ฐ์ด์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ํ๋์จ์ด ์ฅ์น๋ฅผ ๋ปํ๋ค.
CPU์๋ง ๋๋ฌด ๋ง์ ์ธํฐ๋ฝํธ ์์ฒญ์ด ๋ค์ด์ค๊ธฐ ๋๋ฌธ์ CPU ๋ถํ๋ฅผ ๋ง์์ฃผ๋ฉฐ CPU์ ์ผ์ ๋ถ๋ดํ๋ ๋ณด์กฐ ์ผ๊พผ์ ๊ฐ๋ ์ด๋ฉฐ, ํ๋์ ์์ ์ CPU์ DMA ์ปจํธ๋กค๋ฌ๊ฐ ๋์์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ค. - ๋ฉ๋ชจ๋ฆฌ
์ ์ํ๋ก์์ ๋ฐ์ดํฐ๋ ์ํ, ๋ช ๋ น์ด ๋ฑ์ ๊ธฐ๋กํ๋ ์ฅ์น๋ฅผ ๋งํ๋ฉฐ ๋ณดํต RAM(Random Access Memory)๋ฅผ ์ผ์ปฌ์ด ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ๋ ํ๋ค. CPU๋ ๊ณ์ฐ์ ๋ด๋นํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ ๊ธฐ์ต์ ๋ด๋นํ๋ค. - ํ์ด๋จธ
๋ช ์ด ์์๋ ์์ ์ด ๋๋์ผ ํ๋ค๋ ๊ฒ์ ์ ํ๊ณ ํน์ ํ๋ก๊ทธ๋จ์ ์๊ฐ์ ํ์ ๋ค๋ ์ญํ ์ ํ๋ฉฐ, ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ด ์๋ํ ๋ ์ ํ์ ๊ฑธ๊ธฐ ์ํด ์กด์ฌํ๋ค. - ๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ
์ปดํจํฐ์ ์ฐ๊ฒฐ๋์ด ์๋ IO ๋๋ฐ์ด์ค๋ค์ ์์ CPU๋ฅผ ๋งํ๋ค.
๋ฐ์ํ'Book' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ