shinkeonkim / TIL

Today I Learned
0 stars 0 forks source link

[운영체제]인터럽트 #35

Closed shinkeonkim closed 4 months ago

shinkeonkim commented 4 months ago

https://raisonde.tistory.com/entry/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8Interrupt%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%A2%85%EB%A5%98

https://kkhipp.tistory.com/m/156

https://m.blog.naver.com/dilector/221786020526

shinkeonkim commented 4 months ago

인터럽트

인터럽트 란 사전적 의미로는 '끼어들다', '중단시키다' 정도의 의미를 가진 말로, 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 것을 말한다.

인터럽트의 종류

인터럽트는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나뉠 수 있다.

외부 인터럽트

내부 인터럽트

소프트웨어 인터럽트 (SVC, SuperVisor Call)

shinkeonkim commented 4 months ago

인터럽트 동작 순서

  1. 인터럽트 요청
  2. 프로그램 실행 중단 : 현재 실행중인 Micro Operation까지 수행한다.
  3. 현재의 프로그램 상태 보존 : PCB(Process Control Block), PC(Program Counter) 등
  4. 인터럽트 처리루틴 실행 : 인터럽트를 요청한 장치를 식별한다.
  5. 인터럽트 서비스 루틴 실행 : 인터럽트 원인을 파악하고 실질적인 작업을 수행한다. 처리기 레지스터 상태를 보존한다. 서비스 루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 또 재귀적으로 1번에서 5번을 수횅한다.
  6. 상태 복구: 인터럽트 발생 시 저장해둔 PC(Program Counter)를 다시 복구한다.
  7. 중단된 프로그램 실행 재개 : PC의 값을 이용하여 이전에 수행중이던 프로그램을 재개한다.
shinkeonkim commented 4 months ago

인터럽트 우선 순위

여러 장치에서 인터럽트가 동시에 발생하거나 인터럽트 서비스 루틴 수행 중 인터럽트가 발생했을 경우, 우선순위을 따져서 처리한다.

전원 이상 > 기계 착오 > 외부 신호 > 입출력 > 명령어 잘못 > 프로그램 검사 > SVC

일반적으로 하드웨어 인터럽트가 소프트웨어 인터럽트보다 우선순위가 높고, 내부 인터럽트보다 외부 인터럽트가 우선순위가 높다.