어떻게 동작하는가?
img_7.png
1.
우선 입출력장치에서 입출력 버스를 통해서 인터페이스로 신호가 전달되면
2.
인터페이스에서는 데이터 전송준비 상태를 인터럽트 기능을 이용해서 CPU 에 알려준다.
3.
CPU 는 인터럽트 신호를 수신하면 현재 수행중이던 프로그램을 중지하고
a.
이때 PC (주소) 가 stack 에 저장된다.
b.
IO 전송 서비스 루틴으로 제어를 변경한다.
c.
인터럽트 종류에는 백터 인터럽트, 비벡터 인터럽트 등이 있을 수 있음!
4.
IO 전송을 수행한 뒤
5.
다시 원 프로그램으로 복귀한다.
소프트웨어 루틴의 필요성
•
컴퓨터는 주변 장치와의 인터페이스를 위해서 하드웨어적 뿐만 아니라 소프트웨어적인 루틴이 필요하다.
◦
주변장치를 제어하고
◦
프로세서와 주변 장치 사이에 데이터를 전송하기 위해서
•
IO 루틴은 주변장치의 활성화를 위해서 제어명령을 발송하거나 데이터 전송을 위한 준비상태 체크로직을 보유해야 한다.
•
입출력 소프트웨어는 시스템의 인터럽트제어를 활성화할 수 있어야 하며, 이를 실행할 주변 장치에 명령어를 보낼 수 있어야 한다.
•
DMA 전송시에 IO 소프트웨어는 DMA 채널을 개시 시킬 수 있어야 한다.
입출력장치와 CPU 간의 인터럽트 논리
1.
CPU - I/O 장치 사이의 데이터 전송은 CPU 로부터 시작이 된다.
a.
각 장치는 통신 준비 여부에 따라서 CPU 와 통신이 가능하다.
b.
시스템 전체의 퍼포먼스를 위해서 각 디바이스 인터페이스는 플래그가 enable 되었을때 비로소 CPU 에 인터럽트를 요청한다.
2.