[SW_Jungle] Interrupt

Jin Lee·2022년 1월 6일
0

PintOS

목록 보기
11/16
post-thumbnail

일반적인 상황에서 갑자기 발생하는 비동기적인 이벤트로 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치 이슈나 예외 상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술로 어떤 프로세스나 이벤트가 즉각적인 주의를 요할때 하드웨어나 소프트웨어가 보내는 신호

Interrupt(넓은 의미)

  • interrupt(하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트
  • trap(소프트웨어 인터럽트)
    • exception : 프로그램이 오류를 범한 경우
    • system call : 프로그램이 커널 함수를 호출하는 경우

Interrupt vector

해당 인터럽트의 처리 루틴 주소를 가지고 있음

Interrupt service routine

  • 인터럽트 핸들러, 인터럽트 서비스 루틴이라고 부름
  • 해당 인터럽트를 처리하는 커널 함수

내부 인터럽트(소프트웨어 인터럽트)

프로그램을 수행하는 도중에 발생하는 예외 상황을 주로 처리

  • 0으로 나누는 행위
  • overflow, underflow
  • 사용자 모드에서 허용되지 않은 명령 또는 공간 접근 시

외부 인터럽트(하드웨어 인터럽트)

주로 하드웨어에서 발생되는 이벤트(프로그램 외부)

  • 전원 이상
  • 기계 문제
  • 키보드 마우스 등 I/O관련 이벤트
  • timer 이벤트

직접 생각해 볼 것

구글 검색창을 클릭 후 빈칸에서 커서가 깜박이고 있을 때, hello world를 작성하면 컴퓨터 내부에서 어떤 일이 벌어지는가?
사용자 입력 -> 외부 인터럽트 중 I/O 인터럽스 발생 -> cpu인지 -> cpu 작업 중이던 상태 저장 -> 해당 인터럽트 처리 -> 상태 복구 및 중단되었던 작업 재개

인터럽트와 시스템 콜의 차이는?

profile
깃허브 : https://github.com/jinlee9270

0개의 댓글