인터럽트는 컴퓨터가 공통되는 작업을 하기 위해 호출하는 루틴. 프로그램의 실행 중에 외부의 장치 등에서 요구가 있으면 실행중의 프로그램을 일시 중단하고 요구에 따라 다른 처리를 착수하기 위해 만들어진 것. | |||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
인터럽트의 종류 | ||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
하드웨어 인터럽트 | ||||||||||||||||||||||||||||||||||||||||||||||||
예상할 수 없는 시기에 주변 장치에서 발생된 일에 대해서 주변 장치가 처리를 요청하는 경우. 주변 장치에 긴급 상황이나 CPU로 처리를 요구하여야 하는 상황이 발생되었을 때 그 상태를 CPU에 전달하는 통로가 INTR(Interrupt Request) 신호선이다. | |||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||
처리할 것인지, 말 것인지를 설정할 수 있는 인터럽트를 마스커블 (Maskable) 인터럽트라고 한다. | |||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||
처리 여부를 묻지 않고 CPU가 무조건 처리하는 인터럽트. 예) 메모리 패리티 에러, I/O channel check | |||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||
주변 기기의 인터럽트를 받아들이기는 몇개의 인터럽트 입력 단자가 마련되어 있으며, CPU로 요청하기 위한 인터럽트 단자가 별도로 마련되어 있다. 주변 장치에서 발생된 인터럽트는 CPU로 바로 전달 되지 않고 일단 인터럽트 컨트롤러로 전달된다. 인터럽트 컨트롤러는 다시 CPU로 바로 전달되지 않고 일단 인터럽트가 발생되었는지를 묻는다. 이 때 인터럽트 컨트롤러는 발생된 인터럽트의 종류를 알려주게 되고 CPU는 인터럽트의 종류에 따라 인터럽트를 발생시킨 장치를 제어하게 된다. 8259 기능 중에 하나는 또다른 8259 컨트롤러를 연결하여 사용하는 방법을 캐스케이드(Cascade)라고 하는데 두 개의 8259를 이용하여 16개의 인터럽트가 지원된다. | |||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
소프트웨어 인터럽트 | ||||||||||||||||||||||||||||||||||||||||||||||||
예상된 시기에 어떤 기능을 발휘하도록 하기 위해 인위적으로 인터럽트를 발생시키는 경우. 프로그램 처리 도중 비 정상적인 명령어로 인하여 인터럽트가 발생되는 경우. 하드웨어를 제어하기 위한 바이오스(BIOS)와 도스(DOS) 또는 윈도우(Window)라는 운영 프로그램(Operating System), 응용 프로그램(Application Program)으로 도스나 바이오스에 있는 기능을 이용하고자 할 때는 그 기능을 가지는 인터럽트를 호출하면 된다. | |||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||
CPU 자체에서 프로그램 운영 오류시에 발생한다. | |||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||
바이오스에 있는 기능을 이용하여 호출된다. 예) 비디오, 키보드, 마우스, 디스켓, 프린터, serial port, joystick, memory, printer 등 | |||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||
도스에 있는 기능을 이용시에 호출(도스를 통해서 하드웨어를 호출) | |||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
CPU와 8259A 인터럽트 처리 | ||||||||||||||||||||||||||||||||||||||||||||||||
IBM PC에서는 00부터 FF까지의 8비트의 CPU로 전달되는 인터럽트는 하드웨어와 소프트웨어 인터럽트를 망라하여 256가지의 인터럽트 중의 하나로서 인식된다. 인터럽트 백터 테이블이란 256가지 인터럽트에 대하여 각 인터럽트가 발생되었을 때 발생되었을 때 처리하는 프로그램이 있는 곳의 주소를 표로 만들어 저장하고 있는 곳으로서, 인터럽트가 발생되면 CPU는 이 표에 있는 테이블을 이용하여 처리하는 방법. | |||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||
CPU와 Interrupt Controller 인터럽트 처리 |
Software/Docs