Interrupt란?

CPU가 동작하고 있을 때, 입출력 연산과 같이 CPU가 대기해야하는 작업이 끝났을 때 또는 소프트웨어적 예외 상황이 발생하여 처리가 필요할 때 보내는 신호 입니다.


Interrupt를 사용하는 이유?

  • I/O 이벤트 상황의 처리 : 입출력 연산이 CPU의 연산 속도 보다 현저히 느릴 뿐만 아니라 모종의 이유로 CPU가 대기해야하는 상황에서 CPU가 아무 일도 하지 않고 있을 수 없기 때문입니다. 예를 들어, 사람의 입력이 필요한 상황이 발생하면 running 중이던 process를 wait/ready 상태로 바꾸고 다른 작업을 수행하며 다시 running 시킬 때 interrupt를 통해 상황이 완료되었음을 CPU에게 알려주는 역할을 수행합니다.                                                                             

 

  • 예외상황의 처리: 우선순위가 앞서는 예외상황이 발생하였을 때 현재 작업을 멈추고 예외상황을 처리하게 하기 위함도 있습니다.

 

  • 선점형 스케쥴링 구현: 선점형 스케쥴링이란, 우선 순위가 높은 process를 먼저 동작 시키는 것입니다. 즉, 기존에 CPU가 하던 작업이 있다면 이를 중단시킨 후 우선 순위가 높은 process를 동작 시키기 위함입니다.

 

 

Interrupt 동작과정

 

  • CPU가 어떠한 작업 중에 system call을 통해 인터럽트가 발생합니다.
  • CPU는 현재 진행 중인 기계어 코드를 완료하고, 현재 수행 중이던 process의 상태를 PCB(Process Control Block)에 저장합니다. (수행 중이던 Memory 주소, 레지스터 값 등등)
  • PC에 다음에 실행할 명령어 주소를 저장합니다.
  • 인터럽트 벡터를 읽고 ISR 주소를 얻어 ISR(Interrupt Service Routine)으로 점프하여 작업을 수행합니다.
  • 이때 발생한 인터럽트 번호를 토대로 IDT(Interrupt Descriptor Table)에서 인터럽트 번호에 해당하는 함수를 호출하여 작업을 처리합니다.
  • 작업이 완료되면 PCB에서 수행중이던 process 상태를 복원하고, 인터럽트가 해제되면 PC에 저장된 주소로 다시 점프해 하던 작업을 수행합니다.

 

Reference

https://velog.io/@tnddls2ek/OS-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-Interrupt

 

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

[운영체제] Virtualization  (0) 2023.03.27
[운영체제] 컴퓨터 시스템의 구성요소  (0) 2023.03.13

+ Recent posts