[운영체제] 인터럽트

2023. 5. 20. 16:59·CS/OS

인터럽트 메커니즘

  • 인터럽트(Interrupt):
    OS에 현재 실행 중인 프로세스를 중단하고 인터럽트 핸들러를 실행하도록 알리는 이벤트.
    시스템의 효율성을 높이고 적시에 서비스를 제공하기 위해 사용됩니다.
    I/O 장치가 지속적으로 CPU를 폴링하는 대신, 필요할 때만 신호를 보낼 수 있게 합니다.
    시스템 타이머 인터럽트와 같은 특정 간격으로 발생하는 이벤트를 적시에 처리할 수 있게 합니다.
    인터럽트를 처리하기 위해 CPU는 커널 모드로 전환되며, 이 모드에서는 사용자 모드에서 접근할 수 없는 권한 있는 명령어와 메모리에 접근할 수 있습니다.
  • 인터럽트의 종류:
    • 프로그램 인터럽트: 프로그램 실행 중에 발생하는 예외적인 상황
    • 타이머 인터럽트: 일정 시간마다 발생하는 인터럽트
    • 입출력 인터럽트: I/O 장치와 관련된 이벤트
    • 하드웨어 실패 인터럽트: 하드웨어 고장 등의 비정상적인 이벤트

인터럽트를 포함한 명령 사이클


프로그래머블 인터럽트 컨트롤러 (PIC)

  • I/O 장치는 고유한 또는 공유된 인터럽트 요청(IRQ) 라인을 가집니다.
  • IRQ는 특수 하드웨어에 의해 인터럽트 벡터에 매핑되어 CPU로 전달됩니다.
    • PIC는 장치의 요청을 IRQ 번호로 변환하고 이를 CPU에 전달합니다.
    • CPU는 ACK 신호를 통해 인터럽트 처리를 완료했다고 응답합니다.
  • 인터럽트 마스킹:
    • 특정 인터럽트를 비활성화(마스크)하여 시스템에서 처리되지 않도록 할 수 있습니다.
    • 각 인터럽트에는 우선순위가 있으며, 높은 우선순위의 인터럽트가 낮은 우선순위 인터럽트를 처리할 수 있도록 허용됩니다.
  • 대규모 장치 관리:
    • 여러 장치에서 발생하는 인터럽트를 효율적으로 처리하기 위해 PIC는 IRQ를 통해 인터럽트를 관리합니다.

인터럽트 처리 과정

  1. 인터럽트 발생:
    • 인터럽트가 발생하면 현재 프로세서의 프로그램 카운터(PC)와 프로세서 상태 워드(PSW) 값이 스택에 푸시됩니다.
  2. 커널 모드로 전환:
    • CPU는 인터럽트 핸들러의 진입 지점으로 PC를 로드하고, PSW는 인터럽트를 비활성화하여 다른 인터럽트를 방지할 수 있습니다.
  3. 인터럽트 처리:
    • 인터럽트 처리 후, 스택에 저장된 PC와 PSW를 팝하여 이전 상태로 복귀하고, 중단된 명령어에서 실행을 재개합니다.

인터럽트 및 예외 처리

  • 비동기 인터럽트 (Interrupts):
    • 외부 하드웨어 장치에 의해 발생하며, 주로 I/O 장치나 타이머로부터 발생합니다.
  • 동기 인터럽트 (Exceptions):
    • CPU에서 발생하는 오류나 예외적인 상황. 예: '0으로 나누기', '세그먼트 오류', '페이지 오류', 시스템 콜(의도적인 예외 포함)
  • Linux에서의 처리:
    • 인터럽트와 예외는 모두 동일하게 처리되며, 이를 통해 다양한 하드웨어 및 소프트웨어 오류를 관리합니다.
인터럽트 예외
원인: CPU 외부에서 발생 원인: CPU 내부에서 발생 (현재 실행 중인 명령어에서)
비동기적: CPU 클럭과 독립적 동기적: CPU 클럭에 맞춰 발생
현재 명령어 완료 후 처리 현재 명령어 완료되지 않고 처리됨
예시: I/O 장치, 타이머 예시: 잘못된 명령어, 잘못된 주소, 0으로 나누기

중첩 인터럽트 처리

  1. 인터럽트 금지: 유저 프로그램이 실행 중일 때는 인터럽트 발생을 금지합니다.
  2. 우선순위 정의:
    • 각 인터럽트에 대한 우선순위를 정의하여, 높은 우선순위 인터럽트가 낮은 우선순위 인터럽트를 처리할 수 있도록 합니다.

인터럽트 메커니즘의 장단점

  • 장점:
    • 시스템 리소스를 효율적으로 사용할 수 있습니다. 예를 들어, CPU는 대기 중인 I/O 작업을 기다리면서 다른 작업을 처리할 수 있습니다.
    • I/O 작업 대기 시간이 상대적으로 긴 경우, 폴링 방식보다 낭비되는 시간이 적습니다.
  • 단점:
    • 추가 명령어 실행이 필요합니다(ex. 인터럽트 핸들러 호출).
    • 레지스터 저장 및 복원, 인터럽트의 성격 파악, 적절한 조치 결정 등으로 추가적인 시스템 자원이 소모됩니다.
    • 인터럽트 우선순위가 잘못 관리되면 시스템 성능 저하나 인터럽트 누락 등의 문제가 발생할 수 있습니다.
저작자표시

'CS > OS' 카테고리의 다른 글

[운영체제] 메모리  (0) 2025.01.28
[운영체제] virtual box에서 ubuntu 설치 및 터미널 명령어 실행하기  (0) 2023.07.09
운영체제 - 생산자 소비자 문제 semaphore을 활용하여 해결하기  (0) 2023.05.31
가상머신에서 우분투 설치하는 법  (0) 2023.05.26
[운영체제] Overview  (0) 2023.05.19
'CS/OS' 카테고리의 다른 글
  • [운영체제] virtual box에서 ubuntu 설치 및 터미널 명령어 실행하기
  • 운영체제 - 생산자 소비자 문제 semaphore을 활용하여 해결하기
  • 가상머신에서 우분투 설치하는 법
  • [운영체제] Overview
abyss-s
abyss-s
프론트엔드 공부합니다.
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (12)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (3)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    코드트리
    네트워크
    DP
    Python
    C++
    BAEKJOON
    github
    자바스크립트
    BFS
    자바기반응용프로그래밍
    Java
    백준
    통계학
    그리디
    OS
    생활코딩
    파이썬
    React
    운영체제
    JavaScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
[운영체제] 인터럽트
상단으로

티스토리툴바