[OS] 인터럽트(Interrupt)

foresec·2023년 7월 13일
0

Computer Science

목록 보기
17/28

인터럽트

프로그램을 실행하는 도중에 예기치 않은 상황 발생 시, 현재 실행중인 작업을 즉시 중단하고, 발생한 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것

외부/내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생
소프트웨어 인터럽트는 명령어의 수행에 의해 발생

외부 인터럽트

입출력 장치, 타이밍 장치, 전원 등 CPU 코어 외부적 요인으로 인해 발생

  • 전원 이상, 기계착오, 외부 신호, 입출력

내부 인터럽트

Exception Interrupt, Trap이라고도 부르며, 잘못된 명령이나 데이터 사용 시 발생

  • 0으로 나누기가 발생, Overflow, 명령어를 잘못 사용한 경우(Exception)

소프트웨어 인터럽트

프로그램 처리 중 명령의 요청에 의해 발생(SVC 인터럽트)

  • 사용자가 프로그램 실행시 발생
  • 소프트웨어 이용 중 다른 프로세스 싨행 시 시분할 처리를 위해 자원 할당 동작이 수행됨

예를들어 어떤 프로그램이 컴퓨터에 대한 통제권을 갖는 코드를 갖고 있을 때, 이러한 자원에 접근이 허락없이 수행될 수 없어야함. 즉, 이러한 자원에 접근하는 명령어는 Supervisor만 실행할 수 있어야 하고, 이것이 Kernel Mode(=Supervisor Mode)임.
응용프로그램은 SuperVisor Call(SVC)을 통해 허락을 맡은 후 Supervisor Mode로 변경하고 명령실행 후 다시 User Mode로 변경하는 과정을 거침

운영체제가 제공하는 서비스에 대한 프로그래밍 인터페이스가 System Call, System Call을 실행시키기 위한 CPU 명령어가 SVC

인터럽트 발생 처리 과정

`요청->중단->보관->인터럽트 처리->재개

1. 인터럽트 요청

2. 프로그램 실행 중단

현재 실행 중이던 Micro Operation까지 수행

3. 현재 실행 중인 프로그램 상태 보관

PCB(Process Control Block), PC(Program Counter) 저장

4. 인터럽트 원인 판별

인터럽트를 요청한 장치를 식별-> 원인 파악
Interrupt Vector 테이블을 참조하여 호출할 ISR(Interrupt Service Routine) 주소 값을 얻음

5. ISR 처리

실질적인 인터럽트 처리 작업을 함
서비스 루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 재귀적으로 1~5과정을 수행
ISR을 실행할 때 인터럽트 플래그(IF)를 0으로 하면 인터럽트 발생 방지 가능

6. 상태 복구

상태 복구 명령어가 실행되면 저장해둔 PC(Program Counter)를 다시 복원, 이전 실행 위치로 복원함

7. 중단된 프로그램 실행 재개

PCB의 값을 이용하여 이전에 수행 중이던 프로그램 재개


참고
https://gyoogle.dev/blog/computer-science/operating-system/System%20Call.html
https://velog.io/@adam2/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%
https://justzino.tistory.com/4
https://jhnyang.tistory.com/entry/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8%EC%9D%98-%EC%A2%85%EB%A5%98Types-of-Interrupt-trap-exception-timer-SVC-%EB%93%B1-%EC%99%B8%EB%B6%80-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-%EB%82%B4%EB%B6%80-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-SW%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8

profile
왼쪽 태그보다 시리즈 위주로 구분

0개의 댓글