입출력
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
입출력은 컴퓨터의 5대 기능 중 입력과 출력을 아우르는 개념으로, 컴퓨터가 사용자 또는 다른 장치와 데이터를 주고받는 방식을 의미한다. 입력 장치를 통해 데이터를 받아들이고, 출력 장치를 통해 사용자에게 정보를 전달하며, 컴퓨터 네트워크를 통한 통신도 입출력 기능에 해당한다. 운영체제는 표준 입출력, 표준 보조 입출력, 표준 프린터 출력 등 다양한 종류의 입출력을 제공하며, 리디렉트를 통해 입출력 위치를 변경할 수 있다. I/O 인터페이스는 CPU와 장치 간의 통신을 담당하며, 메모리 맵 I/O와 명령어 기반 I/O 방식이 존재한다. 또한, 가상 입출력(VIO) 기술을 통해 I/O를 가상화하며, I/O 모나드와 같은 고급 구현 방식을 통해 I/O 기능을 더욱 효율적으로 관리한다.
더 읽어볼만한 페이지
입출력 | |
---|---|
기본 정보 | |
종류 | 컴퓨터와 외부 장치 간의 데이터 전송 |
다른 이름 | 입출력 |
설명 | 컴퓨터 시스템의 기본적인 부분으로, 정보 처리 시스템과 외부 세계 사이의 통신을 담당 |
기능 및 작동 방식 | |
역할 | 인간과 컴퓨터 간의 상호 작용 다른 장치와의 통신 |
작동 방식 | 입력: 키보드, 마우스, 스캐너 등 외부 장치로부터 데이터를 받아들임 출력: 모니터, 프린터, 스피커 등 외부 장치로 데이터를 전송 |
주요 요소 | 입력 장치 출력 장치 저장 장치 |
입출력 장치 (I/O Device) | |
입력 장치 | 키보드 마우스 스캐너 |
출력 장치 | 모니터 프린터 스피커 |
저장 장치 | 하드 디스크 드라이브 솔리드 스테이트 드라이브 USB 플래시 드라이브 |
운영 체제 (OS)와의 관계 | |
역할 | 입출력 요청 관리 장치 드라이버를 통한 하드웨어 제어 시스템 자원 할당 및 관리 |
주요 기능 | 프로세스 관리 인터럽트 처리 메모리 관리 파일 시스템 관리 장치 드라이버 관리 네트워킹 지원 보안 유지 |
추가 정보 | |
중요성 | 컴퓨터 시스템의 효율성과 사용자 경험에 큰 영향 |
관련 기술 | 장치 드라이버, 파일 시스템, 컴퓨터 네트워크 |
2. 컴퓨터 처리의 입출력
정보 처리 모델에서 입출력은 데이터나 정보를 가공하는 과정의 전처리와 후처리로 간주되며, 정보 처리는 입출력이 있기에 가능하다. 입출력은 데이터 정보의 신뢰성, 사용자와 시스템의 친화성과 관련이 있다. 입출력 과정에 문제가 있으면 사용자가 스트레스를 받게 되고, 처리 전체의 의미가 반감될 수 있다.
컴퓨터 처리 분야에서 컴퓨터의 5대 기능인 제어, 연산, 입력, 출력, 기억 중 입력과 출력 기능을 입출력이라고 한다. 일반적으로 '''입력 장치'''를 통해 사용자가 컴퓨터에 데이터나 정보를 전달하고, '''출력 장치'''를 통해 컴퓨터가 사용자에게 데이터를 전달한다. 컴퓨터 간 정보를 주고받는 통신도 입출력 기능에 해당한다.
일반적인 사용자는 전체 처리 과정을 상세히 파악하기 어렵기 때문에, 입력과 출력의 차이를 비교하여 처리 과정을 평가하는 경우가 많다.
2. 1. 운영 체제의 입출력
운영 체제는 사용자에게 기본 입출력 경로 및 장치를 제공하는 경우가 많다.[3]유닉스 및 MS-DOS와 같은 유닉스 계열 시스템의 프로세스에서는 표준 입출력이라는 기본 파일 디스크립터를 사용한다.
이름 | 약칭(C 언어 표준 라이브러리) | 설명 |
---|---|---|
표준 입력 | stdin | 키보드에 대응하며, 컴퓨터(운영 체제 또는 실행 프로그램)에 지시 및 입력 데이터를 투입하는 입력 장치이다. |
표준 출력 | stdout | 디스플레이 (문자 표시)에 대응하며, 컴퓨터(운영 체제 또는 실행 프로그램)에서 실행 상태 보고 및 실행 결과가 표시되는 출력 장치이다. 실행 상태 경과 보고와 실행 결과를 동시에 출력하는 프로그램의 경우, 실행 결과만 여기에 출력한다. |
표준 에러 출력 | stderr | 디스플레이(문자 표시)에 대응하며, 컴퓨터(운영 체제 또는 실행 프로그램)에서 실행 상태의 경과 보고 등이 표시되는 두 번째 표시 출력 장치이다. |
MS-DOS는 기본적으로 다음 장치 입출력을 제공한다.
이름 | 약칭 | 설명 |
---|---|---|
표준 보조 입출력 | stdaux | 시리얼 포트나 통신 회선에 대응하며, 컴퓨터가 통신 회선을 통해 연결된 단말 등과 데이터 입출력을 주고받기 위한 입출력 장치이다. 장치명은 AUX이다.[3] |
표준 프린터 출력 | stdprn | 프린터 (문자 출력)에 대응하며, 실행 프로그램에서 인쇄를 출력하기 위한 장치이다. 장치명은 PRN이다.[3] |
컴퓨터에 따라 갖춰진 입출력의 종류나 개수는 다르다. 그러나 운영 체제는 그것들 및 다른 종류의 파일 등을 모두 파일 디스크립터라는 것으로 추상화하여 동등하게 취급하는 경우가 많다.
파일 디스크립터 등의 입출력 대상을 전환하는 것을 리다이렉션이라고 한다.
2. 2. 주 입출력 장치
컴퓨터의 5대 기능인 제어, 연산, 입력, 출력, 기억 중에서 입력과 출력 기능을 입출력이라고 한다.일반적으로 '''입력 장치'''를 통해 사용자가 컴퓨터에 데이터나 정보 등을 전달하고, '''출력 장치'''를 통해 컴퓨터가 사용자에게 데이터 등을 전달한다.
컴퓨터끼리 정보를 주고받는 통신(컴퓨터 네트워크)도 입출력 기능에 포함된다.
2. 3. 주 입출력 인터페이스
컴퓨터의 '''5대 기능'''인 제어, 연산, 입력, 출력, 기억 중에서 입출력은 입력 장치를 통해 사용자가 컴퓨터에 데이터와 정보를 전달하고, 출력 장치를 통해 컴퓨터가 사용자에게 데이터를 전달하는 기능을 말한다. 컴퓨터 간 정보를 주고받는 통신(컴퓨터 네트워크)도 입출력 기능에 포함된다.[1]I/O 인터페이스는 I/O 장치가 프로세서에 의해 구동될 때마다 필요하다. CPU는 일반적으로 버스를 통해 장치와 통신하며, 인터페이스는 프로세서에서 생성된 장치 주소를 해석하는 로직을 갖추어야 한다. BUSY, READY, WAIT와 같은 명령을 사용한 핸드셰이킹이 인터페이스에 구현되어, 프로세서는 인터페이스를 통해 I/O 장치와 통신할 수 있다. 데이터 형식 변환이 필요한 경우, 인터페이스는 직렬 데이터를 병렬 형식으로, 또는 그 반대로 변환한다. 또한, 프로세서가 유휴 상태가 되는 것을 막기 위해 인터럽트[2]를 생성하는 기능도 필요하다.
메모리 맵 I/O를 사용하는 컴퓨터는 메모리에 접근하는 명령어와 동일한 어셈블리 언어 명령을 사용하여 하드웨어에 접근한다. 명령어 기반 I/O는 CPU가 I/O를 위한 특수 명령어를 사용한다.[1] 입력 장치와 출력 장치는 데이터 처리 속도가 매우 다양할 수 있다.[2] 일부 장치는 매우 빠른 속도로 데이터를 교환하므로, CPU의 도움 없이 메모리에 직접 접근(DMA)하는 것이 필요하다.[2]
채널 I/O는 I/O 연산을 위해 특별히 설계된 명령어를 사용한다. I/O 명령어는 채널 또는 채널과 장치를 지정하며, 채널은 비동기적으로 주소 지정 및 제어 정보에 접근한다. 이는 DMA와 유사하지만 더 유연하다.
포트 맵 I/O는 특수한 I/O 명령어 사용이 필요하다. 일반적으로 하나 이상의 포트가 장치에 할당되며, 각 포트는 특수한 목적을 갖는다. 포트 번호는 일반적인 명령어에서 사용되는 주소 공간과는 별개이다.
직접 메모리 접근(DMA)은 장치가 CPU와 독립적으로 메모리와 데이터를 주고받을 수 있게 하는 방법이다.
3. 가상 입출력
정보 처리의 개념에 근거하는 모델에서, 입출력은 데이터나 정보 등을 가공하는 과정(프로세스)의 전처리와 후처리라고 생각할 수 있으며, 정보 처리는 입출력이 존재하기 때문에 가능하다고 여겨지고 있다.
입출력은 데이터 정보의 신뢰성, 이용자와 시스템의 친화성 등과 관련되어 있는데, 입출력 동안에 어떤 뛰어난 데이터, 정보의 가공 처리가 있어도, 입출력에 문제가 있거나 하면 이용자가 스트레스를 느끼게 된다.
가상 입출력이란, 컴퓨터 처리에서 가상화된 기술이다. "작업 파일을 가상 기억 장치에 전개하는 접근 방식" (『컴퓨터 용어 사전』에서) [4]virtual input/output|버추얼 인풋/아웃풋영어의 머리글자를 따서 "VIO"로 약기한다. I/O의 가상화를 I/O virtualization (IOV)라고 한다.
4. 고급 구현
정보 처리 모델에서 입출력은 데이터나 정보를 가공하는 과정의 전처리와 후처리로 볼 수 있으며, 정보 처리는 입출력이 있기에 가능하다. 입출력은 데이터 정보의 신뢰성, 이용자와 시스템의 친화성과 관련이 있다. 입출력 과정에 문제가 있으면 사용자는 불편함을 느낄 수 있다.
컴퓨터의 5대 기능인 제어, 연산, 입력, 출력, 기억 중에서 입력과 출력 기능을 입출력이라고 한다. 일반적으로 사용자는 입력 장치를 통해 컴퓨터에 데이터나 정보를 전달하고, 컴퓨터는 출력 장치를 통해 사용자에게 데이터를 전달한다. 컴퓨터 간 정보를 주고받는 통신(컴퓨터 네트워크)도 입출력 기능에 해당한다.
컴퓨터에서 특별히 지정하지 않을 때 사용되는 데이터 입출력을 표준 입출력이라고 한다. 유닉스 계열 운영 체제, MS-DOS 등 문자열 기반 운영 체제에서는 다음과 같은 종류가 있다. (괄호 안은 파일 핸들)
- 표준 입력 (stdin): 일반적으로 컴퓨터 키보드의 응답을 받는다. 컴퓨터(운영 체제나 실행 프로그램)의 지시를 받거나 입력 데이터를 추가하기 위한 입력 장치이다.
- 표준 출력 (stdout): 일반적으로 컴퓨터 디스플레이에 문자열로 출력한다. 컴퓨터(운영 체제나 실행 프로그램) 실행 상태를 보고하거나 실행 결과가 표시되는 출력 장치이다. 실행 상태 경과 보고와 실행 결과를 동시에 출력하는 프로그램의 경우에는 실행 결과만 여기에 출력한다.
- 표준 오류 출력 (stderr): 일반적으로 컴퓨터 디스플레이에 문자열로 출력한다. 컴퓨터(운영 체제나 실행 프로그램) 실행 상태의 경과 보고 등이 표시되는 두 번째 표시 출력 장치이다.
- 표준 보조 입출력 (stdaux): 일반적으로 RS-232나 통신회선과 호환된다. 컴퓨터(운영 체제나 실행 프로그램)가 통신회선을 통해 접속된 단말기 등과 데이터를 주고받기 위한 입출력 장치이다.
- 표준 프린터 출력 (stdprn): 일반적으로 프린터에 문자열을 출력한다.
컴퓨터에 설치된 운영 체제에 따라 표준 입출력의 종류나 개수는 다르다. 운영 체제나 실행 프로그램을 설계할 때, 표준 입출력 장소로 지정된 장치에서 다른 장치로 입출력 위치를 바꾸는 것을 리디이렉트라고 한다.
상위 수준의 운영 체제 및 프로그래밍 기능은 별도의, 보다 추상적인 I/O 개념과 원시 연산을 사용한다. 예를 들어, 대부분의 운영 체제는 응용 프로그램에 파일이라는 개념을 제공한다. 대부분의 프로그래밍 언어는 언어 구문이나 표준 라이브러리의 함수 형태로 I/O 기능을 제공한다.
특수 원시 함수에 대한 대안은 I/O 모나드이며, 이를 통해 프로그램은 I/O를 설명하기만 하면 작업이 프로그램 외부에서 수행된다. 이는 I/O 함수가 모든 프로그래밍 언어에 부작용을 도입하지만, 이것이 순수 함수형 프로그래밍을 실용적으로 만들 수 있다는 점에서 주목할 만하다.
운영 체제에서 제공하는 I/O 기능은 레코드 지향 파일 시스템일 수 있으며, 파일에는 레코드가 포함되거나, 파일에 바이트 스트림이 포함된 스트림 지향적일 수 있다.
참조
[1]
서적
The Essentials of Computer Organization and Architecture
https://books.google[...]
Jones & Bartlett Learning
2016-12-11
[2]
서적
Fundamentals of Computer Organization and Architecture
https://play.google.[...]
John Wiley & Sons
2016-12-11
[3]
서적
標準MS-DOSハンドブック
株式会社アスキー
1984-07-10
[4]
웹사이트
仮想入出力
https://ejje.weblio.[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com