[인터럽트]
○ 인터럽트(interrupt)란 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.
○ 지금 하고있는 일보다 긴급한 일이 발생하면 긴급한 일을 먼저 처리해주고 하고있던 작업을
계속하는 것이다. 긴급한 일을 인터럽트라고 한다.
[인터럽트 핸들러]
○ 실제 인터럽트를 처리하기 위한 루틴
○ 인터럽트 접수에 의해 발생되는 인터럽트에 대응하여 특정 기능을 처리하는 기계어 코드 루틴.
인터럽트 서비스 루틴이라고도 한다.(인터럽트 때의 해야할 일)
○ 인터럽트가 발생하면 이를 핸들링하기 위한 함수를 인터럽트 핸들러라고 한다.
인터럽트는 종류별로(키보드, 스피커, 입출력 등등) 핸들러가 있는데 모두 함수 형태로 존재한다.
커널 내의 인트럽트 함수에서 호출한다.
○ 각 핸들러에서는 장치에서 입력한 데이터 정보를 참고해 유저 공간에 알린다.
○ 모든 서비스 루틴의 주소를 저장하고 있는 자료구조를 인터럽트 벡터라고 한다.
[인터럽트와 인터럽트핸들러]
인터럽트가 발생하면 현재 수행 중인 프로그램을 잠시 멈추고 상태 레지스터와 프로그램 카운터를
저장하여 인터럽트 발생 순간의 CPU 상태를 보존해야한다.
WHY? 인터럽트의 서비스 루틴이 끝나고 나서 다시 원래 진행하던 작업으로 돌아와야 하기 때문이다.
인터럽트가 발생하면 인터럽트의 유형을 파악해야 한다.
○ 폴링(polling) : CPU가 다른 하드웨어를 주기적으로 체크함(인터럽트가 있는지)
○ 벡터(vectored interrupt system) : CPU는 자기하던일을 하고 다른 장치가 인터럽트를 걸면
시그널을 분석해서 맞는 인터럽트를 수행
담당 코드가 인터럽트 유형에 따른 대응 행동을 결정한다.
☆ 인터럽트는 인터럽트 서비스 루틴에게 제어권을 넘긴다.
☆ 운영체제는 인터럽트가 발생해야 작동을 시작하는 방식이다(interrupt driven)
마우스를 움직였을 때 예시를 들어보자
마우스를 움직이면 마우스가 움직였다는 인터럽트가 발생하여 인터럽트 벡터가 실행된다.
이후 커널 인터럽트 내부 함수에서 해당 인터럽트에 맞는 인터럽트 핸들러를 찾아 호출한다.
많은 하드웨어 디바이스가 이러한 방식으로 인터럽트를 통해 하드웨어의 변화를 알린다.
'운영체제' 카테고리의 다른 글
시스템 호출(시스템 콜) System Call (0) | 2022.03.17 |
---|---|
저장장치 구조 (0) | 2022.03.17 |
컴퓨터 시스템 연산 (0) | 2022.03.16 |
장치제어기(Device controller) (0) | 2022.03.16 |
운영체제와 커널 (0) | 2022.03.16 |
댓글