์ผ๊ด์ฒ๋ฆฌ๋ถํฐ ์๋ถํ ์์คํ , ์ต๊ทผ์ ๊ณ ๊ธ์ด์์ฒด์ , ์ธํฐ๋ฝํธ์ ๊ธฐ๋ฐํ ํ๋ ์ด์์ฒด์ ๊น์ง ๋ณ์ฒ ์ญ์ฌ๋ฅผ ์์๋ณธ๋ค.
1. ์ด๊ธฐ ์ปดํจํฐ
๋ ธ๊ฐ๋ค, ์ฌ๋ ์๋ ๋ง์ด๊ฐ, ์ฅ์น๋ ์์ฒญ์ปค, ๋น์ธ๊ธฐ๋ ๋น์ธ
์ด์์ฒด์ ๋ ์ปดํจํฐ๊ฐ ๋ฐ์ ํ๋ฉด์ ๊ฐ์ด ๋ฐ์ ํ๊ฒ ๋์๋ค. ์ด๊ธฐ ์ปดํจํฐ๋ ํฌ๊ฒ 3๊ฐ์ง๋ก ๊ตฌ์ฑ๋์๋ค. ์นด๋ ๋ฆฌ๋, ํ๋ก์ธ์, ํ๋ฆฐํฐ์ด๋ค. ์นด๋ ๋ฆฌ๋๋ ์ ๋ ฅ๊ธฐ์ด๋ค. ์ ๋ ฅ์ ์ข ์ด์ ์ ๋ ฅํ ์ฝ๋์ ๋ง๋ ๊ตฌ๋ฉ์ ๋ซ์ด์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ด์๋ค. ํ๋ก์ธ์๋ ํ์ฌ์ ๋น์ทํ ๊ณ์ฐํ๋ ์ญํ ์ด์๊ณ , ํ๋ฆฐํฐ๋ ์ ๋ ฅ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์ข ์ด์ ์ฐ์ด์ ๋ณด์ฌ์ฃผ์๋ค. ์ด ์๊ธฐ์๋ ์ด์์ฒด์ ๋ ์กด์ฌํ์ง ์์์ผ๋ฏ๋ก, ์คํผ๋ ์ดํฐ(operator)๋ผ๋ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ ์ง์ ์ด ๋ฐ๋ก ์์๊ณ , ์ปดํจํฐ์ ํฌ๊ธฐ ๋ํ ๋๋ฌด ์ปค์ ๊ฑด๋ฌผ ์ ์ฒด๋ฅผ ์ฌ์ฉํด์ผํ ์ ๋์๋ค.
2. Batch processing system(์ผ๊ด ์ฒ๋ฆฌ ์์คํ )
์ฝ๋๋ก ๋ฐ๋ณต๋๋ ๊ฑฐ ์ข ์๋ํ ํ์!
์์์ ์ด๊ธฐ ์ปดํจํฐ์ ์ํฉ์ ์ดํด๋ณด์๋๋ฐ, ํ๋ก๊ทธ๋จ์ ์ํํ ๋๋ง๋ค ์ปดํ์ผโ๋งํฌโ๋ก๋ฉ ์์๋ฅผ ์คํผ๋ ์ดํฐ๊ฐ ์ง์ ์ ๋ ฅํด์ฃผ์๋ค. ์ด๋ฌํ ๊ณผ์ ์ ์๋ํํ ๊ฒ์ด batch processing system ์ด๋ค. ์ ๊ณผ์ ์ ํ๋์ ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฑํ์ฌ ํ๋ก์ธ์์ ๋ฉ๋ชจ๋ฆฌ์์ ํ ๋นํด์ฃผ์๋๋ฐ, ์ด ํ๋ก๊ทธ๋จ์ resident monitor๋ผ๊ณ ๋ถ๋ ๋ค.
resident๋ โ๊ฑฐ์ฃผโ ๋ผ๋ ์๋ฏธ๋ก ์ด ํ๋ก๊ทธ๋จ์ด ํญ์ ํ๋ก์ธ์์์์ ๊ฑฐ์ฃผํ๋ค๋ ์๋ฏธ๋ก ์ด๋ฌํ ์ด๋ฆ์ ์ฌ์ฉํ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ต์ด์ ์ด์์ฒด์ ๋ก ์๋ ค์ ธ ์๋ค.
3. Multiprogramming system(๋ค์ค ํ๋ก๊ทธ๋๋ฐ)
CPU๊ฐ ๋ ธ๋ ์๊ฐ์ด ๋๋ฌด ๋ง์๋ฐ? ์ด ๋์ ๋ค๋ฅธ์ผ์ ์์ผ๋ฒ๋ฆฌ์.
๊ณผ๊ฑฐ์๋ ์ปดํจํฐ๊ฐ ๋งค์ฐ ๋น์ผ ์ฅ๋น์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ฐฝ๊ธฐ ๋ฉ๋ชจ๋ฆฌ์ ์ํ๋ resident monitor๋ฅผ ์ ์ธํ๊ณ ๋จ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๋ง์ ํ ๋นํ์ฌ ์ฌ์ฉํ์๋ค. ํ์ง๋ง ์ด๋ ๋งค์ฐ ๋นํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด์๋ค.
ํ๋ก๊ทธ๋จ์ ์ํํ๋ ๋์ค์๋ ๊ณ์ฐ์ ํ๋ CPU ์ธ์๋ ์
์ถ๋ ฅ์ ๋ด๋นํ๋ I/O์ฅ์น๊ฐ ์ํํ๋ค. ์ฆ, CPU์ I/O์ฅ์น๊ฐ ๊ต๋๋ก ๋์ํ๋๋ฐ I/O์ฅ์น๊ฐ ์ํํ๋ ๋์์๋ CPU๊ฐ ์๋ฌด๊ฒ๋ ํ ์ผ์ด ์์๋ค. CPU๊ฐ ์๋ฌด์ผ๋ ์ํ๋ ์ํ๋ฅผ idle ์ํ๋ผ๊ณ ๋งํ๋ค. ๊ทธ๋ฆฌ๊ณ I/O์ฅ์น๋ CPU์ ๋นํด ๋งค์ฐ ๋๋ฆฌ๊ธฐ๋๋ฌธ์ idle ์ํ์ ๋น์จ์ด ๋๋ฌด ๋์๋ค. ์ด๋ฌํ ๋นํจ์จ์ ์ธ ์ํ์ ํด๊ฒฐํ๊ธฐ ์ํด multiprogramming system์ด ๋์๋ค. ์ฆ CPU๋ฅผ ๋ชป๋๊ฒ ํ์
๋ฐฉ๋ฒ
Multiprogramming system์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ (ํ๋ก๊ทธ๋จ)์ ์ฌ๋ฆฌ๋ ์์คํ ์ด๋ค. ์๋ฅผ ๋ค์ด a, b ๋ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ๋, ์ฒ์์๋ a์์ CPU ์ํ์ ํ๋ค๊ฐ I/O์ฅ์น ์ํ์ผ๋ก ๋์ด๊ฐ๋ค. ์ด ์๊ฐ CPU๋ idle ์ํ์ ์์ง ์๊ณ b๊ฐ ์๋ค๋ ๊ฒ์ ๋ณด๊ณ b์ CPU ์ํ์ ์์ํ๋ค. ์ด๋ ๊ฒ idle์ํ์ ์๊ฐ์ ์ต๋ํ ์ค์ด๊ณ ์ ํ์๋ค. ์ด๋ฐ ๋์์ ๊ฐ๋ฅํ๊ฒ ํ๋ ค๋ฉด ์์ ๋งํ๋ฏ, ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฆฐ ์ํ์ฌ์ผ๋ง ํ๋ค.
ํ๊ณ ๋ฐ ๋ฌธ์
ํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฆฌ๋ฉด์ ๋ง์ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๋ค. ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ ์ CPU๊ฐ ์ด๋ ํ๋ก๊ทธ๋จ์ ์ํํด์ผํ๋์ง ์ ํํ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ์์ ์ **CPU ์ค์ผ์ค๋ง**์ด๋ผ๊ณ ํ๋ฉฐ, ์ด๋ ์ด์์ฒด์ ์ ์ค์ํ ์ญํ ์ค ํ๋์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ณต๊ฐ์ ํ ๋นํ๋ค๋ ์ ์ ์กฐ๊ฑด ๋๋ฌธ์, ์๋กญ๋ฐ ๋ค์ด์จ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด์ผํ๋์ง๋ ํฐ ๋ฌธ์ ์๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ ์ด์์ฒด์ ๊ฐ ๋ค๋ค์ผ ํ๋ ์ค์ํ ๊ณผ์ ๋ก ๋จ์๋ค.
4. Time-sharing system(์๋ถํ ์์คํ )
ํ๋ ๋ค ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ๋ง๊ณ Interval์ ์ฃผ์!
์๊ฐ์ด ์ง๋ ๋ชจ๋ํฐ์ ํค๋ณด๋๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ฌ์ฉ์์ ์ปดํจํฐ ์ฌ์ด์ ๋ํ ํ์์ด ๊ฐ๋ฅํด์ก๋ค. ํ์ง๋ง ์ฌ์ ํ ์ปดํจํฐ ์์ฒด๊ฐ ๋๋ฌด ๋น์๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ๋จ๋ง๊ธฐ(terminal) ํํ๋ก ์ฌ์ฉํ์๋ค.
๊ฐ ์ฌ์ฉ์(User)๋ค์ ๋ชจ๋ํฐ์ ํค๋ณด๋๋ง์ ๊ฐ์ง๊ณ , ์ค์ ํ๋ก์ธ์๋ ํ๋์ ๋จ๋ง๊ธฐ์ ์กด์ฌํ์ฌ ์ด๋ฅผ ๊ณต์ ํ์ฌ ์ฌ์ฉํ์๋ค. ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ด์ ๊ฐ์ ๋จ๋ง๊ธฐ ํํ์์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
์๋ฅผ ๋ค์ด, ๋จ๋ง๊ธฐ ๋ฉ๋ชจ๋ฆฌ์ User1 ํ๋ก๊ทธ๋จ, User2 ํ๋ก๊ทธ๋จ, User3 ํ๋ก๊ทธ๋จ์ด ํ ๋น๋์ด ์๊ณ User1์ด ๋จผ์ CPU๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ์. ๋ฉํฐํ๋ก๊ทธ๋๋ฐ์์๋ User1์ด CPU๋ฅผ ์ํํ๊ณ ์๋ ๋์ค์๋ ๋ค๋ฅธ ์ฌ์ฉ์๋ CPU์์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค. (CPU๊ฐ ํ๋์ธ ํ๊ฒฝ) ๊ทธ๋ฌ๋ฏ๋ก ๋ค๋ฅธ ์ฌ์ฉ์๋ค์ User1์ด CPU์ํ์ ๋ชจ๋ ๋ง์น ๋๊น์ง(๋๋ I/O๋ฅผ ๋ง๋ ๋๊น์ง) ๊ธฐ๋ค๋ ค์ผํ๋ค. ํ์ง๋ง ์ด๋ ๋งค์ฐ ๋นํจ์จ์ ์ด๋ค.
ํด๊ฒฐ
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ๊ฒ์ด time-sharing system์ด๋ค. ์๋ถํ ์์คํ ์ CPU๊ฐ ํ๋์ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ์๊ฐ์ ์ ํํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, User1 ํ๋ก๊ทธ๋จ์ ์ผ์ ์๊ฐ ์ํํ๋ฉด ๋ฐ๋์ ๋ค์ ํ๋ก๊ทธ๋จ์ผ๋ก ๋์ด๊ฐ์(์ค์์นญ, switching) ๋ ๋ค์ ์ผ์ ์๊ฐ์ ์ํํ๋ค. ์ด๋ ๊ฒ ์ผ์ ์๊ฐ์ ๋์ด ํ๋ก๊ทธ๋จ๋ค์ ๋ฒ๊ฐ์ ์ํํ๋ฉด์ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ๊ณตํํ๊ฒ ์ํ์ด ๋๋๋ก ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ผ์ ์๊ฐ์ ๋งค์ฐ ์งง์ ์๊ฐ(ms)์ด๋ฏ๋ก CPU๊ฐ ํ๋์ธ ํ๊ฒฝ์์๋ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ์ฌ์ฉํ๋ ๋ฏํ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์จ๋ค. ๊ฐ์ฅ ๋ํ์ ์ธ ์๋ถํ ์์คํ ์ Unix๊ฐ ์์๋ค.
ํ๊ณ ๋ฐ ๋ฌธ์
์๋ถํ ์์คํ ์ ์ฌ์ฉํ๋ฉด์ ์ฌ๋ฌ ์ฌ์ฉ์(ํ๋ก์ธ์ค)๊ฐ์ ํต์ ์ด ๊ฐ๋ฅํด์ก๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ์ฌ์ ํ ๋ฉํฐํ๋ก๊ทธ๋๋ฐ์์์ ๊ฐ์ ์ค์ผ์ค๋ง๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๊ฐ ์์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋๊ธฐํ ๊ธฐ์ , ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ด ์ดํ์ ๋์๋ค.
5. ๊ณ ๋ฑ ์ด์์ฒด์
5.1 ๋ค์ค ํ๋ก์ธ์ ์์คํ (Multiprocessor system)
CPU๊ฐ ์ฌ๋ฌ๊ฐ
- ๋ณ๋ ฌ ์์คํ
(parallel system)
- ์ฌ๋ฌ๊ฐ์ CPU๊ฐ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๊ฐ๊ฒฐํฉ ์์คํ
(tightly-coupled system)
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ CPU๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ค.
- 3๊ฐ์ง ์ฅ์ : performance, cost, reliability
- ์ฌ๋ฌ ์ผ๊พผ์ ์ฐ๋ ๋น ๋ฅด๋ค.
- ์ธ์ง๋ง ์ฌ๋ฌ๊ฐ๋ฅผ ์ฌ์ฉํ๋๊ฒ ๊ฐ์ ์ฑ๋ฅ๋๋น ๊ฐ๊ฒฉ์ด ์ธ๋ค.
- ํ๋๊ฐ ๋ง๊ฐ์ ธ๋ ์๋ํ ์ ์๋ค. ์ ๋ขฐ๋๊ฐ ๋๋ค.
- ๋ค์ค ํ๋ก์ธ์ ์ด์์ฒด์ (Multiprocessor OS)
- CPU๊ฐ ๋์ด๋ฌ๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
5.2 ๋ถ์ฐ ์์คํ (Distributed system)]
์ปดํจํฐ๊ฐ ์ฌ๋ฌ๋, ๊ทผ๋ฐ ๋ฌถ์ฌ์๋ค.
-
๋ค์ค ์ปดํจํฐ ์์คํ (multi-computer system) ์ฌ๋ฌ๋์ ์ปดํจํฐ๋ก ๋ง๋ ์์คํ ์ด๋ค.
-
์๊ฒฐํฉ ์์คํ (loosely-coupled system)
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์จํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ค.
-
3๊ฐ์ง ์ฅ์ : performance, cost, reliability
- ์ฌ๋ฌ ์ผ๊พผ์ ์ฐ๋ ๋น ๋ฅด๋ค.
- ์ธ์ง๋ง ์ฌ๋ฌ๊ฐ๋ฅผ ์ฌ์ฉํ๋๊ฒ ๊ฐ์ ์ฑ๋ฅ๋๋น ๊ฐ๊ฒฉ์ด ์ธ๋ค.
- ํ๋๊ฐ ๋ง๊ฐ์ ธ๋ ์๋ํ ์ ์๋ค. ์ ๋ขฐ๋๊ฐ ๋๋ค.
-
๋ถ์ฐ ์ด์์ฒด์ (Distributed OS)
- ๋ค๋ฅธ ์ปดํจํฐ๋ค์ ๊ด๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
5.3 ์ค์๊ฐ ์์คํ (Real-time system)
- ์๊ฐ ์ ์ฝ: Deadline
- ๊ณต์ฅ ์๋ํ (FA), ๊ตฐ์ฌ, ํญ๊ณต, ์ฐ์ฃผ
- ์ค์๊ฐ ์ด์์ฒด์ (Real-time OS = RTOS)
6. ์ธํฐ๋ฝํธ ๊ธฐ๋ฐ ์์คํ (Interrupt based system)
ํ๋ ์ด์์ฒด์ ๋ ์ธํฐ๋ฝํธ ๊ธฐ๋ฐ ์์คํ ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ์ธํฐ๋ฝํธ๋ ๋ฌด์์ธ๊ฐ?
6.1 ์ธํฐ๋ฝํธ
์ปดํจํฐ์ ์ ์์ด ๋ค์ด์ค๋ฉด ์์์ ๋งํ๋ฏ์ด ๋ถํ ์ด ์์๋๋ค. ๋จผ์ , POST๊ณผ์ ์ด ์์๋๊ณ ๊ทธ ํ์ ๋ถํธ ๋ก๋๊ฐ ํ๋ ๋์คํฌ์ ์๋ ์ด์์ฒด์ ํ๋ก๊ทธ๋จ์ RAM์ ๊ฐ์ ธ์ ํ ๋นํ๋ค. ํ ๋น๋ ์ด์์ฒด์ ๋ ์ปดํจํฐ์ ์ ์์ด ๊บผ์ง ๋๊น์ง ์์ฃผ(resident)ํ๋ค.
๋ถํ ์ด ๋๋๊ณ ์ด์์ฒด์ ๊ฐ ๋์ํ๋ ๋์ ์ ๋ง์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ์์ง์ธ๋ค๊ณ ๊ฐ์ ํ์. ์ด ๋์์ ์ปดํจํฐ๋ ์ด๋ป๊ฒ ์ ์ ์์๊น? ๋ฐ๋ก ์ธํฐ๋ฝํธ๋ฅผ ํตํด ์ ์ ์๋ค. ๋ง์ฐ์ค๋ฅผ ์์ง์ด๋ ์๊ฐ, ๋ง์ฐ์ค์์ ์ธํฐ๋ฝํธ ์ ๊ธฐ ์ ํธ๊ฐ ๋ฐ์ํ์ฌ ์ด๋ฅผ CPU์๊ฒ ๋ณด๋ธ๋ค. CPU๋ ์ด๋ฅผ ๊ฐ์งํ๊ณ , ์์ ์ด ํ๋ ์ผ์ ๋ฉ์ถ ํ์ ์ด ์ธํฐ๋ฝํธ ์ ํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ด์์ฒด์ ๋ด๋ถ์ ์๋ **์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋(interrupt service routine, ISR)**๋ก ์ด๋ํ๋ค. ์ด ๊ณณ์ ๋ง์ฐ์ค๊ฐ ์์ง์ผ ๋ ์ด๋ป๊ฒ ๋์ํด์ผํ๋์ง๊ฐ ๋ดํฌ๋์ด ์์ด ์ด๋ฅผ ์ํํ๋ค.
6.2 ์ธํฐ๋ฝํธ์ ์ข ๋ฅ์ ๋์๋ฐฉ๋ฒ
์ด๋ฌํ ํ๋์จ์ด์์ ๋ฐ์ํ ์ธํฐ๋ฝํธ๋ฅผ ํ๋์จ์ด ์ธํฐ๋ฝํธ(Hardwore Interrupt) ๋ผ๊ณ ํ๋ค. ์ธํฐ๋ฝํธ๋ผ๊ณ ํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ๋งํ์ง๋ง, ์ํํธ์จ์ด์์๋ ์ธํฐ๋ฝํธ๋ฅผ ์์ฒญ์ ํ ์ ์๋ค. ์ด๋ฅผ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ(Software Interrupt) ๋ผ๊ณ ํ๋ค. ์ํํธ์จ์ด ์ธํฐ๋ฝํธ๋ ๋ช ๋ น์ด๋ก ์ง์ ์ธํฐ๋ฝํธ ์ ๊ธฐ ์ ํธ๋ฅผ CPU์๊ฒ ๋ณด๋ผ ์ ์๋ค. ์ฆ, ํ๋ก๊ทธ๋จ์์ swi, int ์ ๊ฐ์ ์ด์ ๋ธ๋ฆฌ์ด ๋ช ๋ น์ด๋ฅผ ์ํํ๋ ๊ฒ์ด๋ค. (๋ช ๋ น์ด๋ ์ด์์ฒด์ ๋ง๋ค ๋ค๋ฅด๋ค. ์์ ๋ช ๋ น์ด๋ CPU์์ ์ด์ ๋ธ๋ฆฌ์ด ์ฝ๋ ์ค ์ผ์ข ์ผ๋ก, interupt๋ฅผ ์ฒ๋ฆฌํ๋ผ๋ ๋ช ๋ น์ด์ด๋ค.)
์๋ฅผ ๋ค์ด, ๋ง์ฐ์ค๋ก ์๋ ์์ฑ ํ๋ก๊ทธ๋จ์ ์คํ์ํจ๋ค๊ณ ํ์. ์๋ ์์ฑ ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ ๊ฒ๊น์ง๋ ํ๋์จ์ด ์ธํฐ๋ฝํธ๊ฐ ์ํ๋๋ค.(๋ง์ฐ์ค๊ฐ ์ด๋ํ์ฌ ๋๋ธ ํด๋ฆญ์ผ๋ก ์คํํ๋ ๊ฒฝ์ฐ์ด๋ค.) ์ด ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ์๊ฐ ํ๋๋์คํฌ์ ์๋ ๋ค๋ฅธ ์๋ ํ์ผ์ ์ฝ๊ณ ์ถ์ ๊ฒฝ์ฐ, ์ํํธ์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์ํจ๋ค. ์ํํธ์จ์ด ์ธํฐ๋ฝํธ ์ญ์ ํ๋์จ์ด ์ธํฐ๋ฝํธ์ ๋์ผํ๊ฒ ์ด์์ฒด์ ๋ด๋ถ์ ํด๋น ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋(ISR)๊ฐ ์กด์ฌํ์ฌ ์ด ๊ณณ์ผ๋ก ์ด๋ํ๋ค. ์ฌ๊ธฐ์ ํ๋๋์คํฌ์์ ์ฝ์ ํ์ผ์ ์ฐพ์์ ๋ฐํํด์ฃผ๋ ์ํ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด๋ค.
๋ง์ง๋ง์ผ๋ก **๋ด๋ถ ์ธํฐ๋ฝํธ(Internal Interrupt)**๊ฐ ์๋ค. ๋ด๋ถ ์ธํฐ๋ฝํธ๋ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ๋์ค์ ๋ฐ์ํ๋ ์์ธ ์ํฉ์ ์ฒ๋ฆฌํ๋ค. ๋ํ์ ์ธ ์๋ก 0์ผ๋ก ๋๋๋ ๋์์ด๋ค. ํ๋ก๊ทธ๋จ์ ๋ด๋ถ์ result = a / 0; ์ด์ ๊ฐ์ ์ฝ๋๊ฐ ์์ ๋, CPU๋ ๋ด๋ถ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์์ผ ์ด์์ฒด์ ์์ ์๋ ISR๋ก ์ด๋ํ๋ค. ์ด ๊ฒฝ์ฐ์๋ DividedByZero ๋ผ๋ ISR๋ก ์ด๋ํ๋ค. ์ฌ๊ธฐ์ ์๋ชป๋ ๋์์ ์ํํ ํ๋ก๊ทธ๋จ์ ๊ฐ์ ๋ก ์ข ๋ฃ์ํจ๋ค.
์ด์์ฒด์ ๋ ํ์์๋ ๋๊ธฐ ์ํ์ ์์ผ๋ฉด์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ ์๊ฐ ์์ ์ ์ํํ๋ค. ๊ทธ ์ธํฐ๋ฝํธ์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ด์์ฒด์ ๋ด๋ถ์ ์์นํ ISR๋ก ์ด๋ํ์ฌ ๊ทธ์ ๋ง๋ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. ์์์ ์ค๋ช ํ ํ๋์จ์ด ์ธํฐ๋ฝํธ ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ๊ฐ๋จํ ํํํ๋ฉด ์๋์ ๊ฐ๋ค.
์ ๊ทธ๋ฆผ์ ์ฌ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํด ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ชจ์ต์ด๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํํ๋ ์ค์๋ ๊ณ์ํด์ ์ธํฐ๋ฝํธ๋ ๋ฐ์ํ๋ค. ์๋ ์์ฑ ํ๋ก๊ทธ๋จ์ ์๋ฅผ ๋ค๋ฉด ํค๋ณด๋๋ก ๊ธ์ ์์ฑํ๋ ๊ฒฝ์ฐ, ํ๋๋์คํฌ์ ์๋ ํ์ผ์ ๋ถ๋ฌ์ค๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก CPU๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ด์์ฒด์ ๋ด๋ถ๋ฅผ ๊ต๋๋ก ์ํํ๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
์ ๋ฆฌ
์ ๋ฆฌํ๋ฉด, ์ธํฐ๋ฝํธ๋ CPU์๊ฒ ๋ณด๋ด๋ ์ ๊ธฐ ์ ํธ๋ก์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉด CPU๋ ํ๋ ์ผ์ ์ค์งํ๊ณ ํด๋น ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ด์์ฒด์ ๋ด๋ถ์ ์๋ ISR๋ก ์ด๋ํ์ฌ ์ํํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ํ์ด ๋๋๋ฉด ์๋ ์์น๋ก ๋์๊ฐ๋ค. ์ธํฐ๋ฝํธ๋ ํ๋์จ์ด ์ธํฐ๋ฝํธ, ์ํํธ์จ์ด ์ธํฐ๋ฝํธ, ๋ด๋ถ ์ธํฐ๋ฝํธ๋ก ์ด ์ธ ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
Reference
- KOCW ์ํฌ์ฌ ๊ต์๋ - ์ด์์ฒด์
- ์ํฌ์ฌ ๊ต์๋ ๋ธ๋ก๊ทธ(์ํ ๊ธฐ์ถ ๋ฌธ์ )
- codemcd ๋์ ์ ๋ฆฌ๊ธ
- Operating System Concepts, 9th Edition - Abraham Silberschatz