입출력 장치

재능없는 개발자·2023년 2월 4일
0

컴퓨터에는 cpu와 메모리 보조기억장치 외에도 스피커, 키보드, 마우스 등등이 있다.

입출력장치들은 장치 컨트롤러와 장치 드라이버를 통해 컴퓨터 내부와 소통할 수 있다.

장치 컨트롤러

장치 컨트롤러의 역할

입출력 장치에는 종류가 너무나도 많기 때문에, 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기가 어렵다.
때문에 입출력장치는 컴퓨터에 직접 연결되지 않고, 장치 컨트롤러라는 하드웨어를 통해 연결된다. 입출력장치 종류가 많아 정보 규격화가 어려웠던 문제는 장치 컨트롤러가 일종의 번역가가 되어 해결한다. 그 과정에서 장치 컨트롤러는 자신과 연결된 입출력장치에 문제가 없는지 오류를 검출한다. 전송률이란 데이터를 얼마나 빨리 교환할 수 있는지 나타내는 지표이다. cpu는 1초에도 수많은 데이터를 주고 받을 수 있어 전송률이 높지만, 키보드 마우스 같은 입출력 장치는 cpu에 비해 전송률이 현저히 느리고 이는 cpu와 입출력 장치간의 통신을 어렵게 한다.
이때, 장치컨트롤러는 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼에 저장하여 전송률을 비슷하게 맞춰주는 기능을 한다.

장치 컨트롤러의 내부

  • 데이터 레지스터

장치 컨트롤러가 데이터 버퍼링으로 전송률 차이를 완화한다 했는데, 데이터 레지스터가 잠시 데이터를 담아놓는 버퍼의 역할을 한다.

  • 상태 레지스터

입출력장치가 입출력 작업을 할 준비가 되었는지, 작업이 완료되었는지, 오류가 없는지 등에 대한 상태 정보가 저장된다.

  • 제어 레지스터

입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장한다.

장치 드라이버

장치 드라이버장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨
터 내부와 정보를 주고받을 수 있게 하는 프로그램이다. 장치 컨트롤러가 하드웨어적 통로라
면, 장치 드라이버는 소프트웨어적 통로인 것이다. 쉽게 말하면 컴퓨터가 연결된 장치의 드라이버를 인식하고 실행할 수 있다면, 컴퓨터 내부의 정보를 주고 받을 수 있는 것이다.

장치 컨트롤러가 cpu와 정보를 주고받는 방법들

  • 프로그램 입출력

cpu가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어를 만날때 cpu가 입출력장치에 연결
된 장치 컨트롤러와 상호작용하며 입출력 작업을 수행하는 방식 cpu는 해당하는 입출력장치의 장치 컨트롤러의 제어레지스터에 명령어를 보내고, 입출력장치가 준비되어서 상태 레지스터가 변경되었는지 계속 확인한다. 준비되었다면 데이터 레지스터에 저장하거나 삭제할 데이터를 보내어 명령을 실행한다.

  • 하드웨어 인터럽트

입출력장치가 cpu에게 인터럽트 요청 신호를 보내면, cpu는 하던 일을 잠시 멈추고 해당 인터럽트를 처리한 다음,다시 하던 일로 되돌아온다. 일반적으로 입출력장치가 많고 여러 입출력장치에서 인터럽트가 동시에 발생한 경우에 PIC(programmable interrupt controller)라는 여러 장치 컨트 롤러에 연결되어있는 하드외어가 인터럽트 요청들의 우선순위를 판별한 뒤, cpu에 지금 처리해야 할 인터럽트의 우선순위를 알려준다.

  • DMA

프로그램 입출력과 하드웨어 인터럽트의 공통점은 데이터 이동이 반드시 cpu를 거친다는 점이다. cpu가 인터럽트가 자주 걸리며 입출력장치에 시간을 뻇기는 것은 cpu에게 부담이 매우 큰 일이다.이 때문에, 입출력장치와 메모리가 cpu를 거치지 않고 상호작용 할 수 있는 DMA방식이 등장하였다.cpu가 DMA컨트롤러에 하드 디스크 주소, 수행할 연산, 백업할 내용이 저장된 메모리의 주소등의 정보와 함께 입출력 작업을 명령하면, DMA컨트롤러는 cpu를 거치지않고 메모리와 직접 상호작용하며 백업할 정보를 읽어오고, 이를 장치 컨트롤러에 내보낸다. 작업이 종료되면 DMA컨트롤러는 cpu에게 인터럽트를 걸어 작업이 끝났음을 알린다.

profile
https://www.youtube.com/watch?v=__9qLP846JE

0개의 댓글