'๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ'๋ฅผ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
์ด์์ฒด์ (Operating System)๋ ์ฌ์ฉ์๊ฐ ์ปดํจํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃจ๊ฒ ํด์ฃผ๋ ์ธํฐํ์ด์ค์
=> ํ์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ ์์คํ ์์์ ํจ์จ์ ์ผ๋ก ๋ถ๋ฐฐ
์ด์์ฒด์ ์ ์ ์ฌํ์ง๋ง ์ํํธ์จ์ด๋ฅผ ์ถ๊ฐ๋ก ์ค์นํ ์ ์๋ ๊ฒ์ ํ์จ์ด(firmware)๋ผ๊ณ ํจ
3.1.1 ์ด์์ฒด์ ์ ์ญํ ๊ณผ ๊ตฌ์กฐ
์ด์์ฒด์ ์ ์ญํ
์ด์์ฒด์ ์ ์ญํ ์ ํฌ๊ฒ 4๊ฐ์ง๊ฐ ์์
- CPU ์ค์ผ์ค๋ง๊ณผ ํ๋ก์ธ์ค ๊ด๋ฆฌ
=> CPU ์์ ๊ถ์ ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ํ ๋นํ ์ง, ํ๋ก์ธ์ค์ ์์ฑ๊ณผ ์ญ์ , ์์ ํ ๋น ๋ฐ ๋ฐํ์ ๊ด๋ฆฌํจ - ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
=> ํ์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๋ค ํ๋ก์ธ์ค์ ์ผ๋งํผ ํ ๋นํด์ผ ํ๋์ง ๊ด๋ฆฌํจ - ๋์คํฌ ํ์ผ ๊ด๋ฆฌ
=> ๋์คํฌ ํ์ผ์ ์ด๋ ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ณด๊ดํ ์ง ๊ด๋ฆฌํจ - I/O ๋๋ฐ์ด์ค ๊ด๋ฆฌ
=> I/O ๋๋ฐ์ด์ค๋ค์ธ ๋ง์ฐ์ค, ํค๋ณด๋์ ์ปดํจํฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ ๊ด๋ฆฌํจ
์ด์์ฒด์ ์ ๊ตฌ์กฐ
GUI, ์์คํ ์ฝ, ์ปค๋, ๋๋ผ์ด๋ฒ ๋ถ๋ถ์ ์ด์์ฒด์ ๋ก ์ง์นญํ๋๋ฐ GUI๊ฐ ์๊ณ CUI๋ง ์๋ ๋ฆฌ๋ ์ค ์๋ฒ๋ ์์
- GUI
=> ์ฌ์ฉ์๊ฐ ์ ์์ฅ์น์ ์ํธ ์์ฉํ ์ ์๋๋ก ํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ํ ํํ
(๋จ์ ๋ช ๋ น์ด ์ฐฝ์ด ์๋ ์์ด์ฝ ๋ง์ฐ์ค๋ก ํด๋ฆญํ๋ ๋จ์ํ ๋์์ผ๋ก ์ปดํจํฐ์ ์ํธ์์ฉํ ์ ์๋๋ก ํด์ค) - ๋๋ผ์ด๋ฒ
=> ํ๋์จ์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ํํธ์จ์ด - CUI
=> ๊ทธ๋ํฝ์ด ์๋ ๋ช ๋ น์ด๋ก ์ฒ๋ฆฌํ๋ ์ธํฐํ์ด์ค
์์คํ
์ฝ
์์คํ ์ฝ์ด๋ ์ด์์ฒด์ ๊ฐ ์ปค๋์ ์ ๊ทผํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ด๋ฉฐ ์ ์ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ์๋น์ค๋ฅผ ๋ฐ๊ธฐ ์ํด ์ปค๋ ํจ์๋ฅผ ํธ์ถํ ๋ ์
=> ์ ์ ํ๋ก๊ทธ๋จ์ด I/O ์์ฒญ์ผ๋ก trap์ ๋ฐ๋ํ๋ฉด ์ฌ๋ฐ๋ฅธ I/O ์์ฒญ์ธ์ง ํ์ธํ ํ ์ ์ ๋ชจ๋๊ฐ ์์คํ ์ฝ์ ํตํด ์ปค๋๋ชจ๋๋ก ๋ณํ๋์ด ์คํ๋จ
fs.readFile()์ด ๋์ํ๋๊ฑธ ๋ณด๋ฉด ์ ์ ๋ชจ๋์์ ํ์ผ์ ์ฝ์ง ์๊ณ ์ปค๋ ๋ชจ๋๋ก ๋ค์ด๊ฐ ํ์ผ์ ์ฝ๊ณ ๋ค์ ์ ์ ๋ชจ๋๋ก ๋์๊ฐ ๊ทธ ๋ค์ ์๋ ์ ์ ํ๋ก๊ทธ๋จ์ ๋ก์ง์ ์ํํจ
=> ์ด ๊ณผ์ ์ ํตํด ์ปดํจํฐ ์์์ ๋ํ ์ง์ ์ ๊ทผ์ ์ฐจ๋จํ ์ ์๊ณ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก๋ถํฐ ๋ณดํธํ ์ ์์
์ ๊ทธ๋ฆผ์ฒ๋ผ ํ๋ก์ธ์ค๋ ์ค๋ ๋์์ ์ด์์ฒด์ ๋ก ์ด๋ค ์์ฒญ์ ํ ๋ ์์คํ ์ฝ์ด๋ผ๋ ์ธํฐํ์ด์ค์ ์ปค๋์ ๊ฑฐ์ณ ์ด์์ฒด์ ์ ์ ๋ฌ๋จ
์์คํ
์ฝ์ ํ๋์ ์ถ์ํ ๊ณ์ธต์
=> ๋คํธ์ํฌ ํต์ ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ๋ฎ์ ๋จ๊ณ์ ์์ญ ์ฒ๋ฆฌ์ ๋ํ ๋ถ๋ถ์ ๋ง์ด ์ ๊ฒฝ ์ฐ์ง ์๊ณ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ ์ ์๋ ์ฅ์ ์ด ์์
modebit
modebit๋ 1 ๋๋ 0์ ๊ฐ์ ๊ฐ์ง๋ ํ๋๊ทธ ๋ณ์์ธ๋ฐ ์์คํ ์ฝ์ด ์๋๋ ๋ ์ด๋ฅผ ์ฐธ๊ณ ํด์ ์ ์ ๋ชจ๋์ ์ปค๋ ๋ชจ๋๋ฅผ ๊ตฌ๋ถํจ
์นด๋ฉ๋ผ๋ฅผ ์ผ๋ ํ๋ก๊ทธ๋จ์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋ ๋ง์ฝ ์ ์ ๋ชจ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์นด๋ฉ๋ผ๊ฐ ์ผ์ง๋ค๋ฉด, ์ฌ์ฉ์๊ฐ ์๋ํ์ง ์์๋๋ฐ ๊ณต๊ฒฉ์๊ฐ ์นด๋ฉ๋ผ๋ฅผ ๊ฐ์๊ธฐ ์ผค ์๋ ์์
=> ์ปค๋ ๋ชจ๋๋ฅผ ๊ฑฐ์ณ ์ด์์ฒด์ ๋ฅผ ํตํด ๋์ํ๋ค๊ณ ํด๋ 100% ๋ง์ ์๋ ์์ง๋ง, ์ด์์ฒด์ ๋ฅผ ํตํด ์๋ํ๊ฒ ํด์ผ ๋ง๊ธฐ๊ฐ ์ฌ์
(์นด๋ฉ๋ผ, ํค๋ณด๋ ๋ฑ I/O ๋๋ฐ์ด์ค๋ ์ด์์ฒด์ ๋ฅผ ํตํด์๋ง ์๋ํด์ผํจ)
๊ทธ๋์ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ์ ํ๋ก๊ทธ๋จ์ด ์นด๋ฉ๋ผ๋ฅผ ์ด์ฉํ๋ ค๊ณ ํ ๋ ์์คํ
์ฝ์ ํธ์ถํ๊ณ modebit๋ฅผ 1 -> 0 ์ผ๋ก ๋ฐ๊พธ๋ฉฐ ์ปค๋ ๋ชจ๋๋ก ๋ณ๊ฒฝํ ํ ์นด๋ฉ๋ผ ์์์ ์ด์ฉํ ๋ก์ง์ ์ํํจ
๊ทธ๋ฆฌ๊ณ ๋ค์ modebit๋ฅผ 0 -> 1๋ก ๋ฐ๊ฟ์ ์ ์ ๋ชจ๋๋ก ๋ณ๊ฒฝํ๊ณ ์ดํ ๋ก์ง์ ์ํํจ
- ์ ์ ๋ชจ๋
=> ์ ์ ๊ฐ ์ ๊ทผํ ์ ์๋ ์์ญ์ ์ ํ์ ์ผ๋ก ๋๋ฉฐ ์ปดํจํฐ ์์์ ํจ๋ถ๋ก ์นจ๋ฒํ์ง ๋ชปํ๋ ๋ชจ๋ - ์ปค๋ ๋ชจ๋
=> ๋ชจ๋ ์ปดํจํฐ ์์์ ์ ๊ทผํ ์ ์๋ ๋ชจ๋ - ์ปค๋
=> ์ด์์ฒด์ ์ ํต์ฌ ๋ถ๋ถ์ด์ ์์คํ ์ฝ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฉฐ ๋ณด์, ๋ฉ๋ชจ๋ฆฌ, ํ๋ก์ธ์ค, ํ์ผ ์์คํ , I/O ๋๋ฐ์ด์ค, I/O ์์ฒญ ๊ด๋ฆฌ ๋ฑ ์ด์์ฒด์ ์ ์ค์ถ์ ์ธ ์ญํ ์ ํจ
3.1.2 ์ปดํจํฐ์ ์์
์ปดํจํฐ๋ CPU, DMA ์ปจํธ๋กค๋ฌ, ๋ฉ๋ชจ๋ฆฌ, ํ์ด๋จธ, ๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ ๋ฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ์์
- DMA ์ปจํธ๋กค๋ฌ : I/O ๋๋ฐ์ด์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ํ๋์จ์ด ์ฅ์น
=> CPU์๋ง ๋๋ฌด ๋ง์ ์ธํฐ๋ฝํธ ์์ฒญ์ด ๋ค์ด์ค๊ธฐ ๋๋ฌธ์ CPU ๋ถํ๋ฅผ ๋ง์์ฃผ๋ฉฐ CPU์ ์ผ์ ๋ถ๋ดํ๋ ๋ณด์กฐ ์ผ๊พผ์ผ๋ก ์๊ฐ
(๋ํ, ํ๋์ ์์ ์ CPU์ DMA ์ปจํธ๋กค๋ฌ๊ฐ ๋์์ ํ๋ ๊ฒ์ ๋ฐฉ์งํจ) - ๋ฉ๋ชจ๋ฆฌ(Random Access Memory) : ์ ์ํ๋ก์์ ๋ฐ์ดํฐ๋ ์ํ, ๋ช
๋ น์ด ๋ฑ์ ๊ธฐ๋กํ๋ ์ฅ์น
=> CPU๊ฐ ๊ณ์ฐ์ ๋ด๋นํ๋ค๋ฉด RAM์ ๊ธฐ์ต์ ๋ด๋น - ํ์ด๋จธ : ๋ช ์ด ์์๋ ์์
์ด ๋๋์ผ ํ๋ค๋ ๊ฒ์ ์ ํ๊ณ ํน์ ํ๋ก๊ทธ๋จ์ ์๊ฐ ์ ํ์ ๋ค๋ ์ญํ ์ ํจ
=> ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ด ์๋ํ ๋ ์ ํ์ ๊ฑธ๊ธฐ ์ํด ์กด์ฌ - ๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ : ์ปดํจํฐ์ ์ฐ๊ฒฐ๋์ด ์๋ I/O ๋๋ฐ์ด์ค๋ค์ ์์ CPU
=> ์์ ๋ถ์ด ์๋ ๋ก์ปฌ ๋ฒํผ๋ ๊ฐ ๋๋ฐ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๊ธฐ ์ํ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ปํจ
CPU
CPU(Central Processing Unit)๋ ์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น, ์ ์ด์ฅ์น, ๋ ์ง์คํฐ๋ก ๊ตฌ์ฑ๋์ด ์๋ ์ปดํจํฐ ์ฅ์น๋ฅผ ๋งํ๋ฉฐ, interrupt์ ์ํด ๋จ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ๋ช ๋ น์ด๋ฅผ ํด์ํด์ ์คํํ๋ ์ญํ ์ํจ
์ ๊ทธ๋ฆผ์ฒ๋ผ ๊ด๋ฆฌ์ ์ญํ ์ ํ๋ ์ด์์ฒด์ ์ ์ปค๋์ด ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ํ๋ก์ธ์ค๋ก ๋ง๋ค๋ฉด ์ผ๊พผ์ธ CPU๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํจ
- ์ ์ด์ฅ์น(Control Unit) : ํ๋ก์ธ์ค ์กฐ์์ ์ง์ํ๋ CPU์ ํ ๋ถํ
=> ์ ์ถ๋ ฅ์ฅ์น ๊ฐ ํต์ ์ ์ ์ดํ๊ณ ๋ช ๋ น์ด๋ค์ ์ฝ๊ณ ํด์ํ๋ฉฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์์๋ฅผ ๊ฒฐ์ - ๋ ์ง์คํฐ : CPU ์์ ์๋ ๋งค์ฐ ๋น ๋ฅธ ์์๊ธฐ์ต์ฅ์น
=> CPU์ ์ง์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฏ๋ก ์ฐ์ฐ ์๋๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ์์ญ ๋ฐฐ์์ ์๋ฐฑ ๋ฐฐ๊น์ง ๋น ๋ฆ
(CPU๋ ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ๋ ์ง์คํฐ๋ฅผ ๊ฑฐ์ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ) - ์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น(Arithmetic Logic Unit) : ๋ง์ , ๋บ์ ๊ฐ์ ๋ ์ซ์์ ์ฐ์ ์ฐ์ฐ๊ณผ ๋ฐฐํ์ ๋ ผ๋ฆฌํฉ, ๋ ผ๋ฆฌ๊ณฑ ๊ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฐํ๋ ๋์ ํธ ํ๋ก
CPU์ ์ฐ์ฐ ์ฒ๋ฆฌ
1. ์ ์ด์ฅ์น๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ฐํ ๊ฐ์ ๋ก๋ํ๊ณ ๋ ์ง์คํฐ์๋ ๋ก๋ํจ
=> ๋ฉ๋ชจ๋ฆฌ๋ CPU๋ณด๋ค ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ ์ง์คํฐ์๋ ๋ก๋ํ ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ
2. ์ ์ด์ฅ์น๊ฐ ๋ ์ง์คํฐ์ ์๋ ๊ฐ์ ๊ณ์ฐํ๋ผ๊ณ ์ฐ์ ๋
ผ๋ฆฌ์ฐ์ฐ์ฅ์น์ ๋ช
๋ นํจ
3. ์ ์ด์ฅ์น๊ฐ ๊ณ์ฐ๋ ๊ฐ์ ๋ค์ '๋ ์ง์คํฐ์์ ๋ฉ๋ชจ๋ฆฌ'๋ก ๊ณ์ฐํ ๊ฐ์ ์ ์ฅ
=> ์ฐ์ฐ์ด ๋๋ ํ ๋ ์ง์คํฐ์ ๊ณ์ ๋๊ธฐ์๋ ์ฉ๋์ด ์์ผ๋ฏ๋ก ๋ค์ RAM(๋ฉ๋ชจ๋ฆฌ)๋ก ์ ์ฅ
์ธํฐ๋ฝํธ
์ธํฐ๋ฝํธ๋ ์ด๋ค ์ ํธ๊ฐ ๋ค์ด์์ ๋ CPU๋ฅผ ์ ๊น ์ ์ง์ํค๋ ๊ฒ์ ๋งํจ
=> ํค๋ณด๋, ๋ง์ฐ์ค ๋ฑ I/O ๋๋ฐ์ด์ค๋ก ์ธํ ์ธํฐ๋ฝํธ, ์ซ์๋ฅผ ๋๋๋ ์ฐ์ ์ฐ์ฐ์์์ ์ธํฐ๋ฝํธ, ํ๋ก์ธ์ค ์ค๋ฅ ๋ฑ์ผ๋ก ๋ฐ์
์ธํฐ๋ฝํธ๊ฐ ๋ฐ์๋๋ฉด ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๊ฐ ๋ชจ์ฌ ์๋ ์ธํฐ๋ฝํธ ๋ฒกํฐ๋ก ๊ฐ์ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๊ฐ ์คํ๋จ
(์ธํฐ๋ฝํธ ๊ฐ์๋ ์ฐ์ ์์๊ฐ ์๊ณ ์ด์ ๋ฐ๋ผ ์คํ๋๋ฉฐ ์ธํฐ๋ฝํธ๋ ํ๋์จ์ด ์ธํฐ๋ฝํธ, ์ํํธ์จ์ด ์ธํฐ๋ฝํธ๋ก ๋๋จ)
์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์ : ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ฅผ ํธ๋ค๋งํ๊ธฐ ์ํ ํจ์๋ก ์ปค๋ ๋ด๋ถ์ IRQ(Interrupt Request)๋ฅผ ํตํด ํธ์ถ๋๋ฉฐ requesrt_irq()๋ฅผ ํตํด ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ๋ฑ๋กํ ์ ์์
ํ๋์จ์ด ์ธํฐ๋ฝํธ
ํค๋ณด๋๋ฅผ ์ฐ๊ฒฐํ๋ค๊ฑฐ๋ ๋ง์ฐ์ค๋ฅผ ์ฐ๊ฒฐํ๋ ์ผ ๋ฑ์ I/O ๋๋ฐ์ด์ค์์ ๋ฐ์ํ๋ ์ธํฐ๋ฝํธ
์ํํธ์จ์ด ์ธํฐ๋ฝํธ
ํธ๋ฉ(trap)์ด๋ผ๊ณ ๋ ํ๋ฉฐ ํ๋ก์ธ์ค ์ค๋ฅ ๋ฑ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ์์คํ ์ฝ์ ํธ์ถํ ๋ ๋ฐ๋
'๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ก ] ๊ธฐ๊ณ์ด, ์ด์ ๋ธ๋ฆฌ์ด, ๊ณ ๊ธ์ธ์ด์ ์ฐจ์ด์ (C++ vs Java) (0) | 2025.03.10 |
---|---|
[CS ์ ๊ณต์ง์ ๋ ธํธ] ๋ฉ๋ชจ๋ฆฌ (0) | 2025.02.24 |
[CS ์ ๊ณต์ง์ ๋ ธํธ] HTTP (1) | 2025.02.09 |
[CS ์ ๊ณต์ง์ ๋ ธํธ] IP ์ฃผ์ (0) | 2025.02.07 |
[CS ์ ๊ณต์ง์ ๋ ธํธ] ๋คํธ์ํฌ ๊ธฐ๊ธฐ (0) | 2025.02.05 |