ํ๋์จ์ด์ ๊ตฌ์ฑ๊ณผ ํ๋ก๊ทธ๋จ๋ค์ด ํ๋์จ์ด์์ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง์ ๋ํ ์ค๋ช ์ด ์์ ๊ทธ๋ฆผ์ด๋ค. ์ด์์ฒด์ ์ ์์์ ์ปดํจํฐ ํ๋์จ์ด์ ์ธ ๋ถ๋ถ์ ๋จผ์ ์ง๊ณ ๋์ด๊ฐ๊ธฐ ์ํ ๋ถ๋ถ์ด๋ค.
์์ ๊ทธ๋ฆผ์ด ๊ฐ๋จํ ์์ฝํ ์ปดํจํฐ์ ํ๋์จ์ด ๊ตฌ์กฐ์ด๋ค. CPU์ ๋ฉ๋ชจ๋ฆฌ
๋ก ๊ตฌ์ฑ๋ ๊ฒ์ ๋ณดํต ์ปดํจํฐ๋ผ๊ณ ํ๋ค. ๋ณดํต ์ปดํจํฐ ์์คํ
์ CPU
์ ๋ฉ๋ชจ๋ฆฌ
๋ก ๊ตฌ์ฑ๋ ์ปดํจํฐ
์ I/O device
, ์ฆ ์
์ถ๋ ฅ ์ฅ์น
๋ค๋ก ๊ตฌ์ฑ๋๋ค.
์ด์ ํ๋ํ๋ ์์ ์ฌ์ง์ ๋ฐํ์ผ๋ก ์ค๋ช ํ ๊ฒ์ด๋ค.
๋จผ์ ๋ฉ๋ชจ๋ฆฌ
๋ผ๋ ๊ฒ์ CPU์ ์์
๊ณต๊ฐ
์ด๋ค. ๊ทธ๋์ CPU์์ ๋ฌด์ธ๊ฐ ์ผ์ ํ๋ ค๋ฉด, ์ฌ๊ธฐ์ CPU์์ ํ๋ ์ผ์ instruction
์ด๋ผ๊ณ ํ๋ค. CPU๋ ๋งค ์๊ฐ, ์ ํํ๊ฒ๋ ๋งค clock cycle ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์์ instruction
, ์ฆ ๊ธฐ๊ณ์ด๋ฅผ ํ๋์ฉ ์ฝ์ด์ ์คํ์ ํ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋ฅธ์ชฝ์ I/O device
๋ฅผ ์ดํด๋ณด๋ฉด, ๋ง์ฐ์ค์ ํค๋ณด๋์ฒ๋ผ ๋ฌด์ธ๊ฐ๋ฅผ ์
๋ ฅํ๋ input device
์ ํ๋ฆฐํฐ์ ๋ชจ๋ํฐ์ฒ๋ผ ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๋ ฅํ๋ output device
๋ฑ์ด ์๋ค. ์ฌ๊ธฐ์ Disk
๋ ์ผ์ข
์ I/O device
๋ก ๋ณผ ์ ์๋ค. ๋ณดํต ๋ณด์กฐ๊ธฐ์ต์ฅ์น๋ผ๊ณ ๋ถ๋ ค์ง์ง๋ง Disk
์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ๋ฉ๋ชจ๋ฆฌ
๋ก ์ฝ์ด๋ค์ด๊ธฐ๋ํ๊ณ , ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ Disk
์ ํ์ผ์์คํ
์ ์ ์ฅํ๊ธฐ๋ ํ๋ค.
๊ฐ๊ฐ์ I/O device
๋ค์ ๊ทธ๊ฒ์ ์ ๋ดํ๋ ์์ CPU๊ฐ์ ์กด์ฌ
๋ค์ด ์๋ค. ๊ทธ๊ฑธ device controller
๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ฉ์ธ CPU
๊ฐ I/O device
๋ค์ ์์
์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ ์ด controller
๋ค์ด I/O device
๋ฅผ ์ํ ์์ CPU๊ฐ์ ์ญํ
์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
๋ฉ์ธ CPU
์ ์์
๊ณต๊ฐ์ธ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ
๊ฐ ์๋ฏ์ด, ์ด๋ฐ device controller
๋ ๊ฐ๊ฐ์ ์์
๊ณต๊ฐ
์ด ์กด์ฌํ๋ค. ๊ทธ๊ฒ์ local buffer
๋ผ๊ณ ๋ถ๋ฅธ๋ค.
CPU์ ๋นํด์ I/O device๋ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆฌ๋ค.
๊ทธ๋ ๋ค๋ฉด CPU์ ์ญํ
์ ๋ฌด์์ผ๊น. ์์์๋ ๊ฐ๋ณ๊ฒ ์ค๋ช
ํ๋ฏ์ด ๋งค ํด๋ญ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์์ instruction์ ํ๋์ฉ ์ฝ์ด์ ์ํํ๊ณ ๊ทธ๋ฌ๊ณ ๋๋ฉด ๋ค์ ํด๋ญ์ ๋ค์ instruction์ ์ฝ๊ณ , ์ด๋ฐ ์์
์ด CPU์ ์ด๋ช
์ด๋ค.
๊ทธ๋ฌ๊ณ ์ด์ CPU
์์๋ ๋ฉ๋ชจ๋ฆฌ
๋ณด๋ค ๋ ๋น ๋ฅด๋ฉด์ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๋ ์์ ๊ณต๊ฐ
๋ค์ด ์๋ค. ๊ทธ๊ฒ์ ์ด์ register
๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ทธ๋ฆฌ๊ณ mode bit
์ด๋ผ๋ ๊ฒ์ด ์๋๋ฐ ์ด๊ฒ์ CPU์์ ์คํ๋๊ณ ์๋ ๊ฒ์ด ์ด์์ฒด์ ์ธ์ง ์๋๋ฉด ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ธ์ง๋ฅผ ๊ตฌ๋ถํด์ฃผ๋ ๊ฒ
์ด๋ค. interrupt line
์ ๋ํด์ ์ค๋ช
ํ์๋ฉด CPU๋ ํญ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ instruction๋ง ์คํํ๋ค. ๊ทธ๋ ๋ค๋ฉด ํค๋ณด๋์์ ์ด๋ค ์
๋ ฅ์ด ๋ค์ด์๋ค๋์ง ๋๋ Disk์์ ๋ฌด์์ธ๊ฐ๋ฅผ ์ฝ์ด์์ผํ๋ค๋ฉด ์ด๋ฐ๊ฒ์ CPU๊ฐ ์๊ฒํ๊ธฐ ์ํด
interrupt line
์ด ์กด์ฌํ๋ค.
์์๋ฅผ ํ๋ ๋ค์ด๋ณด๋ฉด, ๋ง์ฝ Disk์์ ๋ฌด์์ธ๊ฐ๋ฅผ ์ฝ์ด์ค๋ผ๋ ์์ฒญ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋๋. ๋ง์ฝ CPU
๊ฐ instruction
์ ์ญ ์ํํ๋ค๊ฐ ํ๋ก๊ทธ๋จ A๊ฐ Disk
์์ ์ ๋ณด๋ฅผ ์ฝ์ด์์ผํ๋ค ๊ทธ๋ฌ๋ฉด CPU
๊ฐ ์ง์ Disk
๋ก ์ ๊ทผํ๋ ๊ฒ์ด ์๋๋ผ Disk controller
์๊ฒ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ด๋์ ์ฝ์ด์ค๋ผ๊ณ ์ผ์ ์ํจ๋ค( ์ฌ๊ธฐ์ ์ผ์ ์ํจ๋ค๋ ๊ฒ์ ์ผ์ ์ํค๋ instruction
์ ๋ณด๋ธ๋ค๋ ๊ฒ์ด๋ค. ) ๊ทธ๋ฌ๋ฉด Disk๋ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ์์ ์ local buffer
์ ์ง์ด๋ฃ๋๋ค. ์์ธํ ์ค๋ช
์ ์๋์์ ์กฐ๊ธ ๋ ์ด์ด๊ฐ๊ฒ ๋ค.์ฌ๊ธฐ์ Disk
์ ์ฒ๋ฆฌ ์๋๋ CPU
๋ณด๋ค ํ์ ํ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ด CPU
๊ฐ ๋๊ณ ์๋ค๋ฉด ๊ทธ๊ฒ์ ๋ญ๋น๋ค. ๊ทธ๋์ CPU
๋ ๋ณดํต์ ์ญ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ๋ง ํ๋ฉด์ ์คํ๋๋ค๊ฐ I/O ์์
์ด ์ด๋ฃจ์ด์ง๋ฉด ๊ทธ๊ฒ์ device controller
์๊ฒ ๋งก๊ฒจ๋๊ณ CPU
๋ ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ๊ทผ์ ๊ณ์ ํ๋ฉด์ instruction
์ ์คํํ๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ก๊ทธ๋จ๋ค์ด ์ฌ๋ฌ ๊ฐ ์คํ๋๊ณ ์์ ๋ CPU
๋ ๋น ๋ฅธ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ์ฌ๋ฌ ํ๋ก๊ทธ๋จ๋ค์ ์๋ค๊ฐ๋คํ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ๋ฉด ๋๋ฌธ์ ์ฌ์ฉ์ ์
์ฅ์์๋ CPU
๊ฐ ๊ต์ฅํ ๋น ๋ฅด๊ณ interactiveํ๊ฒ ์ผ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
์ฌ๊ธฐ์ ํ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋๋ฐ, ๋ง์ฝ ํ๋ก๊ทธ๋จ A๊ฐ ๋ฌดํ๋ฃจํ๋ฅผ ๋๋ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ์๊ฐํด๋ณด์. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ค๊ฐ์ ๋ค๋ฅธ I/O ์์
์ ํ์ง ์๊ณ ๊ณ์ CPU
๋ง ์ฐ๊ฒ ๋๋ค. ์ด๋ฌํ ํ๋ก๊ทธ๋จ์ CPU
๊ฐ ๋์ด๊ฐ๋ฉด ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋์ง๋ ์๊ณ ๊ทธ๋ ๋ค๊ณ I/O๋ฅผ ํ์ง๋ ์๊ณ ๊ณ์ CPU
๋ง ์ธ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด CPU
๊ฐ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก ๋์ด๊ฐ์ง ์๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์๋ ์๋ค. ๊ทธ๋์ ์ปดํจํฐ ์์๋ timer
๋ผ๋ ํ๋์จ์ด๋ฅผ ๋๊ณ ์๋ค.
timer
๋ผ๋ ํ๋์จ์ด์ ์ญํ ์ ํน์ ํ๋ก๊ทธ๋จ์ด CPU
๋ฅผ ๋
์ ํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํ ๊ฒ์ด๋ค. ์ฒ์ ์ปดํจํฐ๋ฅผ ์ผฐ์ ๋๋ ์ด์์ฒด์ ๊ฐ CPU
๋ฅผ ๊ฐ๊ณ ์๋ค๊ฐ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด ๊ทธ ํ๋ก๊ทธ๋จ์ CPU
๋ฅผ ๋๊ฒจ์ค๋ค. ์ด ๋ ๊ทธ๋ฅ ๋๊ฒจ์ฃผ๋ ๊ฒ์ด ์๋๋ผ timer
์ ๊ฐ์ ์ธํ
ํ ๋ค์์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ CPU
๋ฅผ ๋๊ฒจ์ค๋ค. ์ดํ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋
์ ์ ์ผ๋ก CPU
๋ฅผ ์ธ ์ ์๋ ๊ฒ์ด ์๋๋ผ timer
์ ํ ๋น๋ ์๊ฐ์ด ๋๋ฉด timer
๊ฐ CPU
์๊ฒ interrupt
๋ฅผ ๊ฑด๋ค. CPU
๋ instruction์ด ํ๋ ๋๋๋ฉด ๋งค๋ฒ interrupt line
์ ์ฒดํฌํ๋ค. interrupt
๋ค์ด์จ๊ฒ ์์ผ๋ฉด ๋ค์ instruction ์คํํ๊ณ ์ด ์์
์ ๋ฐ๋ณตํ๋ค. ๋ง์ฝ timer๊ฐ interrupt๋ฅผ ๊ฑธ๋ฉด CPU๊ฐ ํ๋๊ฒ์ ์ ๊น ๋ฉ์ถ๊ณ CPU์ ์ ์ด๊ถ์ด ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์์ ์ด์์ฒด์ ๋ก ๋์ด๊ฐ๊ฒ ๋๋ค. ์ด๋ ๊ฒ ์ด์์ฒด์ ๊ฐ ์ ์ด๊ถ์ ์ป๊ฒ ๋๋ฉด, interrupt
๊ฐ ๊ฑธ๋ฆฐ ํ๋ก๊ทธ๋จ์์ ๋ค์ ํ๋ก๊ทธ๋จ์ผ๋ก CPU
๋ฅผ ๋๊ฒจ์ค๋ค. ๊ทธ๋ฅ ๋๊ฒจ์ฃผ๋ ๊ฒ์ด ์๋๋ผ ์ญ์ timer
์ ๊ฐ์ ์ธํ
ํ๊ณ ๋๊ฒจ์ค๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก timer๋ CPU์ time sharing์ ์ํ ํ๋์จ์ด ์ฅ์น์ธ ๊ฒ์ด๋ค.
์์ ์์ (Disk์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ฝ์ด์ค๋ผ๋ ์์ฒญ๊ณผ ๊ฐ์ I/O ์์
)์ ๋ค์ ํ๋ฒ ์ดํด๋ณด์๋ฉด, ๋ง์ฝ ํ๋ก๊ทธ๋จ์ด I/O ์์
์ ํ์๋กํ๋ฉด ์์งํด์ CPU
๋ฅผ ์ด์์ฒด์ ์ ๋๊ฒจ์ฃผ๊ฒ ๋๋ค. ๊ทธ ๋ค์ ์ด์์ฒด์ ๊ฐ ํด๋น ์์
์ I/O controller
์ ์ํค๋ ๊ตฌ์กฐ์ด๋ค. ์ฌ์ฉ์ํ๋ก๊ทธ๋จ์ ์ง์ I/O device
์ ์ ๊ทผํ ์ ์๋ค. I/O device
์ ์ ๊ทผํ๋ ๋ชจ๋ instruction์ ์ด์์ฒด์ ๋ฅผ ํตํด์๋ง ํ ์ ์๋๋ก ๊ตฌํ๋์ด ์๋ค.
I/O controller
๊ฐ ์์ฒญํ ์์
์ด ๋๋๋ฉด device controller
๊ฐ CPU
์๊ฒ interrupt
๋ฅผ ๊ฑธ๊ฒ ๋๋ค. ์ด ๋น์ ์ด๋ค ํ๋ก๊ทธ๋จ์ด CPU
๋ฅผ ํตํด ์คํ์ด ๋๊ณ ์์๊ฒ ์ง๋ง, interrupt
๊ฐ ๋ค์ด์ค๋ฉด ์๋์ผ๋ก CPU
์ ์ด๊ถ์ด ์ด์์ฒด์ ์๊ฒ ๋์ด๊ฐ๋ค. interrupt
๋ฅผ ๋ฐ์ CPU
๊ฐ ์ด์ interrupt
์ ์ด์ ๋ฅผ ์ดํด๋ณด๋ ์๊น ์ด๋ค ํ๋ก๊ทธ๋จ์ด ์์ฒญํ๋ I/O ์์
์ด ์๋ฃ๋ ๊ฒ์ ํ์ธํ๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ์ด์ Disk
์์ ์ฝ์ด์จ ๊ฐ์ ์์ฒญํ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์นดํผ๋ฅผ ํด์ฃผ๊ณ ๋ค์ interrupt
๋นํ ํ๋ก๊ทธ๋จ์๊ฒ CPU
๋ฅผ ๋๊ฒจ์ค๋ค.
Mode bit
์ ํตํด ํ๋์จ์ด์ ์ผ๋ก ๋ ๊ฐ์ง ๋ชจ๋
์ operation ์ง์1 ์ฌ์ฉ์๋ชจ๋
: ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ์ํ0 ๋ชจ๋ํฐ๋ชจ๋
: OS์ฝ๋ ์ํ ๋ชจ๋ํฐ๋ชจ๋
์์๋ง ์ํ ๊ฐ๋ฅํ ํน๊ถ๋ช
๋ น
์ผ๋ก ๊ท์ Interrupt๋ Exception
๋ฐ์ ์ ํ๋์จ์ด๊ฐ mode bit
์ 0
์ผ๋ก ๋ฐ๊ฟ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์๊ฒ CPU๋ฅผ ๋๊ธฐ๊ธฐ ์
์ mode bit
์ 1
๋ก ๋ฐ๊ฟ ์์์ ๋งํ๋ ๋ชจ๋ํฐ๋ชจ๋
๋ ์ปค๋๋ชจ๋, ์์คํ
๋ชจ๋
๋ก ์ด์์ฒด์ ๊ฐ CPU
์์ instruction์ ์ํํ๋ ๋ชจ๋๋ฅผ ๋งํ๋ค. mode bit์ด 0์ผ๋๋
์ด์์ฒด์ ๊ฐ CPU
๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ๊ฑฐ์ ๋ชจ๋ instruction์ ์ํํ ์ ์๋ค(I/O device์ ๊ทผ ๋ฑ๋ฑ). ํ์ง๋ง 1์ผ๋๋
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด CPU
๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด๋ผ์ ์ ํ๋ instruction๋ง ์ํ์ด ๊ฐ๋ฅํ๋ค.
์ ์ด๊ถ
์ด ๋์ด๊ฐ๋๋ก ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์
์ํด time sharing
์ ๊ตฌํํ๊ธฐ ์ํด ๋๋ฆฌ ์ด์ฉ๋จlocal buffer
๋ฅผ ๊ฐ์ง (์ผ์ข
์ data register)๋๋ฌด ๋ง์ I/O ์์
์ด ์ด๋ฃจ์ด์ง๋ค๋ฉด ๊ทธ๋งํผ ๋ง์ interrupt
๊ฐ ๋ค์ด์ค๊ฒ ๋๊ณ , ๊ทธ๋ ๊ฒ ๋๋ค๋ฉด CPU
๊ฐ ํจ์จ์ ์ผ๋ก ๋์ํ์ง ๋ชปํ ๊ฒ์ด๋ค. ์ด ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด DMA controller
๋ผ๋ ๋ณ๋์ ์ฅ์น๋ฅผ ๋๋ค. DMA controller
๋ CPU
์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๋๋ฐ, ์ ์กด์ฌํ๋๊ณ ํ๋ฉด CPU
๊ฐ ๋๋ฌด๋ง์ I/O ์์
์ด ์๊ธฐ๋ฉด ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆด ์ ์๋๋ฐ, ์ด DMA Controller
๊ฐ CPU๋์ ์ I/O ์์
์ด ์ด๋ฃจ์ด์ ธ์ ๋ฐ์ดํฐ๊ฐ ๋ด์ local buffer
์์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณต์ฌํ๋ ์ผ์ ํด์ฃผ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ CPU
์ DMA
๊ฐ ๋์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ผ๋๊น memory controller
๋ผ๋ ์ฅ์น๋ฅผ ๋๋ค.
์์คํ
์ฝ
Interrupt(ํ๋์จ์ด ์ธํฐ๋ฝํธ)
: ํ๋์จ์ด๊ฐ ๋ฐ์์ํจ ์ธํฐ๋ฝํธ Trap (์ํํธ์จ์ด ์ธํฐ๋ฝํธ )
: Exception
: ํ๋ก๊ทธ๋จ์ด ์ค๋ฅ๋ฅผ ๋ฒํ ๊ฒฝ์ฐSystem call
: ํ๋ก๊ทธ๋จ์ด ์ปค๋ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ