입출력 장치
외부 장치의 범주
| 구분 | 설명 |
|---|---|
| 인간인식 장치(Human readable) | 컴퓨터 사용자가 컴퓨터와 대화하는데 적합한 장치 디스플레이, 키보드, 마우스 등 |
| 기계인식 장치(Machine readable) | 전자 장비와의 통신에 적합한 장치 디스크, 테이프 드라이브, 센서, 제어기, 작동 장치 등 |
| 통신 장치(Communication) | 원격 장치와 통신하는데 적합한 장치 디지털 라인 드라이버와 모뎀 등 |
범주 내의 차이점
- 데이터 전송률(Data rate)

- 응용(Application)
- 장치의 용도에 따라 운영체제의 소프트웨어와 정책, 지원 유틸리티에 영향
- 제어 복잡성(Complexity of control)
- 각 장치 간의 제어 인터페이스 복잡도
- 제어 복잡성의 차이점이 운영체제에 미치는 영향은 장치 제어 입출력 모듈의 복잡성에 의해 어느정도까지는 여과됨
- 전송 단위(Unit of transfer)
- 전송 데이터는 일련의 바이트나 문자들의 스트림(stream)형태로 전송될 수 있고, 보다 큰 블록 단위로도 가능
- 데이터 표현(Data representation)
- 문자 코드와 패리티 규약(parity conventions) 상의 차이점 등 데이터 인코딩 체계
- 에러 조건(Error conditions)
- 에러읜 본질, 보고되는 방식, 결과, 응답 가능 범위는 장치들마다 다름
입출력 기능 구성
| 구분 | 설명 |
|---|---|
| 프로그램된 입출력(Programmed I/O) | 처리기는 프로세스를 대신하여 입출력 모듈에게 입출력 명령을 보냄 해당 프로세스는 진행을 멈추고 요청된 입출력 작업이 완료될 때까지 바쁜 대기(busy wait)상태 |
| 인터럽트 구동 입출력(Interrupt-driven I/O) | 처리기는 한 프로세스를 대신하여 입출력 명령을 보냄 입출력 명령이 블록형인 경우 → 운영체제의 명령을 실행, 현 프로세스를 블록 상태로 전이시키고 다른 프로세스 스케줄 입출력 명령이 비블록형인 경우→ 명령을 내린 프로세스의 명령어를 계속 실행 |
| 직접 메모리 접근(DMA: Direct Memory Access) | DMA모듈이 주기억장치와 입출력 모듈간의 데이터 교환 제어 |
입출력 기능의 발달
| 구분 | 인터럽트 없음 | 인터럽트 사용 |
|---|---|---|
| 처리기를 통한 입출력 장치와 메모리 사이의 전송 | 프로그램된 입출력 | 인터럽트 구동 입출력 |
| 입출력 장치와 메모리 사이의 직접전송 | 직접 메모리 접근(DMA) | |
| ✔️ 입출력 기능이 발달하면서 점점 더 많은 입출력 기능이 처리기 개입 없이 수행 |
직접 메모리 접근
DMA 장치는 처리기를 흉내낼 수 있고, 실제로 처리기처럼 시스템 버스를 제어할 수 있음 ⇒ 시스템 버스를 거쳐 메모리로 데이터를 주고받는 데 필요
- DMA 모듈에게 입출력 연산을 위임하고 처리기는 다른 작업을 계속함
- DMA 모듈은 처리기를 거치지 않고 한 번에 한 워드씩 데이터 블록 전체를 전송한 후, 처리기에 인터럽트 신호를 보냄 ⇒ 처리기는 전송의 시작과 마지막에만 관여
DMA 모듈에게 명령을 내리는 정보
- 읽기/쓰기 여부
- 처리기와 DMA 모듈 사이의 읽기/쓰기 제어 라인 사용
- 입출력 장치의 주소
- 데이터 라인 통해 전송
- 읽기 혹은 쓰기가 시작될 메모리 위치
- 데이터 라인 통해 전송
- DMA 모듈의 주소 레지스터에 저장
- 읽거나 쓸 워드 수
- 데이터 라인 통해 전송
- 데이터 카운트 레지스터에 저장
DMA 구성 방안
단일 버스, 분리된 DMA
✔️ 모든 모듈이 동일한 시스템 버스 공유
✔️ DMA 모듈은 대행 처리기로서 메모리와 입출력 모듈 간에 데이터를 교환하기 위해 프로그램된 입출력 사용
✔️ 처리기 제어 하의 프로그램된 입출력처럼 한 단어를 전송시킬 때마다 두 개의 버스 사이클 필요(전송 요청 후 데이터 전송) ⇒ 비효율적
단일 버스, 통합된 DMA 입출력
✔️ DMA 모듈과 하나 이상의 입출력 모듈 사이에 시스템 버스가 아닌 통로가 존재
✔️ 입출력 버스를 통해 입출력 모듈들을 DMA 모듈에 연결하는 방식으로 한 단계 진전
✔️ DMA 모듈의 입출력 인터페이스 수를 하나로 줄여 주고 확장성 높은 구성 제공
시스템 버스 & 입출력 버스
✔️ DMA 모듈이 처리기나 주기억장치와 함께 공유하는 시스템 버스
⇒메모리와 데이터를 교환하거나 처리기와 제어 신호를 교환할 때 DMA 모듈에 의해서만 사용됨
✔️ DMA와 입출력 모듈 간의 데이터 교환은 시스템 버스 밖에서 일어남