인생을 코딩하다.

[OS]인터럽트(interrupt) 본문

OS

[OS]인터럽트(interrupt)

Hyung1 2021. 4. 6. 19:25
728x90
반응형
  • 프로세스가 수행 중에 다른 프로세스를 수행하기 위하여 현재 수행 중인 프로세스를 중단하거나 외부 입력장치에 의해 프로세스가 중단되는 상태를 인터럽트라고 한다.
  • 사용자에 의해서 새로운 프로그램이 실행 될 때, 현재 실행 중인 프로세스의 상태를 잠시 중단하고, 새로운 프로그램을 실행 시키는 과정이다. 잠시 중단한 프로세스의 상태는 다시 실행을 시작하기 위해 중단되었던 시점의 정보를 저장한다.
  • 인터럽트는 입출력 연산, 하드웨어 실패, 프로그램 오류 등에 의해서 발생한다.
  • 인터러브가 발생한 경우, 진행 중인 프로그램의 재개에 필요한 레지스터 문맥을 저장한다.
  • 레지스터 문맥은 PCB에 저장한다.

프로세스 상태 전이도

위의 그림에서 준비 상태, 실행 상태, 실행 상태 전, I/O 등 모든 중단 형태를 인터럽트라고 한다.

 

왜 인터럽트를 시킬까?

여러 개의 프로그램이 돌아갈때, 새로운 프로그램을 실행하려고 하면 현재 진행 중인 프로그램을 잠시 중단시키고 새로운 프로그램을 실행시키기 위해

 

인터럽트 처리를 위한 작업 순서

  1. 인터럽트가 발생하며 운영체제가 제어권을 받는다.
  2. 운체제는 인터럽트 받은 현재의 프로세스 상태를 저장한다. → PCB에 저장
  3. 운영체제는 인터럽트의 발생 원인을 찾아 지정되어 있는 루틴으로 제어권을 넘겨준다.
  4. 인터럽트 처리 루틴이 인터럽트를 처리한다.
  5. 인터럽트가 걸렸던 이전 프로세스의 상태로 복구된다.
  6. 인터럽트가 걸렸던 시점 이후부터 프로세스가 실행된다.

인터럽트의 특징

  • 컴퓨터 시스템에서 비상사태가 발생할 떄 그 처리를 위해서 인터럽트가 필요하다.
  • 하드웨어의 기능에 의하여 프로그램의 착오는 정해진 인터럽트 처리 루틴에 의해 복구되어야 한다.
  • 컴퓨터가 정상적인 업무를 수행하는 도중에 발생하는 예기치 않은 일들에 대하여 컴퓨터의 작동이 중단 없이 계속적으로 업무를 수행할 수 있도록 하는 기능이다.
  • 인터럽트가 발생되면 CPU는 현재 실행중인 명령을 마친 후 CPU의 상태를 보관한다.
  • 연산 오류가 발생할 경우에 인터럽트가 발생한다.
  • 메모리 보호 구역에 접근을 시도하는 경우에 인터럽트가 발생 한다.
  • 입출력이 완료되었을 때 인터럽트가 발생한다.
  • 인터럽트 요구를 처리하는 서비스 프로그램의 시작 주소는 다음 수행할 명령어의 번지를 기억하고 있는 레지스터인 프로그램 계수기에 기억시킨다.

동기 인터럽트(Synchronous Interrupt)

명령어 실행 중 CPU에 의해 처리되는 인터럽트로 하나의 명령어가 종료 후 인터럽트 발생한다. 프로세스가 실행 중인 0으로 나누기를 할 때 발생하는 인터럽트, 프로세스 내 명려어 실행 떄문에 발생하는 인터럽트, 프로세스 내 명령어가 보호 메모리영역을 참조할 때 발생하는 인터럽트 등을 말한다.

 

비동기 인터럽트(Asynchronous Interrupt)

다른 하드웨어 장치가 CPU 클럭시 시그널과 상관없이 생성하는 인터럽트이다. 키보드 혹은 마우스를 사용할 때 발생하는 것과 같은 인터럽트를 말한다.

 

Thread가 너무 많아지면 인터럽트 횟수가 증가한다.

Thread가 많아지면 시간할당량은 작아진다. 시간할당량이 작으면 동시에 수행되는 느낌을 가질 수 있지만 그에따라**Context Switching(문맥교환)**과 인터럽트 횟수오버헤드가 많아지는 단점이 있다.

728x90
반응형

'OS' 카테고리의 다른 글

[OS] 프로세스 간 통신(Inter-Process Communication,IPC)  (0) 2021.04.28
[OS] 커널 수준의 쓰레드 vs 사용자 수준의 쓰레드  (0) 2021.04.07
[OS]context switching  (0) 2021.02.06
OS 정리  (0) 2020.09.12
Comments