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
- interrupt 발생
- CPU에서 처리중이던 프로세스 중단 (해당 instruction cycle 마무리, 현재상태 저장, 다음 프로세스 address(return address) 저장 in PC)
- interrupt 처리 (service routine)
interrupt service routine
- interrupt가 들어오면 이를 실행하도록 컨트롤이 넘어간다. 그래서 CPU를 쓰게 한다.
- 각 interrupt들에 해당하는 처리 메뉴얼이 담긴 루틴들을 실행한다. 이 루틴들은 모든 service routines의 주소를 가지고 있는 interrupt vector에 의해 찾아진다. 인터럽트 벡터 테이블 (interrupt vector table)
interrupt 처리를 위해 현재 실행중인 프로그램을 마무리하는 방법
- preserve the state가 핵심
- PC에 return address 저장
- CPU 처리 중 사용하던 내용들 즉, Register 값들을 메인메모리의 일정 공간에 저장
⇒ 즉, interrupt 처리를 마치고 기존에 처리 중인 상태를 복원하기 위한 준비 과정
interrupt 처리 중에는 다른 interrupt를 처리하는 것이 불가능하다.
- 기존 작업 저옵가 손실 될 수 있다.
RAM안의 사용자 process와 OS공존
- OS가 이들의 사용경쟁을 효율적으로 코디네이팅한다.
interrupt driven by hardware
- 0나누기, 무한루프, 프로세스 침범, OS침범, OS service 요청 등등..
'Master Piece of jun > 컴퓨터개론' 카테고리의 다른 글
듀얼 모드(User mode & Kernel mode) (0) | 2021.11.08 |
---|---|
Multi programming과 Time sharing (0) | 2021.11.08 |
Computer System Structure과 OS의 정의 (0) | 2021.11.08 |
RAM & ROM USB는 EEPROM (0) | 2021.11.08 |
파이프라인 pipeline (병렬처리) (0) | 2021.11.08 |