[OS] 인터럽트

박시은·2023년 10월 1일
0

OS

목록 보기
6/27
post-thumbnail
post-custom-banner

▶ 인터럽트란?

  • H/W 또는 S/W에서 어떤 사건이 발생할 때 CPU에게 알려 사건을 처리하는 매커니즘을 말한다.
  • OS는 인터럽트 기반으로 동작한다.
  • CPU가 인터럽트되면, CPU는 하던 일을 멈추고 즉시 고정된 위치로 실행을 옮겨 인터럽트를 처리한다.⭐

▷ 인터럽트의 종류

H/W 인터럽트

  • 하드웨어가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주거나 cpu 서비스를 요청해야 할 경우 발생한다.

  • ex) I/O 작업이 완료됐을 때, 오퍼레이터나 타이머에 의해 프로그램이 종료됐을 때, 정전, 하드웨어 고장

S/W 인터럽트

  • 예외 or 트랩에 의해 발생하는 인터럽트

  • ex) 0으로 나눴을 때, 유효하지 않은 메모리 접근, 시스템 콜




▶ 인터럽트 처리

① 입출력 장치는 데이터 버스를 통해 CPU에게 인터럽트 요청 신호를 보낸다. (이때, 인터럽트 벡터도 같이 보내짐)

② CPU는 인터럽트 플래그를 통해 현재 인터럽트를 받아드릴 수 있는지 확인한다.

③ OS가 인터럽트를 받아드릴 수 있다면 CPU는 처리중이었던 프로세스를 중단하고 현재 CPU 상태를 PCB에 저장한다.

④ 그 후, 인터럽트 컨트롤러가 실행된다.


** Context: CPU 상태를 의미한다.

** Context Switching: Context 저장 후, 인터럽트 서비스를 수행하는 것을 의미한다.


▷ 인터럽트 컨트롤러

① 중요한 인터럽트부터 처리되도록 순서를 결정한다.

② 인터럽트 벡터는 각각의 인터럽트를 구분하기 위한 정보로 모든 ISR의 시작 주소를 갖고 있다.

③ 인터럽트는 인터럽트 벡터를 참조하여 ISR로 제어를 넘기고 ISR은 미리 정의된 함수를 실행하여 인터럽트를 처리한다.

④ ISR 실행이 끝나면 원래 수행하던 프로그램으로 Return하여 실행을 재개한다.


** ISR(Interrupts Service Rountine): 인터럽트 처리를 위해 미리 처리된 함수를 말한다.


❓인터럽트 서비스 루틴(ISR)과 인터럽트 핸들러의 차이점?

  • GPT에 따르면 ISR은 주로 하드웨어 레벨에서 발생하는 인터럽트 이벤트를 처리하기 위한 코드를 지칭하며, 인터럽트 핸들러는 인터럽트와 관련된 다양한 작업 및 루틴을 포함하는 더 일반적인 용어라고 한다.
  • 하지만, 구글링을 해보니 주로 혼용해서 사용하는 것 같다.



▶ 인터럽트 원리

  • 인터럽트 구조에서 ‘인터럽트 당한 명령의 주소’는 저장되어야 한다.
  • 인터럽트 처리가 끝나면 ‘인터럽트 당한 명령어’로 실행이 다시 옮겨갈 수 있다.

① 인터럽트 발생
② 해당 주소 명령 저장 (save pc = 5)
③ 인터럽트 처리 위해 PC=ISR 넣음
④ 인터럽트 처리가 끝난 후 저장한 위치로 되돌아감


▷ 인터럽트 상세 원리

인터럽트가 처리되고 있는 동안에는 인터럽트의 유실을 방지하기 위해 다른 인터럽트는 억제된다.




▶ 인터럽트 TimeLine




📎참조

  • 성결대학교 강영명 교수님 운영체제 (2023)
  • 쉽게 배우는 운영체제 - 한빛 아카데미
profile
블로그 이전했습니다!
post-custom-banner

0개의 댓글