I/O 모듈

Web Programming/Theory 2016. 4. 7. 07:00

<프로그램에 의한 입출력(Programmed I/O)>


CPU는 입력을 지시한 후 한 워드가 컨트롤러의 버퍼에 입력됐는지를 계속해서 확인하도록 하는 방식. 입력의 완료를 알리기 위해 인터럽트라는 수단이 필요 없는 대신 CPU가 지속적으로 완료의 여부를 확인해야하므로 CPU가 다른 작업에 동원되지 못해 낭비가 발생한다.


1. CPUI/O모듈에게 입출력장치의 상태를 검사하도록 요청

2. CPU는 입출력여부를 계속적으로 확인

3. 입출력 장치가 준비 상태라면, CPU가 데이터 전송을 요청

4. I/O모듈이 입출력 장치로부터 데이터를 수신

5. I/O모듈이 CPU에게 데이터를 보내줌

6. CPU는 입출력 모듈에 출력 명령을 레지스터에 기록하여 출력 동작을 수행하도록 함

<인터럽트에 의한 입출력(Interrupt-driven I/O)>

입력을 지시한 후 한 워드의 입력이 이루어지는 사이에 CPU는 다른 작업에 활용되어 지며 입력의 완료 시 인터럽트를 통해 CPU에 알려지는 방식

1. CPUI/O모듈로 읽기 명령을 보냄

2. I/O모듈은 주변장치에서 데이터를 읽는 과정동안 CPU는 다른 일을 수행 (CPUI/O모듈에게 권한을 줘서 I/O모듈이 뭐하는지 신경을 안씀)

3. I/O모듈이 주변장치로부터 데이터를 모두 받으면 CPU로 인터럽트 신호를 보냄

4. CPU가 입력된 데이터를 요구하고 I/O모듈이 CPU에게 데이터를 전송




<메모리에 직접 접근하는 입출력(Direct Memory Access, DMA)>

CPU는 입출력할 데이터의 시작주소와 크기 등을 채널에게 알려주고 다른 작업에 동원되어지며, 이때부터 입출력은 채널의 주도하에 이루어짐

채널은 CPU로부터 버스승인을 받고 사용하지 않으면 채널이 버스를 사용함 (CPU개입 없이 채널이 메모리에 데이터를 읽거나 씀)

시스템에서 한 번의 입출력 단위를 블록(Block)라고 부르는데 전송이 완료되면 채널은 블록 단위로 CPU에게 인터럽트를 보내 처리

<독립적인 입출력(I/O mapped I/O)>

입출력 장치들이 입출력 버스(I/O Bus)를 통해 CPU와 연결되어 있는 경우이며 메모리는 따로 메모리 버스를 통해 연결

입출력은 입출력을 담당하는 명령어를 통해 실행되는데, 입출력 버스를 통해 해당 장치의 지정, 데이터, 입출력을 구분해 주는 제어(Control) 값이 전달

 


<메모리 주소지정 입출력(Memory-mapped I/O)>

입출력 장치들이 메모리와 함께 메모리 버스에 연결되어 있으며, 입출력을 위한 명령어를 따로 두어 사용하지 않고 메모리에 대한 명령어(MOVE, LOAD)등을 사용하여 실제 입출력을 하게 되는 방식. 주소공간만큼의 메모리를 활용할 수 없다는 단점이 있다.

 



Copyright2014 By 휴먼사이언스

'Web Programming > Theory' 카테고리의 다른 글

Web? Web Server? Web Client? Web Browser?  (1) 2016.03.04
Internet? web? 그리고 History...  (0) 2016.03.03
웹 동작원리와 URL 구성요소  (0) 2016.02.04
posted by 경원구