어제의 나보다 성장한 오늘의 나

[운영체제] 인터럽트의 종류 본문

CS/운영체제

[운영체제] 인터럽트의 종류

NineOne 2021. 5. 24. 21:58

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

외부 인터럽트

전원 이상 인터럽트

  • 말 그대로 외부로부터 발생
  • 파워 공급이 갑자기 떨어지면 이를 감지하고 CPU에게 인터럽트를 건다.
  • 외부에서의 문제를 느끼고 인터럽트를 걸기 때문에 갑자기 꺼져서 메모리가 날아가는 불상사를 막는 서버 관리가 가능해진다.

I/O인터럽트

  • 어떤 일을 진행하는 데 I/O 장치 수행이 필요(키보드, 마우스, 디스크 등)한다면?
  • 그러면 CPU는 I/O 장치에게 일을 토스한다. 그리고 CPU는 다른 일을 처리하고 있다.
  • 그러고 나서 I/O 처리가 끝나면 CPU한테 신호를 건다.
  • 또한 입출력 처리를 하다가 CPU한테 필요한 정보를 요청할 때도 CPU를 부를 수 있다. 즉 입출력 장치가 CPU를 부를 떄 사용하는 것이다 I/O interrupt이다.

타이머 인터럽트

int num = 0; 
while( num < 10 ) { 
  Sytem.out.println("하이"); 
  // num++; 
}
  • 이렇게 num++을 생략하게 되면 무한 루프를 빠지게 된다.
  • 따라서 주기적으로 인터럽트를 걸어서 무한 루프를 빠져나와서 다른 일을 수행한다.

 

내부 인터럽트

Exception 인터럽트, trap

  • CPU가 명령어를 수행할 수 없는 경우 자기 자신한테 거는 인터럽트를 exception이라 한다.
  • 대표적으로 '0으로 나눈다'라는 명령어가 들어왔을 경우 0으로 나눌 수 없기에 인터럽트가 발생

 

S/W인터럽트

SVC

  • SVC는 프로세서 명령어로 수행시 문제가 생기면 프로세서가 운영체제를 관리 감독하는 프로그램 (supervisor = 운영체제)에게 제어권을 넘겨서 해결하는 것을 말한다.
  • application에서 파일을 직접 읽고 쓰게 하는 것이 아닌! 운영체제에게 수행하게 하는 것이다.

  • 그림처럼 user task에서 하드웨어 주변기기에 뭔가를 하고 싶지만 할 권한이 없다

 

 

출처

Comments