제 10장. 입출력 시스템과 저장장치
1-1 입출력장치와 채널
- 주변장치
- 주변장치는 저속 주변장치(키보드, 마우스)와 고속주변장치(그래픽카드, 하드디스크)로 나뉨
- 주변장치는 메인보드 내의 버스로 연결
- 버스에는 많은 종류의 장치가 연결되어 1개만 사용하면 병목현상이 발생하므로 이를 해결하기 위해 여러개의 버스를 묶어서 사용
- 이때 데이터가 지나다니는 하나의 통로를 채널이라고 부름
- 채널 공유와 채널 분리
- 채널을 모든 주변장치가 공유하면 전체적으로 데이터 전송 속도가 느려짐
- 전송 속도가 비슷한 장치끼리 묶어서 장치별로 채널을 할당하면 전체 데이터 전송속도를 향상할 수 있음
1-2 입출력 버스의 구조
- 초기의 구조
- 모든 장치가 하나의 버스로 연결
- CPU가 작업을 진행하다가 입출력 명령을 만나면 직접 입출력장치에서 데이터를 가져오는 폴링방식 이용
- 입출력 제어기를 사용한 구조
- 버스는 메인버스와 입출력버스의 2채널로 나뉨
- 메인버스 : 고속으로 작동하는 CPU와 메모리가 사용
- 입출력 버스 : 주변장치가 사용
- 임출력 제어기를 사용하면 느린 입출력장치로 CPU와 메모리
1-3 직접메모리접근
- 직접메모리접근(DMA)
- CPU도움 없이도 메모리에 접근할 수 있도록 제어기에 부여된 권한
- 입출력 제어기에는 직접메모리에 접근하기 위한 DMA제어기가 있음
- 입출력 제어기는 여러 채널에 연결된 주변 장치로부터 전송된 데이터를 적절히 배분하여 하나의 데이터 흐름을 만듦
- 채널 선택기는 여러 채널에서 전송된 데이터 중 어떤 것을 메모리로 보낼지 결정
- 메모리 공간 분할
- CPU와 DMA의 작업 공간이 겹치는 것을 방지하기 위해 과거에는 DMA제어기가 전송하는 데이터를 ‘입출력 메모리’라는 별도의 메모리에 보관
- 현재는 CPU가 작업하는 공간과 DMA제어기가 데이터를 옮기는 공간을 분리하여 메인 메모리를 운영, 이를 메모리 맵 입출력(memory mappend I)이라고 부름
1-4 인터럽트
- 입출력과 인터럽트
- 인터럽트는 주변장치의 입출력 요구나 하드웨어의 이상 현상을 CPU에 알려주는 신호
- 각 장치에는 IRQ라는 고유의 인터럽트 번호가 부여됨
- 인터럽트가 발생하면CPU는 IRQ를 보고 어떤 장치에서 인터럽트가 발생했는지 파악
- 인터럽트의 종류
- 외부 인터럽트 : 입출력장치로부터 오는 인터럽트뿐 아니라 전원 이상이나 기계오류로 발생하는 인터럽트를 포함하므로 하드웨어 인터럽트로도 부름
- 내부 인터럽트 : 프로세스 잘못이나 예상치 못한 문제로 발생, 예외 상황인터럽트라고도 함
- 시그널 : 사용자가 직접 발생하는 인터럽트
- 인터럽트 벡터
- 어떤 인터럽트가 발생하는지 파악하기 위해 사용하는 자료구조
- 인터럽트 벡터의 값이 1이면 인터럽트가 발생했다는 의미
- 인터럽트 핸들러
- 인터럽트의 처리 방법을 함수 형태로 만들어 놓은 것
- 운영체제는 인터럽트가 발생하면 인터럽트 핸들러를 호출하여 작업함
- 사용자 인터럽트인 시그널은 자신이 만든 인터럽트 핸들러를 등록할 수도 있음
1-5 단일 버퍼와 이중 버퍼
- 버퍼
- 단일 버퍼보다 이중버퍼가 버퍼운용에 유리
- 단일 버퍼는 데이터를 담는 작업과 퍼 가는 작업을 동시에 하기 어려움
- 이중버퍼는 한 버퍼는 데이터를 담고 다른 버퍼는 가져가는 용도로 쓸 수 있음
2-1 저장장치의 종류