ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터럽트 처리
    운영체제 2022. 3. 28. 23:34

    인터럽트(interrupt)의 개념

    인터럽트의 도입 배경

    과거 컴퓨터의 경우 입출력장치가 거의 없어서 운영체제가 주기적으로 입출력장치를 직접 확인함으로써 입출력을 직접 처리했는데, 이 방식을 폴링(polling)이라 한다. 그러나 입출력장치가 다양해지면서 운영체제가 모든 입출력장치를 직접 관리하기 어려워졌다. 그래서 운영체제에서 입출력을 요청하고, 입출력이 완료되면 입출력장치가 이벤트를 발생시켜 처리하도록 알리는 방식을 사용하는데, 이를 인터럽트라 한다.


    인터럽트란?

    CPU가 프로그램을 실행하고 있을 때, 예외상황이 발생할 경우 이를 CPU에 알려 처리할 수 있게 하는 신호를 말한다. 예외상황이란, 입출력장치에서의 입출력 뿐만 아니라, 프로그램에서의 에러 등 말 그대로 예외적인 상황을 모두 포함한다.


    인터럽트의 분류

    동기적 인터럽트(synchronous interrupt)

    프로세스가 실행중인 명령어로 인해 발생하는 인터럽트로, 내부 인터럽트, 사용자 인터럽트, 또는 트랩(trap)이라 한다. 다른 프로세스 상의 메모리 영역에 접근하는 경우와 같이 프로그램상의 문제 때문에 발생하는 인터럽트가 해당된다. 또한 Ctrl + C와 같이 사용자가 의도적으로 프로세스를 중단하기 위해 발생시킨 인터럽트나, 시스템 호출 등(printf와 같이 주변장치 조작도 포함)도 동기적 인터럽트에 해당된다.


    비동기적 인터럽트(asynchronous interrupt)

    실행 중인 명령어와 무관하게 발생하는 인터럽트로 외부 인터럽트라고도 한다. 하드디스크 읽기 오류나 메모리 불량 등으로 인한 인터럽트, 사용자가 직접 작동하는 마우스 인터럽트, 키보드 인터럽트 등이 이에 해당된다.


    인터럽트의 처리 과정

    a. 인터럽트가 발생하면, 실행 중인 프로세스가 일시 정지하며, 인터럽트 처리 이후 재시작을 위해 현재 프로세스 관련 정보(프로그램 카운터 등)을 임시로 저장한다.

    b. 인터럽트 컨트롤러가 실행되어 중요한 인터럽트부터 처리하도록 순서를 결정한다.

    c. 먼저 처리할 인터럽트가 결정되면 인터럽트 벡터에 등록된 인터럽트 핸들러가 실행된다. 인터럽트 벡터(interrupt vector)는 인터럽트 핸들러들의 주소들을 가지고 있는 공간으로, 각 인터럽트와 인터럽트 핸들러를 일대일로 연결해준다. 인터럽트 핸들러(interrupt handler)는 인터럽트를 처리해주는 함수로, 인터럽트 서비스 루틴(intterupt service routine)으로도 불린다.

    d. 인터럽트 핸들러가 인터럽트 처리를 마치면, 일시 정지된 프로세스가 다시 실행되거나 종료된다. 인터럽트가 입출력 등인 경우 다시 실행되고, 프로그램상의 심각한 문제(다른 프로세스의 메모리 영역 침범 등)의 경우 종료된다.


    이중 모드

    사용자 모드(user mode)

    사용자 프로세스가 실행되는 상태를 말한다. 여기에서는 제한된 명령어만 실행할 수 있다.


    커널 모드(kernel mode)

    커널 프로세스가 실행되는 상태를 말한다. 여기에서는 어떠한 명령어라도 실행할 수 있으며, 커널 모드에서만 실행 가능한 명령어를 특권 명령어(previleged instruction)이라 한다.


    이중 모드의 필요성

    사용자 모드에서 커널 모드로 전환되려면 반드시 인터럽트를 통해서만 전환될 수 있다. 자발적으로 전환하려면 반드시 시스템 호출을 이용해야 한다. 사용자 모드에서는 제한된 명령어만 실행되게 하고, 커널 모드로 전환된 경우에는 인터럽트 핸들러로 정해진 명령어만 실행되게 함으로써 사용자가 시스템 자원을 훼손하는 것을 방지하게 된다.


    Reference

    https://rebas.kr/862
    https://blog.daum.net/ggmgsm/75
    쉽게 배우는 운영체제

    '운영체제' 카테고리의 다른 글

    프로세스 간 통신  (0) 2022.06.14
    공유자원과 임계구역  (0) 2022.03.31
    스케줄링 알고리즘  (0) 2022.03.25
    다중 큐(multiple queue)  (0) 2022.03.24
    스케줄링 개요  (0) 2022.03.22

    댓글

Designed by Tistory.