interrupt
gㅇㅎㅇ
정의 : external event를 의미. 각 interrupt마다 번호가 붙어있음
hw interrupt :
- keyboard(33), mouse moved(44), timer ticks, packet arrives, … etc
sw interrupt :
- system function call (128)
- exception (ex. divide by zero : 0)
ISR (Interrupt Service Routine)
- 정의 : hw/sw interrupt가 발생했을 때 실행되는 함수 또는 루틴
- 종류 :
- ISR1
- 정의 : 첫번쨰로 발생한 interrupt 처리 함수/루틴
- 위치 : arch/x86/kernel/entry_32.S
- ISR2
- 두번째로 발생한 interrupt 처리 함수/루틴
- 위치 : interrupt 종류마다 상이.
- ex) do_divide_error : arch/x86/kernel/traps_32.c
- ISR1
- 예시 : ISR1은 키보드 입력을 감지하면 실행.
- 만약, 조합키(Ctrl,Shift,Alt)가 있는 경우 ISR2가 실행됨.
- Interrupt 발생 (press ‘r’)
- stop current process & save
- 현재 프로세스 멈추고, 발생한 interrupt가 끝나면 돌아가기 위함
- jump to interrupt[1]
- IDT에서 키보드 입력(INT 33)에 해당하는 ISR로 분기
- atkbd_interrupt
- ISR2로 분기하여, screen에 ‘r’을 출력
- reschedule
- cpu_idle() 상태로 돌아감. (cpu execution cycle의 첫번째)IDT (Interrupt Descriptor Table)
- 정의 : interrupt 및 예외를 처리하기 위한 시스템 데이터 구조(talbe)
- 예시 : 특정 인터럽트 발생 시 프로세서는 해당 interrupt number를 사용하여 IDT에서 해당 ISR로 분기하여 처리
- keyboard 입력(INT33) → IDT[33] → ISR1 → ISR2- cpu execution cycle : detect interrupt
- cpu_idle() 상태로 돌아감. (cpu execution cycle의 첫번째)IDT (Interrupt Descriptor Table)
Interrupt (external event)
interrupt
- 정의 : external event를 의미. 각 interrupt마다 번호가 붙어있음
- hw interrupt :
- keyboard(33), mouse moved(44), timer ticks, packet arrives, … etc
- sw interrupt :
- system function call (128)
- exception (ex. divide by zero : 0)
ISR (Interrupt Service Routine)
- 정의 : hw/sw interrupt가 발생했을 때 실행되는 함수 또는 루틴
- 종류 :
- ISR1
- 정의 : 첫번쨰로 발생한 interrupt 처리 함수/루틴
- 위치 : arch/x86/kernel/entry_32.S
- ISR2
- 두번째로 발생한 interrupt 처리 함수/루틴
- 위치 : interrupt 종류마다 상이.
- ex) do_divide_error : arch/x86/kernel/traps_32.c
- ISR1
- 예시 : ISR1은 키보드 입력을 감지하면 실행.
- 만약, 조합키(Ctrl,Shift,Alt)가 있는 경우 ISR2가 실행됨.
IDT (Interrupt Descriptor Table)
- 정의 : interrupt 및 예외를 처리하기 위한 시스템 데이터 구조(talbe)
- 예시 : 특정 인터럽트 발생 시 프로세서는 해당 interrupt number를 사용하여 IDT에서 해당 ISR로 분기하여 처리
- keyboard 입력(INT33) → IDT[33] → ISR1 → ISR2 ****
- cpu execution cycle : detect interrupt- Handle INT x
- Interrupt 발생 (press ‘r’)
- stop current process & save
- 현재 프로세스 멈추고, 발생한 interrupt가 끝나면 돌아가기 위함
- jump to interrupt[1]
- IDT에서 키보드 입력(INT 33)에 해당하는 ISR로 분기
- atkbd_interrupt
- ISR2로 분기하여, screen에 ‘r’을 출력
- cpu_idle() 상태로 돌아감. (cpu execution cycle의 첫번째)reschedule
'전공 > OS' 카테고리의 다른 글
OS2 (0) | 2023.09.16 |
---|---|
OS (0) | 2023.09.16 |
테스트 (0) | 2023.09.15 |
Compiling Linux (1) | 2023.09.06 |
Kernel Reading (0) | 2023.09.06 |