입출력 장치
Last updated
Last updated
주변장치의 종류 : 하드디스크, SSD, 키보드, 마우스 등
주변장치의 내부 구조
버스
주변장치는 메인보드에 있는 버스로 연결된다.
하나의 버스는 Adress Data Controll 버스로 이루어져 있어서 I/O 디바이스는 세 가지 버스를 따로 받을 수 있다.
각 하드웨어에 맞는 외부 인터페이스가 존재한다.
장치의 상태와 데이터를 보관할 수 있는 각종 레지스터들이 존재한다.
입출력 작업을 할 때, 데이터를 저장하는 역할을 한다.
CPU가 사용하기 위해 메모리로 이동되기도 한다.
캐릭터 디바이스와 블록 디바이스로 나눌 수 있다.
데이터의 전송 단위가 캐릭터(글자)인지 블록인지
캐릭터 디바이스 : 마우스, 키보드, 사운드카드, 직병렬 포트
블록 디바이스 : 하드디스크, SSD, 그래픽 카드
캐릭터 디바이스는 상대적으로 적은 양의 데이터를 전송한다.
여러 주변장치는 메인보드 내 버스로 연결된다.
예전에는 주변 장치를 하나의 버스로 연결했었다.
CPU가 작업을하는 중 I/O 명령을 만나면, 직접 입출력 장치에서 데이터를 가져와야했다.
이에 입출력 중에는 CPU가 다른 작업을 할 수 없어서 CPU 사용률이 떨어졌다.
입출력 제어기와 여러개의 버스를 추가하여 문제를 해결했다.
CPU는 I/O 명령을 만나면, 입출력 제어기에게 입출력 제어를 맡기고, 다른 작업을 실행한다.
입출력 제어기는 두 개의 채널 (시스템 버스, 입출력 버스)로 구분한다.
시스템 버스 : 고속으로 사용하는 CPU, 메모리
입출력 버스 : 주변 장치
입출력 제어기의 버스 : 세부적으로 느린 장치와, 빠른 장치로 구분하기 위해 나뉜다.
고속 입출력 버스
저속 입출력 버스
느린 장치와 빠른 장치를 구분해 속도 차이로 인한 병목현상을 해결했다.
그래픽카드의 경우, 다루는 데이터가 고용량이며, 고속 입출력으로도 처리하지 못해서 시스템 버스에 바로 연결되어 사용한다.
입출력 제어기는 여러 주변 장치를 처리하는데 입출력 버스에서 온 데이터를 메모리로 옮긴다.
메모리는 CPU의 명령으로 움직이기 때문에 입출력 제어기가 메모리에 접근하기 위해서는 CPU가 필요했다.
이에 CPU 도움 없이도 할 수 있도록 DMA 제어기(Direct Memory Access)가 추가됐다.
직접 메모리 접근이라는 뜻이다.
입출력 제어기가 CPU의 도움 없이 메모리에 접근할 수 있도록 하기 위해 필요한 것이다.
DMA를 이용해 입출력 제어기는 데이터를 직접 메모리에 저장하거나 가져올 수 있다.
CPU와 DMA가 사용하는 메모리가 겹치지 않도록, Memory mapped I/O 가 추가되었다.
CPU가 사용하는 메모리 영역과, DMA가 사용하는 메모리를 나누는 것이다.
광학 마우스
광학 마우스 아래에는 작은 카메라가 부착되어있다.
카메라가 표면으로 1500회가 넘는 사진을 찍는다.
디바이스 컨트롤 네 DSP로 사진을 보내면, 사진을 분석해서 X, Y 좌표를 알아낸다.
움직임과 클릭을 인식하면, CPU에 인터럽트를 보내고 마우스 드라이버가 동작하여 데이터를 읽어간다.
마우스 드라이버는 운영체제에게 이벤트 신호를 전달한다.
이벤트를 프로그램에 전달하고, 해당 앱이 이벤트를 처리하게 된다.
마우스와 근본적인 움직임은 동일하다.
사용자가 키보드를 누른다.
디바이스 컨트롤러가 무엇을 눌렀는지 인식하고, CPU에게 인터럽트를 보낸다.
키보드 드라이버는 운영체제에게 이벤트를 보낸다.
운영체제는 특정 앱에 보내고, 해당 앱은 동작을 수행하게 된다.