인터럽트(Interrupt)란?
컴퓨터가 작업을 수행하던 도중 예기치 못한 특수한 상황이 발생하여 작업을 중단하고, 그 특수한 상황을 먼저 처리한 후, 원래의 작업으로 되돌아가 나머지 작업을 계속 수행하게 되는 일련의 과정
외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 분류하는데, 외부나 내부 인터럽트는 CPU의 하드웨어에서의 신호에 의해 발생하고 소프트웨어 인터럽트는 명령어의 수행에 의해 발생함.
인터럽트 종류
외부 인터럽트(External Inteerupt)
1. 전원 이상 인터럽트
2. 기계 착오 인터럽트
3. 외부 신호 인터럽트
4. 입, 출력 인터럽트
내부 인터럽트(Internal Interrupt)
1. 잘못된 명령이나 데이터를 사용할 때 발생하며, 트랩(Trap)이라고도 부른다.
2. 명령어 잘못에 의한 인터럽트 : 프로그렘에서 명령어를 잘못 사용한 경우
3. 프로그램 인터럽트 : 0으로 나누거나, Overflow가 발생한 경우
소프트웨어 인터럽트(Software Interrupt)
1. 프로그램 처리 중 명령의 요청에 의해 발생한다.
2. 가장 대표적인 형태는 감시 프로그램을 호출하는 SVC(Supervisor Call) 인터럽트가 있다.
※ SVC(Supervisor Call) 인터럽트 : 사용자가 SVC명령을 써서 의도적으로 호출한 경우
인터럽트의 과정
1. 인터럽트 요청 신호 발생
2. 프로그램 실행을 중단
3. 현재 프로그램 상태를 보존
4. 인터럽트 처리 루틴을 실행
5. 인터럽트 서비스 루틴을 실행
6. 상태복구
7. 중단된 프로그램 실행 재개
인터럽트 우선순위
전원 이상 > 기계 착오 > 외부 신호 > 입, 출력 > 명령어 잘못 > 프로그램 > SVC
'Study > Reversing' 카테고리의 다른 글
[리버싱] PE파일 (0) | 2017.09.14 |
---|---|
[리버싱] CALL, JMP, RET(RETN) 명령어에 대해 알아보자 (0) | 2017.09.03 |
[리버싱] 함수: 프롤로그&에필로그와 호출 규약 (0) | 2017.09.01 |
[리버싱] 스택프레임에 대해 알아보자 (0) | 2017.08.24 |
[리버싱] 메모리 구조 (0) | 2017.08.24 |
댓글