본문 바로가기

개발/Linux

파일 다루기 - 시스템 호출과 장치 드라이버

반응형

시스템 호출과 장치 드라이버 

- 파일과 장치의 접근 및 제어에 쓰이는 함수들이 몇 가지 있는데 이러한 함수가 시스템 호출(system call)에 속한다. 이 시스템 호출은 unix/linux가 직접 제공하는 것으로, 프로그램과 운영체제 사이의 인터페이스 역할을 한다.

- 운영체제의 핵심부인 커널(kernel)에는 여러 개의 장치 드라이버(devece driver)들이 있다. 장치 드라이버는 시스템 하드웨어의 제어를 위한 저수준 인터페이스들의 모음이다. 

- 하드웨어의 독특한 특성들은 일번적으로 ioctl(I/O control의 약자)이라는 시스템 호출을 통해서 파악하거나 제어할 수 있다.

-/dev에 있는 장치들도 디스크 파일을 위한 것들과 동일한 시스템 호출들을 이용해서 이들을 열고, 읽고, 쓰고 닫을 수 있다. 예를 들어 정규 파일에 접근하는 데 쓰이는 open 시스템 호출을 이용해서 사용자터미널이나 프린터, 테이프 드라이버에 접근 할 수 있다. 

open : 파일이나 장치를 연다

read : 열린 파일이나 장치에서 자료를 읽는다.

write : 파일이나 장치에 자료를 기록한다.

close : 파일이나 장치를 닫는다.

ioctl : 장치 드라이버에 제어 정보를 보낸다.

 ioctl 시스템 호출은 몇 가지 필수적인 하드웨어 고유 제어기능을 위한 것이기때문에 그 용법은 장치마다 다르다. 예를 들어 테이프드리아브의 경우 ioctl을 이용해서 테이프를 되감을 수 있으며, 직렬 포트의 경우 ioctl을 이용해서 자료의 전송 제어 특성을 변경할 수 있다. 이러한 다양성 때문에, 서로 다른 컴퓨터들에서 ioctl이 반드시 동일하게 작동한 다는 보장은 없다. 또한 각 드라이버 역시 자신만의 ioctl명령들을 정의한다. 

반응형