OS와 인터럽트
Interrupt
인터럽트만 장치들이 어떤 상황이 발생했음을 CPU에게 알리는 하드웨어적 방법.
인터럽트 발생시
- 하던 작업을 멈춤
- 돌아올 주소를 저장
- 해당되는 ISR()을 실행
- ISR()끝나면, 하던 작업을 마저함
인터럽트 종류
- 하드웨어적 : 입출력 장치들이 전기적 신호를 CPU에게 보냄
- 소프트웨어적 : 프로그램 내에서 CPU기계명령으로 인터럽트 과정 진행
인터럽트 제어기
인터럽트가 처리되려면, CPU와 인터럽트 제어기들의 하드웨어가 협력해야함. CPU와 입출력 장치 사이에 APIC(인터럽트 제어기)가 사용되며 APIC는 입출력 장치로부터 직접 인터럽트 신호를 받는 I/O APIC장치와 I/O APIC로부터 인터럽트 정보를 받아 CPU핀에 직접 인터럽트 신호 발생시키는 Local APIC장치로 구성된다.
즉,
- APIC
- I/O APIC
- Local APIC
I/O APIC에 24개의 인터럽트 수신 핀을 두고있고, 24개의 장치로 부터 신호를 수신할 수 있음. 이 핀은 IRQ라고 함. CPU의 코어당 하나씩 Local APIC가 연결된다.
인터럽트 벡터 테이블
예를 들어, x86계열 인텔 cpu는 256개의 인터럽트를 제공하고, 각 인터럽트 번호를 인터럽트 벡터라고 한다. 인터럽트 벡터 테이블은 256개의 ISR의 주소를 저장하고 있는 테이블이다.
- 인터럽트 벡터 테이블(커널 영역에 저장, 수정 가능)이 부팅시에 만들어진다.
- 인터럽트 벡터 테이블에 ISR의 주소들이 저장된다.
- 인터럽트 벡터 테이블의 주소는 CPU Rg에 저장되어있다가, ISR주소 알아낼때 이용
인터럽스 친화성
I/O APIC는 인터럽트 신호 수신되면 모든 Local APIC에 균등하게 신호를 분배함. 근데, 운영체제가 특정 코어(Local APIC)에 신호를 몰빵하고 ISR실행하도록 할 때도 있음.
ISR의 위치
ISR은 디바이스 드라이버 혹은 커널 코드에 들어있고, 임베디드 컴퓨터의 경우 ROM에 들어있기도 하다.
디바이스 드라이버와 ISR
일반적으로 디바이스 드라이버에 장치로부터 발생한 인터럽트를 처리하는 ISR이 들어있다.(커널에 있는게 아님) 디바이스 드라이버는 운영체제의 한 부분이다.
커널에 들어있으면, 디바이스 드라이버가 잘못 작성되었을 경우 문제 일으킬 수 있음.
why?
디바이스 드라이버는 장치 제조사에서 제공하는게 일반적이고 코드또한 커널에 있지 않은데, 왜 운영체제의 일부분이라고 하는 거임?
-> 디바이스 드라이버는 부팅 시, 커널 영역에 적재되고 커널의 일부분으로 동작한다. 그래서 운영체제의 일부분이라고 하는거임
'컴퓨터 공학(Computer Science) > OS' 카테고리의 다른 글
Kernel의 실체 (0) | 2024.03.26 |
---|---|
Kernel, user mode, kernel mode (0) | 2024.03.26 |
커널과 시스템 호출 (0) | 2024.03.25 |
배치(batch) OS, 다중 프로그래밍, 시분할 시스템 (0) | 2024.03.14 |