본문 바로가기
컴퓨터&네트워크

입출력 장치들에 대해서

by 파란하랑 2024. 8. 18.

마우스-키보드

장치 드라이버

 

각 컨트롤러는 명령을 내리거나 상태 정보를 읽어내기 위해서 혹은 둘 모두를 위한 특정한 장치 레지스터를 지닌다. 장치 레지스터의 수, 명령의 속성은 근본적으로 장치에 따라서 달라진다고 볼 수 있다. 예를 들어 마우스 드라이버는 얼마나 멀리 움직였는지, 또는 현재 어떤 버튼이 눌려졌는지를 말해주는 마우스로부터 정보를 수락해야만 한다.

 

컴퓨터에 부착된 각 입출력 장치들은 그것을 제어하기 위해 필요한 어떤 특정 코드를 필요로 한다. 장치 드라이버라고 불리는 이 코드들은 일반적으로 장치의 제조사가 작성하고 장치와 함께 제공된다고 보면 된다. 각 운영체제가 각각 그 본연의 드라이버를 필요로 하기에 장치 제조사는 일상적으로 여러 유명한 운영체제를 위한 드라이버를 제공한다.

 

각 개별 장치 드라이버는 정상적으로 하나의 장치 타입, 혹은 밀접하게 관련 있는 장치들의 한 부류를 제어한다고 보면 된다. 예로, SCSI 디스크 드라이버는 보통 다른 크기, 다른 속도 그리고 SCSI CD-ROM과 같은 다중 SCSI 디스크를 제어한다. 반면, 마우스와 조이스틱은 상당히 상이해서 보통 서로 다른 드라이버가 필요하다. 다만, 하나의 장치 드라이버가 여러 개의 전혀 유관성이 없는 장치를 제어하기 위한 기술적인 제약은 없다. 단순히 불필요한 아이디어라고 보면 된다.

 

장치 하드웨어, 혹은 컨트롤러 레지스터를 접근하고자 하면, 적어도 현재 컴퓨터 구조에서는, 장치 드라이버가 운영체제 커널의 일부분이어야만 한다. 실제, 장치의 레지스터를 읽고 쓰기 위한 시스템 호출을 가지고 사용자 영역에서 실행되는 드라이버를 구축하는 것도 가능하다. 이런 설계는 커널을 드라이버로부터, 그리고 드라이버를 다른 드라이버로부터 분리시켜서, 시스템 충돌의 주요 원인으로 간주되는 오류 많은 드라이버를 제거하는 좋은 효과도 있다. 

 

모든 운영체제 설계자들이 타인에 의해 쓰인 코드의 일부분이 그 안에 설치될 것을 인지하고 있기에, 그런 설치를 허용하는 구조를 가질 필요성이 있다. 이것은 드라이버가 어떤 것을 하고 그것이 운영체제의 나머지 부분들과 어떤 상호 작용을 하는지에 대한 잘 정의된 모델을 소유하는 것을 의미한다.

 

운영체제는 보통 드라이버를 몇 개의 카테고리로 분류한다. 가장 흔한 카테고리는 독립적으로 주소가 매겨질 수가 있는 여러 데이터 블록을 포함하는 디스크와 같은 블록 장치, 그리고 문자열을 생성하거나 받아들이는 키보드, 프린터와 같은 문자 장치다.

 

대부분의 운영체제는 모든 블록 장치 드라이버가 지원해야 할 표준 인터페이스와 모든 문자 드라이버가 지원해야 하는 표준 인터페이스를 정의한다. 이러한 인터페이스들은 운영체제의 나머지들이 그것을 위한 일을 할 수 있게끔 드라이버를 얻기 위해서 호출할 수 있는 프로시저들로 구성된다고 보면 된다. 전형적인 프로시저는 블록을 읽거나 혹은 문자열을 쓰는 것이다.

 

특정 시스템에서는, 운영체제는 필요로 하는 모든 드라이버가 그 안에 컴파일 되어 있는 단일 이진 프로그램이다. 이러한 구조는 그들이 컴퓨터 센서에 의해서 실행되었고 입출력 장치가 거의 변화하지 않았기에 오랜 기간 동안 UNIX 시스템에서 당연한 것으로 간주되었다. 만약에, 새로운 장치가 사용되어야 하면, 시스템 관리자는 새로운 이진 코드를 만들어내기 위해서 새로운 드라이버와 같이 단순히 커널을 다시 컴파일했다고 보면 된다.

 

장치 드라이버는 여러 기능을 가지고 있는데, 가장 확실한 것은 장치 독립적인 소프트웨어로부터 그것에 대한 추상적인 읽기, 쓰기 요청을 수락하고 그들이 수행되는 것을 확인하는 것이다. 다만, 그들이 수행해야 할 다른 기능들도 있는데 일례로, 드라이버는 필요시에 장치를 초기화해야만 한다.

 

다수의 장치 드라이버는 유사한 일반적인 구조를 지닌다. 전형적인 드라이버는 입력 인자가 유효한지 확인하기 위해서 검사하는 것으로 시작한다. 만약 오류가 있다면 해당 인자가 반환된다. 만약 문제가 없다면, 추상으로부터 구체적인 용어로의 번역이 필요하게 될 수 있다. 디스크 드라이버를 보면, 블록 번호를 디스크 구조를 위한 트랙, 섹터, 그리고 실린더 번호로 변환하는 것을 의미한다.

 

 

'컴퓨터&네트워크' 카테고리의 다른 글

다중처리기 시스템  (0) 2024.08.20
멀티미디어와 운영체제  (0) 2024.08.19
컴퓨터 스케줄링 알고리즘  (1) 2024.08.16
클록 (타이머)  (0) 2024.08.15
통신 장비  (0) 2024.08.14