- 입출력장치와 채널
입출력 장치는 데이터 전송 속도에 따라 저속 주변장치와 고속 주변장치로 분류
주변장치들은 메인 보드 내의 버스로 연결됨
버스를 한 개만 사용 시 병목 발생하기 때문에 여러 개의 버스를 묶어서 사용함
- 저속 주변장치
메모리와 주변 장치 사이에 오고가는 데이터 양이 적어 데이터 전송률이 낮은 장치
- 고속 주변장치
메모리와 주변 장치 사이에 오고가는 데이터 양이 많아 데이터 전송률이 높은 장치
- 채널
버스에서 데이터가 지나다니는 하나의 통로
채널 공유 시 느린 장치가 막을 수 있기 때문에 채널 분리 사용
- 채널 분리
속도가 비슷한 장치 끼리 채널을 묶어서 사용하는 것
- 채널 공유
장치가 어느 채널이든 사용할 수 있는 방식
- 입출력 버스의 구조
초기에는 하나의 버스 사용
입출력 제어기를 사용하여 CPU 와 메모리가 사용하는 메인 버스, 입출력 장치가 사용하는 입출력 버스를 나누어 사용하며 CPU 가 입출력 요청 올 시 입출력 제어장치기는 입출력 장치로부터 데이터 직접 송 수신
입출력 버스를 저속 입출력 버스와 고속 입출력 버스로 분리시키고 두 버스 사이의 데이터 전송은 채널 선택기가 관리
현대의 컴퓨터는 GPU 사용량이 많기 때문에 CPU 와 메모리를 연결하는 메인버스, CPU 와 그래픽 카드를 연결하는 그래픽 버스, 고속 입출력 버스, 저속 입출력 버스 사용
- 직접 메모리 접근
CPU 의 도움 없이도 메모리에 접근할 수 있도록 입출력 제어기에 부여한 권한
입출력 제어기에는 DMA 제어기 포함됨
채널 제어기가 어떤 것을 메모리에 보낼 지 결정하고 결정된 데이터는 DMA 제어기를 거쳐 메모리로 이동함
- 메모리 맵 입출력
메모리 공간에 DMA 제어기가 쓰는 입출력 메모리 공간을 따로 분리시키는 방법
메인 메모리는 CPU 와 DMA 제어기가 동시에 사용될 수 있기 때문에
- 인터럽트
CPU 작업, 입출력 작업, 하드웨어 이상 발생 등 다양한 경우에 인터럽트 발생
- 외부 인터럽트
주변 장치의 입출력 요구나 하드웨어의 이상 현상을 CPU 에 알려주는 역할을 하는 신호
각 장치에는 고유의 인터럽트 번호가 부여되어 구분시킴
- 내부 인터럽트
프로세스의 오류와 관련된 인터럽트
- 시그널
사용자가 자발적으로 일으키는 인터럽트
- 인터럽트 벡터와 인터럽트 핸들러
- 인터럽트 벡터
인터럽트가 여러개 발생했을 때 여러 인터럽트 중 어떤 인터럽트가 발생했는지 파악하기 위해 사용하는 자료 구조
백터마다 인터럽트 핸들러가 저장된 메모리의 주소가 포인터 형태로 등록되어 있음
- 인터럽트 핸들러
인터럽트의 처리 방법을 함수 형태로 만들어놓은 것
- 버퍼링
- 역할
속도가 다른 두 장치의 속도 차이를 완화하는 역할
단일 버퍼보다 이중 버퍼가 사용에 유리함
- 주의점
운영체제는 버퍼가 꽉 찼을 때 입출력 장치로 데이터를 전송하도록 설계되어 있기 때문에 버퍼를 잘 비워줘야 함