입출력 인터럽트
폴링과 인터럽트
<차이점>
- CPU가 각각의 주변장치들을 연속적으로 순환하며 혹시 인터럽트 요구가있는지 없는지를 수시로 체크하는 방법
- 주변장치의 상태를 보관할 필요 없음
- 주변장치에서 CPU로 들어오는 보고만을 취하는 방법
- CPU는 주변장치의 현재 상태를 보관해야 함
- 폴링과 반대로 CPU가 각 주변장치 상태를 일일이 파악하지 않고 입출력 요구 가 있을때만 CPU가 관여
- 인터럽트가 발생하면 CPU는 인터럽트 서비스 루틴에 의해 이를 처리하고 원 래 상태로 복귀
- 이 때, CPU의 상태를 저장하고 나중에 복구
- 주변장치가 데이터 전송을 위한 준비가 되면 CPU에게 인터럽트를 요구
- CPU가 인터럽트를 감지하면 수행 중이던 작업을 중지하고 데이터 전송을 처 리하기 위하여 인터럽트 서비스 루틴으로 분기하여 데이터 전송 수행
인터럽트의 종류
<정의>
- 정상적인 프로그램을 수행하는 컴퓨터 시스템에 예기치 않은 긴급 상황이 발 생할 경우 수행중인 프로그램을 중단하거나 비정상적인 종료를 하고, 운영체제 에 의해 적절한 조치를 취할 수 있도록 하는 기법
<종류>
인터럽트 구조 및 처리
<개요>
- CPU가 명령어를 수행하고 있는 동안에 발생하는 시스템의 어떤 응급 상황에 대처하기 위한 일련의 조치
- 인터럽트가 발생하는 원인에 따라 적절한 인터럽트 처리 루틴으로 최소한의 조치를 취하고, 인터럽트 서비스 루틴에 의해 발생하는 응급 상황을 해결
<단계별 인터럽트 처리 내용>
<문맥 교환(context switching)>
- 인터럽트가 발생했을 때 운영체제가 인터럽트를 당한 현재 실행중인 프로그램 의 상태를 저장한 후, 제어권을 인터럽트 서비스 루틴에게 넘겨주는 작업
<PSW(Program Status Word)>
- 명령문 수행의 순서를 조절하며, 실행 중이던 프로그램의 상태에 대한 여러 가 지 정보를 보관