์ปดํจํฐ ๊ตฌ์กฐ - ์ธํฐ๋ฝํธ ์ฌ์ดํด
์ปดํจํฐ ๊ตฌ์กฐ - ์ธํฐ๋ฝํธ ์ฌ์ดํด
์ธํฐ๋ฝํธ ์ฌ์ดํด์ด๋?
ํ๋ก๊ทธ๋จ ์คํ ์ค CPU์ ํ์ฌ ์ฒ๋ฆฌ ์์๋ฅผ ์ค๋จ ์ํค๊ณ ๋ค๋ฅธ ๋์์ ์ํํ๋๋ก ํ๋ ์ฌ์ดํด
์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด(Interrupt Service Routine : ISR)
์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ํ๋๋ ํ๋ก๊ทธ๋จ ๋ฃจํด
CPU์๋ ์ธ์ถ์ฌ์ดํด๊ณผ ์คํ์ฌ์ดํด์ด ์กด์ฌํ๋ค๊ณ ํ๋ค. ํ์ง๋ง ๊ทธ ์ธ์ ์ธํฐ๋ฝํธ ์ฌ์ดํด์ด๋ผ๋ ๊ฒ๋ ์กด์ฌํ๋ค.
์ด๋ ์ธํฐ๋ฝํธ(๋ฐฉํดํ๋ค) ๋ง ๊ทธ๋๋ก ํ์ฌ์ ์์๋ฅผ ๋ฐฉํดํ๊ณ ๋ค๋ฅธ ์ฌ์ดํด์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด๋ค.
์ธํฐ๋ฝํธ๊ฐ ๋ค์ด์์ ๋ CPU๋ ์ด๋ค ์ฅ์น๊ฐ ์ธํฐ๋ฝํธ๋ฅผ ์๊ตฌํ๋์ง ํ์ธํ๊ณ , ํด๋นํ๋ ISR์ ํธ์ถํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฌ์ดํด์ด ์ข ๋ฃ๋๋ฉด ์๋ ํ๋ก๊ทธ๋จ์ผ๋ก ๋์์ ์ํ์ด ๊ณ์๋๋ค.'
์ธ๋ถ์ ์ธ ์ ์ฐจ๋ ์ด๋ ๋ค.
t0 : MBR <-PC
t1 : MAR <- SP, PC <- ISR์ ์์์ฃผ์
t2 : M[MAR] <- MBR
์ ๋ฆฌํ๋ฉด ์ด๋ ๋ค.
๋จผ์ i๋ฒ์งธ์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ์ธํฐ๋ฝํธ๊ฐ ๋ค์ด์ค๊ณ , CPU์ PC์ ๋ด๊ธด ๋ช ๋ น์ด๋ฅผ MBR์ ์ ์ฅํ๋ค. ๊ทธ ํ ์คํ์ ์ฃผ์๋ฅผ MAR์ด ์ฐธ์กฐํ๋๋ก ํ๋ค. ์ด์ ๋์์ PC์ ISR์ ์์์ฃผ์๋ฅผ ๋ฃ๋๋ค(์์์ฃผ์๋ฅผ ๋ฃ์ด์ผ ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด์ด ์ฒ์๋ถํฐ ๋๊น์ง ์คํ๋๊ธฐ ๋๋ฌธ). ๋ง์ง๋ง์ผ๋ก MBR์ ์ ์ฅ๋์ด์๋ ์๋ PC๊ฐ์ MAR์ด ์ฐธ์กฐํ๋ ๊ณณ(์คํ)์ ์ ์ฅ์ํจ๋ค. ์ธํฐ๋ฝํธ๊ฐ ์ข ๋ฃ๊ฐ ๋ ํ์๋ ์คํ์์ popํจ์๋ฅผ ์ด์ฉํด ๋ค์ PC์ ๋ฃ์ผ๋ฉด ๋๋ค.(STACK, POP์ ์๋ฃ๊ตฌ์กฐ ์ฉ์ด)