///////
Search
1️⃣

연습문제 1 ~ 4

연습문제 1

Q. 전원 이상이거나 기계적인 오류 때문에 발생하는 인터럽트는 무엇인가?
A. 외부 인터럽트

연습문제 2

Q. 숫자를 0으로 나누거나 자신의 주소 공간을 벗어나서 작업을 하는 것과 같이 프로세스의 오류와 관련된 인터럽트는 무엇인가?
A. 내부 인터럽트

연습문제 3

Q. 자발적 인터럽트로서 사용자의 의지로 발생시키는 인터럽트는 무엇인가?
A. 시그널

인터럽트

입출력 제어기 + DMA 의 작업이 완료되면 CPU에 인터럽트를 보냄
주변장치의 입출력 요구나 하드웨어의 이상 현상을 CPU에 알려주는 역할을 하는 신호
ex. CPU가 요청한 작업을 완료했을 때, 키보드로 데이터를 입력받았을 때, 하드웨어에 이상이 발생했을 때 등 다양한 경우에 인터럽트가 발생
다양한 종류의 장치가 있으므로, 인터럽트를 구분할 무언가가 필요함
IRQ 로 인터럽트를 구분 (고유 인터럽트 번호)
인터럽트가 발생하면 CPU는 IRQ를 보고 인터럽트가 발생한 장치를 파악

외부 인터럽트

입출력장치로부터 오는 인터럽트 + 전원 이상 + 기계적인 오류 때문에 발생하는 인터럽트
하드웨어의 상태 변화로 인해 발생
외부 인터럽트를 구분하기 위해 IRQ번호를 배정한다
IRQ 번호와 인터럽트 번호는 일대일로 대응
ex. IRQ 0번은 인터럽트 번호 32번, IRQ 15번은 인터럽트 번호 47번
하드웨어 인터럽트라고 부른다

내부 인터럽트

프로세스의 오류와 관련된 인터럽트
숫자를 0으로 나누거나, 자신의 주소 공간을 벗어나서 작업하는 경우 발생하는 인터럽트
예외 상황 인터럽트, Trap 이라고 부른다
프로세스의 잘못된 연산으로 인해 발생하므로 인터럽트가 발생하면 해당 프로세스가 즉시 종료된다.

시그널(자발적 인터럽트)

사용자가 직접 발생시키는 인터럽트
프로세스를 끝내기 위해 ctrl + c 하거나 kill 명령어를 사용하는 경우
종류가 다양하다
모든 시그널에 인터럽트 번호 128번을 할당 후 세부 시그널 번호를 따로 명시
시그널이라고 부름

인터럽트 번호

종류
인터럽트 번호
비고
내부 인터럽트
0 ~ 31
20 ~ 31 번은 정의되지 않았다
외부 인터럽트
32 ~ 47
주변장치의 수에 따라 유동적으로 할당한다
시그널
128
시그널 번호를 따로 기재한다

인터럽트 관련 정리 글

연습문제 4

Q. 인터럽트의 처리 방법을 함수로 만들어놓은 것을 무엇이라 하는가?
A. 인터럽트 핸들러

인터럽트 핸들러

인터럽트 벡터

여러 인터럽트 중 어떤 인터럽트가 발생했는지 파악하기 위해 사용하는 자료 구조
인터럽트 벡터가 1이면 인터럽트가 발생했다는 의미

인터럽트 핸들러

인터럽트의 처리 방법을 함수 형태로 만들어 놓은 것
인터럽트가 발생하면 운영체제가 인터럽트 핸들러를 호출해 작업한다
인터럽트 벡터에는 해당 인터럽트 핸들러를 호출할 수 있도록 인터럽트 핸들러가 저장된 메모리의 주소가 포인터 형태로 등록되어 있다
시그널의 경우 자신이 만든 인터럽트 핸들러를 등록할 수 있다
시그널 발생 시 기존 인터럽트 핸들러가 아닌 새로 만든 인터럽트 핸들러를 사용
ex. ctrl + c 를 누르면 해당 프로세스를 종료하지 않고, 종료 여부를 물어보거나 지금까지 작업한 내용을 저장하도록 할 수 있다