-
[컴퓨터 구조] 인터럽트 (Interrupt)Hacking/컴퓨터 구조 2024. 4. 3. 20:52
목차
인터럽트란?
인터럽트의 기능
인터럽트의 종류
인터럽트 벡터 테이블
인터럽트 사용 예시
인터럽트란?
인터럽트(Interrupt) : 실행 중인 동작을 잠시 중단하고 다른 동작을 먼저 수행하는 것
인터럽트의 기능
1. 빨리 처리를 해야 하는 오류를 알림
CPU는 기본적으로 한 번에 한 가지 동작밖에 수행하지 못한다. 만약 여러 가지 동작을 동시에 수행해야 한다면 동작을 작게 쪼개 번갈아가면서 수행한다. 이때 당장 컴퓨터 시스템에 지장을 줄 수 있는 오류가 생긴다면 그 오류를 수정하는 것을 최우선으로 해야 할 것이다. 이에 오류가 발생하면 인터럽트로 오류 수정을 먼저 하도록 한다.
2. 커널 모드로 전환해 커널의 기능을 사용
유저모드 vs 커널모드
운영체제는 커널을 보호하기 위해 어플리케이션에게 유저 모드를 부여한다. 유저 모드를 부여받은 애플리케이션은 운영체제 위에서 돌아가는 CPU, 프로세스, 메모리 등 주요 공간에 접근할 수 없다. 하지만 하드웨어를 통해 입/출력을 수행하는 등 커널의 서비스를 이용해야 하는 일이 생기는데, 이때 정해진 규칙대로 API를 호출하면 잠시 커널 모드로 전환되어 커널의 서비스를 이용할 수 있다.
API (Application Programming Interface)
윈도우에서는 WinAPI, 리눅스에서는 System Call이라고 한다.
x86에서는 어셈블리 명령어 INT를 통해, x86_64에서는 syscall을 통해 인터럽트를 호출할 수 있다.
3. 이벤트에 실시간으로 반응
사용자 입력, 네트워크 요청 등의 이벤트가 발생하면 바로 인터럽트를 호출해 CPU가 알 수 있게 해 준다. 만약 인터럽트가 없다면, CPU는 명령어 하나를 수행할 때마다 사용자 입력이 들어왔는지 확인해야 할 것이다.
인터럽트의 종류
1. 소프트웨어 인터럽트 : 소프트웨어 내부에서 발생하는 인터럽트
ex) 시스템 콜, 허가되지 않은 메모리 주소 참조, 0으로 나누는 경우, 페이지 부재
2. 하드웨어 인터럽트 : 하드웨어/외부장치에서 발생하는 인터럽트
ex) 하드웨어 입출력 장치, 정전 또는 전원 공급 이상, CPU 또는 기타 하드웨어 오류, 타이머 인터럽트
인터럽트 벡터 테이블 (Interrupt Vector Table)
: 인터럽트 발생시 처리해야 할 루틴의 주소를 보관하는 테이블
- 주기억장치에 위치한다.
- 부팅 시 생성된다.
- 인터럽트가 발생하면 인터럽트 벡터 테이블을 참조하여 루틴을 수행한다.
* 인터럽트 벡터 (Interrupt Vector) : 인터럽트에 대한 ISR의 시작 주소
* ISR(Interrupt Service Routine) : 인터럽트를 처리하는 루틴