@ 이 때까지는 우선 개념적으로 공부를 했습니다.
// 그렇다면 이 Interrupt를 실제로는 어떻게 구현하는지 알아보도록 하겠습니다.
@ 먼저 Interrupt 구현을 공부하기 전에 Interrupt 개념을 조금 더 구체화 시켜서,
// Interrupt Mechanism의 각 세부 Operation을 먼저 보도록 하겠습니다.
@ H/W Interrupt를 먼저 살펴보겠습니다.
// micro process에 Interrupt signal을 받아들일 수 있는 핀(pin)이 있어야 합니다.
> 그리고 그 핀에는 Interrupt Source(Interrupt를 날리는)가 물려 있어야 합니다.
.. 이 Interrupt Source의 경우는 I/O Controller나 DMA Controller가 될 수 있을 것입니다.
// 여기에서 interrupt를 받게 되면, CPU는 interrupt를 받아들인 것을 인지하게 됩니다.
> 이 상황에서 CPU는 현재 수행중이던 프로그램을 중단합니다.
.. (아래에서 자세히)
@ 프로그램을 수행중일 때, Interrupt 처리 과정은 어떻게 되는 것일까요?
// 현 Instruction까지는 완료합니다.
// 마이크로 프로세서인 PC(Program Counter) 값을 안전한 곳에 저장합니다. (대피)
> 아무 조치 없이 종료를 시키면 Interrupt 수행 후에 돌아왔을 때, 문제가 생깁니다.
// 현재 수행 중인 프로그램을 중단합니다.
// Interrupt Source 중에 어떤 것이 Interrupt를 주었는지 확인합니다.
> Interrupt Request Number(IRQ 번호)를 통해 Interrupt Source를 확인합니다.
.. 이걸 확인하고 나면 어떤 함수를 불러야 하는지 알 수 있게 됩니다.
> Interrupt Vector Table(IVT)을 검색해서 Interrupt Service Routine(ISR)의 주소를 확인하고 수행합니다.
.. IRQ 번호를 index로 사용하여,
.. Handler(Interrupt Service Routine)의 주소를 얻어오고,
.. 거기로 Jump를 하게 됩니다.
@ ISR이 끝나고 나면 어떻게 해야할까요?
// 저장된 Interrupt 된 프로그램의 시작 주소로 다시 복귀하게 됩니다.
@ 위에서 살펴본 일들이 Interrupt의 기본적인 매커니즘이 되겠습니다.