-
728x90
1. 입출력장치와 채널
컴퓨터는 필수장치인 CPU와 메모리, 주변장치인 입출력장치와 저장장치로 구성된다. 각 장치는 메인보드에 있는
버스
로 연결되며, 주변장치는 데이터 전송 속도에 따라 저속, 고속 주변장치로 구분할 수 있다.저속 주변장치
메모리와 주변장치에 오고 가는 데이터의 양이 적어 데이터 전송률이 낮은 장치. 키보드, 마우스 등이 해당한다.
고속 주변장치
메모리와 주변장치에 오고 가는 데이터의 양이 많아 데이터 전송률이 높은 장치. 그래픽카드, 하드디스크 등이 해당된다.
채널
여러 주변장치는 메인보드의 버스와 연결된다. 버스 안에는 여러 개의
채널
이 존재한다. 채널은 데이터가 지나다니는 하나의 통로라고 보면 된다. 4채널 버스는 4개의 주변장치가 동시에 데이터를 주고받을 수 있다.주변장치마다 속도가 다르기 때문에 느린 애와 빠른 애를 같은 채널에서 사용하면 비효율적이다. 전송 속도가 비슷한 주변장치끼리 묶어서 채널을 할당하면 데이터 전송 속도를 향상시킬 수 있다.
2. 입출력 버스의 구조
초기에는 주변장치의 수나 전송할 데이터의 양이 많지 않았기 때문에 CPU에서 입출력장치까지 관리했다. 모든 장치가 하나의 버스로 연결되었고 CPU는 작업을 처리하다가 입출력 명령을 만나면 직접 입출력장치에서 데이터를 가져 왔다. 이를 폴링 방식이라고 한다.
현재는 주변장치의 수도 많아졌고 처리해야 할 데이터의 양도 커졌기 때문에 구조의 변화는 불가피했다. 이에 CPU는 작업 처리에만 전념하고 입출력장치의 관리를 전담하는
입출력 제어기(I/O Controller)
가 새로 생겨났다.CPU가 입출력 제어기에 명령을 전달하면 입출력 제어기는 입출력장치와 데이터를 주고받고 결과를 CPU에 알린다. 입출력 버스는
고속 입출력
과저속 입출력
으로 나뉘어 전송 속도에 따라 입출력장치를 따로 관리한다. 둘 사이는채널 선택기
로 연결되어 있는데 이 채널 선택기가 고속을 10번 처리했으면 저속을 1번 처리하는 식으로 적절하게 둘 사이의 처리를 분배한다.현대의 그래픽카드의 진화에 따라 그래픽카드 전용 CPU인 GPU가 생겨났다. 3D 게임의 발전 등에 따라 그래픽카드에서 처리하는 데이터의 양을 고속 입출력으로도 감당할 수 없어졌기 때문이다. 그래서 입출력 버스에서 분리하고 메인버스에 바로 연결해서 사용한다.
3. 직접 메모리 접근
입출력 제어기가 제대로 동작하기 위해서는 메모리에 마음껏 접근할 수 있어야 한다. 그래서 입출력 제어기에는 CPU의 허가 없이 메모리에 직접 접근할 수 있는 권한이 부여되는데, 이를
DMA(Direct Memory Access)
라고 한다.DMA가 가져갈 혹은 가져올 데이터를 메모리에서 작업해야 하는데 메모리는 CPU가 작업하는 공간이라 공간이 겹친다. 이를 방지하기 위해 예전에는
입출력 메모리
를 따로 만들었지만 현재는 메모리 안의 영역을 나누어 DMA에게 할당한다.4. 인터럽트
입출력 제어기에 의해 입출력장치의 처리가 끝나면 인터럽트를 발생시켜 CPU에게 작업이 끝났음을 알린다. 어떤 주변장치로부터의 인터럽트인지를 IRQ 인터럽트 번호를 통해 구별하고 이를 인터럽트 벡터의 형태로 제공한다.
사용자 인터럽트인 시그널의 경우 자신이 만든 인터럽트 핸들러를 제공할 수도 있다. 인터럽트 핸들러의 커스터마이징이라고 생각하면 되겠다.
5. 버퍼
데이터를 전송할 때 버퍼를 사용하는 이유가 무엇일까? 입출력장치에 내리는 명령을 최소화할 수 있기 때문이다. 버퍼를 사용하지 않으면 데이터를 옮길 때마다 입출력장치에 명령을 내려야 하지만 버퍼를 사용하면 버퍼에 데이터를 옮길 동안에는 입출력장치에 명령을 내리지 않다가 버퍼가 다 차면 명령을 내린다.
버퍼가 다 차지 않은 경우에도 데이터를 보내야 할 때는 주의해서 사용해야 한다.
728x90'운영체제' 카테고리의 다른 글
36. 디스크 스케줄링 (0) 2021.09.23 35. 디스크 장치 (0) 2021.09.23 33. 프레임 관련 이슈 (0) 2021.09.23 32. 스레싱과 프레임 할당 (0) 2021.09.23 31. 페이지 교체 알고리즘 (0) 2021.09.23