interrupt란?

인터럽트는 cpu가 프로그램을 구동 중일 때, 입출력이나 예외 상황이 발생하여 처리가 필요한 경우에 cpu에 신호를 보내는 것입니다. '방해'나 '끼어들기'와 같은 사전적인 개념보다는 우선 순위가 좀 더 높은 작업이 있을 때, 우선 순위가 높은 작업부터 처리한다는 개념으로 이해합니다.

[ hardware interrupt ]

하드웨어가 발생시키는 인터럽트로, cpu 외의 하드웨어가 cpu에게 신호를 보내야 할 경우 발생합니다.
ex) 전원이상, cpu의 외부적인 기능에 이상이 발생했을 때, overflow가 발생했을 때

[ software interrupt ] 

소프트웨어가 발생시키는 인터럽트로, 사용자 프로그램이 인터럽트하는 경우에 발생합니다.
ex) SVC (supervisor call : 자동적으로 관리 감독해서 위험성을 가진 프로세스들이 실행되는 것을 방지, 예외 상황이 발생했을때

[ 인터럽트 발생/종료 Flow ]

  1. cpu가 현재 수행중이던 작업 중지
  2. 인터럽트가 시작되는 지정된 위치(인터럽트가 요청한 주소값)으로 실행 위치 변경
  3. 인터럽트 실행
  4. 인터럽트 종료
  5. 인터럽트 이정에 수행중이던 작업을 재개(수행 중이던 복귀 주소를 미리 저장)
  • 인터럽트는 서비스 루틴으로 제어 전송
  • 인터럽트에 의해 중단된 명령어 주소를 반드시 저장
  • 인터럽트 서비스 이후, 저장된 복귀 주소를 프로그램 카운터에 적재하고 중단된 컴퓨팅을 재개

인터럽트 타임라인

인터럽트 타임라인을 보면 처음에 I/O request가 발생합니다. 그러면 유저 프로세스는 하던 작업을 수행합니다.(I/O 디바이스, 여기서 인터럽트를 발생시키는 주체). I/O 디바이스가 요청을 transferring 해주면. transfer가 끝난 지점에서 interrupt가 걸리고 cpu에 요청을 보냅니다. 그러면 cpu는 인터럽트가 발생한 작업을 수행하고, 인터럽트가 종료되면 다시 원래 수행중이던 작업으로 돌아가 수행하게 됩니다. 

'Computer Science > OS' 카테고리의 다른 글

시스템 콜  (0) 2022.10.17
운영체제 서비스  (0) 2022.10.17
bootstrap  (0) 2022.10.15
운영체제  (0) 2022.10.14

+ Recent posts