입출력
Input/output[1][2]컴퓨팅에서 입출력(I/O, 또는 비공식 IO 또는 IO)은 컴퓨터와 같은 정보처리 시스템과 외부 세계, 어쩌면 사람 또는 다른 정보처리 시스템 간의 통신이다.입력은 시스템에 의해 수신되는 신호 또는 데이터이고 출력은 시스템에서 송신되는 신호 또는 데이터다.이 용어는 동작의 일부로 사용될 수도 있다. "I/O 수행"은 입력 또는 출력 작동을 수행하는 것이다.
I/O 장치는 컴퓨터와 통신하기 위해 사람(또는 다른 시스템)이 사용하는 하드웨어의 부품이다.예를 들어 키보드나 컴퓨터 마우스는 컴퓨터의 입력 장치인 반면 모니터와 프린터는 출력 장치인 것이다.모뎀과 네트워크 카드와 같은 컴퓨터 사이의 통신을 위한 장치는 일반적으로 입력과 출력 작업을 모두 수행한다.
기기를 입력 또는 출력 중 하나로 지정하는 것은 관점에 따라 다르다.마우스와 키보드는 인간 사용자가 출력하는 물리적인 움직임을 취하여 컴퓨터가 이해할 수 있는 입력 신호로 변환한다. 이러한 장치의 출력은 컴퓨터의 입력이다.마찬가지로, 프린터와 모니터는 컴퓨터가 입력으로 출력하는 신호를 취하며, 이러한 신호를 인간 사용자가 이해할 수 있는 표현으로 변환한다.인간 사용자의 관점에서, 이러한 표현을 읽거나 보는 과정은 산출물을 받는 것이다; 컴퓨터와 인간 사이의 이러한 형태의 상호작용은 인간과 컴퓨터의 상호작용 분야에서 연구된다.더 복잡한 문제는 전통적으로 입력 장치(예: 카드 리더, 키보드)로 간주되는 장치가 선택 스택러, 디스플레이 키보드 표시등과 같은 제어 명령을 수신할 수 있는 반면, 출력 장치로 간주되는 장치는 예를 들어 낮은 토너, 용지 부족, 용지 걸림 등과 같은 상태 데이터를 제공할 수 있다는 것이다.
컴퓨터 아키텍처에서는 CPU가 개별 명령을 사용하여 직접 읽거나 쓸 수 있는 CPU와 메인 메모리의 조합이 컴퓨터의 두뇌로 간주된다.예를 들어 디스크 드라이브에서 데이터를 읽음으로써 CPU/메모리 콤보와의 정보 전송은 I/O로 간주된다.[2]CPU와 그 지원 회로는 장치 드라이버의 구현과 같이 낮은 수준의 컴퓨터 프로그래밍에 사용되는 메모리 매핑된 I/O를 제공하거나 I/O 채널에 대한 액세스를 제공할 수 있다.I/O 알고리즘은 디스크 드라이브와 같은 보조 저장 장치와 데이터를 교환할 때 위치성을 이용하고 효율적으로 수행하도록 설계된 알고리즘이다.
인터페이스
I/O 장치가 프로세서에 의해 구동될 때마다 I/O 인터페이스가 필요하다.일반적으로 CPU는 버스를 통해 장치와 통신한다.인터페이스는 프로세서에 의해 생성된 장치 주소를 해석하는 데 필요한 논리를 가지고 있어야 한다.핸드셰이킹은 적절한 명령(예: BUSY, READY, WAIT)을 사용하여 인터페이스에 의해 구현되어야 하며 프로세서는 인터페이스를 통해 I/O 장치와 통신할 수 있다.서로 다른 데이터 형식이 교환되는 경우 인터페이스는 직렬 데이터를 병렬 형태로 변환할 수 있어야 하며 그 반대의 경우도 가능해야 한다.프로세서가 입력 장치로부터 데이터를 기다리는 동안 프로세서가 유휴 상태에 있는 것은 낭비일 수 있기 때문에, 필요한 경우 프로세서에 의해 추가 처리를 위한 인터럽트[1] 생성 및 해당 유형 번호의 제공이 있어야 한다.[clarification needed]
메모리 매핑된 I/O를 사용하는 컴퓨터는 컴퓨터가 일반적으로 메모리에 액세스하는 데 사용하는 조립 언어 지침을 사용하여 특정 메모리 위치에 읽고 쓰는 방법으로 하드웨어에 액세스한다.다른 방법은 CPU에 I/O에 대한 전문 지침이 있어야 하는 지침 기반 I/O를 사용하는 것이다.[2]입력·출력 장치 모두 데이터 처리 속도가 크게 달라질 수 있다.[1]매우 빠른 속도로 데이터를 교환할 수 있는 일부 장치에서는 CPU의 지속적인 지원 없이 메모리(DMA)에 직접 액세스할 수 있어야 한다.[1]
상위 레벨 구현
상위 레벨의 운영 체제와 프로그래밍 시설은 분리되고 보다 추상적인 I/O 개념과 원시 요소를 채택한다.예를 들어, 대부분의 운영체제는 파일 개념을 가진 응용프로그램을 제공한다.유닉스 계열의 C 및 C++ 프로그래밍 언어와 운영 체제는 전통적으로 파일 및 장치를 스트림으로 추상화하며, 읽기 또는 쓰기 또는 때로는 둘 다 가능하다.C 표준 라이브러리는 입출력 스트림을 조작하는 기능을 제공한다.
ALGOL 68 프로그래밍 언어의 맥락에서 입력 및 출력 설비를 총칭하여 transput이라고 한다.ALGOL 68 transput 라이브러리는 다음과 같은 표준 파일/장치를 인식한다.stand in
,stand out
,stand errors
그리고stand back
.
특수한 원시 기능에 대한 대안으로 I/O 모나드가 있는데, 프로그램에서는 I/O만 기술할 수 있으며, 프로그램 외부에서 동작이 이루어진다.이는 I/O 기능이 어떤 프로그래밍 언어에도 부작용을 일으킬 수 있기 때문에 주목할 만하지만, 이것은 순전히 기능적인 프로그래밍을 실용적으로 가능하게 한다.
채널 I/O
채널 I/O는 I/O 작업을 수행하도록 특별히 설계된 지침을 사용해야 한다.I/O 지침은 채널 또는 채널과 장치를 다루며, 채널은 다른 필요한 모든 어드레싱 및 제어 정보에 비동기적으로 액세스한다.이것은 DMA와 비슷하지만 더 유연하다.
포트맵 I/O
포트맵 I/O도 특수 I/O 지침을 사용해야 한다.일반적으로 하나 이상의 포트가 장치에 할당되며, 각 포트는 특별한 목적을 가지고 있다.포트 번호는 일반 지침에서 사용하는 주소 공간과 별도의 주소 공간에 있다.
직접 메모리 액세스
DMA(Direct Memory Access)는 장치가 CPU와 독립적으로 대용량 데이터 청크를 메모리와 주고받는 수단이다.
참고 항목
참조
- ^ a b c d Abd-El-Barr, Mostafa; Hesham El-Rewini (2005). Fundamentals of Computer Organization and Architecture. John Wiley & Sons. pp. 161–162. ISBN 9780471478331. Archived from the original on 21 December 2016. Retrieved 11 December 2016.
- ^ a b c Null, Linda; Julia Lobur (2006). The Essentials of Computer Organization and Architecture. Jones & Bartlett Learning. p. 185. ISBN 0763737690. Archived from the original on 20 December 2016. Retrieved 11 December 2016.
외부 링크
- Wikimedia Commons의 입출력 관련 미디어