본문 바로가기

운영체제(OS)

인터럽트

인터럽트

개념

  • CPU가 프로그램을 실행하고 있을 때 (프로세스가 CPU를 선점하여 Running 상태 일때), 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 이를 먼저 처리할 수 있도록 하는것 (Running상태의 프로세스를 Waiting 또는 Ready 상태로 변경한다)
  • 인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나눌 수 있다.
    • 하드웨어 인터럽트는 키보드 마우스와 같은 하트웨어가 발생시킨 인터럽트
    • 소프트웨어 인터럽트는 프로그램이 오류를 범하여 Exception이 발생하거나 사용자 프로그램이 커널함수 사용을 위해 호출하는 System Call이 발생하는 경우를 말함

소프트웨어 인터럽트

  • 내부/ 동기적 인터럽트
    • trap, exception이라고 함
  • 프로세스가 실해중인 명령어로 인해 발생하는 동기적 인터럽트
    • 프로그램상의 문제로 인해(다른 프로세스의 메모리 접근...)
    • 입출력 장치 같은 주변장치의 조작에 의한
    • 산술연산중 발생(ex. 0으로 나누기)
    • 터미널 작업중단 (Ctrl + c)
  • Running -> Ready

하드웨어 인터럽트

  • 외부 / 비동기적 인터럽트
    • 인터럽트는 일반적으로 하드웨어 인터럽트를 뜻함
  • CPU 외부의 인터럽트 요구신호 때문에 발생
    • 정전, 하드웨어 고장
    • 입출력 이벤트 발생
  • Running -> Waiting

처리과정

  1. 인터럽트 발생하면 현재 실행 중인 프로세스는 일시 정지상태가 된다.
    재시작을 위해 현재 프로세스 관련정보를 임시로 저장.(PCB에 저장)
  2. 인터럽트 컨트롤러가 실행되어 인터럽트의 처리 순서를 결정
  3. 먼저 처리할 인터럽트가 결정되면 인터럽트 벡터에 등록된 인터럽트 핸들러가 실행
    • 인터럽트 벡터 : 인터럽트 종류마다 번호를 정해서 번호에 따라 처리해야할 코드가 위치한 부분을 가리키는 자료구조
    • 인터럽트 핸들러 : 해당 인터럽트를 처리하는 커널 함수, 인터럽트 처리 루틴이라고도 함
  4. 인터럽트 벡터에 연결된 핸들러가 인터럽트 처리를 마치면 일시 정지된 프로세스가 다시 실행되거나 종료

인터럽트와 이중모드

  • 사용자 프로세스에서, 하드디스크 입출력, 프로세스 생성등 커널의 기능을 사용하기 위해서 사용자모드 -> 커널모드로 전환하며 일처리를 하는 모드
    • 프로세스 -> 커널 프로세스/ 사용자 프로세스 로 나눌수있다
    • 커널 프로세스가 실행되는 상태 : 커널모드
    • 사용자 프로세스가 실행되는 상태 : 사용자모드
  • 사용자가 커널모드로 진입하는 경우 두가지 경우가 있다
    • 시스템 호출을 사용하는 경우
    • 인터럽트를 발생 시킨 경우

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

교착상태(Deadlock)  (0) 2023.02.15
동기화 문제  (0) 2023.02.15
스케줄링  (0) 2023.02.08
스레드란?  (0) 2023.02.04
프로세스  (0) 2023.02.03