lab04. Traps and Interrupts.pdf
user mode에서 kernel mode로 변경되어야 하는 경우는 3가지가 있다. 지난 시간에 배웠던 system call이 그렇다. 이 이외에도 exception이나 interrupt등에도 그렇다. 셋 다 똑같이 interrupt handling에 의해 처리되고 있다.
하드웨어나 소프트웨어가 지금 당장 주목 받아야 할 일이 있을 때 process에게 보내는 신호.
Instruction은 Fetch - Decode - Execute 이 3가지 단계를 거쳐서 수행되는데, 중간에 interrupt가 왔는지 확인하는 과정이 있다. interrupt가 왔다면 현재 register를 모두 저장하고 어떤 interrupt가 왔는지 확인 후 ISR(Interrupt Service Routine)로 점프한다.
Interrupt handling을 하기 위해 필요한 OS 디자인은 4가지가 있다.
여기서 int는 정수를 의미하는 자료형이 아닌 interrupt를 의미하는 int이다. 즉, n번째 interrupt를 발생시키는 instruction이라는 의미이다. 전 시간에 보았던 int $T_SYSCALL은 이제 n번째에 해당하는 것이 &T_SYSCALL이고 이 system call에 해당하는 interrupt를 실행한다는 이야기.
register에 자세한 관련된 설명은 복잡해서 PASS하신다 함.
EIP register : 우리가 다음에 실행할 명령어의 주소를 가지고 있음
ESP register : 하나의 stack frame의 끝 지점 주소를 저장. 다음 stack pointer 주소를 가리키고 있음
interrupt descriptor란? → 각각의 interrupt들은 각각의 entry point들을 가지고 있음. entry point는 interrupt가 실제로 수행이 되는 명령어들의 시작주소. 이거를 모아놓은 table.