1. ์ปดํจํฐ ์์คํ ์ ๊ตฌ์กฐ
- ์ปดํจํฐ ๋ด๋ถ์ฅ์น : CPU, ๋ฉ๋ชจ๋ฆฌ
- ์ปดํจํฐ ์ธ๋ถ์ฅ์น : ๋์คํฌ, ํค๋ณด๋, ๋ง์ฐ์ค, ๋ชจ๋ํฐ, ๋คํธ์ํฌ ์ฅ์น ๋ฑ -> ์ ์ถ๋ ฅ(input-output: I/O)๋ผ๊ณ ๋ ํจ
- ์ปดํจํฐ๋ ์ธ๋ถ์ฅ์น์์ ๋ด๋ถ์ฅ์น๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์(input) ๊ฐ์ข ์ฐ์ฐ์ ์ํ ํ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ธ๋ถ์ฅ์น๋ก ๋ค์ ๋ด๋ณด๋ด๋(output) ๋ฐฉ์์ผ๋ก ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ค.

2. CPU ์ฐ์ฐ๊ณผ I/O ์ฐ์ฐ
- ์ ์ถ๋ ฅ ์ปจํธ๋กค๋ฌ : ์ ์ถ๋ ฅ ์ฅ์น๋ค์ I/O ์ฐ์ฐ ๋ด๋น
- ๋ฉ์ธ CPU : ์ปดํจํฐ ๋ด์์ ์ํ๋๋ ์ฐ์ฐ ๋ด๋น
- ์ ์ถ๋ ฅ ์ฅ์น์ ๋ฉ์ธ CPU๋ ๋์ ์ํ์ด ๊ฐ๋ฅํ๋ค.
- ๋ก์ปฌ๋ฒํผ : ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๊ธฐ ์ํด ์ปจํธ๋กค๋ฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ ๋ฉ๋ชจ๋ฆฌ
- ์ธํฐ๋ฝํธ : ์ปจํธ๋กค๋ฌ๋ค์ด CPU์ ์๋น์ค๊ฐ ํ์ํ ๋ ์ด๋ฅผ ํต๋ณดํ๋ ๋ฐฉ๋ฒ
- ์ฐ์ฐ ๊ณผ์ :
- CPU๋ ๋งค ์์ ๋ฉ๋ชจ๋ฆฌ์์ ๋ช ๋ น(instruction)์ ํ๋์ฉ ์ฝ์ด์์ ์ํ -> CPU ์์๋ ์ธํฐ๋ฝํธ ๋ผ์ธ์ด ์์ด์ CPU๊ฐ ์์ ์ ์์ ์ ํ๋ ์ค๊ฐ์ ์ธํฐ๋ฝํธ ๋ผ์ธ์ ์ ํธ๊ฐ ๋ค์ด์ค๋ฉด ํ๋ ์ผ์ ๋ฉ์ถ๊ณ ์ธํฐ๋ฝํธ์ ๊ด๋ จ๋ ์ผ์ ์ฒ๋ฆฌ
- ์ฆ, CPU๋ ๋ช ๋ น ํ๋๋ฅผ ์ํํ ๋๋ง๋ค ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๋ค.
3. ์ธํฐ๋ฝํธ์ ์ผ๋ฐ์ ๊ธฐ๋ฅ
- ํ๋์จ์ด ์ธํฐ๋ฝํธ : ์ปจํธ๋กค๋ฌ ๋ฑ ํ๋์จ์ด ์ฅ์น๊ฐ CPU์ ์ธํฐ๋ฝํธ ๋ผ์ธ ์ธํ
- ์ํํธ์จ์ด ์ธํฐ๋ฝํธ(trap) : ์ํํธ์จ์ด๊ฐ ์ธํฐ๋ฝํธ ๋ผ์ธ ์ธํ
- ์) ์์ธ์ฌํญ(exception)๊ณผ ์์คํ ์ฝ(system call) -> ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ก๋ถํฐ CPU์ ์ ์ด๊ถ์ด ์ด์์ฒด์ ์ ์ด์๋์ด ์ฒ๋ฆฌ๋๋ค.
- ์ธํฐ๋ฝํธ ๋ฒกํฐ(interrupt vector) : ์ธํฐ๋ฝํธ ์ข ๋ฅ๋ง๋ค ๋ฒํธ๋ฅผ ์ ํด์, ๋ฒํธ์ ๋ฐ๋ผ ์ฒ๋ฆฌํด์ผ ํ ์ฝ๋๊ฐ ์์นํ ๋ถ๋ถ์ ๊ฐ๋ฆฌํค๋ ์๋ฃ๊ตฌ์กฐ
- ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๋ฃจํด(interrupt service routine) ๋๋ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ (interrupt handler) : ์ค์ ์ฒ๋ฆฌํด์ผ ํ ์ฝ๋๊ฐ ์ ์๋ ๊ณณ
4. ์ธํฐ๋ฝํธ ํธ๋ค๋ง
- ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ ์ฒ๋ฆฌํด์ผ ํ ์ผ์ ์ ์ฐจ๋ฅผ ๋งํ๋ค.
- ํ๋ก์ธ์ค ์ ์ด๋ธ๋ก(Process Control Block: PCB) : ์ด์์ฒด์ ๊ฐ ํ์ฌ ์์คํ
๋ด์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด ๊ฐ์ง๊ณ ์๋ ์๋ฃ๊ตฌ์กฐ
- ๊ฐ๊ฐ์ ํ๋ก๊ทธ๋จ๋ง๋ค ํ๋์ฉ ์กด์ฌํ๋ฉฐ ํด๋น ํ๋ก๊ทธ๋จ์ ์ด๋ ๋ถ๋ถ์ด ์คํ ์ค์ด์๋์ง๋ฅผ ์ ์ฅํ๊ณ ์๋ค.
- ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ด๋ ์ฝ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ ์ง์คํฐ๊ฐ, ํ๋์จ์ด ์ํ ๋ฑ์ด ์ ์ฅ๋๋ค.
5. ์ ์ถ๋ ฅ ๊ตฌ์กฐ
- ๋๊ธฐ์ ์
์ถ๋ ฅ (synchronous I/O)
- ์ด๋ค ํ๋ก๊ทธ๋จ์ด ์ ์ถ๋ ฅ ์์ฒญ์ ํ์ ๋ ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋ ํ์์ผ ๊ทธ ํ๋ก๊ทธ๋จ์ด ํ์ ์์ ์ ์ํํ ์ ์๋ ๋ฐฉ์
- CPU์ ๋ช ๋ น ์ํ ์๋๋ ์ ์ถ๋ ฅ ์ฅ์น์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๋ฑ์ ์ ์ถ๋ ฅ ์ฐ์ฐ์ ์๋์ ์ผ๋ก ๋๋ฆฌ๋ค. ๋๊ธฐ์ ์ ์ถ๋ ฅ์์ CPU๋ ์ ์ถ๋ ฅ ์ฐ์ฐ์ด ๋๋ ๋๊น์ง ์ธํฐ๋ฝํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ์์์ ๋ญ๋นํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์ ์ถ๋ ฅ์ ์ํ ์ค์ธ ๊ฒฝ์ฐ CPU๋ฅผ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ ์ด์ํด CPU๊ฐ ๊ณ์ ์ฌ์ง ์๊ณ ์ผํ ์ ์๋๋ก ๊ด๋ฆฌํ๋ค.
- ์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋จ์ ๋ช ๊ฐ์ง ์ํ๋ก ๋๋๊ณ ์ ์ถ๋ ฅ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ๋ด์ ์ํ(blocked state)๋ก ์ ํ์ํจ๋ค. ๋ด์ ์ํ์ ํ๋ก๊ทธ๋จ์ ์ ์ถ๋ ฅ์ด ์๋ฃ๋ ๋๊น์ง CPU๋ฅผ ํ ๋นํ๋๋ผ๋ ๋ช ๋ น์ ์ํํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ CPU๋ฅผ ํ ๋นํ์ง ์๋๋ค.
- ์ ์ถ๋ ฅ ์์ฒญ์ ๋๊ธฐํ๋ฅผ ์ํด ์ฅ์น๋ณ๋ก ํ(queue)๋ฅผ ๋์ด ์์ฒญํ ์์๋๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ค.
- ๋น๋๊ธฐ์ ์
์ถ๋ ฅ (asynchronous I/O)
- ์ ์ถ๋ ฅ ์ฐ์ฐ์ ์์ฒญํ ํ์ ์ฐ์ฐ์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ CPU์ ์ ์ด๊ถ์ ์ ์ถ๋ ฅ ์ฐ์ฐ์ ํธ์ถํ ๊ทธ ํ๋ก๊ทธ๋จ์๊ฒ ๊ณง๋ฐ๋ก ๋ค์ ๋ถ์ฌํ๋ ๋ฐฉ์์ด๋ค.

6. DMA (Direct Memory Access)
- ์ผ์ข ์ ์ปจํธ๋กค๋ฌ๋ก์, CPU๊ฐ ์ ์ถ๋ ฅ ์ฅ์น๋ค์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์์ฒญ์ ์ํด ์์ฃผ ์ธํฐ๋ฝํธ ๋นํ๋ ๊ฒ์ ๋ง์์ฃผ๋ ์ญํ ์ ํ๋ค.
- ๋ก์ปฌ๋ฒํผ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฝ์ด์ค๋ ์์ ์ CPU ๋์ ์ํํ๋ค. -> CPU๋ ์๋ ํ๋ ์์ ์ ๋ฉ์ถ๊ณ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ ํ์๊ฐ ์์ด์ง๋ค.
- ๋ฐ์ดํธ(byte) ๋จ์๊ฐ ์๋ ๋ธ๋ก(block)์ด๋ผ๋ ํฐ ๋จ์๋ก ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฝ์ด์จ ํ์ CPU์๊ฒ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์์ผ์ ํด๋น ์์ ์ ์๋ฃ๋ฅผ ์๋ ค์ค๋ค.
7. ์ ์ฅ์ฅ์น์ ๊ตฌ์กฐ
- ์ฃผ๊ธฐ์ต์ฅ์น
- ํ๋ฐ์ฑ(volatile)์ด๋ค. -> ๋ณดํต ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ์ ์์ด ๋๊ฐ๋ฉด ์ ์ฅ๋์๋ ๋ด์ฉ์ด ๋ชจ๋ ์ฌ๋ผ์ง๋ RAM์ ๋งค์ฒด๋ก ์ฌ์ฉํ๋ค.
- ๋ณด์กฐ๊ธฐ์ต์ฅ์น
- ๋นํ๋ฐ์ฑ(nonvolatile)์ด๋ค. -> ์ ์์ด ๋๊ฐ๋ ์ ์ฅ๋ ๋ด์ฉ์ ๊ธฐ์ตํ ์ ์๋ ๋ง๊ทธ๋คํฑ ๋์คํฌ๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- ์ฉ๋๋ 1. ํ์ผ ์์คํ ์ฉ, 2. ์ค์์์ญ์ฉ์ผ๋ก ๋๋๋ค.
- ํ์ผ ์์คํ ์ฉ : ์ ์์ด ๋๊ฐ๋ ์ ์งํด์ผ ๋๋ ์ ๋ณด๋ ํ์ผ ํํ๋ก ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์ ์ฅ.
- ์ค์ ์์ญ(swap area) : ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์ฅ ๊ณต๊ฐ์ธ ์ค์ ์์ญ์ผ๋ก ์ฌ์ฉ.
- ๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ธฐ๊ฐ ํ์ ๋์ด ์๊ณ ๋น์ธ๊ณ ์ฉ๋์ด ์ ๋ค. ๋ค์์ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋์์ ์ํ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์ด๋ ์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋จ ์ํ์ ๋น์ฅ ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋๊ณ ๊ทธ๋ ์ง ์์ ๋ถ๋ถ์ ๋์คํฌ์ ์ค์ ์์ญ์ ๋ด๋ ค๋๋๋ค(swap out).
8. ์ ์ฅ์ฅ์น์ ๊ณ์ธต ๊ตฌ์กฐ

- ์บ์ฑ๊ธฐ๋ฒ : ์๋์ ์ผ๋ก ์ฉ๋ต์ด ์ ์ ๋น ๋ฅธ ์ ์ฅ์ฅ์น๋ฅผ ์ด์ฉํด ๋๋ฆฐ ์ ์ฅ์ฅ์น์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ์ด์ฒด์ ๊ธฐ๋ฒ
9. ํ๋์จ์ด์ ๋ณด์
- ์ด์์ฒด์ ๋ ์ปค๋๋ชจ๋์ ์ฌ์ฉ์๋ชจ๋๋ฅผ ์ง์ํ๋ค.
- CPU๋ ๋ณด์๊ณผ ๊ด๋ จ๋ ๋ช ๋ น์ ์ํํ๊ธฐ ์ ์ ํญ์ ๋ชจ๋๋นํธ๋ฅผ ์กฐ์ฌํด ๊ทธ ๊ฐ์ด 0์ผ ๊ฒฝ์ฐ์๋ง ์ํํ๋ค.
- ์ปค๋๋ชจ๋(kerner mode)
- ์ด์์ฒด์ ๊ฐ CPU์ ์ ์ด๊ถ์ ๊ฐ์ง๊ณ ์ด์์ฒด๊ฒ ์ฝ๋๋ฅผ ์คํํ๋ ๋ชจ๋
- ๋ชจ๋ ์ข ๋ฅ์ ๋ช ๋ น์ ๋ค ์คํํ ์ ์์ด์ ์ค์ํ ์ ๋ณด์ ์ ๊ทผํด ์ํํ ์ํฉ์ ์ด๋ํ ์ ์๋ ์ฐ์ฐ์ ์ปค๋๋ชจ๋์์ ์คํ๋๋ค.
- ์ ์ถ๋ ฅ์ ํน๊ถ๋ช ๋ น์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋๋นํธ๊ฐ 0์ผ ๋๋ง ์ํ๊ฐ๋ฅํ๋ค.
- mode bit 0
- ์ฌ์ฉ์๋ชจ๋(user mode)
- ์ผ๋ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉฐ ์ ํ์ ์ธ ๋ช ๋ น๋ง ์ํํ ์ ์๋ค.
- mode bit 1
- ํ๋์จ์ด ์ ๊ทผ ๋ฑ ๋ณด์์ด ํ์ํ ๋ช ๋ น(ํน๊ถ๋ช ๋ น)์ ์ํํด์ผ ํ ๊ฒฝ์ฐ ์์คํ ์ฝ์ ํตํด ์ด์์ฒด์ ๊ฐ ๋์ ํด ์ค ๊ฒ์ ์์ฒญํ๋ค.
10. ๋ฉ๋ชจ๋ฆฌ ๋ณด์
- ์ธํฐ๋ฝํธ ๋ฐฑํฐ์ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๋ฃจํด์ด ์๋ ๊ณณ์ ๋ณด์์ด ์ค์ํ๋ค.
- ํด๊ฒฐ๋ฐฉ๋ฒ : 2๊ฐ์ ๋ ์ง์คํฐ, ๊ธฐ์ค ๋ ์ง์คํฐ(base register)์ ํ๊ณ ๋ ์ง์คํฐ(limit register)๋ฅผ ์ฌ์ฉํด์ ํ๋ก๊ทธ๋จ์ด ์ ๊ทผํ๋ ค๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ๋ถ์ด ํฉ๋ฒ์ ์ธ์ง ์ฒดํฌํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณดํธํ๋ค.
11. CPU ๋ณดํธ
- CPU๊ฐ ํ๋์ ํ๋ก๊ทธ๋จ์ ์ํด ๋ ์ ๋๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ์ด์์ฒด์ ๋ ํ์ด๋จธ๋ผ๋ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ๋ค.
- ํ์ด๋จธ(timer)๋ ์ ํด์ง ์๊ฐ์ด ์ง๋๋ฉด ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์์ผ ์ด์์ฒด์ ๊ฐ CPU์ ์ ์ด๊ถ์ ํ๋ํ ์ ์๋๋ก ํ๋ ์ญํ ์ ์ํํ๋ค.
- ๋ก๋ ํ์ด๋จธ(load timer) : ํ์ด๋จธ์ ๊ฐ์ ์ธํ ํ๋ ๋ช ๋ น. ํน๊ถ๋ช ๋ น์ ์ํ๋ค.
12. ์์คํ ์ฝ์ ์ด์ฉํ ์ ์ถ๋ ฅ ์ํ
- ์์คํ
์ฝ
- ํน๊ถ๋ช ๋ น์ธ ์ ์ถ๋ ฅ ๋ช ๋ น์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ง์ ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์์ฒด์ ์๊ฒ ์์คํ ์ฝ์ด๋ผ๋ ์๋น์ค ๋ํ ์์ฒญ์ ํตํด ์ ์ถ๋ ฅ์ ์ํํ๋ค.
- ์ํํธ์จ์ด์ ์ธ ์ธํฐ๋ฝํธ๋ก์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์์คํ ์ฝ์ ํ ๊ฒฝ์ฐ ํธ๋ฉ์ด ๋ฐ์ํด CPU์ ์ ์ด๊ถ์ด ์ด์์ฒด์ ๋ก ๋์ด๊ฐ๋ค. ์ด์์ฒด์ ๋ ํด๋น ์์คํ ์ฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฃจํด์ผ๋ก ๊ฐ์ ์ ์๋ ๋ช ๋ น์ ์ํํ๋ค.
์ฐธ๊ณ ์๋ฃ
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/13_IOSystems.html
https://techdifferences.com/difference-between-cache-memory-and-main-memory.html
๋๊ธ