입출력 시스템
필수장치인 입출력 장치에 대해 알아봅니다.
Last updated
필수장치인 입출력 장치에 대해 알아봅니다.
Last updated
컴퓨터는 필수 장치인 CPU, 메모리 주변장치인 입출력 장치와 저장장치로 구성되어 있다.
각 장치는 메인보드의 버스로 연결된다.
버스에 많은 종류에 장치가 연결되기 때문에 버스를 하나만 사용하면 병목 현상이 발생한다.
병목 현상 : 다른 장치의 성능을 제한하는 현상
이때 데이터가 지나가는 통로를 채널 이라고 한다.
운영체제는 속도가 비슷한 주변 장치를 묶어 채널을 할당하면, 병목현상을 줄일 수 있다.
초기에는 입출력 명령을 만나면 직접 입출력 장치의 데이터를 가져왔는데 이를 폴링이라고 한다.
이방식을 이용하면 CPU는 입출력이 끝날 때 까지 다른 작업을 할 수없기에 효율이 떨어진다.
폴링 방식을 개선한 방식으로서, 모든 입출력을 입출력 제어기에 맡기는 구조이다.
입출력 제어기는 주변 장치들의 전송 속도 차이로 인해 데이터 전송이 느려지는 문제가 발생 하였다.
저속 입출력 버스와 고속 입출력 버스로 운영하여 이러한 문제를 해결한다.,
다양한 주변 장치는 전송 속도에 따라 저속 주변장치( 1KB 미만) 과 고속 주변장치 (높은 전송률) 로 구분된다.
입출력 제어기는 다양한 주변 장치의 입출력을 대행하며 여러 채널의 데이터를 메모리로 옮긴다.
입출력 제어기는 DMA(직접메모리 접근)가 존재하여, 메모리에 접근할 수 있다.
입출력 제어기는 여러 채널에 연결된 주변 장치로 부터 받아온 데이터를 배분하여 데이터 흐름을 만든다.
이 데이터는 DMA제어기를 거쳐 메모리에 올라간다.
현재의 입출력 시스템은 CPU의 작업 공간과 DMA 제어기가 데이터를 옮기는 공간을 분리하여 메인 메모리를 운연하는데, 메모리 맵 입출력 이라고 한다.
입출력 제어기와 DMA의 작업이 완료되면 입출력 제어기는 CPU에 인터럽트를 보낸다.
인터럽트 ? CPU에 작업 상태나 이상을 알려주는 행위
각 장치에는 고유한 IRQ라는 인터럽트 번호가 부여되어 있는데, CPU는 해당 IRQ를 보고 어떤 장치인지 식별한다.
이와 같이 입출력 장치로 부터 오거나 기계적 오류로 오는 인터럽트는 외부 인터럽트 라고 한다
반대로 프로세스의 잘못이나 예쌍치 못한 문제로 발생하는 문제는 내부 인터럽트라고 부른다.
사용자의 의지로 kill을 하거나 프로세스를 강제로 종료하는 것은 시그널 이라고 부른다.
시스템 내에는 100개 이상의 인터럽트가 있고 이를 인터럽트 핸들러로 관리한다.