데이터 레지스터는 입출력 장치와 메모리 사이에서 데이터를 임시적으로 저장하는 역할을 한다.
상태 레지스터는 장치의 현재 상태를 표현한다. 예를 들어, 장치가 현재 작업 중인지, 에러가 발생했는지, 아니면 준비 상태인지 등을 알 수 있다.
제어 레지스터는 CPU가 장치를 제어하기 위해 사용한다. 예를 들어, 작업을 시작하거나 중단시키는 등의 명령을 전달한다.
프로그램 입출력은 CPU가 직접 입출력 명령을 제어하는 방법이다.
메모리 맵 입출력 : 이 방식에서는 입출력 장치를 메모리의 일부분처럼 취급한다. CPU는 일반적인 메모리 읽기 및 쓰기 명령을 사용하여 입출력 장치와 통신할 수 있다.
고립형 입출력 : 이 방식에서는 입출력 장치를 제어하기 위한 특수한 명령을 사용한다. 메모리 맵 입출력과는 달리, 고립형 입출력은 입출력 장치를 별도의 주소 공간에 위치시킨다.
인터럽트 기반 입출력은 입출력 장치가 작업을 완료했을 때 CPU에 알리는 방식이다. 이 방식은 CPU가 불필요한 폴링을 하지 않아도 되므로 효율적이다.
폴링 : CPU가 주기적으로 장치의 상태를 확인하는 것을 말한다.
NMI(Non-Maskable Interrupt) : 일반적인 인터럽트를 마스크(비활성화)하여 무시할 수 있지만, NMI는 중요한 상황에서 사용되므로 마스크할 수 없다.
프로그래머블 인터럽트 컨트롤러(PIC) : 여러 개의 인터럽트를 효율적으로 관리하기 위해 사용된다.
Direct Memory Access(DMA)는 CPU의 개입 없이 메모리와 입출력 장치 사이에서 데이터를 직접 전송하는 방법이다. 이는 CPU의 부담을 줄이고 전체 시스템의 성능을 향상시킨다.
DMA 컨트롤러는 이 전송을 관리하며, CPU가 다른 작업을 수행하는 동안 메모리와 입출력 장치 사이의 데이터 전송을 제어한다.
입출력 버스는 시스템 내의 다양한 구성 요소들이 데이터를 전송하는 데 사용하는 통로이다. PCI 버스와 PCI Express 버스는 대표적인 입출력 버스의 예이다.
입출력 프로세서는 입출력 작업을 전담하는 특수한 프로세서다. CPU의 부담을 줄이기 위해 사용되며, 독립적으로 명령어를 해석하고 실행한다.
입출력 채널은 입출력 프로세서가 입출력 작업을 수행하는 데 사용하는 통신 경로다. 채널 프로그램이라는 특수한 프로그램을 통해 입출력 장치와 메모리 사이의 데이터 전송을 제어한다
입출력 장치가 다루기 까다로운 이유 : 입출력 장치의 종류는 매우 다양하며, CPU와 메모리에 비해 전송률이 낮다. 이로 인해 입출력 장치의 관리는 복잡한 과정이다.
입출력 제어기, 입출력 모듈 : 입출력 제어기는 입출력 장치를 직접 관리하는 하드웨어이다. 입출력 모듈은 시스템 버스와 입출력 버스 사이에서 데이터를 전송하는 역할을 수행한다.
데이터 버퍼링 : 데이터 버퍼링은 CPU와 입출력 장치 간의 속도 차이를 보완하는 기법이다. 이는 데이터를 일시적으로 저장하고, CPU가 준비될 때까지 대기하는 역할을 한다.
장치 컨트롤러의 내부 : 장치 컨트롤러 내부에는 데이터 레지스터, 상태 레지스터, 제어 레지스터가 있다. 이들은 각각 데이터 저장, 장치 상태 표시, 장치 제어를 담당한다.
장치 드라이버 : 장치 드라이버는 특정 장치를 제어하기 위한 소프트웨어로, 운영체제와 장치 사이의 인터페이스 역할을 한다.
프로그램 입출력 : 프로그램 입출력은 CPU가 직접 입출력 명령을 실행하는 방식이다. 메모리 맵 입출력과 고립형 입출력을 포함한다.
인터럽트 기반 입출력 : 인터럽트 기반 입출력은 장치가 데이터 전송 준비가 완료되면 CPU에 알리는 방식이다. 폴링 개념, NMI, PIC 등을 이해하는 것이 중요하다.
DMA 입출력 : DMA 입출력은 CPU의 개입 없이 데이터를 메모리와 입출력 장치 간에 직접 전송하는 방식이다. DMA 컨트롤러, 입출력 버스 등이 이에 관련이 있다.
입출력 프로세서, 입출력 채널 : 입출력 프로세서와 입출력 채널은 CPU의 부담을 줄이고 입출력 작업의 효율을 높이기 위한 방법이다. 이들은 병렬 처리를 가능하게 하여 시스템의 성능을 향상시킨다.