
์, ์์ํด๋ด ์๋ค. ์ค๋์ ์ง์ ํผ์ ์๋ ๋ ์ด๊ณ , ๋น์ ์ ์ฃผ๋ฐฉ์์ ๋ง์๋ ์ด์ฝ๋ฆฟ ์นฉ ์ฟ ํค๋ฅผ ๋ง๋ค๊ณ ์์ด์. ๋ฐ์ฃฝ๊ธฐ์์ ๋ฒํฐ๋ฅผ ๋ น์ด๊ณ , ์คํ์ ๋ฃ๊ณ , ์ฌ๋ฃ๋ฅผ ํ๋ํ๋ ์์ผ๋ฉฐ ๋ ์ํผ๋ฅผ ๋ฐ๋ผ๊ฐ์ฃ . ๊ทธ๋ฐ๋ฐ ์ด๋โฆ
๐๏ธ โ๋ฉ๋!โ
๋ฌธ ์์์ ๋๊ตฐ๊ฐ ์ด์ธ์ข ์ ๋๋ ์ต๋๋ค. ์ค์ํ ์ํฌ์ผ ์๋ ์๊ณ , ๊ทธ๋ฅ ์ง๋๊ฐ๋ ์ธ์ผ์ฆ๋งจ์ผ ์๋ ์์ด์. ๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋โ์ฟ ํค ๋ฐ์ฃฝ ์ค๊ฐ์ ๋๊ฐ ์๋์ง ์ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฟ ํค๋ฅผ ํ์ฐ์ง ์์ผ๋ฉด์๋ ๋๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
๋ฐ๋ก ์ด ์ํฉ, ์ปดํจํฐ์์๋ ๊ทธ๋๋ก ์ผ์ด๋ฉ๋๋ค.
์ปดํจํฐ๋ "ํ ๋ฒ์ ํ ๊ฐ์ง ์์
"์ ์์๋๋ก ์ฐฉ์คํ ์ฒ๋ฆฌํ์ง๋ง, ๊ฐ์๊ธฐ ์ค์ํ ์ธ๋ถ ์ด๋ฒคํธ(์
๋ ฅ, ๋์ฐฉํ ๋คํธ์ํฌ ํจํท, ์๋ ๋ฑ)๊ฐ ๋ฐ์ํ ์๋ ์์ฃ .
๊ทธ๋ผ ์ปดํจํฐ๋ ์ด๋ป๊ฒ ์ด์ธ์ข ์ ๋ฐ์ํ ๊น์?
๋ต์ ๋ฐ๋ก ์ธํฐ๋ฝํธ(Interrupt) ์์คํ ์ ๋๋ค.
์ฒ์์ ์ด๋ ๊ฒ ํ ์ ์์ต๋๋ค:
์ฟ ํค ๊ตฝ๊ธฐ โ ์ด์ธ์ข
์ด ์ธ๋ ธ๋์ง ํ์ธ โ ์๋๋ฉด ๊ณ์ โ ๋ ํ์ธ โ ๋ ํ์ธ
์ด๋ฐ ๋ฐฉ์์ ์ค์ ๋ก ์กด์ฌํด์. ์ด๋ฆํ์ฌ ํด๋ง(polling). ์ปดํจํฐ๊ฐ ์ผ์ ์ฃผ๊ธฐ๋ง๋ค ์ธ๋ถ ์ ๋ ฅ์ด ์๋์ง ๊ณ์ ๊ฒ์ฌํ๋ ๋ฐฉ์์ด์ฃ . ์ด์ธ์ข ์ด ์ธ๋ ธ๋์ง ๋ฐ๋ณต์ ์ผ๋ก ํ์ธํ๋ ๊ฑฐ์์.
ํ์ง๋ง ์ด ๋ฐฉ์์ ๋ฌธ์ ๊ฐ ๋ง์์:
๐ โ๊ณ์ ์ณ๋ค๋ด์ผ ๋ฐ์ํ ์ ์๋ ์์คํ , ๋นํจ์จ์ ์ด์ฃ .โ
๊ทธ๋์ ๋ ๋๋ํ ์์คํ ์ด ํ์ํ์ต๋๋ค.
์ด์ ์ปดํจํฐ๋ ๋ง์น ์ด์ธ์ข ์ด ์ธ๋ฆด ๋๋ง ๋ฐ์ํ๋ ์ด์ธ์ข ์์คํ ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
์ด๊ฒ ๋ฐ๋ก ์ธํฐ๋ฝํธ ์์คํ ์ ๋๋ค.
| ์ํฉ | ์ค๋ช |
|---|---|
| ํค๋ณด๋ ์ ๋ ฅ | ์ฌ์ฉ์๊ฐ ํค๋ฅผ ๋๋ฅด๋ฉด ์ฆ์ ๋ฐ์ํด์ผ ํจ |
| ํ์ด๋จธ ์๋ | ํ๋ก๊ทธ๋จ์ ์ผ์ ์๊ฐ ํ ๋ฉ์ถ๊ฑฐ๋ ์ฌ์์ํด์ผ ํจ |
| ๋คํธ์ํฌ ์์ | ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ์ ๋ ์ฆ์ ์ฝ์ด์ผ ํจ |
| ์์ธ ์ฒ๋ฆฌ | ์ค๋ฅ ์ํฉ์ด ๋ฐ์ํ๋ฉด ์ฆ์ ์ค๋จํ๊ณ ์กฐ์น ํ์ |
์ปดํจํฐ๋ ์์๋๋ก ๋ช
๋ น์ด๋ฅผ ์ฐฉ์คํ๊ฒ ์คํํฉ๋๋ค.
ํ์ง๋ง ํ์ค ์ธ๊ณ๋ ์์ธก ๋ถ๊ฐ๋ฅํ์ฃ .
์ด๋ฐ ์ํฉ์์ CPU๋ ํ์ฌ ์์
์ ์ ๊น ๋ฉ์ถ๊ณ ,
๋ ์ค์ํ ์์
(์ด์ธ์ข
์๋ ๋ฑ)์ ์ฒ๋ฆฌํ ๋ค,
๋ค์ ๋์์ ์๋ ์์
์ ๊ณ์ํฉ๋๋ค.
๊ทธ ์ค์ฌ์ ์๋ ๊ฒ์ด ๋ฐ๋ก ์ธํฐ๋ฝํธ ์์คํ ์ ๋๋ค.
| ์ปดํจํฐ ๊ตฌ์ฑ ์์ | ์ฟ ํค ๋น์ |
|---|---|
| ํ๋ก๊ทธ๋จ | ์ฟ ํค ๋ ์ํผ |
| CPU | ์๋ฆฌ์ฌ |
| ๋ฉ๋ชจ๋ฆฌ | ์ฌ๋ฃ ์ฐฝ๊ณ |
| ์ธํฐ๋ฝํธ ์ ํธ | ์ด์ธ์ข ๋ฒจ |
| ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ | ๋ฌธ ์ด๊ณ ์๋ํ๋ ํ๋ |
์์ฆ ์ฐ์ด๋ ํ๋ก์ธ์ ๋๋ถ๋ถ์ ์ธํฐ๋ฝํธ ์์คํ ์ด ๋ค์ด๊ฐ๋๋ค.
์ธํฐ๋ฝํธ ์์คํ
์ ์ ์ ํ ์ ํธ๊ฐ ๋ค์ด์ค๋ฉด CPU ์คํ์ ์ ๊น ์ค๋จ์ํฌ ์ ์๋ ํ์ด๋ ์ ๊ธฐ ์ฐ๊ฒฐ์ ํฌํจํ๋ค. ํpin์ ์นฉ์ ์ฐ๊ฒฐ๋ ์ ๊ธฐ์ ์ ์ ์ ๋ปํ๋ ๋ง์ด๋ค.
์นฉ์๋ ํ์ฒ๋ผ ๋ณด์ด๋ ๋ถํ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๋ง, ์ฅ์น ํฌ๊ธฐ๊ฐ ์ค์ด๋ฆ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฐฉ์๋ ์ฐ์ด๊ธฐ ์์ํ๋ค. ๋ง์ ํ๋ก์ธ์ ์นฉ(ํนํ ๋ง์ดํฌ๋ก์ปดํจํฐ)์๋ ํตํฉ ์ฃผ๋ณ์ฅ์น๊ฐ ๋ค์ด ์๊ณ (์ด๋ฐ ์ฅ์น๋ฅผ ์จ์นฉon-chip I/O ์ฅ์น๋ผ๊ณ ๋ ํ๋ค),
์ด๋ฐ ์ฅ์น๋ค์ ๋ด๋ถ์ ์ผ๋ก ์ธํฐ๋ฝํธ ์์คํ ์ ์ฐ๊ฒฐ๋์ด ์๋ค.
์, ์ธํฐ๋ฝํธ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ค์ ์ปดํจํฐ ๊ด์ ์์ ์ดํด๋ณผ๊น์?


โ ์ฆ, ์ธํฐ๋ฝํธ๋ ํจ์ ํธ์ถ๊ณผ ์ ์ฌํ์ง๋ง, ์ธ๋ถ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํด์ผ ์๋ํด์.
| ์ธํฐ๋ฝํธ ๋ฒํธ | ์๋ฏธ | ํธ๋ค๋ฌ ์ฃผ์ |
|---|---|---|
| 0 | ๋๋์ ์ค๋ฅ | 0x0010 |
| 1 | ํค๋ณด๋ ์ ๋ ฅ | 0x0020 |
| 2 | ํ์ด๋จธ ์๋ฆผ | 0x0030 |
| 3 | ์ธ๋ถ ์ฅ์น ์ ํธ | 0x0040 |
| ๊ตฌ์ฑ ์์ | ์ค๋ช |
|---|---|
| ์ธํฐ๋ฝํธ ๋ผ์ธ | ํ๋์จ์ด ์ ํธ์ (CPU๋ก ์์ฒญ ์ ๋ฌ) |
| ์ธํฐ๋ฝํธ ๋ฒกํฐ | ์ธํฐ๋ฝํธ ์ข ๋ฅ๋ณ ์ฒ๋ฆฌ ๋ฃจํด์ ์ฃผ์ ํ ์ด๋ธ |
| ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ | ์ค์ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์ |
| PCB / ์คํ | ์์ ์ํ ์ ์ฅ์ (๋ณต๊ท๋ฅผ ์ํด ํ์!) |
์ธํฐ๋ฝํธ๋ ๊ฒฐ๊ตญ์ ์ผ์ข
์ ํจ์ ํธ์ถ์
๋๋ค.
๊ทธ๋์ ์ปดํจํฐ๋ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ ๋ ํ์ฌ ์ํ๋ฅผ ์คํ์ ์ ์ฅํฉ๋๋ค.
์ด ๋ชจ๋ ๊ฑธ ์ ์ฅํ ๋ค, ์์ ์ด ๋๋๋ฉด ์คํ์์ popํด์ ์๋๋๋ก ๋์์ต๋๋ค.
๐ ๊ทธ๋์ ์คํ์ด ์๋ค๋ฉด ํจ์ ํธ์ถ๋, ์ธํฐ๋ฝํธ๋ ์ ๋๋ก ์๋ํ ์ ์์ด์!
๋ชจ๋ ์ธํฐ๋ฝํธ๊ฐ ๋๋ฑํ๊ฒ ์ค์ํ ๊ฑด ์๋์์.
์๋ฅผ ๋ค์ด,
๊ทธ๋์ ์ปดํจํฐ๋ ๊ฐ ์ธํฐ๋ฝํธ์ ๋ํด ์ฐ์ ์์(priority)๋ฅผ ์ค์ ํฉ๋๋ค.
์ผ๋ถ ์ํฉ์์๋ ์ธํฐ๋ฝํธ๋ฅผ ์์ ๋ฌด์ํ๊ฑฐ๋ ์ฐจ๋จํ ํ์๋ ์์ด์.
"์ง๊ธ ๋ฐ์๋ ์ด์ธ์ข ์๋ฆฌ ๋ฌด์ํด์ฃผ์ธ์" โ ์ด ๋๋์ ๋๋ค.
์ธํฐ๋ฝํธ๋ ๊ผญ ์ธ๋ถ์์๋ง ๋ฐ์ํ์ง ์์์. ์ปดํจํฐ ๋ด๋ถ์์๋ ์์ธ(Exception)๋ผ๋ ํํ๋ก ๋ฐ์ํ ์ ์์ด์.
| ์์ธ ์ํฉ | ์ค๋ช |
|---|---|
| 0์ผ๋ก ๋๋๊ธฐ | ์ํ์ ์ค๋ฅ |
| ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ | ์คํ ์ค๋ฒํ๋ก |
| ์ ๊ทผ ๊ธ์ง | ๋ณดํธ๋ ์์ญ ์นจ๋ฒ |
์ด๋๋ ์ธํฐ๋ฝํธ ๋ฒกํฐ๋ฅผ ๋ฐ๋ผ ์์ธ ํธ๋ค๋ฌ๋ก ์ ํํ์ฌ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์์ธ ์ํฉ์ ๋ํ ๋ณต๊ตฌ, ๋ก๊น
, ์ฌ์ฉ์ ๋ฉ์์ง ์ถ๋ ฅ ๋ฑ์ด ์ด๋ ์คํ๋์ฃ .
์ธํฐ๋ฝํธ๋ ๋ค์๊ณผ ๊ฐ์ ์ฅ์น๋ ์์๋ค์ ์ํด ์์ฑ๋ ์ ์์ด์.
| ๋ฐ์ ์ฃผ์ฒด | ์์ |
|---|---|
| ํ๋์จ์ด | ํค๋ณด๋, ๋ง์ฐ์ค, ๋คํธ์ํฌ, ํ์ด๋จธ |
| ์ํํธ์จ์ด | ์์คํ ์ฝ, ์ ๋์ค ์๊ทธ๋, ์ํํธ์จ์ด ์ธํฐ๋ฝํธ |
| ๋ด๋ถ ์ด๋ฒคํธ | ์์ธ, ๋๋ฒ๊น , ๋ถ๋ฒ ๋ช ๋ น ์คํ ๋ฑ |
์ด์์ฒด์ ๋ ์ธํฐ๋ฝํธ๋ฅผ ๋ฉํฐํ์คํน์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํด์.
์ฆ, ์ฌ๋ฌ๋ถ์ด ์๋์ฐ์์ ํฌ๋กฌ๊ณผ ์นด์นด์คํก์ ๋์์ ์คํํ ์ ์๋ ๊ฑด ์ธํฐ๋ฝํธ ์์คํ ๋๋ถ์ด์์.


๐ Trap๋ ์ธํฐ๋ฝํธ๋ค! ๋จ์ง โ์ํํธ์จ์ด๊ฐ ๋ฐ์โ์์ผฐ๋ค๋ ์ ๋ง ๋ค๋ฆ.
์ถ์ฒ : https://velog.io/@woo00oo/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8Interrupt

๋ฉํฐํ์คํน ์์คํ ์์ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์์ ์คํ๋๊ณ ์์ด๋,
๊ฐ ํ๋ก๊ทธ๋จ์ โ๋ด๊ฐ ์ ์ผํ๊ฒ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จโ์ด๋ผ๊ณ ์ฐฉ๊ฐํฉ๋๋ค.
์ด๊ฑด MMU(๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ฅ์น) ๋๋ถ์ด์์.
๋ง์์.
ํ์ด๋จธ๋ ๋์คํฌ ๊ฐ์ I/O ์ฅ์น๋ ์์คํ
์ ์ฒด์ ์ํฅ์ ์ฃผ๋ ํ๋์จ์ด๋ผ์ ํจ๋ถ๋ก ๊ฑด๋๋ฆฌ๋ฉด ๊ณค๋ํด์ ธ์.
์๋ฅผ ๋ค์ด:
CPU๋ ๋ ๊ฐ์ง ๋ชจ๋๋ฅผ ๊ตฌ๋ถํด์:
| ๋ชจ๋ | ์ค๋ช |
|---|---|
| ๐งโโ๏ธ ์ฌ์ฉ์ ๋ชจ๋(User Mode) | ์ผ๋ฐ ์ฑ์ด๋ ์ฌ์ฉ์ ์ฝ๋๊ฐ ์คํ๋๋ ๊ณต๊ฐ |
| ๐ก๏ธ ์์คํ ๋ชจ๋(System/Kernal Mode) | ์ด์์ฒด์ ์ปค๋, I/O, MMU ์ค์ ๋ฑ ์ค์ํ ์ฝ๋๊ฐ ์คํ๋๋ ๊ณต๊ฐ |
์ผ๋ฐ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์ ๋ชจ๋์์๋ง ์คํ๋ผ์.
์ค์ํ ๋ช
๋ น์ด(์: I/O ์ ์ด, MMU ์ค์ ๋ฑ)๋ โํน๊ถ ๋ช
๋ น์ด(Privileged Instructions)โ๋ผ์
๐ ์์คํ
๋ชจ๋์์๋ง ์คํ์ด ๊ฐ๋ฅํด์!
๐ CPU์ ๋ชจ๋ ์ ํ(User Mode โ System Mode), ๊ทธ๋ฆฌ๊ณ ํน๊ถ ๋ช ๋ น์ด ์คํ ์ฌ๋ถ ํ๋จ์ ๋ชจ๋ ์ด์์ฒด์ ์ปค๋(Kernel)์ด ์ฃผ๋์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ํต์
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์์คํ
๊ธฐ๋ฅ์ด ํ์ํ ๋๋ ์ง์ ์คํ ๋ชป ํด์.
๋์ ๋ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํด์:
์: read(), write(), fork() ๋ฑ์ด ๋ชจ๋ ์์คํ
์ฝ!

โ ์ฌ์ฉ์ ๋ชจ๋ โ ์์คํ ๋ชจ๋ ์ ํ ํ๋ฆ๋ ์ค๋ช
์ด ๊ทธ๋ฆผ์ ์ฌ์ฉ์ ๋ชจ๋(User Mode)์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ์ด์์ฒด์ ์ปค๋์ด ์คํ๋๋ ์์คํ ๋ชจ๋(System Mode)๋ก ์ ํ๋๋์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ๋ฆ๋์์.
๐ ์ ์ฒด ํ๋ฆ ์์ฝ
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ์คํ ์ค
read(), write() ๊ฐ์ ์์คํ
์ฝ์ ์ง์ ์คํํ ์ ์์์์คํ ์ฝ ์์ฒญ
int 0x80 ๊ฐ์ ์์คํ
์ฝ ์ธํฐ๋ฝํธ ๋ฐ์Mode Bit๊ฐ 0 โ 1๋ก ์ ํ
์ปค๋ ๋ชจ๋๋ก ์ง์ (System Mode)
์์ ์๋ฃ ํ ์ฌ์ฉ์ ๋ชจ๋ ๋ณต๊ท
๐ง ์ฃผ์ ๊ฐ๋ ์์ฝ
| ๊ฐ๋ | ์ค๋ช |
|---|---|
| ๐ฆ Mode Bit | CPU ์์ ํ ๋นํธ๋ก, ํ์ฌ ๋ชจ๋๊ฐ ์ฌ์ฉ์(0)์ธ์ง ์์คํ (1)์ธ์ง ๋ํ๋ |
| ๐ ํธ๋ฉ(Trap) | ์์ธ ์ํฉ์ด๋ ์์คํ ์ฝ ์ ์ปค๋๋ก ์ ์ด๊ถ์ด ๋์ด๊ฐ๋ ๋์ |
| ๐งญ ์์คํ ์ฝ(System Call) | ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด OS ๊ธฐ๋ฅ์ ์์ฒญํ๋ ์ธํฐํ์ด์ค (ex. ํ์ผ ์ฝ๊ธฐ) |
| ๐ก๏ธ ํน๊ถ ๋ช ๋ น์ด(Privileged Instructions) | MMU ์ค์ , I/O ์ ์ด ๋ฑ ์์คํ ๋ชจ๋์์๋ง ์คํ ๊ฐ๋ฅํ ๋ช ๋ น์ด |
์ด์์ฒด์ ๋ Mode Bit์ Trap ๋ฉ์ปค๋์ฆ์ ํ์ฉํด ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ๊ณผ ์ปค๋ ๊ธฐ๋ฅ์ ํ์คํ๊ฒ ๊ฒฉ๋ฆฌํ๊ณ ๋ณดํธํฉ๋๋ค.
โ์ด์์ฒด์ ๋ ์ฌ์ฉ์์๊ฒ ์ฐฉ๊ฐ์ ์ฌ์ด์ฃผ๋ ๋์์, ์ฒ ์ ํ ๋ณดํธ ์ฅ์น๋ฅผ ๋์ด ์์คํ ์ ์งํจ๋ค.โ
์์คํ ๊ณต๊ฐ์ ๋ค๋ฃฐ ์ ์๋ ์ฌ๋์ โ์ปค๋ ํด์ปคโ ๊ฐ์ ์์ฃผ ์๋ จ๋ ํ๋ก๊ทธ๋๋จธ์ ๋๋ค.
"์ด๊ฑด ๋ง์น ์ํ ์ฐฝ๊ตฌ์์ ์ง์ ๊ธ๊ณ ๋ฅผ ๋ง์ง์ง ๋ชปํ๊ณ , ์์ฒญ์๋ฅผ ์จ์ ์ฐฝ๊ตฌ ์ง์์๊ฒ ์ ๋ฌํ๋ ๊ฒ๊ณผ ๋น์ทํฉ๋๋ค."
โCPU ๋ชจ๋๋ฅผ ๊ด๋ฆฌํ๋ ๊ฑด ํ๋์จ์ด์ง๋ง, ๊ทธ ๋ชจ๋๋ฅผ ์ ํํ๊ณ ์ ์ดํ๋ ๊ฑด ์ค์ง ์ด์์ฒด์ ์ปค๋๋ง ํ ์ ์๋ค.โ