본문 바로가기

CS STUDY/운영체제

인터럽트(Interrupt)

인터럽트(Interrupt)

개념
  • CPU가 프로그램을 실행하고 있을 때 예외 상황이 발생해 처리가 필요한 경우 현재 실행 중인 작업을 중단하고 발생한 상황을 CPU에게 알려 처리한 후에 다시 실행 중인 작업으로 복귀하는 것 
종류

 

1. 외부 인터럽트

  • CPU 코어 외부에서 어떤 일이 발생한 것을 전기적인 신호로 CPU에게 통지하는 경우 
    • 정전 ·전원이상 인터럽트: 정전 또는 전원 공급 
    • 기계고장 인터럽트: CPU 및 기타 하드웨어의 오류로 인한 인터럽트
    • 외부 신호 인터럽트: Timer 나 Operator로 인한 인터럽트
    • 입출력 인터럽트: 입출력의 종료나 입출력의 오류로 인한 인터럽트 

2. 내부 인터럽트

  • CPU 내부에서 실행중인 프로세스에서 오류가 발생했을 때 인터럽트에 걸리는 경우
    • 잘못된 명령이나 데이터를 사용할 때 발생하며 Trap이라고 일컫음 
    • 프로그램 검사 인터럽트: Divide by Zero, Overflow/Underflow, 명령어를 잘못 사용한 경우 

3. 소프트웨어 인터럽트 

  • 사용자가 프로그램을 실행시키거나 Supervisor(=OS)를 호출하는 동작을 수행하는 경우 
  • 소프트웨어 이용 중에 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 동작 수행
우선순위
  • 정전 ·전원이상 > 기계 고장 > 외부 신호 > 입출력 > 명령어 잘못 > 프로그램 검사 > SVC
  • ** 판별법
    •  Polling(소프트웨어적 방법)
      • 인터럽트 요청 플래그를 차례로 비교해 우선순위가 가장 높은 인터럽트 자원을 찾고 맞는 인터럽트 서비스루틴 수행
      • CPU가 주기적으로 입출력 장치의 상태 확인
      • 속도가 빠른 장치에 높은 등급 부여
      • 우선순위 변경이 쉬움
      • 많은 인터럽트가 있을 경우 하드웨어적인 방법에 비해 우선순위 판단 속도가 느림
    • Interrupt(하드웨어적 방법)
      • MCU 자체가 하드웨어적으로 변화를 (자동) 감지하여 변화 시에만 일정한 동작 수행  => CPU 체크 필요 x
      • 인터럽트를 요청할 수 있는 장치와 CPU 사이에 장치번호를 식별할 수 있는 버스를 직렬/병렬로 연결
        • Daisy Chain
          • 인터럽트가 발생하는 모든 장치를 하나의 직렬 회선으로 연결 => 순차 처리 
          • 우선순위가 높은 장치를 상위에 두고 차례로 배치
          • 장치 추가가 쉽지만 한 장치의 고장은 다음 연결된 장치에 영향 
        • 병렬 우선순위 부여
          • 각 장치별 우선순위를 판별하기 위한 Mask Register에 bit을 설정
          • Mask register상 우선순위가 높은 서비스 루틴 수행 중 우선순위가 낮은 bits들을 비활성화 가능
          • 우선순위가 높은 인터럽트는 낮은 인터럽트 수행 중에도 우선 처리된다. 
동작 순서 

 

1. Process A는 system call을 통해 인터럽트 발생

2. CPU는 현재 진행 중인 명령어를 완료시키고 인터럽트 신호를 확인

3. 현재까지 수행중이었던 상태를 해당 process의 PCB에 저장

4. PC에 다음 실행할 명령의 주소를 저장

5. 발생한 인터럽트 번호를 IDT에서 확인하여 ISR 주소값을 얻어 ISR로 점프하여 루틴 실행

6. 해당 코드 실행해 일 다 처리 후 이전에 저장해 둔 레지스터 복원

7. ISR의 끝에 IRET명령어에 의해 인터럽트 해제

8. IRET 명령어 실행 후 대피시킨 PC값(인터럽트 발생 전 실행 위치)을 복원해 원래 작업 수행 

 

** ISR(Interrupt Service Routine)

** IRET(Interrupt Return)

** IDT(Interrupt Desciptor Table): 인터럽트들의 번호와 실행 코드를 가리키는 주소들이 저장되어 있는 테이블 

** Interrupt Vector: 인터럽트가 발생했을 때 해야할 일이 무엇인가를 정해 놓은 것으로 ISR의 시작주소 

 

 

참고

https://nice-engineer.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8Interrupt

 

[운영체제] 인터럽트(Interrupt)

✔️ 인터럽트란 ? CPU가 프로그램을 실행하고 있을 때 예외상황이 발생해 처리가 필요할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 뒤 다시 실행중인 작업으로 복귀하는 것을

nice-engineer.tistory.com

https://hibee.tistory.com/264

 

[OS] 1. 인터럽트 (Interrupt)

1_인터럽트 1. 인터럽트(Interrupt) 인터럽트의 개념 인터럽트의 종류 인터럽트 동작순서 인터럽트 우선순위 1. 인터럽트의 개념 1.1. 인터럽트 (Interrupt) OS는 서로 다른 일을 하는 수많

hibee.tistory.com

 

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

PCB & Context Switching  (0) 2024.01.22
IPC(Inter Process Communication)  (0) 2024.01.22
프로세스 & 스레드  (0) 2024.01.15
운영체제란(2)  (0) 2023.12.28
운영체제란(1)  (1) 2023.12.23