티스토리 뷰

Study/OS

[OS] Mint64OS 13절 Interrupt Service Routine 생성

생각많은 소심남 2013. 1. 24. 13:58

지난 포스트에서 말한 인터럽트를 사용자가 정의할 수도 있지만  이걸 효율적으로 제어할 수 있는 장치가 바로 Programmable Interrupt Controller(PIC)이고, 여기서 나오는 출력에는 IRQ 몇번이라는 이름이 붙어있다. 보통 컴퓨터가 고장났을 때 오류정보속에 포함되어있는 IRQ에 대한 정보를 확인해보면 어느 부분에서 문제를 일으키는 지를 확인할 수 있다. 일일이 컴퓨터를 분해해보는게 아닌 것이다.

 인터럽트나 예외를 처리하고 난 후에는 이전에 수행하던 상태로 돌아가야 하기 때문에 애초에 인터럽트에 진입할 때부터 그 때의 상태를 저장해야 하는데 이걸 context라고 한다. 그래서 초기 인터럽트 발생시에는 context를 저장하고 핸들러를 수행 후에 다시 context를 load 하는 일련의 과정을 거치게 된다. 책에서는 이 과정을 Interrput Service Routine(ISR)로 표현하고 그중 핸들러 부분은 c언어로 구현했다.


위의 이미지는 ISR중 32번으로 정의한 Real Time Clock 에 대한 인터럽트가 걸리는지를 확인해보고 있고, 실제로 테스트 해보면 매 프레임마다 RTC가 발생하기 때문에 숫자가 갱신 되는 것을 확인할 수 있었다.


댓글