Computer Science/OS

[OS] 인터럽트

깨구르르 2024. 6. 16. 22:56
728x90

1. 정의

CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능

CPU가 프로그램을 실행하고 있을 때, 입/출력 장치 혹은 다른 예외 상황이 발생하여 처리가 필요한 경우에 CPU에 알려서 처리하는 기술

 


 

2. 필요성

  • 실시간 처리: 중요한 이벤트나 작업이 발생했을 때, CPU가 이를 즉시 처리하여 시스템의 반응성을 높임
  • 효율적인 자원 사용: CPU가 유휴 상태로 대기하지 않고, 필요한 작업이 발생했을 때만 개입하여 시스템 자원을 효율적으로 사용함
  • 다중 작업 처리: 여러 작업을 동시에 처리하기 위해 CPU가 중요한 작업을 우선 처리하고 나머지 작업을 관리할 수 있음

 


 

3. 처리 과정

1) 실행중인 프로그램을 중단

2) 현재 프로그램 상태를 보관 (컨텍스트 스위칭 = 문맥 교환)

3) 인터럽트 처리 루틴을 실행

4) 인터럽트 서비스 루틴을 실행

5) 인터럽트 요청 신호가 발생했을 때 보관한 PC의 값을 복원하여 이전 실행 위치로 복귀

6) 이어서 프로그램을 진행

 


 

4. 종류

 

- 외부 인터럽트

  • 정의: 입출력 장치, 타이밍 장치, 전원 등의 외부적인 요인에 의해서 발생하는 인터럽트
    = 하드웨어 인터럽트: 하드웨어 장치의 컨트롤러가 CPU의 서비스를 요청하기 위해 발생시키는 인터럽트
  • 종류
    • 전원 이상 인터럽트: 정전이나 전원이 이상이 있는 경우
    • 기계 고장 인터럽트: CPU등의 기능적인 동작 오류가 발생한 경우
    • 입출력 인터럽트(I/O Interrupt): 입출력의 종료 등의 이유로 CPU의 수행을 요청하는 인터럽트

 


 

- 내부 인터럽트

  • 정의: CPU 내부에서 자동으로 발생하는 인터럽트. 예외(Exception)라고도 불림
  • 용도: 프로그램 실행 중에 예기치 않은 상황이 발생했을 때 대응하기 위함
    • 제로 나누기 연산: 프로그램이 0으로 나누기를 시도할 때 발생
    • 잘못된 명령어: 프로그램이 유효하지 않은 명령어를 실행하려고 할 때 발생
    • 페이지 폴트(Page Fault): 메모리에 접근할 때, 접근하려는 페이지가 메모리에 없는 경우 발생

 


 

- 소프트웨어 인터럽트

  • 정의: 프로그램이 명령어를 통해 명시적으로 발생시키는 인터럽트
  • 용도: 시스템 호출(시스템 콜, System Call)이나 특정 이벤트를 처리하기 위해 사용됨
    • 시스템 콜: 운영 체제의 서비스(파일 열기, 읽기, 쓰기 등)를 요청할 때 사용됨
    • 디버깅: 프로그램의 특정 지점에서 실행을 중단하고 디버거에 제어를 넘길 때 사용됨

 


 

출처

https://velog.io/@hyun0310woo/7.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C

https://github.com/devSquad-study/2023-CS-Study/blob/main/OS/os_interrupt.md

 

728x90