์ธํ : I/O -> CPU, ์์ํ : CPU -> I/O
memory๋ CPU์ ์์
๊ณต๊ฐ. ๋ํ CPU๋ ๋งค clock ์ฌ์ดํด๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์์ instruction(๊ธฐ๊ณ์ด)๋ฅผ ํ๋์ฉ ์ฝ์ด์ ์คํํ๋ค. + ์ธํฐ๋ฝํธ ๋ผ์ธ์ ํ์ธํ๋ค.
-> CPU๋ ์ด๊ฒ๋ฐ์ ์ํจ!
registers : CPU์์ ์กด์ฌํ๋ ์์ ์ ๋ณด ์ ์ฅ ๊ณต๊ฐ
modebit : CPU์์ ์กด์ฌํ๋ฉฐ CPU์์ ์คํ๋๊ณ ์๋ ๊ฒ์ด OS์ธ์ง ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ธ์ง ์๋ ค์ค
Interrupt line : CPU๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ interrput๊ฐ ๋ค์ด์๋์ง ํ์ธํ๊ธฐ ์ํ ๋ผ์ธ. I/O์ ์ํตํ๊ธฐ ์ํด์ ํ์ํ๋ค. (CPU๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ช ๋ น์ด๋ง ์ฝ๊ณ ์คํํ๊ธฐ ๋๋ฌธ์ด๋ค.)
device controller : ๊ฐ ๋๋ฐ์ด์ค๋ง๋ค ๋ถ์ด์๋ ์์ CPU
-> ๊ฐ ๋๋ฐ์ด์ค์ ๋ด๋ถ๋ฅผ ์ปจํธ๋กคํ๋ค. (Main CPU๊ฐ ํต์ ํ๋ ๊ฒ์ด ์๋!)
local buffer : device controller์ ์์ ๊ณต๊ฐ
๋ฌดํ๋ฃจํ๋ฅผ ๋๋ ํ๋ก๊ทธ๋จ์ CPU๊ฐ ์ฐ์ผ ๊ฒฝ์ฐ๊ฐ ์กด์ฌ ํ ๊ฒ์ด๋ค.
-> CPU๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๋ ์๋ค๊ฐ๋ค ํด์ผํ๋๋ฐ(time sharing) ๋ฌดํ๋ฃจํ์ ์ํด ๋น ์ ธ ๋์ค์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌ ํ ์ ์๋ค.
-> ๋ฐ๋ผ์ timer๋ผ๋ H.W๋ฅผ ๋๊ณ ์๋ค.
-> timer : ํน์ ํ๋ก๊ทธ๋จ์ด CPU์ ๋
์ ์ ๋ง๊ธฐ ์ํด ์กด์ฌํ๋ค.
-> ์ปดํจํฐ๋ฅผ ๋ถํ
ํ์ ๋ OS์ CPU๊ฐ ์ฐ์ด๊ฒ ๋ ๊ฒ์ด๋ค
-> ์ดํ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ CPU๋ฅผ ๋๊ธธ ๋ OS๋ timer์ ์ด๋ ํ ๊ฐ์ ์
ํ
ํ ํ์ ๋๊ธด๋ค.
-> ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์
ํ
๋ ์๊ฐ์ด ๋๋ฉด timer๊ฐ CPU์ interrupt๋ฅผ ๊ฑด๋ค.
-> CPU๋ ๋ช
๋ น์ด๋ฅผ ํ์ธํ๊ณ interrupt line์ ํ์ธํ๋ค.
-> CPU๋ interrupt๊ฐ ๊ฑธ๋ ค์์ผ๋ฉด ํ๋์ผ์ ์ค๋จํ๊ณ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์์๋ ์ ์ด๊ถ์ OS์๊ฒ ๋๊ธด๋ค.
-> OS๋ timer๋ฅผ ์
ํ
ํด์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ CPU์ ์ด๊ถ์ ๋๊ธด๋ค.
-> ๋ค์์ด ๋ฐ๋ณต๋๋ค.
ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ํ๋ก๊ทธ๋จ์ CPU๋ฅผ ์๋ ๋ฐ๋ฉํ๋ค.
ํ๋ก๊ทธ๋จ์์ I/O์์ ์ํต์ด ํ์ํ๋ฉด ์์งํด์ OS์๊ฒ CPU์ ์ด๊ถ์ ๋๊ธด๋ค. (I/O ์์
์ OS๋ง ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.)
-> OS๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ CPU ์ ์ด๊ถ์ ๋๊ธด๋ค.
-> ์ ์ด๊ถ์ ๋๊ธฐ๋ ๋ฐฉ๋ฒ์ Trap์ด๋ฉฐ ์ด๋ฅผ ํตํด CPU๊ฐ ํ์ธํ๋๋ก ํ๋ค.
๊ทธ๋ ๋ค๋ฉด I/O์ ์์ฒญ์ ํ ํ๋ก๊ทธ๋จ์ ์ธ์ ๊น์ง ๊ธฐ๋ค๋ฆฌ๋?
-> I/O์์ ์์ฒญํ ์์
(ํค๋ณด๋ ์
๋ ฅ)์ด ๋๋๊ฒ ๋๋ฉด ๊ทธ ๋ฐ์ดํฐ๊ฐ local buffer์ ์ ์ฅ๋๊ณ controller๊ฐ CUP์๊ฒ interrupt๋ฅผ ๊ฑด๋ค.
-> interrupt๊ฐ ๊ฑธ๋ฆฌ๋ฉด ์๋์ ์ผ๋ก CPU์ ์ ์ด๊ถ์ OS๋ก ๋์ด๊ฐ๋ค.
-> OS๋ interrupt๊ฐ ์ ๋ค์ด์๋์ง ํ์ธ ํ์ ์์ฒญํ ์์
(ํค๋ณด๋ ์
๋ ฅ)์ buffer๋ฅผ memory๊ณต๊ฐ์ copy๋ฅผ ํด์ค๋ค.
-> ๋ณดํต์ interrupt ๋๊ธฐ ์ ํ๋ก๊ทธ๋จ์๊ฒ CPU์ ์ด๊ถ์ ๋ค์ ์ค๋ค. (timer์ ์๊ฐ์ด ๋จ์์๋ค๋ฉด) ํน์ ํ์ด๋จธ์ ์๊ฐ์ด ๋๋ฌ๋ค๋ฉด interrupt ๋ฐ์๋ ํ๋ก๊ทธ๋จ์ผ๋ก ์ ์ด๊ถ์ด ๋์ด๊ฐ๋ค.
CPU๋ main Memory์ I/O์ local buffer์ ์ ๊ทผ๊ฐ๋ฅํ๊ณ controller(์์ CPU)๋ local buffer๋ง ์ ๊ทผ๊ฐ๋ฅํ๋ค.
CPU๋ ์๋ง์ Interrupt๋ฅผ ๋นํ๋๋ฐ ๊ทธ๊ฑธ ํด์ํ๋ ๋ฐฉ๋ฒ์ด DMA controller
-> ์๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ทผ ํ ์ ์๋ ๋ฐฉ๋ฒ์ CPU๋ฟ์ด๋ค. ๊ทธ๋ฌ๋ DMA๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
-> ์ด๋, CPU์ DMA๊ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ฒ ๋๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ ํ ์ ์๋๋ฐ ๊ทธ๊ฑธ memory controller๊ฐ ์ค์ฌํด์ค๋ค.
-> ๊ทธ๋ ๋ค๋ฉด, DMA์ ์ญํ ์? local buffer์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ Memory๋ก copyํด์ฃผ๋ ์ญํ ์ ํ๋ค.
-> copy๊ฐ ๋๋๋ฉด CPU์ Interrupt๋ฅผ ๊ฑธ์ด์ ์๋ ค์ค๋ค. (์๋ง์ Interrupt๋ฅผ ํ๋ฒ๋ง ๊ฑธ๊ฒํด์ค!)
CPU๋ register์ค์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ ๋ผ๋ ๋ค์ ๋ช
๋ น์ด๊ฐ ์คํ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
-> CPU๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ฅผ ๋ณด๊ณ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
cf. Device Driver๊ฐ ์ค์ ๋ก ํค๋๋ฅผ ์์ง์ฌ ํ์ผ์ ์ฝ๋ ๋ช
๋ น์ ํ๋๊ฒ์ด ์๋๋ผ Disk controller(device controller)์ ํฌํจ๋ ํ์จ์ด
์ ๋ด๋ถ ์ฝ๋์ ๋ฐ๋ผ ๋ช
๋ น์ ์ํํ๋ค.
์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด์ผ๋ก ์ ํ ํ ์ ์๊ฒ๋ ์๋ ค์ฃผ๋ ๊ฒ์ด ์ธํฐ๋ฝํธ ๋ฒกํฐ์ด๋ค. (์ธํฐ๋ฝํธ ๋ฒกํฐ๋ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๋ฃจํด ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค)
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์์ ํ ์ ์๋ ์ผ(์ปค๋๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ, 0์ผ๋ก ๋๋๊ธฐ ๋ฑ)์ ํ๊ฒ ๋๋ฉด ์๋์ ์ผ๋ก ์ธํฐ๋ฝํธ๊ฐ ๊ฑธ๋ฆฌ๊ฒ ๋๊ณ ์ปค๋์ ์ ์ด๊ถ์ด ๋์ด๊ฐ๊ฒ ๋๋ค. (Exception ์ํฉ) ๋ณดํต์ ์ข ๋ฃ์ํจ๋ค.
(์์ )
์ฒ์์ ์ปดํจํฐ๋ฅผ ํค๊ฒ๋๋ฉด OS๊ฐ CPU๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
CPU๋ ํ์ด๋จธ ์๊ฐ์ ์ค์ ํ๊ณ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ CPU๋ฅผ ์ค๋ค.
CPU๋ ์ฃผ์ด์ง ์๊ฐ๋์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ํ๋ก๊ทธ๋จ์ instruction๊ณผ ์ธํฐ๋ฝํธ ๋ผ์ธ์ ํ์ธํ๋ค.
ํ์ด๋จธ ์๊ฐ์ด ๋๋ฉด ํ์ด๋จธ๋ ์ธํฐ๋ฝํธ๋ฅผ ๊ฑด๋ค.
์ธํฐ๋ฝํธ ๋ผ์ธ์ ํ์ธํ CPU๋ OS๋ก ๋์ด๊ฐ๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๋ฐ๋ณต์ด ๋๋ ๋์ค IO๋ฅผ ํ์๋ก ํ๋ instruction์ด ์คํ๋๋ฉด ํธ๋ฉ์ ๊ฑด๋ค.
์ธํฐ๋ฝํธ ๋ผ์ธ์ ํ์ธํ CPU๋ device controller์๊ฒ ๋ช
๋ น์ ํ ํ ์๋ ๋ณธ์ธ์ ์ผ์ ํ๋ค.
IO์ ์์
์ด ์๋ฃ๋๋ฉด device controller๋ ์ธํฐ๋ฝํธ๋ฅผ ๊ฑด๋ค.
์ธํฐ๋ฝํธ๋ฅผ ๊ฑธ๋ฆฌ๋ฉด ์๋์ ์ผ๋ก CPU์ ์ ์ด๊ถ์ OS๋ก ๋์ด๊ฐ๊ฒ ๋๋ค.
OS๋ ์ธํฐ๋ฝํธ๊ฐ ๋ค์ด์จ ์ด์ ๋ฅผ ํ์ธํ ํ buffer์ ์๋ ๋ฐ์ดํฐ๋ฅผ memory๊ณต๊ฐ์ copyํ๋ค.
๋ณดํต ์๋ instruction์ด ์ํ๋๋ ํ๋ก๊ทธ๋จ์ CPU์ ์ด๊ถ์ด ๋์ด๊ฐ๊ฒ๋๋ค.
๋ค์ CPU๋ ๋ณธ๋์ ์ผ์ ํ๋ค.
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์๋ชป๋ ์ํ์ผ๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ๋ฐ ์ด์์ฒด์ ์ ํผํด๊ฐ ๊ฐ์ง ์๋๋ก ํ๊ธฐ ์ํ ๋ณดํธ ์ฅ์น ํ์
Mode bit์ ํตํด ํ๋์จ์ด์ ์ผ๋ก ๋ ๊ฐ์ง ๋ชจ๋์ operation์ง์
-> 1 ์ฌ์ฉ์ ๋ชจ๋ : ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ์คํ
-> 0 ๋ชจ๋ํฐ(์ปค๋) ๋ชจ๋ : OS ์ฝ๋ ์ํ
I/O device controller
I/O๋ ์ค์ device์ local buffer ์ฌ์ด์์ ์ผ์ด๋จ
Device controller๋ I/O๊ฐ ๋๋ฌ์ ๊ฒฝ์ฐ interrupt๋ก CPU์ ์ฌ์ค ์๋ฆผ
device driver(์ฅ์น๊ตฌ๋๊ธฐ)
: OS ์ฝ๋ ์ค ๊ฐ ์ฅ์น๋ณ ์ฒ๋ฆฌ๋ฃจํด -> software
๊ฐ ๋๋ฐ์ด์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ๊ทธ ๋๋ฐ์ด์ค์ ์ธํฐํ์ด์ค๊ฐ ์กด์ฌํ๋๋ฐ ๊ฑฐ๊ธฐ์ ๋ง๊ฒ ์ ๊ทผ ํ ์ ์๋๋ก ํด์ฃผ๋ ์ํํธ์จ์ด์ด์ด๋ค. (์ด์์ฒด์ ์ฝ๋์ด๋ค)
device controller(์ฅ์น์ ์ด๊ธฐ)
: ๊ฐ ์ฅ์น๋ฅผ ํต์ ํ๋ ์ผ์ข
์ ์์ CPU -> hardware
์ ์ด ๋ ์ง์คํฐ๋ฅผ ํตํด CPU๊ฐ I/O controller์๊ฒ ๋ช ๋ น์ ๋ด๋ฆฐ๋ค.
๋ชจ๋ ์ ์ถ๋ ฅ ๋ช ๋ น์ ํน๊ถ ๋ช ๋ น
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ I/O๋ฅผ ํ๋๊ฐ?
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด I/O์ ์
์ถ๋ ฅ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋ค.
-> ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ์๊ตฌํ๊ธฐ ์ํด์ ์ง์ interrupt ๊ฑด๋ค. -> mode bit์ด 0์ด ๋๊ณ os๋ ์ธํฐ๋ฝํธ๋ฅผ ํ์ธํด์ I/O๊ฐ ์คํ ํ ์ ์๋๋ก ํ๋ค. (system call)
์ธํฐ๋ฝํธ
Interrupt (๋์ ์๋ฏธ)
์ธํฐ๋ฝํธ ๊ด๋ จ ์ฉ์ด
์์ฒญ์ ํ ๊ฒฝ์ฐ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ๋ฅผ I/O๊ฐ ๋๋ฌ๋ค๋ฉด ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ํ ๊ฒ์ด๋ค.
Exception
-> ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์์ 0์ผ๋ก ๋๋๊ฑฐ๋ ์ปค๋์ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ฒ๋ผ ํด์๋ ์๋๋ ๊ฒ์ CPU instruction set์์ ๋ง์๋จ๋ค. ๋ฐ๋ผ์ ํด์๋ ์๋๋ ๊ฒ์ ํ๋ค๋ฉด ์ธํฐ๋ฝํธ ๋ผ์ธ์ด ์๋์ผ๋ก ์ค์ ๋๊ณ CPU ์ ์ด๊ถ์ด ์๋์ผ๋ก ์ปค๋์ ๋์ด๊ฐ๊ฒ ๋๋ค.(mode bit 0์ผ๋ก ์ค์ ๋ ํ)
์ธํฐ๋ฝํธ ์ข ๋ฅ๊ฐ ๊ต์ฅํ ๋ง๋ค. -> ํค๋ณด๋ ์ธํฐ๋ฝํธ, ํ์ด๋จธ ์ธํฐ๋ฝํธ ๋ฑ -> ์ธํฐ๋ฝํธ๋ง๋ค ์ด์์ฒด์ ๊ฐ ํด์ผ ํ ์ผ์ด ๋ค๋ฅด๋ค. -> ํค๋ณด๋ ์ธํฐ๋ฝํธ๊ฐ ๋ค์ด์์ผ๋ฉด ํค๋ณด๋ buffer์ ์๋ ๋ฐ์ดํฐ๋ฅผ memory๋ก copyํด์ผํ๊ณ ํค๋ณด๋ I/O๋ฅผ ์์ฒญํ๋ ํ๋ก๊ทธ๋จ์๊ฒ CPU๋ฅผ ๋๋ ค์ค๋ค. ํน์ ํ์ด๋จธ๊ฐ ์ธํฐ๋ฝํธ๋ฅผ ๊ฑธ์๋ค๋ฉด CPU๋ฅผ ๋บ์ด์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ ๋๊ฒจ์ผ ํ๋ค. -> ๊ฐ ๊ฐ์ ์ธํฐ๋ฝํธ๋ง๋ค ํด์ผํ ์ผ์ด ์ด์์ฒด์ ์ฝ๋์ ์ ์๊ฐ ๋์ด์๋ค. ์ฆ, ์ด์์ฒด์ ๋ฅผ ๋๊ตฐ๊ฐ๊ฐ ๋ง๋ค๋ฉด์ ์ด๋ค ์ธํฐ๋ฝํธ๊ฐ ๋ค์ด์ค๋ฉด ๋ฌด์จ ์ผ์ ํด๋ผ. -> ์ธํฐ๋ฝํธ๋ง๋ค ์ฒ๋ฆฌํด์ผ ํ ์ค์ ์ฝ๋๋ฅผ '์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๋ฃจํด'์ด๋ผ๊ณ ํ๋ค. -> ๊ทธ๋ผ ์ด๋ค ํจ์๋ก ๊ฐ์ผํ๋? -> '์ธํฐ๋ฝํธ ๋ฒกํฐ'์ ์ ํ์๋ค.
CPU๋ ๊ธฐ๊ณ์ด(0๊ณผ1๋ก ์ด๋ฃจ์ด์ง, instruction๋ง๋ค ๋ค๋ฅด๋ฉด ๋ณดํต์ 4๋ฐ์ดํธ)๊ฐ ๋ฌด์จ ์ผ์ ํด์ผํ๋์ง ๊ธฐ๊ณ์ด set์ ๊ฐ์ง๊ณ ์๋ค. CPU๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๊ฐ ๊ฐ๋ฅดํค๊ณ ์๋ ์ฃผ์์ ๊ธฐ๊ณ์ด๋ฅผ ์คํํ๊ธฐ๋ง ํ๋ค.
์๋ฅผ๋ค์ด ํค๋ณด๋ ์
๋ ฅ์ ์ํด ์ธํฐ๋ฝํธ ๋ผ์ธ 3๋ฒ์ ์ธํฐ๋ฝํธ๊ฐ ๊ฑธ๋ ธ๋ค๊ณ ํ๋ค๋ฉด ์ธํฐ๋ฝํธ ๋ฒกํฐ(๋ฒํธ, ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๋ฃจํด ์ผ๋ก ์ด๋ฃจ์ด์ง)์ Mapping์์ผ์ 3๋ฒ์ ํด๋นํ๋ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๋ฃจํด์ ์คํํ๋ค.
[์ถ์ฒ] ๋ฐํจ๊ฒฝ ๊ต์๋ ๊ฐ์