CS/운영체제

인터럽트(Interrupt)란?

안녕_유지 2021. 1. 7. 15:23

명령어를 처리하기 위해서는 아래 그림과 같은 절차가 필요하다.

먼저, 메모리에 있는 명령어를 읽어서 레지스터로 갖고 온다. (Fetch)

그다음, 연산 종류를 파악하고 실제로 실행하는 과정을 거치면서 명령어가 처리된다. (Decode)

이 과정이 반복되면서 전체 프로그램이 실행된다. (Execute)

 

 

 

인터럽트와 명령어 실행주기

 

 

 

컴퓨터 시스템에 존재하는 각 자원들의 상태를 파악하는 방법

 

폴링

- CPU가 일정한 시간 간격을 두고 각 자원들의 상태를 주기적으로 확인하는 방식이다.

- 단점 1) 폴링 간격이 적절해야하고, 다음 폴링까지 자신의 상태를 알릴 수 없다.

- 단점 2) 아무일 없어도 CPU는 폴링에 일정시간 들어야한다.

 

인터럽트

- 각 자원들이 능동적으로 자신의 상태변화를 CPU에게 알리는 방식이다.

- 자주 일어나는 일이라 커널에 있어야한다. 

- 폴링단점극복) CPU 시간 따로 들이지 않고, 상황 발생시 즉시 알려서 처리한다.

- 하드웨어 인터럽트 : 자원들로 부터 인터럽트

  ex) 입출력 인터럽트

- 소프트웨어 인터럽트 : CPU 자신에게 인터럽트, 트랩(Trap) 이라고도 불린다. 

  ex) 예외 : 실행중인 명령어의 오류 때문에 일어난다. (0으로 나누기, 다른 사용자 주소 참조 등)

  ex) 시스템 콜(System call) : 사용자가 의도적으로 일으킨다. 

 

 

 

인터럽트 처리과정

 

  1. 장치가 인터럽트 신호를 CPU에게 보낸다.
  2. CPU는 실행 중인 명령어를 완료시키고 인터럽트 신호를 확인힌다.
  3. 현재 수행 중인 프로그램 상태 정보를 시스템 스택에 저장한다. (PSW, PC의 내용)
  4. PC에 인터럽트 처리 루틴의 시작 주소를 넣으면 처리 루틴이 시작된다.
  5. 처리 루틴은 CPU에 있는 레지스터들의 값을 저장한 후 필요한 처리 루틴을 실행한다.
  6. PSW와 PC의 저장된 값을 원래대로 재저장한다.
  7. 인터럽트가 걸린 다음 명령어부터 실행이 재개된다.

PSW : Program Status Word 레지스터

PC : Program Counter 레지스터

 

 

인터럽트 처리과정

 

 

 

중첩된 인터럽트의 처리

 

(a) 인터럽트의 순차처리 : 인터럽트의 중요도가 같다.

(b) 인터럽트의 중첩처리 : 시급한 인터럽트가 먼저 들어온다. 중첩처리 되어지는 만큼 제어스택을 위로 쌓아준다. 

 

 

 

 

<OS? Oh Yes! 누워서 보는 운영체제 이야기> 교재를 이용한 수업 내용을 바탕으로 본인이 스스로 작성하였습니다.