[2023.03.28] Daily Posting

HeeJun·2023년 3월 28일
0

Operating System

목록 보기
6/9

이 블로그의 목적은 학습한 내용의 정리와 더 나아가 다양한 기술들에 대한 정리와 정보 공유가 목적입니다.

혹시 글의 내용 중 틀린 부분이 있다면 댓글 남겨주세요!!!

인터럽트(Interrupt)[2]

오늘의 포스팅 내용은 인터럽트의 다양한 분류와 발생 원인에 대한 내용이다.

인터럽트는 책, 사람마다 그 분류를 다르게 하는 경우가 많다.

  1. 하드웨어 인터럽트(내부/외부), 소프트웨어 인터럽트
  2. 하드웨어 인터럽트(외부), 소프트웨어 인터럽트(내부)
  3. 동기식 예외(Exception) = 인터럽트, 비동기식 예외(Exception) = 트랩

위처럼 3가지 경우가 가장 자주 보이는데 필자는 2번 분류가 가장 이해가 쉬운거 같아 2번 분류로 설명하고 동기식/비동기식에 대한 추가적인 설명을 할 예정이다.

하드웨어 인터럽트(외부 인터럽트)

  • 정의

    • 하드웨어가 발생시키는 인터럽트, CPU 외부 요인으로 발생하며 전기 신호를 통해 CPU에게 인터럽트를 알림
  • 발생 원인

    • 전원 이상
      • 정전 또는 전원 이상
    • 기계 착오
      • CPU의 기능적인 동작 오류 발생
    • 외부 신호
      • 타이머에 의한 규정된 시간 알림
      • 키보드로 인터럽트 키를 누를 경우
      • 외부 장치로부터 인터럽트 요청
    • 입/출력
      • 입/출력 데이터의 오류나 이상현상
      • 입/출력 장치가 데이터 전송을 요구하거나 전송이 끝남을 알리는 경우
      • 입/출력 장치 동작에 CPU 기능이 필요한 경우

소프트웨어 인터럽트(내부 인터럽트)

  • 정의

    • 프로그램이 실행되면서 발생하는 인터럽트, 트랩(Trap) 또는 예외(Exception)이라고도 한다
  • 발생 원인

    • 잘못된 명령이나 데이터로 인해 발생
    • Overflow or Underflow
    • 0으로 나누는 경우
    • 명령어의 잘못된 사용(Exception)
    • 보호 영역 내의 메모리 주소에 엑세스 하는 경우
    • 프로그램 검사(Program Check)
      • 프로그램 실행 오류로 발생
    • 프로그램 실행 중 의도적인 System Call
      • SVC(Super Visor Call)이 대표적
      • 일반적인 프로그램은 User Mode에서 실행되지만 권한 문제와 같이 Kernel Mode에 진입해야 하는 경우
        SVC과 같은 System Call을 의도적으로 호출해 Kernel Mode에 진입해 처리를 한다
      • 프로그램 실행 중 내부에서 임의로 호출하거나 사용자가 의도적으로 호출한다
      • 예를 들어 우리가 프로그램을 설치 할 때에 간혹 시스템 권한을 요청하는 경우가 있는데 이에 해당한다고 생각하면 된다

비동기식 인터럽트(Asynchronous Interrupt)

  • 정의

    • 정해진 기준없이 예측 불가하게 발생하는 이벤트, 우리가 흔히 아는 하드웨어 인터럽트가 여기에 해당한다

동기식 인터럽트(Synchronous Interrupt)

  • 정의

    • 기준에 맞추어 또는 시간에 맞추어서 발생하는 인터럽트, 예외(Exception), 트랩(Trap)이 여기에 해당한다
  • 예외(Exception)

    • 동기식 인터럽트의 한 종류로 명령어 실행의 결과로 자주 발생
    • 0으로 나누는 경우, Page Fault 등
  • 트랩(Trap)

    • 특별한 조건을 설정해 놓고 해당 조건에 부합하는 상황이 발생하는 경우에 작동
    • 프로그램을 작성 할 때 테스트를 위해 설정해 놓거나, Exception을 발생시키는 조건/System Call 등 OS 내에서 미리 설정해 놓은 트랩이 존재한다

인터럽트, 트랩, 예외 이 3가지에 대한 내용이 많이 혼란스러울 것이다.

이 3가지에 대해 한번 더 정리하자면

인터럽트(interrupt), 예외(exception), System Call이 모두는 사실 발생하면 Trap에 의해 Catch된다.
그 후 Trap handler가 상황에 맞게 interrupt → interrupt service routines(ISR), system call → system services, exception → exception handler을 맵핑해 처리하도록 한다.

Interrupt를 가장 큰 범위로 보고 그 안에서 Hardware로 인해 비동기적으로 발생하는 Interrupt는 Hardware Interrupt,
User Program으로 인해 동기적으로 발생하는 Trap, Exception, System Call은 Software Interrupt라고 보는 것이 가장 이해가 쉽다.

위 사진은 필자가 학부생 때 공부한 자료이다. 학습할 때 참고하면 좋을 것 같아 첨부하겠다.

이 부분에 대해서는 추후 더 좋은 분류나 설명이 있으면 업데이트 하도록 하겠다.

profile
내가 작성한 코드 한 줄로 누군가를 편하게

0개의 댓글