[운영체제] 인터럽트

Letmegooutside·2022년 1월 10일
0

운영체제

목록 보기
7/16

인터럽트 (Interrupt)

CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 혹은 소프트웨어에 의해 예외상황이 발생하여 처리가 필요한 경우에 CPU에게 이를 알려주는 것

예를들어 A라는 프로그램이 CPU를 할당받고 명령을 수행하고 있는데 인터럽트가 발생하면 A는 현재 수행중인 명령의 위치를 저장해놓고, 인터럽트를 처리한 후 다시 돌아와 A의 작업을 다시 실행한다.

  • PCB (Process Control Block)
    인터럽트가 발생했을 때 프로세스의 정보는 커널의 자료구조에 저장되는데, 이 자료구조를 PCB라고 한다. 프로세스 생성 시 만들어졌다가 종료되면 사라진다.

인터럽트의 종류

하드웨어 인터럽트

  • 하드웨어 인터럽트
    하드웨어 장치의 컨트롤러가 CPU의 서비스를 요청하기 위해 발생시키는 인터럽트를 말한다.

  • 운영체제 타이머 인터럽트
    운영체제는 각 프로그램들이 공평한 시간동안 CPU를 할당받을 수 있도롱 설정된 시간동안 CPU를 사용하고, 사용시간이 종료되면 인터럽트를 발생시킨다.

소프트웨어 인터럽트 (Trap)

  • 예외(Exception)
    프로그램이 허용되지 않은 연산을 수행하려고 할 때 자동적으로 발생하는 인터럽트이다.
    (0으로 나누기, 권한 없는 메모리 참조 등)

  • 시스템 콜
    프로세스가 운영체제의 서비스를 요청하기 위해 커널의 함수를 호출하는 경우 발생하는 인터럽트

인터럽트 발생 및 처리

발생한 인터럽트는 CPU가 인터럽트를 확인하고, 인터럽트 벡터인터럽트 핸들러를 통해 상황에 맞는 인터럽트를 처리한다.

  • 인터럽트 벡터
    여러가지 인터럽트 상황에 대해 해당 인터럽트 발생 시 처리해야할 루틴의 주소를 담고 있는 테이블로 일종의 함수를 가리키는 포인터이다.

  • 인터럽트 핸들러
    실제 인터럽트를 처리하기 위한 루틴으로 인터럽트 서비스 루틴이라고도 한다.
    운영체제 코드에는 각종 인터럽트 별로 처리해야 할 내용이 이미 프로그래밍되어 있으며 이 부분을 인터럽트 핸들러라고 한다.

인터럽트가 발생하면 CPU는 인터럽트 벡터를 통해 해당 인터럽트가 실행해야할 루틴이 담긴 메모리 주소 확인한 후 인터럽트 서비스 루틴을 찾아가 상황에 맞는 처리를 진행한다.

0개의 댓글