장치 파일
Device file이 기사의 리드 섹션은 기사의 길이에 비해 너무 길 수도 있다. 에서 이 2021년 10월) |
Unix와 유사한 운영 체제에서 장치 파일이나 특수 파일은 파일 시스템에 일반 파일처럼 나타나는 장치 드라이버에 대한 인터페이스다.DOS, OS/2, Windows에도 특수 파일이 있다.이러한 특수 파일은 응용 프로그램이 표준 입력/출력 시스템 호출을 통해 장치 드라이버를 사용하여 장치와 상호 작용할 수 있도록 한다.표준 시스템 호출을 사용하면 많은 프로그래밍 작업이 단순화되며, 기기 특징과 기능에 관계없이 일관된 사용자 공간 I/O 메커니즘이 구현된다.
장치 파일은 일반적으로 표준 장치(예: 프린터 및 직렬 포트)에 대한 간단한 인터페이스를 제공하지만 디스크 파티션과 같은 장치의 특정 고유 리소스에 액세스하는 데도 사용할 수 있다.또한, 장치 파일은 데이터 싱크 및 무작위 번호 생성기와 같은 실제 장치와의 연결이 없는 시스템 리소스에 액세스하는 데 유용하다.
Unix 유사 운영 체제에는 문자 특수 파일과 블록 특수 파일로 알려진 두 가지 일반적인 종류의 장치 파일이 있다.그 차이점은 운영체제와 하드웨어가 읽고 쓰는 데이터의 양에 있다.이러한 파일을 함께 장치 특수 파일이라고 할 수 있는데, 장치에 연결되지는 않지만 일반 파일도 아닌 명명된 파이프와는 대조적으로 장치 특수 파일이라고 할 수 있다.
MS-DOS는 Unix에서 특수 파일의 개념을 차용했지만 그 개념들을 장치들로 바꾸었다.[1]MS-DOS의 초기 버전은 디렉토리 계층 구조를 지원하지 않았기 때문에 장치 이름은 예를 들어, 악명 높은 단어와 같이 지정되어 일반 파일과 구별되었다.CON
. CP/M과의 호환성을 위해 선택되었으며 역호환성을 위해 현대 윈도우에 여전히 존재한다.
일부 Unix와 유사한 시스템에서 대부분의 장치 파일은 전통적으로 다음 위치에 마운트된 가상 파일 시스템의 일부로 관리된다./dev
, 런타임에 하드웨어 추가 및 제거를 모니터링하는 제어 데몬과 관련될 수 있으며, 커널에 의해 자동으로 수행되지 않는 경우 장치 파일 시스템에 상응하는 변경을 수행하고, 특별한 장치 요구를 처리하기 위해 시스템 또는 사용자 공간에서 스크립트를 호출할 수 있다.FreeBSD, DragonFly BSD 및 Darwin은 전용 파일 시스템 devfs를 가지고 있으며, 장치 노드는 커널 공간에서 이 파일 시스템에 의해 자동으로 관리된다.Linux는 유사한 devfs 구현을 가지고 있었지만 나중에 폐기되었다가 버전 2.6.17 이후 제거되었다.[2] Linux는 현재 주로 udev라고 알려진 사용자 공간 구현을 사용하지만 많은 변형들이 있다.
Solaris Containers와 같이 root 프로세스 격리를 지원하는 Unix 시스템에서 일반적으로 각 chroot 환경은 자체적인 것이 필요하다./dev
; 이러한 마운트 지점은 글로벌 파일 시스템 트리의 다양한 노드에서 호스트 OS에 표시된다.의 chroot 인스턴스에 채워진 장치 노드를 제한하여/dev
, 하드웨어 격리는 chroot 환경(프로그램은 볼 수도 없고 이름도 알 수 없는 하드웨어를 간섭할 수 없음, Unix 파일 시스템 권한보다 훨씬 강력한 형태의 액세스 제어)에 의해 시행될 수 있다.
MS-DOS 관리 하드웨어 장치 경합(TSR 참조)은 각 장치 파일을 독점적으로 열어두었다.이미 사용 중인 디바이스에 액세스하려는 애플리케이션은 디바이스 파일 노드를 열 수 없음을 발견하게 된다.동시 접속과 관련하여 Unix와 Linux에서는 다양한 장치 드라이버 의미론이 구현된다.[3]
유닉스 및 유닉스 유사 시스템
장치 노드는 운영 체제의 커널이 이미 할당한 리소스에 해당한다.유닉스는 이러한 자원을 주요 숫자와 부수로 식별하며,[4] 둘 다 노드 구조의 일부로 저장된다.이러한 숫자의 할당은 다른 운영 체제와 다른 컴퓨터 플랫폼에서 독특하게 발생한다.일반적으로 주 번호는 장치 드라이버를 식별하고 부 번호는 운전자가 제어하는 특정 장치(대부분의 경우)를 식별한다.[5] 이 경우 시스템이 부 번호를 운전자에게 전달할 수 있다.단, 동적 번호 할당이 있는 경우(예: FreeB)에는 해당되지 않을 수 있다.SD 5 이상).
다른 특수 파일 형식과 마찬가지로 컴퓨터 시스템은 표준 시스템 호출을 사용하여 장치 노드에 접근하여 일반 컴퓨터 파일처럼 처리한다.두 가지 표준 유형의 장치 파일이 존재한다. 불행히도 장치 파일 이름은 역사적 이유로 다소 직관에 반하며, 결과적으로 둘 사이의 차이에 대한 설명이 부정확한 경우가 많다.
문자 장치
문자 특수 파일 또는 문자 장치는 하드웨어 장치에 대한 버퍼링되지 않은 직접 액세스를 제공한다.그들은 프로그램이 한 번에 하나의 문자를 읽거나 쓰도록 반드시 허락하지는 않는다; 그것은 문제의 장치에 달려 있다.예를 들어 하드 디스크의 문자 장치는 일반적으로 모든 읽기 및 쓰기를 블록 경계에 맞춰 정렬해야 하며, 단 하나의 바이트도 읽을 수 없게 된다.
문자 장치는 블록 기반 하드웨어의 문자 장치가 일반적으로 정렬된 블록을 읽고 쓰기 위한 프로그램을 필요로 한다는 사실을 둘러싼 혼란을 피하기 위해 원시 장치라고도 한다.
차단 장치
블록 특수 파일 또는 블록 장치는 하드웨어 장치에 대한 버퍼링된 액세스를 제공하며, 세부 사항에서 일부 추상화를 제공한다.[6]문자 장치와 달리, 블록 장치는 프로그래머가 항상 어떤 크기(단일 문자/바이트 포함)의 블록을 읽거나 쓸 수 있게 한다.단점은 블록 디바이스가 버퍼링되기 때문에 프로그래머는 기록된 데이터가 커널 버퍼에서 실제 디바이스로 전달되기까지 얼마나 오래 걸릴지, 또는 실제로 두 개의 별도 쓰기가 물리적 디바이스에 어떤 순서로 도달할지 모른다는 것이다.또한 동일한 하드웨어가 캐릭터와 블록 장치를 모두 노출할 경우 캐릭터 장치를 사용하는 클라이언트가 블록 장치의 버퍼의 변경을 알지 못해 데이터 손상의 위험이 있다.
대부분의 시스템은 하드 디스크와 같은 하드웨어를 나타내기 위해 블록 장치와 문자 장치를 모두 만든다.FreeBSD와 리눅스는 특히 그렇지 않다. 전자는 블록 장치에 대한 지원을 없앴고 [7]후자는 블록 장치만 만든다.리눅스에서는, 디스크의 문자 장치를 얻기 위해서는, 「원래」 드라이버를 사용해야 하는데, 리눅스 전용으로 블록 장치를 열면 문자 장치를 여는 것과 같은 효과를 얻을 수 있다.O_DIRECT 플래그.
의사-장치
Unix 유사 시스템의 장치 노드가 반드시 물리적 장치와 일치해야 하는 것은 아니다.이 서신이 없는 노드는 사이비-기기의 그룹을 형성한다.그들은 운영체제가 처리하는 다양한 기능을 제공한다.가장 일반적으로 사용되는 (문자 기반) 의사 기기는 다음과 같다.
- /dev/properties – 여기에 쓰여진 모든 입력을 받아들이고 삭제하며, 파일 끝에서 읽을 때 파일 끝 표시를 제공한다.
- /dev/zero – 여기에 쓰여진 모든 입력을 수락하고 무시하며, 읽으면 출력되는 null 문자(0-값 바이트)의 연속 스트림을 생성한다.
- /dev/full – 읽으면 출력으로 null 문자(제로 값 바이트)의 연속 스트림이 생성되고, 쓰기를 시도할 때 ENOSPC("disk full") 오류가 생성된다.
- /dev/messages – 커널의 암호화된 보안 유사함수 생성기에 의해 생성된 바이트를 생성한다.구현에 따라 정확한 동작이 달라지며, 때때로 /dev/urandom 또는 /dev/arandom과 같은 변형도 제공된다.
또한 ioctl 인터페이스를 가진 BSD 고유의 유사 기기는 다음을 포함할 수 있다.
- /dev/pf – userland 프로세스가 ioctl 인터페이스를 통해 PF를 제어할 수 있다.
- /dev/bio – 바이오ctl이 OpenBSD 및 NetBSD에서 RAID 관리를 구현하기 위해 사용하는 /dev 노드로 확인되지 않은 장치에 ioctl 액세스를 제공한다.
- /dev/sysmon – NetB에서 사용SD의 하드웨어 모니터링 프레임워크는 envstat 유틸리티가 proplib(3)를 통해 사용자랜드에서 액세스한다.[8]
노드 생성
노드는 mknod 시스템 호출에 의해 생성된다.노드 생성을 위한 명령줄 프로그램을 mknod라고도 한다.노드는 일반적인 파일 시스템 시스템 호출(이름 변경, 연결 해제) 및 명령(mv, rm)으로 이동하거나 삭제할 수 있다.
일부 Unix 버전에는 /dev 디렉토리에 필요한 모든 장치를 생성하기 위해 makeev 또는 MAKEDEV라는 스크립트가 포함되어 있다.이는 장치에 정적으로 주요 번호가 할당되는 시스템(예: 커널 모듈에서 하드코딩하는 방법)에서만 의미가 있다.
FreeBSD와 같은 일부 다른 유닉스 시스템은 devfs를 통한 커널 기반 장치 노드 관리만 사용했으며 수동 노드 생성을 지원하지 않았다.POSIX와의 호환성을 유지하기 위해 mknod(2) system call과 mknod(8) 명령이 존재하지만 devfs 외부에서 수동으로 생성한 장치 노드는 전혀 작동하지 않는다.[9]
명명 규칙
디바이스 유형을 식별하기 위해 /dev 계층 구조에서 일부 디바이스의 이름에 사용되는 접두사는 다음과 같다.
일부 추가 접두사는 일부 운영 체제에서 공통적으로 사용된다.
- fb: 프레임 버퍼
- fd: (플랫폼) 플로피 디스크, 이 동일한 약어가 파일 설명자를 가리키는 데에도 일반적으로 사용된다.
- hd: ("classic") IDE 드라이버(이전에는 ATA 하드 디스크 드라이브, ATAPI 광 디스크 드라이브 등에 사용됨)
- hda: 첫 번째 ATA 채널의 마스터 장치(일반적으로 주 번호 3과 부 번호 0으로 식별됨)
- hdb: 첫 번째 ATA 채널의 슬레이브 장치
- hdc: 두 번째 ATA 채널의 마스터 장치
- hdd: 두 번째 ATA 채널의 슬레이브 장치
- pp: 병렬 포트
- mem: 주 메모리(문자 장치)
- NVMe 드라이버:
- nvme0: 처음 등록된 장치의 장치 컨트롤러(문자 장치)
- nvme0n1: 처음 등록된 장치의 첫 번째 네임스페이스(블록 장치)
- nvme0n1p1: 처음 등록된 디바이스의 첫 번째 네임스페이스 파티션(블록 디바이스)
- MMC 드라이버:
- libATA(현대식 PATA/SATA 드라이버), USB, IEEE 1394 등에서도 사용되는 SCSI 드라이버:
- sd: 대용량 저장 드라이버(블록 장치)
- sda: 첫 번째 등록된 장치
- sdb, sdc 등: 두 번째, 세 번째 등기 등록 장치
- ses: 인클로저 드라이버
- sg: 일반 SCSI 계층
- sr: "ROM" 드라이버(데이터 지향 광 디스크 드라이브, scd는 보조 별칭일 뿐)
- st: 자기 테이프 드라이버
- sd: 대용량 저장 드라이버(블록 장치)
- tty: 단자
- ttyS: (플랫폼) 직렬 포트 드라이버
- ttyUSB: USB 직렬 변환기, 모뎀 등
Linux에서 사용되는 접두사의 표준 목록은 Linux 운영 체제에 할당된 장치 번호와 /dev 디렉토리 노드의 공식 레지스트리인 Linux Device List에서 찾을 수 있다.[10]
대부분의 장치에서 이 접두사는 특정 장치를 고유하게 식별하는 숫자로 이어진다.하드 드라이브의 경우 문자를 사용하여 장치를 식별하고 그 뒤에 파티션을 식별하는 숫자가 표시된다.따라서 파일 시스템은 예를 들어 디스크의 영역을 /dev/sda3으로 "알거나" /dev/pts/14와 연관된 네트워크 터미널 세션을 "보기"할 수 있다.
일반적인 PC 마스터 부트 레코드를 사용하는 디스크에서 기본 파티션과 옵션 확장 파티션의 장치 번호는 1에서 4까지 번호가 매겨지는 반면, 논리 파티션의 인덱스는 이전 파티션의 레이아웃에 관계없이 5 이상이다(이들의 상위 확장 파티션은 디스크의 네 번째 파티션일 필요가 없으며,4개의 기본 파티션이 존재해야 함).
예를 들어, 일부 BSD 시스템에서 IDE 장치의 이름은 /dev/wd0, /dev/wd1 등 다양한 유닉스 시스템 변형 간에 일반적으로 장치 이름은 이동하지 않는다.
디브프스
devfs는 Unix와 유사한 운영 체제에서 장치 파일 시스템을 구체적으로 구현하는 것으로, 장치 파일을 표시하는 데 사용된다.OS에 따라 구현의 기본 메커니즘이 달라질 수 있다.
이러한 특수 파일을 물리적으로 구현된 파일 시스템(즉, 하드 드라이브)에 유지하는 것은 불편하며, 어쨌든 커널 지원이 필요하기 때문에 물리적으로 저장되지 않는 특수 목적 논리 파일 시스템의 아이디어가 생겨났다.
또한, 기기가 나타날 준비가 되었을 때를 정의하는 것이 전적으로 사소한 것은 아니다.devfs 접근방식은 장치 드라이버가 활성화 및 비활성화하는 장치와 관련된 devfs 항목의 생성 및 삭제를 요청하는 것이다.
PC DOS, TOS, OS/2 및 Windows
장치 파일은 PC DOS, TOS, OS/2 및 Windows 시스템에서 특정 포트 및 장치에 대한 액세스를 허용하는 데 사용되는 예약된 키워드다.
MS-DOS는 Unix에서 특수 파일의 개념을 차용했지만 그 개념들을 장치들로 바꾸었다.[1]MS-DOS의 초기 버전은 디렉토리 계층 구조를 지원하지 않았기 때문에, 기기들은 이름을 예약된 단어로 만들어 일반 파일과 구별되었다.이는 특정 파일 이름이 장치에 예약되어 있었으므로 새 파일이나 디렉터리의 이름을 지정하는 데 사용해서는 안 된다는 것을 의미한다.[11]예약된 이름 자체는 의 "특수 파일" 처리와 호환되도록 선택되었다.PIP
CP/M으로 명령하다.DOS에는 블록 장치(디스크 드라이브에 사용됨)와 문자 장치(일반적으로 COM 및 PRN 장치를 포함한 다른 모든 장치)의 두 종류가 있었다.[12]
DOS는 프린터와 포트에 액세스하기 위해 장치 파일을 사용한다.대부분의 Windows 버전에도 이러한 지원이 포함되어 있어 특정 이름의 파일과 폴더를 만들려고 할 때 이러한 이름을 가질 수 없기 때문에 혼동을 일으킬 수 있다.[13]MS-DOS 버전 2.x는AVAILDEV
CONFIG.SYS 매개 변수(설정된 경우)FALSE
는 접두사가 있는 경우에만 이러한 특수 이름을 활성화하도록 한다.\DEV\
따라서 이러한 이름으로 일반 파일을 만들 수 있다.[14]
GEMDOS, the DOS-like part of Atari TOS, supported similar device names to DOS, but unlike DOS it required a trailing ":" character (on DOS, this is optional) to identify them as devices as opposed to normal filenames (thus "CON:" would work on both DOS and TOS, but "CON" would name an ordinary file on TOS but the console device on DOS).MiNT와 MagiC에서는 "U:" 드라이브 문자를 통해 액세스되는 UNIX와 유사한 특수 통합 파일 시스템 뷰도 장치 파일을 "U:\DEV"에 배치했다.
장치 키워드[13] | 입력으로 사용 | 출력으로 사용 |
---|---|---|
CON | ^Z(Ctrl-Z)를 누를 때까지 입력된 데이터를 수신한다. | 데이터를 콘솔로 인쇄 |
PRN[15] | 해당 없음 | 보통 LPT1 또는 LST로 리디렉션되는 텍스트를 프린터로 인쇄때로는 다른 기기로 재구성할 수 있다.[16][17][18] |
AUX(OS/2에는[15] 없음) | 보조 장치, 대개 COM1과 같은 직렬 장치로부터 데이터를 읽는다. 때로는 다른 장치로 재구성할 수 있다.[16][17][18] | 보조 장치, 대개 COM1과 같은 직렬 장치로 데이터를 전송한다. 때로는 다른 장치로 재구성할 수 있다.[16][17][18] |
NUL | 데이터가 없거나 없는 경우 반환되지 않음. | 수신된 데이터 삭제. |
CLOCK$(MS-DOS 2.11[19][16][17] 일부 버전에서는 여전히 CLOCK이라는 이름이 있음) | 해당 없음 | 해당 없음 |
KEYBD$(멀티태스킹 MS-DOS에만 해당) | ? | ? |
KBD$(OS/2에만[15] 해당) | ? | ? |
SCREEN$(멀티태스킹 MS-DOS 및 OS/2[15]) | ? | ? |
POINTONER$(OS/2에만[15] 해당) | ? | ? |
MUSE$ (OS/2에만[15] 해당) | ? | ? |
$IDLE$(5.0 이후) 및 Multiuser DOS(Concurrent DOS 386 이후) 제품군에만 해당) | 해당 없음 | 해당 없음 |
CONFIG$(MS-DOS 7.0 이상에만 해당) | 해당 없음 | 해당 없음 |
LST(86-DOS 및 DOS 1.x, HP Portable Plus의[16][17] 경우 Hewlett-Packard의 MS-DOS 2.11에만 해당) | 데이터를 반환하지 않는다. | 라인 프린터로 데이터 전송(Hewlett-Packard의 MS-DOS 2.11용[16][17] LPT2) |
PLT(Hewlett-Packard의 HP Portable Plus용[16][17] MS-DOS 2.11에만 해당) | 데이터를 반환하지 않는다. | 할당된 플로터로 데이터를 전송한다.부착된 플로터 장치를 재구성할 수 있다.[16][17] |
LPT1, LPT2, LPT3 및 때로는 LPT4(DR-DOS 7.02 이상 및 일부 버전의 다중 사용자 DOS) | 해당 없음 | 선택한 병렬 포트로 데이터 전송 |
COM1, COM2, COM3, COM4 | 선택한 직렬 포트에서 데이터 읽기 | 선택한 직렬 포트로 데이터 전송 |
82164A(Hewlett-Packard의 HP Portable Plus용[16][17] MS-DOS 2.11에만 해당) | COM2로 리디렉션. | COM2로 리디렉션. |
쉘 리디렉션과 파이프를 사용하여 데이터를 장치로 보내거나 장치에서 받을 수 있다.예를 들어, 다음을 입력하면 파일이 전송된다.c:\data.txt
프린터로:
TYPE c:\data.txt > PRN
파이프, MAILSLOT 및 MUP는 다른 표준 윈도우 장치들이다.[20]
IOCS
The 8-bit operating system of Sharp pocket computers like the PC-E500, PC-E500S etc. consists of a BASIC interpreter, a DOS 2-like File Control System (FCS) implementing a rudimentary 12-bit FAT-like filesystem, and a BIOS-like Input/Output Control System (IOCS) implementing a number of standard character and block device drivers as well as specialfile devices including STDO:/SCRN: (display), STDI:/KYBD: (keyboard), COM: (serial I/O), STDL:/PRN: (printer), CAS: (cassette tape), E:/F:/G: (memory file), S1:/S2:/S3: (memory card), X:/Y: (floppy), SYSTM: (system), and NIL: (function).[21]
구현
운영 체제 | 파일 시스템 또는 소프트웨어 관리 | 표준 장착 지점 | 작가 | 메모들 |
---|---|---|---|---|
Linux 2.3.46pre5–2.6.17 | devfs와[22] devfsd. | /dev | 리처드 고흐 | 사용자 공간에서 장치 노드 이벤트를 처리하는 데몬 devfsd 옵션으로 커널에 완전히 구현됨.[23]구식 – 사용자가 udev 및/또는 devtmpfs로 마이그레이션하도록 권장됨 |
Linux 2.5– | 어떤 fs에도 udev, 그러나 보통 tmpfs. | /dev | 그렉 크로아 하르트만, 케이 시버스, 댄 스테클로프 | 사용자 공간에서 주로 구현되는 장치 정보는 sysfs에서 수집된다.장치 파일은 기존의 범용 파일 시스템이나 메모리 파일 시스템(tmpfs)에 저장할 수 있다. |
Linux 2.6.32– | udev 유무에 관계없이 devtmpfs | /dev | 케이 시버스, 얀 블런크, 그렉 크로아 하르트만 | udev가 처음으로[24] 실행되기 전에 노드를 제공하는 장치 파일 시스템의 하이브리드 커널/사용자 공간 접근 방식 |
솔라리스 | 디브프스[25] | /devices | 선 마이크로시스템스 | Solaris-2.1에서 동적 로드 드라이버와 함께 도입 |
FreeBSD 2.0– | 디브프스 | /dev | 폴헤닝 캄프 | 커널에 완전히 구현됨. |
드래곤플라이 BSD 2.3.2– | 디브프스 | /dev | 알렉스 호릉 | 커널에 완전히 구현됨. |
마코스 | 디브프스 | /dev | 애플 | 커널에 완전히 구현됨. |
HP-UX B.11.31 | 디브프스 | /dev | HP | 커널에 완전히 구현됨. |
플랜 9 | # | 벨 랩스 | 커널에 구현됨. | |
RISC OS | DeviceFS | Devices: | 도토리 컴퓨터 | DeviceFS는 1991년에[26] 시작되었고 RISC OS 3에 처음 등장했다.Parallel, Serial, FastParallel 및 USB와 같은 여러 장치를 특수 파일처럼 관리한다.SystemDevices 모듈은 Vdu, Kbd, Null 및 프린터와 같은 유사 장치를 구현한다. |
MS-DOS, PC DOS, DR-DOS | 뚱뚱한 | \DEV (그리고)/DEV ) | 여러 가지 | 커널에 구현된 문자 디바이스는 가상 \DEV 디렉토리 및 모든 디스크 디렉토리에 나타난다.MS-DOS/PC DOS 2.x에서 CONFIG.\DEV에만 장치가 존재하도록 강제하는 데 SYS AvailDEV=FALSE 명령을 사용할 수 있다. |
MagiC, MiNT, MultiTOS | U:\DEV [27][28] | 애플리케이션 시스템 하이델베르크, Eric R.스미스, 아타리 주식회사 | 특수 U: 드라이브에는 가상 DEV 디렉토리가 들어 있으며, 이 디렉토리에서 장치 파일을 찾을 수 있다. | |
윈도 9x | \\devices\ | 마이크로소프트 | ||
윈도 NT | \Device | 마이크로소프트 | 그\Device 디렉토리는 Windows NT 개체 네임스페이스의 일부분이다. | |
Windows NT Win32 하위 시스템 | \\.\ | 마이크로소프트 | 그\\.\ 접두사는 지원되는 API가 Win32 파일 네임스페이스 대신 Win32 장치 네임스페이스에 액세스하도록 한다.Win32 장치 이름은 Windows NT에서 장치 이름에 대한 심볼릭 링크(Symbolic Link)\Device 전화번호부 |
참고 항목
참조
- ^ a b "Windows for Workgroups: How VSHARE.386 Manages File Sharing". Support.microsoft.com. 1999-09-22. Retrieved 2014-01-22.
- ^ Kroah-Hartman, Greg (2005-06-20). "[PATCH] devfs: Remove devfs from the kernel tree". Linux kernel source tree. Retrieved 2021-06-12.
- ^ Corbet, Jonathan; Kroah-Hartman, Greg; Rubini, Alessandro (2005). "Access Control on a Device File". Linux Device Drivers, 3rd Edition. O'Reilly. Retrieved 2017-04-28.
The next step beyond a single-open device is to let a single user open a device in multiple processes but allow only one user to have the device open at a time.
- ^ Kernighan, Brian W.; Pike, Rob (1984). The UNIX Programming Environment. Prentice-Hall. p. 66. ISBN 0-13-937681-X.
- ^ Neil Brown (2010-10-27). "Ghosts of Unix Past: a historical search for design patterns". Linux Weekly News. Retrieved 2014-03-30.
- ^ "IEEE Std 1003.1, 2013 Edition". Retrieved 2014-04-24.
- ^ "FreeBSD Architecture Handbook". Retrieved 2013-03-07.
- ^ "usr.sbin/envstat/envstat.c". BSD Cross Reference. NetBSD. November 2021.
- "envstat -- utility to handle environmental sensors". NetBSD System Manager's Manual. Archived from the original on 2019-03-23.
- ^ "mknod(8)". FreeBSD Manual Pages. The FreeBSD Project. 2016-10-03. Retrieved 2021-06-12.
- ^ Linux Assigned Names and Numbers Authority (2009-04-06). "Linux allocated devices (2.6+ version)". Linux kernel (Documentation/devices.txt). Archived from the original on 2016-04-24. Retrieved 2013-06-08.
- ^ "Avoid Creating Macintosh Filenames that are NT Device Names". Support.microsoft.com. 2006-11-01. Retrieved 2014-01-22.
- ^ "device attributes". Stanislavs.org. Retrieved 2014-01-22.
- ^ a b "MS-DOS Device Driver Names Cannot be Used As File Names". Revision 2.0. Microsoft. 2003-05-12. KB74496, Q74496. Archived from the original on 2012-07-21.
- ^ "Undocumented Commands". 4dos.info. Kevtronics. 2002-04-12. Retrieved 2014-05-16.
- ^ a b c d e f IBM Operating System/2 Technical Reference - Programming Family (PDF). Vol. 1 (1st ed.). IBM. September 1987 [1986]. Archived (PDF) from the original on 2017-01-03.
- ^ a b c d e f g h i Hewlett-Packard - Technical Reference Manual - Portable PLUS (1 ed.). Corvallis, OR, USA: Hewlett-Packard Company, Portable Computer Division. August 1985. 45559-90001. Retrieved 2016-11-27.
- ^ a b c d e f g h i Hewlett-Packard - Technical Reference Manual - Portable PLUS (PDF) (2 ed.). Portable Computer Division, Corvallis, OR, USA: Hewlett-Packard Company. December 1986 [August 1985]. 45559-90006. Archived (PDF) from the original on 2016-11-28. Retrieved 2016-11-27.
- ^ a b c Paul, Matthias R. (1997-10-02). "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT". Archived from the original on 2003-10-04. Retrieved 2009-03-29. [1]
- ^ 패터슨, 팀;마이크로 소프트[1983년](2013-12-19)."마이크로 소프트 도스 V1.1과 V2.0:/msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM". 컴퓨터 역사 박물관, Microsoft.. 2014-03-25 Retrieved(참고:반면 출판사가 이 될 것 MS-DOS1.1및 2.0이라고 주장하고 있지만, 실제 SCPMS-DOS1.25과 알토스 MS-DOS2.11의 혼합한 것이고 TeleVideo PCDOS2.11항에서 상속됨).
- ^ "REG: CurrentControlSet Entries PART 2: SessionManager". Support.microsoft.com. 2006-11-01. Retrieved 2014-01-22.
- ^ Technical Reference Manual PC-E500 (PDF). Sharp Corporation, Information Systems Group, Personal Equipment Division. March 1990. p. 17. Archived (PDF) from the original on 2017-03-14. Retrieved 2017-03-14.
- ^ Gooch, Richard (2002-08-20). "Linux Devfs (Device File System) FAQ". Retrieved 2021-06-13.
- ^ Gooch, Richard. "My Linux Contributions". Retrieved 2021-06-13.
Devfsd provides configurable management of device nodes using the Linux Device Filesystem.
- ^ "Driver Core: devtmpfs - kernel-maintained tmpfs-based /dev". LWN. Retrieved 2009-08-10.
- ^ "devfs(7FS)". man pages section 7: Device and Network Interfaces. Oracle. 2014. Retrieved 2021-06-12.
- ^ "Project Black change log". Retrieved 2016-05-15.
- ^ "The drive U: in MagiC". 2016-03-28. Archived from the original on 2017-01-15. Retrieved 2017-01-09.
- ^ "FreeMiNT-Portal - mint.doc". 2000-04-27. Archived from the original on 2017-01-15. Retrieved 2017-01-09.
추가 읽기
- Philip Streck (2002-09-24). "devfs for Management and Administration". Linux Journal.
- Daniel Robbins (2001-10-01). "Part 4: Introduction to devfs". Common threads: Advanced filesystem implementor's guide. IBM.
- Daniel Robbins (2001-10-01). "Part 5: Setting up devfs". Common threads: Advanced filesystem implementor's guide. IBM.
- Daniel Robbins (2001-10-01). "Part 6: Implementing devfs (using the init wrapper)". Common threads: Advanced filesystem implementor's guide. IBM.
- Doug Gilbert (2001-01-22). "DEVFS and SCSI".
- "3.3. Device Names in devfs". The Linux 2.4 SCSI subsystem HOWTO: Chapter 3. Names and Addresses. Linux Documentation Project.
- "Device File System Guide". Gentoo Linux Documentation. Gentoo Foundation, Inc. Archived from the original on 2008-05-21. Retrieved 2008-06-19.
- Mark Ellis (2003-09-23). "How to use kernel module autoloading with devfs and devfsd". Linux From Scratch Hints.
- Martial Daumas (2003-09-18). "How to create a basic mk_initrd command that works nice with LFS and devfs". Linux From Scratch Hints.
- Jeroen Coumans (2003-04-19). "How to setup devfs with your current LFS-configuration using devfsd. How you can use devfs from scratch". Linux From Scratch Hints.
- Tushar Teredesai (2003-03-05). "Using devfs and devfsd". Linux From Scratch Hints.