1. [Unix/Linux] 장치 화일
ㅇ 물리적 디바이스를 표현하는 특수 파일
- 하드디스크,키보드,프린터 등 장치들도 모두 파일로 취급 됨 ☞ Unix/Linux 파일 처리 참조
ㅇ 만일, 사용자 프로그램이 하드웨어(장치)에 접근하려면,
- 장치 파일을 사용하여,
. (/dev 디렉토리에 위치함. 아래 2.항 참조)
- 커널을 통해 접근하게 됨
ㅇ 한편, 사용자 프로그램이 장치 파일에 접근하면,
- 커널은,
. 이에따른 I/O 호출 요청을 확인하고, 장치 드라이버에게 요청 내용을 전달하고,
. 장치 드라이버가 실제 장치로부터 자료를 읽거나 쓰는 등의 작업을 함
- 장치 드라이버는,
. 모든 하드웨어를 일관된 인터페이스로 표현해 줌
- 즉, 커널은,
. 사용자 프로그램이 장치 파일에 가해진 연산을,
. 장치 드라이버 프로그램에 대한 호출로 바꾸어줌
2. [Unix/Linux] 장치 화일의 식별
ㅇ 주 번호(major device number) 및 부 번호(minor device number)로 구성
- 주 번호 : 장치 유형(Device Type)에 따라 부여
- 부 번호 : 장치 단위(Device Unit)에 따라 부여, 각 장치의 부가적인 정보
* 例)
. 두번째 하드 디스크의 파티션 3 이면, /dev/hdb3
. 첫번째 SCSI 디스크의 파티션 1 이면, /dev/sda1
ㅇ 장치 화일들은,
- 그 파일의 Inode 내에 저장되어진, 주 번호와 부 번호를 통해,
- 실제 장치와 짝지워지게 됨
3. [Unix/Linux] 장치 화일의 생성
ㅇ 장치 파일은, mknod 명령어를 사용하여 만들 수 있음
- mknod ① 파일명 ② 유형 ③ major ④ minor
. ① 파일명은,
.. 만들어질 장치 파일의 이름
. ② 파일유형은, ☞ Unix/Linux 파일 종류 참조
.. 문자 장치에 대해서는 c, 블록 장치에 대해서는 b 등
. ③ major 및 ④ minor는,
.. major device number와 minor device number
- 또는, 시스템호출 mknod()를 통해서,
. 프로그램 내에서도 가능
4. [Unix/Linux] 특수 장치 화일
※ (소유자 : root, 권한 : 모든 사용자가 읽기/쓰기 가능)
ㅇ null 장치 파일 : /dev/null (주 번호 : 1, 부 번호 : 3)
- 소유자 : root, 권한 : 모든 사용자가 읽기/쓰기 가능
- 이 장치에 대한, 쓰기 요청은 무시, 읽기 요청은 EOF 반환
ㅇ zero 장치 파일 : /dev/zero (주 번호 : 1, 부 번호 : 5)
- 소유자 : root, 권한 : 모든 사용자가 읽기/쓰기 가능
- 이 장치에 대한, 쓰기 요청은 무시, 읽기 요청은 무한한 null 바이트 스트림을 반환
ㅇ full 장치 파일 : /dev/full (주 번호 : 1, 부 번호 : 7)
- 이 장치에 대한, 쓰기 요청은 ENOSPC 오류 (가득참) 반환, 읽기 요청은 null 문자(\0)을 반환