์ดํ์ฌ์๋ํ๊ต (๋ฐํจ๊ฒฝ, 2014) - ์ด์์ฒด์
์ด๋ฒ ์ฑํฐ๋ ์ปดํจํฐ ์์คํ ์์ ํ๋์จ์ด๊ฐ ์ด๋ป๊ฒ ๋์ํ๊ณ ํ๋ก๊ทธ๋จ๋ค์ด ํ๋์จ์ด ์์์ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ์ค๋ช ํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค.
์ปดํจํฐ ์์คํ ๊ตฌ์กฐ
- Computer [CPU, Memory]
- I/O Device [Disk, Keyboard, Printer, Monitor]
๋ฉ๋ชจ๋ฆฌ๋ CPU์ ์์ ๊ณต๊ฐ์ด๋ค. CPU๋ ๋งค ์ฟจ๋ญ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์์ ๊ธฐ๊ณ์ด๋ฅผ ํ๋์ฉ ์ฝ์ด ์คํํ๋ค. I/O ๋๋ฐ์ด์ค๋ค์ ๋ณ๊ฐ์ ๋๋ฐ์ด์ค๋ค์ด๋ค. ํค๋ณด๋, ๋ง์ฐ์ค ๊ฐ์ ๊ฒ์ ๋๋๋ฆฌ๋ฉด ์ ๊ธฐ ์ ํธ๊ฐ ๋ค์ด๊ฐ๋ฏ๋ก input device, ํ๋ฆฐํฐ ๊ฐ์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ฏ๋ก output device์ด๋ค. Disk๋ input/output device ์ญํ ์ ๋ ๋ค ์ํํ๋ค.
i/o device๋ ๊ฐ๊ฐ์ ๋๋ฐ์ด์ค๋ค์ ์ ๋ดํ๋ ์์ CPU ๊ฐ์ ๊ฒ์ด ๋ถ์ด์๋๋ฐ, ์ด๋ฅผ Device Controller๋ผ๊ณ ํ๋ค. ๊ฐ i/o device์ ๋์์๋ Device Controller๊ฐ ์๋ํจ. CPUํํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ฏ์ด ์์ CPU๋ค๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค. ์ด๋ฅผ local buffer๋ผ๊ณ ํ๋ค.
CPU์ I/O Device์ ๊ฒฝ์ฐ ์ฒ๋ฆฌ ์๋๊ฐ ์๋นํ ์ฐจ์ด๋๋ค. ๊ทธ๋์ CPU๊ฐ ์ง์ ํด๋น ๋๋ฐ์ด์ค๋ฅผ ์๋์ํค์ง ์๊ณ Device Controller๊ฐ ๋ด๋นํ๋ ๊ฒ์ด๋ค. CPU๋ ๊ทธ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ธฐ๊ณ์ด๋ฅผ ์ฟจ๋ญ๋ง๋ค ์คํํ๋ ๊ฒ๋ง ํ๋ค. CPU์์๋ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ๋น ๋ฅด๋ฉด์ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๋ '๋ ์ง์คํฐ' ๋ผ๋ ๊ฒ์ด ์๋ค.
mode bit๋ ์๋๋ฐ, ์ด๋ CPU์์ ์คํ๋๋ ๊ฒ์ด ์ด์์ฒด์ ์ธ์ง ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ธ์ง๋ฅผ ๊ตฌ๋ถํด์ค๋ค. ์๊น ์ค๋ช ํ๋ฏ์ด CPU๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ช ๋ น์ด๋ฅผ ํ์คํ์ค ๊ฐ์ ธ์ ์คํํ๋๋ฐ, ์คํ ๋์ค์ ๋ง์ฝ ํค๋ณด๋๋ฅผ ์ ๋ ฅํ๋ค๋์ง ๋์คํฌ์์ ์ด๋ค ํ์ผ์ ์ฝ์ด์ผ ํ๋ค๋ฉด CPU๊ฐ ์ด๋ฅผ ์ด๋ป๊ฒ ์๋๋? ๋ฐ๋ก ๊ทธ๊ฒ์ ์ ๋ฌํ๋๊ฒ interrupt line์ด๋ค.
CPU๊ฐ ์ง์ i/o device์ ์ ๊ทผํ๋ ๊ฒ์ ์๋๊ณ device controller์๊ฒ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ผ๊ณ ์์ฒญํ๋ค. ๊ทธ๋ผ device controller๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ฉด์ ๋ก์ปฌ ๋ฒํผ๋ฅผ ํ์ฉํ๋ค. ์ด ๊ณผ์ ์์ CPU๋ ๋ ธ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ ์ดํ์ ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๋ค. ํค๋ณด๋ ์ ๋ ฅ์ ๋ฐ์์ผ ์ด๋ค ์ดํ์ ์์ ์ ํ ์ ์์ผ๋ฉด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ์์ ์ ํ๋ค. ์ด์ฒ๋ผ i/o device์ ์ ๊ทผํ ๋, ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋ CPU๊ฐ ๋ค์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ๋ฌดํ๋ฃจํ์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๋ค์ ์คํ์ ๋ชปํ ๊น?
์ด๋ ๊ทธ๋ฆผ ์ timer๋ผ๋ ์ฅ์น๋ฅผ ํตํด ์ผ์ ํ ์๊ฐ๋ง๋ค ํ๋ก๊ทธ๋จ์ด CPU๋ฅผ ๋ ์ ํ์ง ๋ชปํ๋๋ก ํ์ฌ ํด๊ฒฐํ๋ค. CPU๋ ๋ช ๋ น์ด ์คํ๋ง๋ค interrupt line์ ๋จผ์ ํ์ธํ์ฌ ์ธํฐ๋ฝํธ๊ฐ ์จ ๊ฒ์ ํ์ธํ๋๋ฐ, ์๊ฐ์ด ๋๋๋ฉด timer๋ CPU์๊ฒ ์ธํฐ๋ฝํธ๋ฅผ ๊ฑด๋ค. ๊ทธ๋ผ CPU๋ interrupt line์ ํ์ธํ์ฌ ํ๋ ์ผ์ ๋ฉ์ถ๊ณ ์ด์์ฒด์ ์๊ฒ CPU ๊ถํ์ด ๋์ด๊ฐ๊ฒ ๋๋๋ฐ, ๊ทธ๋ผ ์ด์์ฒด์ ๋ ๋ค์ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ก ํ๋ค.
์ฆ, CPU์ ์์ ๋ถ๋ฐฐ๋ฅผ ํ์ด๋จธ์ ์ด์์ฒด์ ๊ฐ ์๋ก ํ๋ ฅํ๋ฉฐ ์ํํ๋ค.
์ด์ ๋ฐ๋๋ก ๋ฌดํ๋ฃจํ๊ฐ ์๋ I/O ์ฅ์น์ ์ ๊ทผํด์ผํ๋ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์๊ฒ I/O ์ฅ์น์ ์ ๊ทผํ๊ณ ์ถ๋ค๋ ์์ฒญ์ ๋ณด๋ธ๋ค. ์ฆ, ์ค์ค๋ก CPU๋ฅผ ์ด์์ฒด์ ์๊ฒ ๋๊ธด๋ค. ๊ทธ๋ผ ์ด์์ฒด์ ๊ฐ ํด๋น ์์ ์ device controller์๊ฒ ๋๊ธด๋ค. ๊ทธ ํ Device Controller๊ฐ ์์ฒญํ ์์ ์ด ๋๋๋ฉด CPU์๊ฒ interrupt๋ฅผ ๊ฑด๋ค. CPU๋ ๋ค์ interrupt line์ ๋ณด๊ณ ๊ทธ ๊ฐ์ ์์ฒญํ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ์ ์ ํ ์ ํด์ค๋ค.
mode bit์ด๋ผ๋ ๊ฒ์ CPU๋ฅผ ์ฌ์ฉ์๊ฐ ๊ฐ์ง๊ณ ์๋์ง ์ด์์ฒด์ ๊ฐ ๊ฐ์ง๊ณ ์๋์ง ์๋ ค์ฃผ๋ ๋นํธ์ด๋ค.
0 : ์ปค๋ ๋ชจ๋ (์ด์์ฒด์ ๊ฐ CPU๋ฅผ ์ ์ )
1 : ์ฌ์ฉ์ ๋ชจ๋ (์ฌ์ฉ์๊ฐ CPU๋ฅผ ์ ์ )
์ปค๋ ๋ชจ๋์์๋ ๋ชจ๋ ๋ช ๋ น์ด๋ฅผ ์คํํ ์ ์๋๋ก ๋์ด์์ง๋ง, ์ฌ์ฉ์ ๋ชจ๋์์๋ ์ ํ๋ ๋ช ๋ น์ด๋ง ์คํํ ์ ์๋๋ก ๋์ด์๋ค. ์ด์์ฒด์ ๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ CPU๋ฅผ ๋๊ฒจ์ค ๋ ์ด ๋นํธ๋ฅผ 1๋ก ๋ง๋ค์ด ๋๊ธฐ๊ณ , ์ฌ์ฉ์๊ฐ I/O ์ฅ์น์ ์ ๊ทผํ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ๋ ค๊ณ ํ๋ฉด ์ด ๋นํธ๋ฅผ ๋ณด๊ณ ๋ง๋๋ค. ์ธํฐ๋ฝํธ๋ฅผ ํตํด ์ด์์ฒด์ ์๊ฒ CPU๊ฐ ๋์ด๊ฐ๋ฉด ํ๋์จ์ด๊ฐ ์ด๋ฅผ ๋ค์ 0์ผ๋ก ๋ง๋ ๋ค.
์ด๋ ๊ฒ ์ด์ค ๋ชจ๋๋ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์๋ชป๋ ์ํ์ผ๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ๋ฐ ์ด์์ฒด์ ์ ํผํด๊ฐ ๊ฐ์ง ์๋๋ก ํ๊ธฐ ์ํ ๋ณดํธ์ฅ์น์ด๋ค.
Timer
์ ํด์ง ์๊ฐ์ด ํ๋ฅธ ๋ค ์ด์์ฒด์ ์๊ฒ ์ ์ด๊ถ์ด ๋์ด๊ฐ๋๋ก ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์ํจ๋ค.
- ๋งค ์ฟจ๋ญ๋ง๋ค 1์ฉ ๊ฐ์ํ๊ณ 0์ด ๋๋ฉด ํ์ด๋จธ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ค.
Device Controller
- i/o ์ฅ์น์ ํ์ ๊ด๋ฆฌํ๋ ์ผ์ข ์ ์์ cpu
- ์ ์ด ์ ๋ณด๋ฅผ ์ํด control register, status register๋ฅผ ๊ฐ์ง (CPU๊ฐ ์ํจ ์ผ์ ๋ํ ์ ์ด ๋ช ๋ น์ ๋ด์)
- ๋ฉ๋ชจ๋ฆฌ๋ ๋์ผํ๊ฒ memory controller๊ฐ ์๋ค.
- device driver : OS ์ฝ๋ ์ค ๊ฐ ์ฅ์น๋ณ ์ฒ๋ฆฌ๋ฃจํด -> software
- ์ด๋ OS๊ฐ ์ง์ ์ฅ์น์ ์ ๊ทผ์ ํ๋ ๊ฒ์ ๋ํ software๊ฐ ์๋๊ณ OS์์ device controller์๊ฒ ์ด๋ฌํ ์์ ์ ์ํฌ ์ ์๋๋ก ํ๋ ์ฝ๋์ด๋ค.
- device controller๋ disk ์์ ํ์จ์ด๋ฅผ ํตํด ์ง์ i/o ์ฅ์น๋ฅผ ์ ์ดํ๋ค.
๊ทผ๋ฐ ์๊ฐํด๋ณด๋ฉด ์ปดํจํฐ์๋ ์๋ง์ ์ฅ์น๊ฐ ์ฐ๊ฒฐ๋์ด ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์ํค๋ฉด CPU๋ ์ด๋ฅผ ์ฒ๋ฆฌํ๋๋ผ ๋ณธ์ ์ ํ์ง ๋ชปํ๋ ๊ฒ์ ์๋๊น? ๊ทธ๋์ DMA(Direct Memory Access) Controller ๋ผ๋ ๊ฒ์ด ์กด์ฌํ๋ค. ์๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๋๊ฒ CPU๋ง ์์์ง๋ง DMA ๋ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๋ค. ์ด๋ ๋ ๊ฐ์ ์ปจํธ๋กค๋ฌ CPU, DMA๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋๋ฐ ์ด๋ฅผ Memory Controller๊ฐ ์ค์ฌํ๋ค.
DMA์ ์ญํ ์ i/o ์ฅ์น์๊ฒ ์จ ์ธํฐ๋ฝํธ์ ๋ํ ์์ ์ ์ฒ๋ฆฌํด์ค๋ค. ์ฆ, device controller๊ฐ ์์ ์ ๋๋ด๊ณ local buffer์ ์ ์ฅ๋์ด ์๋ ๋ด์ฉ์ ๋๊ธฐ๋ฉด ์ด๋ฅผ DMA๊ฐ ๋ณด๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด์ ์ ์ฅ๊น์ง ๋ค ํด์ค ํ์ CPU์๊ฒ ์์ ์ด ๋๋ฌ๋ค๋ ํ ๋ฒ์ ์ธํฐ๋ฝํธ๋ก ์๋ ค์ค๋ค.
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ I/O๋ฅผ ํ๋๊ฐ?
- ์์คํ ์ฝ(System call)
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ ์๊ฒ I/O ์์ฒญ (์ด์์ฒด์ ์ ์ปค๋ ํจ์ ํธ์ถ)
- ์ง์ OS์ ํด๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ์ ํํ๋ ๊ฒ์ด ์๋
- interrupt line์ ์ ํ ํ๋ ๋ช ๋ น์ด๋ฅผ ์ํํ์ฌ ์ด์์ฒด์ ์๊ฒ CPU๋ฅผ ๋๊น
์ธํฐ๋ฝํธ (Interrupt)
์ธํฐ๋ฝํธ ๋นํ ์์ ์ ๋ ์ง์คํฐ์ program counter๋ฅผ save ํ ํ CPU์ ์ ์ด๋ฅผ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๋ฃจํด์ ๋๊ธด๋ค.
- ํ๋์จ์ด ์ธํฐ๋ฝํธ (interrupt) : ํ๋์จ์ด๊ฐ ๋ฐ์์ํจ ์ธํฐ๋ฝํธ
- ์ํํธ์จ์ด ์ธํฐ๋ฝํธ (trap)
- Exception : ํ๋ก๊ทธ๋จ์ด ์ค๋ฅ๋ฅผ ๋ฒํ ๊ฒฝ์ฐ
- System call : ํ๋ก๊ทธ๋จ์ด ์ปค๋ ํจ์๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ
์ธํฐ๋ฝํธ ๊ด๋ จ ์ฉ์ด
- ์ธํฐ๋ฝํธ ๋ฒกํฐ
- ํด๋น ์ธํฐ๋ฝํธ์ ์ฒ๋ฆฌ ๋ฃจํด ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์
- ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๋ฃจํด (=Interrupt Service Routine, ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ)
- ํด๋น ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ปค๋ ํจ์
'๊ฐ๋ฐ > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด์์ฒด์ ๋ชจ์๋ฉด์ ์คํฐ๋ ํ๊ณ (1) | 2024.09.17 |
---|---|
02-2. ์์คํ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋จ ์คํ (0) | 2024.08.16 |
01. ์ด์์ฒด์ ๊ฐ์ (0) | 2024.08.16 |
[์คํฐ๋] 5-1. ๋๊ธฐํ๋? (0) | 2024.08.15 |
[์คํฐ๋] 4-2. CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ (1) | 2024.08.15 |