IO
๐ซ IO
Input/Output, ์ ์ถ๋ ฅ
์ฌ๋์ ๋ป (์กฐ์ด์คํฑ, ๋ง์ฐ์ค, ํค๋ณด๋ ๋ฑ)์ CPU์, CPU์ ๋ป (์ฐ์ ์ฐ์ฐ ๊ฒฐ๊ณผ, ๋์คํฌ์ ์ ์ฅ๋ ์ด์ ๋๋ ์ฌ์ง ๋ฑ์ ๋ฐ์ดํฐ)์ ์ฌ๋ฌ๋ถ์๊ฒ ์ ๋ฌํ๊ธฐ ์ํด์(์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋ฅผ ํตํด์)๋ ๋ฐ๋์ ์ ์ถ๋ ฅ์ด ํ์ํ ๊ฒ์ด๋ค. CPU ์ ์ฅ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ๊ณ ์ฝ์ด์ค๋ ๊ฒ ์์ฒด๋ I/O์ง๋ง, ํต์ ์ฃผ๋ณ ์ฅ์น๋ค๊ณผ์ I/O๋ฅผ ๋ปํ๋ค. @ ์ฌ์น
๐ซ ์ ์ถ๋ ฅ ์ฅ์น IO Device
- ์
์ถ๋ ฅ ์ฅ์น IO Device
- ์
๋ ฅ Input
- CPU, DMA ๋ฑ ํ๋ก์ธ์๊ฐ ์ฃผ๋ณ ์ฅ์น์ ๋ฐ์ดํฐ ๋ ์ง์คํฐ Data Register๋ก๋ถํฐ ๋ฐ์ดํฐ ๊ฐ์ ์ฝ์ด ์ฃผ๊ธฐ์ต์ฅ์น๋ก ๋ณต์ฌํ๋ ์์
- ๋ฐ์ดํฐ ๋ ์ง์คํฐ๋ก๋ถํฐ ๊ฐ์ ์ฝ์ ๋์๋ ์ํ ๋ ์ง์คํฐ Status Register์ ๋ฐ์ดํฐ ์ค๋น ์ํ๋ฅผ ํ์ธํด์ผ ํจ
- ์ค๋น๋์ง ์์ ์ํ์์ ์ฝ์ ๊ฒฝ์ฐ ์ํฐ๋ฆฌ ๊ฐ์ ์ฝ๊ฒ ๋จ
- ์ถ๋ ฅ Output
- ์ ๋ ฅ๊ณผ ๋ฐ๋๋ก ์ฃผ๊ธฐ์ต์ฅ์น์ผ ๋ฐ์ดํฐ ๊ฐ์ ์ฝ์ด ์ฃผ๋ณ์ฅ์น์ ๋ฐ์ดํฐ ๋ ์ง์คํฐ๋ก ๋ณต์ฌํ๋ ์์
- ๋ฐ์ดํฐ ๋ ์ง์คํฐ์ ๊ฐ์ ์ฐ๊ธฐํ ๋์๋, ์ํ ๋ ์ง์คํฐ์์ ์ด์ ๋ฐ์ดํฐ์ ์ถ๋ ฅ์ด ์๋ฃ๋์๋์ง ํ์ธํด์ผ ํจ
- ์ด์ ๋ฐ์ดํฐ์ ์ถ๋ ฅ ์๋ฃ ์ ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐํ๋ฉด ์ถ๋ ฅ ๋ฐ์ดํฐ์ ์ ํ์ฑ์ด ๋ณด์ฅ๋์ง ์์
- ์
๋ ฅ Input
- ์
์ถ๋ ฅ ์ฅ์น ๊ตฌ์กฐ
- ์
์ถ๋ ฅ ์ฅ์น ์ ์ด๊ธฐ IO Device COntroller ์
์ถ๋ ฅ์ฅ์น์ธํฐํ์ด์ค
- ์ํ ๋ ์ง์คํฐ Status Register
- ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋์๋๊ฐ ํน์ ๋ฐ์ดํฐ ์ถ๋ ฅ์ด ์๋ฃ๋์๋ ๊ฐ ๋ฑ ์ฅ์น์ ์ํ๋ฅผ ํ์ํ๋ ๊ณณ
- ๋ช
๋ น ๋ ์ง์คํฐ Command Register
- ์ ๋ ฅ ํน์ ์ถ๋ ฅ ํ๋ผ๋ ๋ฑ์ ๋ช ๋ น์ ๋ณด๋ด๋/์ฐ๋ ๊ณณ
- ์ ๋ ฅ ๋ช ๋ น์ ๋ฐ๋ผ ์ ๋ ฅ => ๋๊ธฐ์ ์ ๋ ฅ (๋์คํฌ ๋ฑ)
- ์ ๋ ฅ ๋ช ๋ น์์ด ์์๋ก ์ ๋ ฅ => ๋น๋๊ธฐ์ ์ ๋ ฅ (ํค๋ณด๋ ๋ฑ)
- ์ถ๋ ฅ์ ์ธ์ ๋ ๋๊ธฐํ
- ๋ฐ์ดํฐ ๋ ์ง์คํฐ Data Register
- ์ ๋ ฅ๋ ๋ฐ์ดํฐ๋ ์ถ๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ๋ณด๊ดํ๊ณ ์๋ ๊ณณ
- ์
์ถ๋ ฅ ์ฅ์น ๊ตฌ๋๊ธฐ IO Device Driver
- ์ฅ์น ์ ์ด๊ธฐ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ์ ์ถ๋ ฅ์ ์ฒ๋ฆฌํ๋ ์ํํธ์จ์ด
- ์ํ ๋ ์ง์คํฐ Status Register
- ์
์ถ๋ ฅ ์ฅ์น ์ ์ด๊ธฐ IO Device COntroller ์
์ถ๋ ฅ์ฅ์น์ธํฐํ์ด์ค
- ์
์ถ๋ ฅ ์ฅ์น์ ์๋ณ
- ๋ฉ๋ชจ๋ฆฌ ๋์ ์
์ถ๋ ฅ Memory Mapped IO
- ์ ์ถ๋ ฅ ์ฅ์น์ ๋ ์ง์คํฐ๋ค์ ์์น๋ฅผ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ฃผ์์์ญ ์ผ๋ถ์ ๋์
- ์ฃผ๊ธฐ์ต์ฅ์น (๋ณ์, ์ฃผ์)์์ ์ฝ๊ณ ์ฐ๊ธฐํ๋ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ถ๋ ฅ์ด ์ด๋ฃจ์ด์ง
- ์ฆ, ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๋ช
๋ น์ด์ ๋์ผํ ๊ธฐ๊ณ ๋ช
๋ น์ด (load, save ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ์
์ถ๋ ฅ์ ์งํํจ
- ๊ฐ๋ฐ์ ์ ์ฅ์์ ํธ๋ฆฌํ๋, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ผ๋ถ๋ ์ฌ์ฉํ ์ ์์
- ๋ฉ๋ชจ๋ฆฌ ๋์ ์
์ถ๋ ฅ Memory Mapped IO
- ์
๋ ฅ ์
- load r1, 10
- ๋ฉ๋ชจ๋ฆฌ 10๋ฒ์ง์ ๋์๋ ์ ๋ ฅ ๋ ์ง์คํฐ์์ CPU์ r1 ๋ ์ง์คํฐ๋ก ์ฝ์ (์ ๋ ฅ)
- save r1, 1000
- ์ ๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ 1000๋ฒ์ง์ ์ ์ฅ
- load r1, 10
- ์ถ๋ ฅ ์
- load r1, 2000
- ๋ฉ๋ชจ๋ฆฌ 2000๋ฒ์ง์ ๋ฐ์ดํฐ๋ฅผ CPU์ r1 ๋ ์ง์คํฐ๋ก ์ ์ฌ
- saver1, 20
- ์ ์ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ 20๋ฒ์ง์ ๋์๋ ์ถ๋ ฅ ๋ ์ง์คํฐ์ ๊ธฐ๋ก (์ถ๋ ฅ)
- load r1, 2000
- ๊ฒฉ๋ฆฌ๋ ์
์ถ๋ ฅ Isolated IO
- ์ฃผ๊ธฐ์ต ์ฅ์น์ ์ฃผ์ ์์ฌ๊ณผ ๋ณ๊ฐ๋ก ์ ์ถ๋ ฅ ์ฅ์น ์ฃผ์ ์์ญ (ํฌํธ, Port)์ด ๋ฐ๋ก ์์
- ์ฆ, ๋ฉ๋ชจ๋ฆฌ 10๋ฒ์ง์ ์ ์ถ๋ ฅ ํฌํธ 10์ ์ซ์๋ ๋์ผํ์ง๋ง ์ง์ํ๋ ์์น๋ ์ ํ ๋ค๋ฆ
- ๋ฐ๋ผ์, ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๊ธฐ๊ณ์ด ์ธ์ ์ ์ถ๋ ฅ ํฌํธ ์ ๊ทผ์ ์ํ ์ ์ฉ ๊ธฐ๊ณ ๋ช ๋ น์ด (in, out ๋ฑ)๊ฐ ํ์ํจ
- = ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ผ๋, ์์คํ ์ค๊ณ๊ฐ ๋ค์ ๋ณต์กํด์ง
- ์
๋ ฅ ์
- in r1, 10
- ์ ๋ ฅ ํฌํธ 10๋ฒ์ง์ ์ ๋ ฅ ๋ ์ง์คํฐ์์ CPU์ r1 ๋ ์ง์คํฐ๋ก ์ฝ์ (์ ๋ ฅ)
- save r1, 1000
- ์ ๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ 1000๋ฒ์ง์ ์ ์ฅ
- in r1, 10
- ์ถ๋ ฅ ์
- load r1, 2000
- ๋ฉ๋ชจ๋ฆฌ 2000๋ฒ์ง์ ๋ฐ์ดํฐ๋ฅผ CPU์ r1๋ ์ง์คํฐ๋ก ์ ์ฌ
- out r1, 20
- ์ ์ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ 20๋ฒ์ง์ธ ์ถ๋ ฅ ๋ ์ง์คํฐ์ ์ ์ฌ (์ถ๋ ฅ)
- load r1, 2000
@@ Storage
๋ฌธ์ 4-2 ๋ช
๋ น์ด
ํ ์๋ฆฌ์ฉ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ๋ฆฐ๋ค, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์์๋ ๊ฒ์ ๊ฐ์ฅ ์ผ์ชฝ์ผ๋ก ๊ฐ๋ค
์ ์ถ๋ ฅ ๊ฐ๊ด
- ์
์ถ๋ ฅ ๊ณผ์
- ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ถ๋ ฅ ์๊ตฌ => ์ด์์ฒด์ => ์ ์ถ๋ ฅ ์ฅ์น (์ ์ถ๋ ฅ ํ๋์จ์ด) ์ธํฐํ์ด์ค
- ๋์คํฌ, ํค๋ณด๋, ๋ชจ๋ํฐ, ์ธํฐ๋ท ํต์ , ๋ธ๋ฃจํฌ์ค ํต์ , ์๋ฆฌ์ผ ํต์
- ์ง์ ๋ฐ์ดํฐ ์
์ถ๋ ฅ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ์
์ถ๋ ฅ
- ์ง์ ์
์ถ๋ ฅ
- ์ด์์ฒด์ ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ HW ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณต์์ด ๊ทธ๋๋ก ์ ๋ฌ
- #RAW Device
- #Special File (!Regular File)
- #Major Number, Minor Number
- ๊ฐ์ ์
์ถ๋ ฅ (๋๋ถ๋ถ์ด)
- ์ด์์ฒด์ ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ HW ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ์ ๋ฌ
- #๊ณ์ธต์ ์ ์ฅ๊ตฌ์กฐ๋ฅผ ์ํด์
- #ํ์ผ ์์คํ
- #TCP/IP ํ๋กํ ์ฝ ๋คํธ์ํฌ ํจํท(ํค๋) ๊ฐ์ ๊ฑธ ๋ถ์ด๋
- ์ง์ ์
์ถ๋ ฅ
- ๋ฌธ์ Character ์
์ถ๋ ฅ ์ฅ์น์ ๋ธ๋ก Block ์
์ถ๋ ฅ์ฅ์น
- ๋ฌธ์ ์
์ถ๋ ฅ ์ฅ์น
- ๋ฐ์ดํธ ๋จ์์ ๊ฐ๋ณ์ ํฌ๊ธฐ์ ์ ์ถ๋ ฅ (ํค๋ณด๋, LAN ๋ฑ)
- ๋ธ๋ก ์
์ถ๋ ฅ ์ฅ์น
- ๋์คํฌ์ 512๋ฐ์ดํธ ๋จ์ ์ ์ถ๋ ฅ๊ณผ ๊ฐ์ด ์ผ์ ํ ํฌ๊ธฐ์ ๋ธ๋ก ๋จ์ ์ ์ถ๋ ฅ
- #ํ๋๋์คํฌ๋ ํ ๋ฐ์ดํธ๋ฅผ ์์ ํ๋ ค๋ฉด ๊ทธ ๋ฐ์ดํธ๊ฐ ํฌํจ๋ ํ ์นํฐ๋ฅผ ์์ ํ๊ณ ์ ์ฒด๋ฅผ ๋ฎ์ด์์์ผ ํจ
- ๋ฌธ์ ์
์ถ๋ ฅ ์ฅ์น
ํ์ผ ๊ธฐ์ ์ File Descriptor : ํ์ผ์ ์์ธ ์ ๋ณด์ ๋ํ ์ง์์
- ํ์ผ ์
์ถ๋ ฅ ์ ์ฐจ (์ ๋์ค/๋ฆฌ๋
์ค)
- ์
์ถ๋ ฅ ์์คํ
ํธ์ถ (์์คํ
์ฝ)
- Open Read Write Close
- SW ์ธํฐ๋ฝํธ ๊ธฐ๋ฒ์ผ๋ก OS์ ์ง์
- Copy in
- ์ฌ์ฉ์ ์์ญ => ์ด์์ฒด์ ์์ญ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํฐ ๋ณต์ฌ
- Copy-out
- ์ฌ์ฉ์ ์์ญ <= ์ด์์ฒด์ ํฅ์ผ๋ก
- ์
์ถ๋ ฅ ์์คํ
ํธ์ถ (์์คํ
์ฝ)
- fd = open(โpathโ, โฆ) <= ํ์ผ ๊ธฐ์ ์
- n = read(fd, buf, size)
- n = write(fd, buf, size)
close(fd)
ํ์ผ ํ ์ด๋ธ
๋๊ธฐ ์ ์ถ๋ ฅ Blocking IO๊ณผ ๋น๋๊ธฐ ์ ์ถ๋ ฅ Non-Blocking IO
- ์
๋ ฅ ๋๊ธฐ ๋ฐฉ์
- n = read(fd, buf, size)
- 1๋ฐ์ดํธ๋ผ๋ ์ ๋ ฅ๋ ๋ ๊น์ง ๋๊ธฐ โ Blocking IO
- size ๋ฐ์ดํธ๊น์ง ๋๊ธฐ โ Blocking IO
- ์ ๋ ฅ์ด ์์ผ๋ฉด ๋๊ธฐ์์ด ์ค๋ฅ ๋ฆฌํด โ Non-Blocking IO
- n = read(fd, buf, size)
- ์ถ๋ ฅ ๋๊ธฐ ๋ฐฉ์
- n = write(fd, buf, size)
- 1 ๋ฐ์ดํธ๋ผ๋ ์ถ๋ ฅ๋ ๋๊น์ง ๋๊ธฐ โ Blocking IO
- size ๋ฐ์ดํธ๊น์ง ๋๊ธฐ โ Blocking IO
- ํ์ฌ ์ถ๋ ฅ์ด ๋ถ๊ฐ๋ฅํ๋ฉด ๋๊ธฐ ์์ด ์ค๋ฅ ๋ฆฌํด โ Non-Blocking IO
์ ์ค์ํ๋, ์ธํฐ๋ท์์ ํด๋ผ๊ฐ ์ด๋ค ํฌํธ ์ฌ์ดํธ์ ๋ก๊ทธ์ธ์ ์ ์ฒญํ๋ฉด ์ด ํ๋ก๊ทธ๋จ์ ์ด์ ๋ญ ๋ฐ์์ผํด ์์ด๋ํ๊ณ ํจ์ค์๋๋ฅผ ์ฝ์ด๋ค์ด์ผ๊ฒ ์ง ๊ทธ๊ฒ ์ด๊ฑธ๋ก ํ๋๊ฑฐ์ผ ์ธํฐ๋ท์์๋ read ๋์ receive๋ ๊ฐ๋ฅ, ์๋ฒ ์ ์ฅ์์๋ ํฉ๋ฆฌ์ ์ธ ์๊ฐ ๋ด์์ ์ ๋ ฅ์ ๋ฐ์์ผ ํ๊ฒ ์ง, ๊ทผ๋ฐ ํด๋ผ๊ฐ ๋ง์ฝ์ ์ ๋ ฅ์ ์ํด ๊ทธ๋ฌ๋ฉด ์ ๋ฐฉ์๊ทธ์ฌ (Block) ์ด์์ฒด์ ๋ฅผ ์ด์ํ๊ณ ์๋ค๋ฉด, ์ ๋ ฅ์ด ์์ผ๋๊น ์ ๋ ฅ ๋๊ธฐ ์ํ์์ ๋ฉ์ถฐ์๊ฒ ์ง, ํ ์ฌ๋์ด๋ฉด ๋ฌธ์ ๊ฐ ์๋๋ฐ ํด๋ผ๊ฐ ๋ง์ ์ฌ๋์ด ์ฐ๊ฒฐํด์ ์ ๋ ฅ์ ์ํ๊ณ ์๋ค๋ฉด.., + ์ ์ํ ๋๋ง๋ค ๋ฉ๋ชจ๋ฆฌ๋ ํ ๋น์ ํด์ฃผ๋๋ฐ ๊ทธ๊ฒ ์๋๋ค, DOS ๊ณ ์๋ก ์ฐ๊ฒฐ์ ํ๊ณ ์ ๋ ฅ์ ์ํ๋๊ฒ, ๊ทธ๋์ Non-Blocking ๋ฐฉ์์ผ๋ก, ์ด๋ ์ผ์ ์๊ฐ ๋์ ์ ๋ ฅ์ด ์์ผ๋ฉด ๋์ด๋ฒ๋ฆผ, ๊ทธ๋ฐ๊ฒ๊ณผ ๊ด๋ จ์ด ์๋ค
- ์
์ถ๋ ฅ ์ฅ์น ๊ตฌ๋๊ธฐ (๋๋ผ์ด๋ฒ ๋๋ผ์ด๋ฒ Device Driver)
- ๋ฉ๋ชจ๋ฆฌ ๋์ ์ ์ถ๋ ฅ, ๊ฒฉ๋ฆฌ๋ ์ ์ถ๋ ฅ
- ๋๊ธฐ ์
๋ ฅ
- ๋์คํฌ ๋ฑ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ์ปดํจํฐ ๋ด๋ถ์ ์ ์ฅ๋์ด ์๋ ๊ฒฝ์ฐ
- ๋ช ๋ น ๋ ์ง์คํฐ์ โ์ฝ๊ธฐโ ๋ช ๋ น์ ๋ช ์์ ์ผ๋ก ์ค์
- ๋น๋๊ธฐ ์
๋ ฅ
- ํค๋ณด๋, LAN ๋ฑ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ์ปดํจํฐ ์ธ๋ถ์์ ์ธ์ ์ผ๋ง๋งํผ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋ ์ง ์์ธกํ ์ ์๋ ๊ฒฝ์ฐ
- ์ํ ๋ ์ง์คํฐ์ โ์ค๋นโ ์ํ๋ก๋ง ํ์ธํ์ฌ ์ ๋ ฅ
- ๋๊ธฐ ์ถ๋ ฅ
- ์ถ๋ ฅ์ ํญ์ ๋๊ธฐ์์ผ๋ก๋ง ์ด๋ฃฝ์ง
- ๋ช ๋ น ๋ ์ง์คํฐ์ โ์ฐ๊ธฐโ ๋ช ๋ น์ ๋ช ์์ ์ผ๋ก ์ค์
- ํ๋ก๊ทธ๋จ ์ ์ถ๋ ฅ (๋ฐ์ ๋๊ธฐ ์ ์ถ๋ ฅ Busy-waiting I/O)
- ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ๋ฐ๋ณต๊ตฌ๋ฌธ์ผ๋ก ์ง์์ ์ผ๋ก ์ฒดํฌํ์ฌ ์ ์ถ๋ ฅ
- ์ธํฐ๋ฝํธ ๊ธฐ๋ฐ ์ ์ถ๋ ฅ Interrupt-Driven I/O
- ์ ์ถ๋ ฅ ์๋ฃ ์ธํฐ๋ฝํธ ํ์ฉ
- vs Busy-Waiting
- ๊ณ์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ์ ๋ ฅ์ด ์์ ๋์๋ง ์ ๊น์ ๊น ๋ค๋ฅธ ์ผ
- CPU ํจ์จ ์ฆ๊ฐ
ISR Interrupt Service Routine
- DMA (Direct Memory access) IO
์ ์ถ๋ ฅ ์ ๋ด ํ๋ก์ธ์ ํ์ฉ
- ์ ์ถ๋ ฅ์
- ๋จ์ํ ์ธ๋ถ ์ฅ์น์ 3๊ฐ์ง ๋ ์ง์คํฐ์ค Data ๋ ์ง์คํฐ์ ๋ํด
- ๋ ์ง์คํฐ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ฐ์ดํฐ ๋ณต์ฌ = ์ ๋ ฅ
๋ฉ๋ชจ๋ฆฌ์์ ๋ ์ง์คํฐ๋ก ๋ฐ์ดํฐ ๋ณต์ฌ = ์ถ๋ ฅ
- DMA๋ ์ ๋ด์ฉ๋ง ํ ์ ์๋
- (Address, Count, Command)
- vs Busy-Waiting
- CPU๋ฅผ ๋ ๋ถ๋ ค๋จน์ ์ ์๋ค
- ์ฃผ๊ธฐ์ต์ฅ์น๊ฐ ์ฃผ๊ธฐ์ต์ฅ์น์ธ ์ด์ ๋ CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ธ๋ฐ,
- DMA๋ CPU์ฒ๋ผ ์ง์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฑฐ๋ ๋นผ๊ฑฐ๋
- = Direct Memory Access
- ์
์ถ๋ ฅ ์ฑ๋ IO Channel
- ์ ์ถ๋ ฅ์ด ์ง๋๊ฐ๋ ํต๋ก
- IOP IO Processor ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํจ
- DMA๋ ์ฑ๋ ์ค์ด ํ๋์
- ์ค๋ ํฐ ์ฑ๋, ๋ฉํฐํ๋ ์ ์ฑ๋, ๋ธ๋ก ๋ฉํฐํ๋ ์ ์ฑ๋ ๋ฑ์ ์ ํ์ด ์์
- Selector Channel ํ ๋ฒ์ ํ๋ (์๋๊ฐ ๋น ๋ฆ), Multiplexer Channel ๋ณ๋ ฌ ์ฒ๋ฆฌ (์๋๊ฐ ๋๋ ค์), Black Multiplexer Channel