I/O 기기는 컴퓨터에게 있어 인간의 오감과 같은 역할을 한다
Input : 마우스, 키보드, 카메라 등
Output : 모니터, 스피커 프린터 등
In/Out : 네트워크, 저장매채 등
CPU, 메모리, I/O 컨트롤러 등 간 연결이 필요하다
Bus는 공유된 통신 채널으로 병목현상의 원인이 될 수 있다
Bus의 성능을 저하하는 물리적 요인 : 회선 길이, 연결 노드 수
-> 최근엔 bus가 아닌 고속 시리얼 통신을 이용함
I/O는 OS가 관리
i. 여러 프로그램이 공유하므로 보호와 스케쥴링 필요
ii. 비동기 인터럽트를 발생시킴
iii. I/O 프로그래밍은 복잡하므로 OS가 프로그램에 abstraction(interface) 제공
I/O 기기는 I/O 컨트롤러 하드웨어가 관리
i. 기기로부터 데이터 송수신
ii. 소프트웨어와 연산 동기화
컨트롤러에 내장된 레지스터
i. command(control) registers : I/O 기기 작동
ii. status registers : 기기 상태와 에러 발생 표시
iii. data registers : 기기로부터 데이터 송수신
메모리 사상 I/O : 레지스터가 메모리와 같은 주소 공간/명령어 사용, 메모리에 접근하듯 접근 가능
Address decoder로 구분, 커널에 의해서만 접근 가능하도록 주소 변환 체계 사용
I/O 사상 I/O : I/O 레지스터 접근을 위한 별도 주소 공간/명령어 사용, 커널모드에서만 사용 가능
장치가 status reg에 정보 저장하고 cpu가 계속 검사하여 입출력 가능 확인
I/O 필요시 인터럽트 제어기를 통해 장치가 CPU에 통보, CPU는 작업을 멈추고 인터럽트 수행
CPU 입출력 명령 전달 시 DMA 제어기가 버스 마스터로 입출력을 수행한다.
시스템 내외부 모듈 사이에 데이터 전송을 위한 통신 링크 규약. 병렬 직렬 연결 모두 가능하고
최근 네트워크 프로토콜과 경계가 흐려지고 있다. ex) 이더넷
i. 선들의 전기적 규격
ii. 물리적 특징 (길이, 저항, 커넥터)
iii. 클럭/신호 타이밍
iv. 트랜잭션 (버스 요청/승인, 명령 전달, 데이터 전송)
버스 트랜젝션 = 요청 + 동작
마스터 : 명령어를 보내 트랜잭션 시작
슬레이브 : 명령에 따라 송수신
간단한 bus 시스템에선 CPU가 유일한 마스터, 모든 트랜잭션에 CPU가 관여하는 단점을 가짐
bus arbitration : 다수 마스터 존재시 버스 사용 조정
버스 중재 동작
i. 마스터의 요청 후 대기
ii. bus arbitrator 승인
iii. 마스터 버스 사용 종료 후 공지
버스 중재의 요소
i. 버스 우선순위 : 우선순위 높은 장치가 먼저
ii. 공정성 : 우선순위 낮은 장치도 언젠가는 사용
여러 버스 중재 스킴 존재
특성 :
i. 중재기는 요청한 마스터와 허용한 마스터 인식
ii. 다양한 마스터 선정 알고리즘 가능
대부분 CPU-MEM 버스와 고성능 I/O버스에서 사용