1. ์ปดํจํฐ ์์คํ ์ ๋์
ํ๋ ์ปดํจํฐ๋ ๊ณต์ ๋ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ๊ทผ์ ์ ๊ณตํ๋ ๊ณตํต ๋ฒ์ค์ ์ํด ์ฐ๊ฒฐ๋ CPU์ ์ฌ๋ฌ ๊ฐ์ device controller๋ก ๊ตฌ์ฑ๋๋ค.
device controller: ๊ฐ ์ฅ์น๋ฅผ ๊ด๋ฆฌํ๋ค.
device controller์ CPU๋ ๋ณํ์ผ๋ก ์ํ๋๋ฏ๋ก ์ด๋ค์ ์ฃผ๊ธฐ์ต์ฅ์น ์ ๊ทผ์ ๋ํด ๊ฒฝ์ํ๋ค.
Local buffer: CPU์ ์์ ๊ณต๊ฐ์ธ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ๊ฐ ์กด์ฌํ๋ ๊ฒ ์ฒ๋ผ device controller๋ ์์ ๊ณต๊ฐ์ด ํ์ํ๋ค.
๋ฉ์ธ CPU์ ์์ ๊ณต๊ฐ์ธ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ฏ์ด ๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๊ธฐ ์ํ ์์ ๊ณต๊ฐ์ด ํ์ํ๋ฐ, ์ด๋ฅผ Local Buffer๊ฐ ๊ทธ ์ญํ ์ ํ๋ค.
์ปดํจํฐ๊ฐ ์ฒ์ ๊ตฌ๋๋๋ฉด ์ด๊ธฐ์ ์คํ๋ ํ๋ก๊ทธ๋จ์ด ์์ด์ผํ๋ค. ์ด๋ฅผ ๋ถํธ์คํธ๋ฉ ํ๋ก๊ทธ๋จ์ด๋ผ ํ๊ณ , ROM์ ์ ์ฅ๋์ด ์๋ค.
๋ถํธ์คํธ๋ฉ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ํ๋์จ์ด๋ฅผ ์ด๊ธฐํํ๊ณ ์ด์์ฒด์ ์ปค๋์ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฌํ ํ์ ์ปค๋์ ์คํํ๋ค.
์ปดํจํฐ์์ ์ฌ๊ฑด์ ๋ฐ์์ ์ธํธ๋ฝํธ(interrupt) ์ ํธ or ํธ๋ฉ(trap)์ ํตํด ์ด์์ฒด์ ์ ํต๋ณด๋๋ฉฐ, ํธ๋ฉ์ ์์ธ(exception)์ ์๋ฏธํ๋ค.
์ธํธ๋ฝํธ๋ ํ๋์จ์ด๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๊ณ , ํธ๋ฉ์ ์ํํธ์จ์ด๊ฐ ๋ฐ์ํ๋ ์ธํธ๋ฝํธ๋ฅผ ์๋ฏธํ๋ค.
ํ๋์จ์ด๋ CPU์ ํน์ ์ ํธ๋ฅผ ๋ณด๋ด์ด ์ธํธ๋ฝํธ์ ๋ฐ์์ ์๋ฆฐ๋ค.
์ํํธ์จ์ด๋ ์์คํ ํธ์ถ(System call)์ด๋ผ๋ ํน์ ์ฐ์ฐ์ ์คํํ์ฌ ์ผ๋ถ๋ก ๋ฐ์์ํค๊ฑฐ๋ ์ค๋ฅ(0์ผ๋ก ๋๋๊ธฐ ๋ฑ) ๋๋ฌธ์ ์๋ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค.
์ธํธ๋ฝํธ๊ฐ ๋ฐ์๋๋ฉด CPU๋ ํ์ฌ ์ํ์ค์ธ ์์ ์ ๋ฉ์ถ๊ณ , ์ด์์ฒด์ ๋ด์ ์๋ ํน์ ์ฝ๋๋ฅผ ์คํํ๊ณ , ์ด ์คํ์ด ๋๋๋ฉด ๋ค์ ๋ฉ์ถ ์์ ์ ์ฌ๊ฐํ๋ค.
๋์์๋ฆฌ
(1) ํ์ฌ ์์
์ ๋ฉ์ถ๊ณ , ํ์ฌ ์ํ๋ฅผ ๋ณด๊ด
(2) ์ธํธ๋ฝํธ์ ์ข
๋ฅ ๋ถ์
(3) ํน์ ์ธํธ๋ฝํธ ์ํ(์ธํธ๋ฝํธ ๋ฒกํฐ ํ์ฉ)
(4) ๋ณด๊ด๋ ์ํ๋ฅผ ์์๋ณต๊ทํ๊ณ ๋ฉ์ถ ์์
์ฌ๊ฐ
2. I / O ๊ตฌ์กฐ
ํ๋ ์ด์์ ์ฅ์น๊ฐ ํ๋ ์ด์์ device controller์ ์ฐ๊ฒฐ๋ ์ ์๋ค.
device controller๋ local buffer์ ํน์ ๋ชฉ์ ๋ ์ง์คํฐ๋ฅผ ๊ฐ์ง๋ค.
1) I/O ์ธํฐ๋ฝํธ
I/O ์์ ์ ์ CPU๋ device controller์ ์๋ ๋ ์ง์คํฐ์ ์ ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๋ค. device controller๋ ์ด๋ฅผ ๊ฒ์ฌํ์ฌ ์ด๋ค ํ๋์ ํ ์ง ๊ฒฐ์ ํ๊ณ , I/O๊ฐ ๋๋๋ฉด ์ธํธ๋ฝํธ๋ฅผ ํตํด CPU์ ๊ทธ ์ฌ์ค์ ํต๋ณดํ๋ค.
์ ์ถ๋ ฅ์ ๋๊ฐ์ง ํํ
- ๋๊ธฐ์ ์ ์ถ๋ ฅ(Synchronoous I/O): ์์ฒญํ ํ๋ก์ธ์๋ ์ ์ถ๋ ฅ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. ์ด๋ ์๋น ์์์ ์ค์ ์๋ ๊ฒ๊ณผ ๊ฐ๋ค.
- ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ(asynchronous I/O): ์์ฒญํ ํ๋ก์ธ์๋ ์ ์ถ๋ ฅ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๊ณ์ ๋ค๋ฅธ ์์ ์ ์ํํ๋ค. ์ด๋ ๋ฒํธํ๋ฅผ ๊ฐ์ง๊ณ ๋ค๋ฅธ ์ผ์ ํ๋ค๊ฐ ์๊ธฐ ์์๊ฐ ๋๋ฉด ์๋น์ผ๋ก ๋ค์ด์ค๋ ๊ฒ๊ณผ ๊ฐ๋ค.
2) DMA(Direct Memory Access)
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ CPU๋ง์ด ์ ๊ทผํ๋ค. CPU ์ด์ธ ์ฅ์น๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ค๋ฉด CPU์๊ฒ ์ธํธ๋ฝํธ๋ฅผ ๋ฐ์์์ผ์ผ ํ๋๋ฐ, ์ ์ถ๋ ฅ ์ฅ์น์ ์๋๊ฐ ๋น ๋ฅด๋ฉด ์ธํธ๋ฝํธ๊ฐ ๋๋ฌด ๋น๋ฒํ๊ฒ ๋ฐ์ํ์ฌ CPU๊ฐ ๋ค๋ฅธ ์์ ์ ํ ์๊ฐ์ด ์ ์ด์ง๋ค. ์๋๊ฐ ๋๋ฆฐ I/O ์ฅ์น๋ ํ๋์ ์ ๋ ฅ์ ๋ฐ์ ํ์ ๋ค์ ์ ๋ ฅ๊น์ง CPU๋ ๋ค๋ฅธ ์์ ์ ํ ์ ์๋ค.
์ด๋ฅผ ์ํด DMA๋ฅผ ์ฌ์ฉํ๋ค. device controller๋ ๋ฐ์ดํฐ ๋ธ๋ก์ CPU์ ๊ด์ฌ์์ด ์ง์ ์ฃผ๊ธฐ์ต์ฅ์น๋ก ์ด๋ํ๋ฉฐ, ์ธํธ๋ฝํธ๋ ๋ธ๋ก๋จ์๋ก ๋ฐ์ํ๋ค.
์ด๋ ๊ฒ ๋๋ฉด CPU์ DMA ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋๋ฐ, ์ด๋ฅผ Memory Controller๊ฐ ์ค์ฌํ๋ค.
3. ์ ์ฅ ๊ตฌ์กฐ
์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ค๋จผ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฌ๋์ด์ผ ํ๋ค. CPU๊ฐ ์ง์ ์ ๊ทผํ ์ ์๋ ๊ธฐ์ต์ฅ์น๋ ์ฃผ๊ธฐ์ต์ฅ์น ๋ฟ์ด๋ค.์ฃผ๊ธฐ์ต์ฅ์น์ ๋จ์๋ ์๋์ด๋ค.
๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ฃผ๊ธฐ์ต์ฅ์น์ ์๊ตฌ์ ์ฅํ๊ณ ์ถ์ง๋ง ์ฃผ๊ธฐ์ต์ฅ์น์ ํฌ๊ธฐ์ ํ๋ฐ์ฑ์ผ๋ก ์ธํด ๋ถ๊ฐ๋ฅํ๋ค. -> ๋ณด์กฐ ๊ธฐ์ต์ฅ์น(์๊ตฌ์ ์ฅ)
4. ์ ์ฅ์ฅ์น์ ๊ณ์ธต๊ตฌ์กฐ
์ ์ฅ์ฅ์น ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๋ฉด ์ ๋ ดํ ๊ฐ๊ฒฉ์ ๋์ ์ฑ๋ฅ์ ์ป์ ์ ์๋ค.
์์ ์์นํ ์๋ก ์๋๋ ๋น ๋ฅด์ง๋ง ๊ณ ๊ฐ
5. ํ๋์จ์ด ๋ณดํธ
๋ค์ค ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์๋ ํ๋์ ํ๋ก์ธ์ค ์ค๋ฅ๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ๋ ์ํฅ์ ์ค ์ ์๋ค.
1) ์ด์ค๋ชจ๋ ๋์: mode bit ์ฌ์ฉ
- user mode: ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ ์ด ๋ชจ๋์์ ์คํ๋๋ฉฐ, ์ ํ๋ ๋ช ๋ น๋ง ์ฒ๋ฆฌ๊ฐ๋ฅ. ์ธํธ๋ฝํธ๋ ํธ๋ฉ์ด ๋ฐ์ํ๋ฉด ์ปค๋ ๋ชจ๋๋ก ์ ํ
- kernel mode: ์ ์ฝ ์์
๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ ๋ช ๋ น์ด๋ ํน๊ถ ๋ช ๋ น -> ๋ชจ๋ํฐ ๋ชจ๋์์๋ง ์ํ
user๋ OS๋ง ์ํํ ์ ์๋ ํน๊ถ ๋ช ๋ น ์ํ์ ๋ถํํ๋ฉฐ OS์ ์ํธ์์ฉํ๋ฉฐ, ์ด๋ฐ ์์ฒญ์ system call
ํ๋์จ์ด๋ ์ด๋ฌํ system call์ ์ํํธ์จ์ด ์ธํธ๋ฝํธ๋ก ๊ฐ์ฃผ
์ฌ์ง Reference
'๐ปโโ๏ธ์ ๊ณต๊ณต๋ถ > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
7. ํ๋ก์ธ์ค ๋๊ธฐํ(1) (0) | 2024.05.01 |
---|---|
6. ์ค์ผ์ค๋ง (0) | 2024.05.01 |
1. ์ด์์ฒด์ ๋ (0) | 2024.05.01 |