Master Piece of jun/컴퓨터개론

Interrupt (vs PIO, pulling)

JUNFUTURE 2021. 11. 8. 01:09

Interrupt

  • Device가 I/O등의 operation을 완료했을때, Device controller가 CPU에게 그 사실을 전달하는 방법

 

Pulling 과의 비교

  • Pulling 방식은 CPU가 Device에 할당된 일을 완료했는지 직접 수시로 확인하는 방법이다.
  • Interrupt가 더 좋은 이유 : CPU 입장에서 Device에 할당된 업무의 진행정도를 수시로 확인해야하는 비효율성을 줄이고 interrupt 전까지는 현재할당된 처리에만 집중할 수 있다.

 

DMA(Direct Memory Access)

  • Device의 버퍼로부터 CPU의 간섭없이 데이터를 직접 메인 메모리로 가져오는 것
  • I/O 장치의 빠른 정보전달을 위해 사용되며 이로써 CPU의 처리속도와 Device간으 ㅣ처리속도 차이를 줄일 수 있음
  • vs PIO(Program I/O) ⇒ 장치들 사이 전송되는 모든 데이터가 CPU, 중앙처리장치를 거쳐가는 방식. DMA와 interrupt는 PIO의 단점 보완을 위해 고안된 기능
  • 추가 설명 by 위키백과
    • 주변장치의 데이터는 장치 컨트롤러에 의해 로컬 버퍼로 이동한다. 그러나 전송할 데이터가 많은 경우, 많은 양의 데이터의 이동으로 인한 부담이 커지는데 이러한 문제를 해결하기 위해 DMA를 이용한다. 장치 컨트롤러가 데이터의 한 블록을 이동시키는데 이 과정에서 DMA로 인해 CPU의 개입이 필요없게 된다. CPU에서는 데이터 이동이 완료되었다는 단 한 번의 인터럽트만 발생한다. 데이터가 전송되는 동안 CPU는 다른 작업을 수행할 수 있게 되어 효율성이 높아진다.
    • 디스크 드라이브 컨트롤러, 그래픽 카드, 네트워크 카드, 사운드 카드를 포함한 많은 하드웨어 시스템이 DMA를 사용한다. DMA는 멀티 코어 프로세서의 칩 내부 데이터 전송에도 쓰인다. DMA는 메모리 간 복사 또는 데이터 이동에도 쓰일 수 있다.

 

Interrupt handling

  1. interrupt 발생
  2. CPU에서 처리중이던 프로세스 중단 (해당 instruction cycle 마무리, 현재상태 저장, 다음 프로세스 address(return address) 저장 in PC)
  3. interrupt 처리 (service routine)

 

interrupt service routine

  • interrupt가 들어오면 이를 실행하도록 컨트롤이 넘어간다. 그래서 CPU를 쓰게 한다.
  • 각 interrupt들에 해당하는 처리 메뉴얼이 담긴 루틴들을 실행한다. 이 루틴들은 모든 service routines의 주소를 가지고 있는 interrupt vector에 의해 찾아진다. 인터럽트 벡터 테이블 (interrupt vector table)

 

interrupt 처리를 위해 현재 실행중인 프로그램을 마무리하는 방법

  • preserve the state가 핵심
  1. PC에 return address 저장
  2. CPU 처리 중 사용하던 내용들 즉, Register 값들을 메인메모리의 일정 공간에 저장

⇒ 즉, interrupt 처리를 마치고 기존에 처리 중인 상태를 복원하기 위한 준비 과정

 

interrupt 처리 중에는 다른 interrupt를 처리하는 것이 불가능하다.

  • 기존 작업 저옵가 손실 될 수 있다.

 

RAM안의 사용자 process와 OS공존

  • OS가 이들의 사용경쟁을 효율적으로 코디네이팅한다.

 

interrupt driven by hardware

  • 0나누기, 무한루프, 프로세스 침범, OS침범, OS service 요청 등등..