Bước tới nội dung

Tập tin thiết bị

Bách khoa toàn thư mở Wikipedia
(Đổi hướng từ /dev)

Trong các hệ điều hành tương tự Unix, tập tin thiết bị hoặc tập tin đặc biệtgiao diện tới driver thiết bị nằm trong hệ thống tập tin như một tập tin thông thường. Ngoài ra còn có các tập tin đặc biệt trong DOS, OS/2Windows. Các tập tin đặc biệt này cho phép ứng dụng chương trình tương tác với thiết bị bằng cách sử dụng driver thiết bị thông qua việc gọi các lệnh hệ thống đầu vào/đầu ra tiêu chuẩn. Sử dụng lệnh gọi hệ thống tiêu chuẩn giúp đơn giản hóa nhiều tác vụ lập trình và dẫn đến cơ chế nhập/xuất trong không gian người dùng được nhất quán bất kể tính năng và chức năng của thiết bị ra sao.

Tập tin thiết bị thường có giao diện đơn giản cho các thiết bị tiêu chuẩn (chẳng hạn như máy in và cổng nối tiếp) nhưng cũng có thể được sử dụng để truy cập các tài nguyên cụ thể duy nhất trên các thiết bị đó chẳng hạn như phân vùng đĩa. Ngoài ra các tập tin thiết bị cũng hữu ích trong việc truy cập tài nguyên hệ thống không kết nối tới bất kỳ thiết bị thực tế nào, chẳng hạn như các bồn chứa dữ liệutrình khởi tạo số ngẫu nhiên.

Có hai loại tập tin thiết bị chung trong hệ điều hành tương tự Unix được gọi là character special fileblock special file. Sự khác biệt giữa chúng nằm ở lượng dữ liệu được đọc và ghi bởi hệ điều hành và phần cứng. Cả 2 có thể được gọi là tập tin đặc biệt của thiết bị trái ngược với các đường hầm có tên (named pipes) không được liên kết với thiết bị nhưng cũng không phải là tập tin thông thường.

MS-DOS mượn khái niệm tập tin đặc biệt từ Unix và đổi tên chúng thành thiết bị' (device).[1] Bởi vì các phiên bản đầu tiên của MS-DOS không hỗ trợ hệ thống phân cấp thư mục, các thiết bị được phân biệt với các tập tin thông thường bằng tên được đặt từ từ dành riêng, ví dụ: CON. Chúng được chọn để có tương thích mức độ với CP/M và vẫn tồn tại trong nhiều phiên bản Windows hiện đại để tương thích ngược.

Trong một số hệ thống tương tự Unix, hầu hết các tập tin thiết bị được quản lý như một phần của hệ thống tập tin ảo được thiết lập với nhau như bình thường trong /dev, có thể được liên kết với một daemon điều khiển để theo dõi việc thêm và bỏ phần cứng tại thời điểm chạy, thực hiện các thay đổi tương ứng với hệ thống tập tin thiết bị nếu điều đó không được thực hiện tự động bởi nhân hệ thống, có thể gọi các tập lệnh trong không gian hệ thống hoặc người dùng để xử lý các nhu cầu thiết bị đặc biệt. FreeBSD, DragonFly BSDDarwin có một hệ thống tập tin chuyên dụng là devfs; các nút thiết bị được quản lý tự động bởi hệ thống tập tin này, trong không gian nhân. Linux đã từng triển khai một hệ thống devfs tương tự nhưng nó đã bị bỏ mặc không phát triển sau đó và sau đó bị loại bỏ hoàn toàn khỏi hệ thống kể từ phiên bản 2.6.17;[2] Linux hiện nay triển khai tích hợp hệ thống được gọi là udev trong không gian người dùng nhưng nó cũng có nhiều biến thể.

Trong các hệ thống Unix hỗ trợ phân tách quy trình chroot chẳng hạn như Solaris Containers, thông thường mỗi môi trường chroot cần có /dev của riêng nó; các điểm gắn kết này sẽ hiển thị trên hệ điều hành chủ tại các nút khác nhau trong cây hệ thống tập tin chung. Bằng cách hạn chế các nút thiết bị được đưa vào các phiên bản chroot của /dev, môi trường chroot có thể thực thi việc phân tách phần cứng (một chương trình không thể can thiệp vào phần cứng nếu nó không nhìn thấy hoặc đặt tên — một hình thức kiểm soát truy cập thậm chí còn mạnh hơn các quyền của hệ thống tập tin Unix).

MS-DOS quản lý xung đột thiết bị phần cứng (xem TSR) bằng cách mở riêng từng tập tin thiết bị. Một ứng dụng cố gắng truy cập vào một thiết bị đã được sử dụng sẽ bị phát hiện và sẽ không thể mở được nút tập tin thiết bị. Nhiều ràng buộc driver thiết bị đã được định nghĩa trong Unix và Linux liên quan đến truy cập đồng thời.[3]

Các hệ thống Unix và tương tự Unix

[sửa | sửa mã nguồn]
Một cấu trúc đơn giản của nhân Linux. Hệ thống tập tin được triển khai như một phần của hệ thống con I/O.

Các nút thiết bị tương ứng với các tài nguyên mà nhân của hệ điều hành đã được cấp phát. Unix xác định các tài nguyên đó bằng một số chính và một số phụ,[4] cả hai đều được lưu trữ như một phần của cấu trúc nút. Việc gán những con số này xảy ra duy nhất trong các hệ điều hành khác nhau và trên các nền tảng máy tính khác nhau. Nói chung, số chính xác định driver thiết bị và số phụ xác định một thiết bị cụ thể (nếu có nhiều thiết bị) mà driver đang phân phối:[5] trong trường hợp này, hệ thống có thể chuyển số phụ cho driver. Tuy nhiên, điều này có thể không xảy ra trong trường hợp phân bổ số động (ví dụ: FreeBSD 5 trở lên).

Cũng như các loại tập tin đặc biệt khác, hệ thống máy tính truy cập các nút thiết bị bằng cách sử dụng các lệnh gọi hệ thống tiêu chuẩn và xử lý chúng như các tập tin máy tính thông thường. Hai loại tập tin thiết bị tiêu chuẩn tồn tại; Thật không may, tên của chúng khá phản trực giác vì những lý do lịch sử và kết quả còn lại ta có được là những giải thích không mấy chính xác về sự khác biệt giữa chúng.

Character device

[sửa | sửa mã nguồn]

Character special file hoặc character device không có bộ đệm, có quyền truy cập trực tiếp vào thiết bị phần cứng. Chúng không nhất thiết cho phép các chương trình đọc hoặc viết các ký tự đơn lẻ tại một thời điểm; điều đó tùy thuộc vào thiết bị truy cập. Ví dụ, character device cho đĩa cứng sẽ yêu cầu tất cả các lần đọc và ghi phải được căn chỉnh để chặn các ranh giới và chắc chắn sẽ không cho phép đọc một byte đơn lẻ.

Các character device đôi khi được gọi là raw device để tránh sự nhầm lẫn, sự thật là một character device cho phần cứng dựa trên khối thường sẽ yêu cầu các chương trình đọc và ghi các khối đã được căn chỉnh.

Block device

[sửa | sửa mã nguồn]

Block special file hay block device cung cấp quyền truy cập có đệm vào các thiết bị phần cứng và cung cấp một số thông tin tóm tắt từ các chi tiết cụ thể của chúng.[6] Không giống như các character device, các block device sẽ luôn cho phép lập trình viên đọc hoặc ghi một khối có kích thước bất kỳ (bao gồm các ký tự hoạc byte đơn lẻ) và bất kỳ liên kết nào. Nhược điểm là bởi vì các block device được lưu vào bộ đệm, lập trình viên không biết sẽ mất bao lâu trước khi dữ liệu đã ghi được chuyển từ bộ đệm của nhân đến thiết bị thực hoặc phải theo thứ tự hai lần ghi riêng biệt mới đến thiết bị vật lý. Ngoài ra nếu cùng một phần cứng mà hiển thị cả character device và block device thì phần cứng đó sẽ có nguy cơ bị hỏng dữ liệu do khách hàng sử dụng character device không biết về những thay đổi được thực hiện trong bộ đệm của block device.

Hầu hết các hệ thống tạo ra cả block device và character device để đại diện cho phần cứng như đĩa cứng. Đáng chú ý điều đó không áp dụng với FreeBSD và Linux; người trước thì đã loại bỏ hỗ trợ cho các block device,[7] trong khi người sau chỉ hỗ trợ tạo ra các block device. Trong Linux, để có được character device cho đĩa, người ta phải sử dụng một "raw" driver, mặc dù người ta có thể nhận được kết quả tương tự như sử dụng character device bằng cách mở block device bằng cờ O_DIRECT.

Thiết bị giả

[sửa | sửa mã nguồn]

Các nút thiết bị trên các hệ thống tương tự Unix không nhất thiết phải tương ứng với các thiết bị vật lý. Các nút thiếu sự tương ứng này tạo thành nhóm thiết bị giả. Chúng cung cấp các chức năng khác nhau do hệ điều hành xử lý. Một số thiết bị giả (dựa trên ký tự) được sử dụng phổ biến nhất bao gồm:

  • /dev/null – cho phép và từ chối tất cả đầu vào được ghi vào nó; cung cấp kết thúc tập tin mỗi khi được đọc.
  • /dev/zero – cho phép và từ chối tất cả đầu vào được ghi vào nó; tạo ra một dòng liên tục các ký tự rỗng (byte có giá trị không) khi cố gắng đọc dữ liệu từ nó
  • /dev/full – tạo ra một dòng liên tục các ký tự rỗng (byte có giá trị không) khi cố gắng đọc dữ liệu từ nó và tạo ra lỗi ENOSPC ("đầy bộ nhớ") khi cố gắng ghi vào nó.
  • /dev/random – tạo ra các byte được tạo bởi trình tạo số giả ngẫu nhiên an toàn bằng mật mã của nhân. Hành vi của nó thay đổi tùy theo cách triển khai và đôi khi các biến thể như /dev/urandom hay /dev/arandom cũng được sử dụng.

Ngoài ra, các thiết bị giả dành riêng cho BSD có giao diện ioctl cũng có thể bao gồm:

  • /dev/pf – cho phép các quy trình vùng người dùng kiểm soát PF thông qua giao diện ioctl.
  • /dev/bio – cung cấp ioctl quyền truy cập vào các thiết bị không được thấy dưới dạng nút của /dev, được bioctl sử dụng để triển khai quản lý RAID trong OpenBSDNetBSD.
  • /dev/sysmon – được sử dụng bởi khung envsys của NetBSD để giám sát phần cứng, được truy cập trong vùng người dùng thông qua proplib(3) bởi tiện ích envstat.[8]

Tạo nút

[sửa | sửa mã nguồn]

Các nút được tạo bởi lệnh gọi hệ thống mknod. Chương trình dòng lệnh để tạo các nút còn được gọi là mknod. Các nút có thể được di chuyển hoặc xóa bằng các lệnh gọi hệ thống tập tin thông thường (rename, unlink) và các lệnh (mv, rm).

Một số phiên bản Unix có sẵn một tập lệnh có tên là makedev hay MAKEDEV để tạo tất cả các thiết bị cần thiết trong thư mục /dev. Nó chỉ có ý nghĩa trên các hệ thống có thiết bị được gán số chính tĩnh (ví dụ: bằng cách mã hóa cứng nó trong mô-đun nhân của hệ điều hành).

Trong khi một số hệ thống Unix khác như FreeBSD chỉ sử dụng quản lý nút thiết bị dựa trên nhân thông qua devfs và không hỗ trợ tạo nút thủ công. Lệnh gọi hệ thống mknod(2) và lệnh mknod(8) tồn tại để giữ khả năng tương thích với POSIX, các nút thiết bị được tạo thủ công bên ngoài devfs tất nhiên sẽ không hoạt động.[9]

Quy ước đặt tên

[sửa | sửa mã nguồn]

Các tiền tố sau được sử dụng cho tên của một số thiết bị trong phân cấp /dev để xác định loại thiết bị:

Một số tiền tố bổ sung đã được sử dụng phổ biến trong một số hệ điều hành:

  • fb: bộ đệm khung (frame buffer)
  • fd: (nền tảng) đĩa mềm, mặc dù cách viết tắt tương tự này cũng thường được sử dụng để chỉ trình mô tả tập tin
  • hd: ("cổ điển") driver IDE (trước đây được sử dụng cho ổ đĩa cứng ATA, ổ đĩa quang ATAPI,...)
    • hda: thiết bị chính trên kênh ATA đầu tiên (thường được xác định bằng số chính 3 và số phụ 0)
    • hdb: thiết bị phụ trên kênh ATA đầu tiên
    • hdc: thiết bị chính trên kênh ATA thứ hai
    • hdd: thiết bị phụ trên kênh ATA thứ hai
  • parport, pp: các cổng song song
  • mem: Bộ nhớ chính (character device)
  • driver NVMe
    • nvme0: driver của thiết bị đã đăng ký đầu tiên (character device)
    • nvme0n1: không gian tên đầu tiên của thiết bị được đăng ký đầu tiên (block device)
    • nvme0n1p1: phân vùng đầu tiên của không gian tên đầu tiên của thiết bị được đăng ký đầu tiên (block device)
  • driver MMC
    • mmcblk: driver lưu trữ cho MMC Media (thẻ SD, chip eMMC trên máy tính xách tay,...)
      • mmcblk0: thiết bị đăng ký đầu tiên
      • mmcblk0p1: phân vùng đầu tiên của thiết bị được đăng ký đầu tiên
  • driver SCSI cũng được sử dụng bởi libATA (driver PATA/SATA hiện đại), USB, IEEE 1394,...
    • sd: driver lưu trữ hàng loạt (block device)
      • sda: thiết bị đăng ký đầu tiên
      • sdb, sdc,...: thiết bị đã đăng ký thứ hai, thứ ba,...
    • ses: Driver bọc
    • sg: lớp SCSI chung
    • sr: driver "ROM" (ổ đĩa quang định hướng dữ liệu; scd chỉ là một bí danh phụ)
    • st: driver băng từ
  • tty: terminal
    • ttyS: (nền tảng) driver cổng nối tiếp
    • ttyUSB: Bộ chuyển đổi nối tiếp USB, modem,...

Danh sách chuẩn của các tiền tố được sử dụng trong Linux có thể được thấy trong danh sách thiết bị Linux, sổ đăng ký chính thức của số thiết bị được phân bổ và các nút thư mục /dev cho hệ điều hành Linux.[10]

Đối với hầu hết các thiết bị, tiền tố này được theo sau bởi một số nhận dạng thiết bị duy nhất cụ thể. Đối với ổ cứng, một ký tự được sử dụng để xác định thiết bị và theo sau là một số để xác định phân vùng. Vì vậy, một hệ thống tập tin có thể "biết" một khu vực trên đĩa là /dev/sda3 chẳng hạn, hoặc "thấy" một terminal đã nối mạng được liên kết với /dev/pts/14.

Trên các đĩa sử dụng bản ghi khởi động chính của máy tính, số thiết bị của phân vùng chính và phân vùng mở rộng tùy chọn được đánh số từ 1 đến 4 trong khi chỉ mục của bất kỳ phân vùng logic nào là 5 trở đi, bất kể bố cục của phân vùng cũ (vùng đã sinh chúng mở rộng phân vùng không cần phải là phân vùng thứ 4 trên đĩa cũng như không cần phải tồn tại ở cả 4 phân vùng chính).

Tên thiết bị thường thay đổi giữa các biến thể hệ thống tương tự Unix khác nhau, ví dụ: trên một số hệ thống BSD, thiết bị IDE được đặt tên là /dev/wd0, /dev/wd1,...

devfs là một hệ thống tích hợp của hệ thống tập tin thiết bị trên hệ điều hành tương tự Unix, được sử dụng để hiển thị tập tin thiết bị. Cơ chế triển khai cơ bản có thể khác nhau, tùy thuộc vào hệ điều hành.

Việc duy trì các tập tin đặc biệt này trên hệ thống tập tin được thực hiện vật lý (ví dụ như bằng ổ cứng,...) không thuận tiện và vì dù sao nó cũng cần hỗ trợ nhân nên ý tưởng về một hệ thống tệp logic có mục đích đặc biệt là để tránh lưu trữ vật lý.

Ngoài ra, việc xác định thời điểm các thiết bị sẵn sàng xuất hiện không hoàn toàn là chuyện nhỏ. Cách tiếp cận của 'devfs' tới driver thiết bị là yêu cầu tạo và xóa các mục 'devfs' liên quan đến thiết bị mà nó kích hoạt hoặc vô hiệu hóa.

PC DOS, TOS, OS/2 và Windows

[sửa | sửa mã nguồn]

Tập tin thiết bị là một từ khóa dành riêng được sử dụng trong hệ thống PC DOS, TOS, OS/2Windows để cho phép truy cập vào một số cổng và thiết bị nhất định.

MS-DOS mượn khái niệm tập tin đặc biệt từ Unix nhưng đổi tên chúng thành các thiết bị' (device)'.[1] Bởi vì các phiên bản đầu tiên của MS-DOS không hỗ trợ hệ thống phân cấp thư mục, các thiết bị được phân biệt với các tập tin thông thường bằng tên được đặt từ từ dành riêng. Điều này có nghĩa là một số tên tập tin nhất định được dành riêng cho các thiết bị và không được dùng để đặt tên cho các tập tin hoặc thư mục mới.[11] Bản thân các tên dành riêng đã được chọn để tương thích với việc xử lý "tập tin đặt biệt" của lệnh PIP trong CP/M. Có hai loại thiết bị trong DOS: Block Device (được sử dụng cho ổ đĩa) và Character Device (nói chung là tất cả các thiết bị khác, bao gồm cả thiết bị COM và PRN).[12]

DOS sử dụng các tập tin thiết bị để truy cập máy in và cổng. Hầu hết các phiên bản Windows cũng có hỗ trợ điều này, nó có thể gây nhầm lẫn khi cố gắng tạo các tập tin và thư mục có tên tương tự vì chúng không thể có những tên này.[13] Các phiên bản 2.x của MS-DOS cung cấp tham số AVAILDEV trong CONFIG.SYS, nếu được đặt thành FALSE thì các tên đặc biệt này chỉ hoạt động nếu có tiền tố là \DEV\, do đó hệ thống cho phép các tệp thông thường được tạo với các tên này[14]

GEMDOS, một phần giống DOS của Atari TOS, hỗ trợ các tên thiết bị tương tự như DOS nhưng không giống hoàn toàn như DOS, nó yêu cầu ký tự ":" ở cuối (đây là tùy chọn trên DOS) để xác định chúng là thiết bị khác với tên tập tin thông thường (do đó "CON:" sẽ hoạt động trên cả DOS và TOS, nhưng "CON" sẽ chỉ là tên của một tập tin thông thường trên TOS, nhưng trên DOS nó là tập tin driver thiết bị). Trong MiNTMagiC, chế độ xem hệ thống tập tin hợp nhất tương tự UNIX đặc biệt được sử dụng thông qua ký tự ổ đĩa "U:", cụ thể là trong "U:\DEV".

Từ khóa thiết bị[13] Sử dụng làm đầu vào Sử dụng làm đầu ra
CON Nhận dữ liệu đã nhập cho đến khi nhấn ^Z (Ctrl-Z). In dữ liệu ra console.
PRN[15] In văn bản tới trình in, thường được chuyển hướng đến LPT1 hay LST. Đôi khi có thể cấu hình lại cho các thiết bị khác.[16][17][18]
AUX (không phải trong OS/2[15]) Đọc dữ liệu từ thiết bị phụ trợ, thường là thiết bị nối tiếp như COM1. Đôi khi có thể cấu hình lại cho các thiết bị khác.[16][17][18] Gửi dữ liệu đến thiết bị phụ trợ, thường là thiết bị nối tiếp như COM1. Đôi khi có thể cấu hình lại cho các thiết bị khác.[16][17][18]
NUL Trả về null hoặc không có dữ liệu. Từ chối nhận dữ liệu
CLOCK$ (vẫn được đặt tên là CLOCK trong một số phiên bản MS-DOS 2.11[19][16][17])
KEYBD$ (chỉ trong MS-DOS đa nhiệm) ? ?
KBD$ (chỉ trong OS/2[15]) ? ?
SCREEN$ (chỉ trong MS-DOS đa nhiệm và OS/2[15]) ? ?
POINTER$ (chỉ trong OS/2[15]) ? ?
MOUSE$ (chỉ trong OS/2[15]) ? ?
$IDLE$ (chỉ trong DR-DOS (từ 5.0) và DOS đa người dùng (thuộc Concurrent DOS 386))
CONFIG$ (chỉ trong MS-DOS 7.0 và cao hơn)
LST (chỉ trong 86-DOS và DOS 1.x, cũng có trong MS-DOS 2.11 của Hewlett-Packard cho HP Portable Plus[16][17]) Không trả về dữ liệu. Gửi dữ liệu đến trình in dòng. (LPT2 cho MS-DOS 2.11 của Hewlett-Packard[16][17])
PLT (chỉ trong MS-DOS 2.11 của Hewlett-Packard cho HP Portable Plus[16][17]) Không trả về dữ liệu. Gửi dữ liệu đến trình vẽ được chỉ định trước. Có thể cấu hình lại thiết bị trình vẽ kèm theo.[16][17]
LPT1, LPT2, LPT3 và đôi khi là LPT4 (trong DR-DOS 7.02 trở lên và một số phiên bản của DOS đa người dùng) Gửi dữ liệu đến cổng song song đã chọn.
COM1, COM2, COM3, COM4 Đọc dữ liệu từ cổng nối tiếp đã chọn. Gửi dữ liệu đến cổng nối tiếp đã chọn.
82164A (chỉ trong MS-DOS 2.11 của Hewlett-Packard cho HP Portable Plus[16][17]) Chuyển hướng tới COM2. Chuyển hướng tới COM2.

Sử dụng shell chuyển hướng và các đường hầm, dữ liệu có thể được gửi đến hoặc nhận từ một thiết bị. Ví dụ: nhập nội dung sau sẽ gửi tệp c:\data.txt đến máy in:

TYPE c:\data.txt > PRN

PIPE, MAILSLOT và MUP là các thiết bị Windows tiêu chuẩn khác.[20]

Hệ điều hành 8-bit của máy tính bỏ tủi Sharp như PC-E500, PC-E500S... sử dụng trình thông dịch BASIC, một hệ thống kiểm soát tập tin 12-bit FAT của DOS 2 (FCS) và Hệ thống kiểm soát đầu vào/đầu ra (IOCS) của BIOS triển khai một số driver character device và block device tiêu chuẩn cũng như các tập tin đặc biệt bao gồm STDO:/SCRN: (hiển thị), STDI:/KYBD: (bàn phím), COM: (Serial I/O), STDL:/PRN: (trình in), CAS: (băng cassette), E:/F:/G: (tập tin bộ nhớ), S1:/S2:/S3: (thẻ nhớ), X:/Y: (đĩa mềm), SYSTM: (hệ thống) và NIL: (chức năng).[21]

Tích hợp

[sửa | sửa mã nguồn]
Hệ điều hành Hệ thống tập tin hoặc phần mềm quản lý Điểm gắn kết tiêu chuẩn Tác giả Ghi chú
Linux 2.3.46pre5–2.6.17 devfs[22]devfsd /dev Richard Gooch Được triển khai hoàn toàn trong nhân với daemon devfsd tùy chọn để xử lý các sự kiện nút thiết bị trong không gian người dùng.[23] Đã lỗi thời - người dùng được khuyến khích chuyển sang udev và/hoặc devtmpfs.
Linux 2.5– udev trên bất kỳ hệ thống tập tin nào nhưng thường là tmpfs /dev Greg Kroah-Hartman, Kay SieversDan Stekloff Phần lớn được triển khai trong không gian người dùng, thông tin thiết bị được thu thập từ sysfs. Các tập tin thiết bị có thể được lưu trữ trên hệ thống tập tin có mục đích chung thông thường hoặc trong hệ thống tập tin bộ nhớ (tmpfs).
Linux 2.6.32– devtmpfs có hoặc không có udev /dev Kay Sievers, Jan Blunck, Greg Kroah-Hartman Phương pháp tiếp cận nhân/không gian người dùng kết hợp của hệ thống tập tin thiết bị để cung cấp các nút trước khi udev chạy trong lần đầu tiên[24]
Solaris devfs[25] /devices Sun Microsystems Được giới thiệu với các driver được tải động trong Solaris-2.1
FreeBSD 2.0– devfs /dev Poul-Henning Kamp Tích hợp đầy đủ trong nhân.
DragonFly BSD 2.3.2– devfs /dev Alex Hornung Tích hợp đầy đủ trong nhân.
macOS devfs /dev Apple Inc. Tích hợp đầy đủ trong nhân.
HP-UX B.11.31 devfs /dev HP Tích hợp đầy đủ trong nhân.
Plan 9 # Bell Labs Tích hợp trong nhân.
RISC OS DeviceFS Devices: Acorn Computers DeviceFS được bắt đầu vào năm 1991[26] và lần đầu tiên xuất hiện trong RISC OS 3. Nó quản lý một số thiết bị như các tập tin đặc biệt, phổ biến nhất là: Parallel, Serial, FastParallel và USB. Mô-đun SystemDevices thực hiện các thiết bị giả như: Vdu, Kbd, Null và Trình in.
MS-DOS, PC DOS, DR-DOS FAT \DEV (và /DEV) đa dạng Khi được triển khai trong nhân, các device character sẽ xuất hiện trong thư mục ảo \DEV và bất kỳ thư mục đĩa nào. Trong MS-DOS/PC DOS 2.x, directive CONFIG.SYS AVAILDEV=FALSE có thể được sử dụng để buộc các thiết bị chỉ tồn tại trong \DEV.
MagiC, MiNT, MultiTOS U:\DEV[27][28] Application Systems Heidelberg, Eric R. Smith, Atari Corp. Ổ U: đặc biệt chứa một thư mục DEV ảo mà trong đó có thể thấy các tập tin thiết bị.
Windows 9x \\devices\ Microsoft
Windows NT \Device Microsoft Thư mục \Device là một phần không gian tên đối tượng của Windows NT.
Hệ thống con Windows NT Win32 \\.\ Microsoft Tiền tố \\.\ làm cho các API hỗ trợ truy cập vùng tên thiết bị Win32 thay vì vùng tên tập tin Win32. Tên thiết bị Win32 là các liên kết tượng trưng đến tên thiết bị trong thư mục \Device Windows NT.

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ a b “Windows for Workgroups: How VSHARE.386 Manages File Sharing”. Support.microsoft.com. 22 tháng 9 năm 1999. Truy cập ngày 22 tháng 1 năm 2014.
  2. ^ Kroah-Hartman, Greg (20 tháng 6 năm 2005). “[PATCH] devfs: Remove devfs from the kernel tree”. Linux kernel source tree. Truy cập ngày 12 tháng 6 năm 2021.
  3. ^ Corbet, Jonathan; Kroah-Hartman, Greg; Rubini, Alessandro (2005). “Access Control on a Device File”. Linux Device Drivers, 3rd Edition. O'Reilly. Truy cập ngày 28 tháng 4 năm 2017. 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.
  4. ^ Kernighan, Brian W.; Pike, Rob (1984). The UNIX Programming Environment. Prentice-Hall. tr. 66. ISBN 0-13-937681-X.
  5. ^ Neil Brown (27 tháng 10 năm 2010). “Ghosts of Unix Past: a historical search for design patterns”. LWN.net. Truy cập ngày 30 tháng 3 năm 2014.
  6. ^ “IEEE Std 1003.1, 2013 Edition”. Truy cập ngày 24 tháng 4 năm 2014.
  7. ^ “FreeBSD Architecture Handbook”. Truy cập ngày 7 tháng 3 năm 2013.
  8. ^ “usr.sbin/envstat/envstat.c”. BSD Cross Reference. NetBSD. Tóm lược dễ hiểu.
  9. ^ “mknod(8)”. FreeBSD Manual Pages. The FreeBSD Project. 3 tháng 10 năm 2016. Truy cập ngày 12 tháng 6 năm 2021.
  10. ^ Linux Assigned Names and Numbers Authority (6 tháng 4 năm 2009). “Linux allocated devices (2.6+ version)”. Linux kernel (Documentation/devices.txt). Bản gốc lưu trữ ngày 24 tháng 4 năm 2016. Truy cập ngày 8 tháng 6 năm 2013.
  11. ^ “Avoid Creating Macintosh Filenames that are NT Device Names”. Support.microsoft.com. 1 tháng 11 năm 2006. Truy cập ngày 22 tháng 1 năm 2014.
  12. ^ “device attributes”. Stanislavs.org. Truy cập ngày 22 tháng 1 năm 2014.
  13. ^ a b “MS-DOS Device Driver Names Cannot be Used As File Names”. Revision 2.0. Microsoft. 12 tháng 5 năm 2003. KB74496, Q74496. Bản gốc lưu trữ ngày 21 tháng 7 năm 2012.
  14. ^ “Undocumented Commands”. 4dos.info. Kevtronics. 12 tháng 4 năm 2002. Truy cập ngày 16 tháng 5 năm 2014.
  15. ^ a b c d e f IBM Operating System/2 Technical Reference - Programming Family (PDF). 1 (ấn bản thứ 1). IBM. tháng 9 năm 1987 [1986]. Lưu trữ (PDF) bản gốc ngày 3 tháng 1 năm 2017.
  16. ^ a b c d e f g h i Hewlett-Packard - Technical Reference Manual - Portable PLUS (ấn bản thứ 1). Corvallis, OR, USA: Hewlett-Packard Company, Portable Computer Division. tháng 8 năm 1985. 45559-90001. Truy cập ngày 27 tháng 11 năm 2016.
  17. ^ a b c d e f g h i Hewlett-Packard - Technical Reference Manual - Portable PLUS (PDF) (ấn bản thứ 2). Portable Computer Division, Corvallis, OR, USA: Hewlett-Packard Company. tháng 12 năm 1986 [August 1985]. 45559-90006. Lưu trữ (PDF) bản gốc ngày 28 tháng 11 năm 2016. Truy cập ngày 27 tháng 11 năm 2016.
  18. ^ a b c Paul, Matthias R. (2 tháng 10 năm 1997). “Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT”. Bản gốc lưu trữ ngày 4 tháng 10 năm 2003. Truy cập ngày 29 tháng 3 năm 2009. [1]
  19. ^ Paterson, Tim; Microsoft (19 tháng 12 năm 2013) [1983]. “Microsoft DOS V1.1 and V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM”. Computer History Museum, Microsoft. Truy cập ngày 25 tháng 3 năm 2014. (Note: While the publishers claim this would be MS-DOS 1.1 and 2.0, it actually is SCP MS-DOS 1.25 and a mixture of Altos MS-DOS 2.11 and TeleVideo PC DOS 2.11.)
  20. ^ “REG: CurrentControlSet Entries PART 2: SessionManager”. Support.microsoft.com. 1 tháng 11 năm 2006. Truy cập ngày 22 tháng 1 năm 2014.
  21. ^ Technical Reference Manual PC-E500 (PDF). Sharp Corporation, Information Systems Group, Personal Equipment Division. tháng 3 năm 1990. tr. 17. Lưu trữ (PDF) bản gốc ngày 14 tháng 3 năm 2017. Truy cập ngày 14 tháng 3 năm 2017.
  22. ^ Gooch, Richard (20 tháng 8 năm 2002). “Linux Devfs (Device File System) FAQ”. Truy cập ngày 13 tháng 6 năm 2021.
  23. ^ Gooch, Richard. “My Linux Contributions”. Truy cập ngày 13 tháng 6 năm 2021. Devfsd provides configurable management of device nodes using the Linux Device Filesystem.
  24. ^ “Driver Core: devtmpfs - kernel-maintained tmpfs-based /dev”. LWN. Truy cập ngày 10 tháng 8 năm 2009.
  25. ^ “devfs(7FS)”. man pages section 7: Device and Network Interfaces. Oracle. 2014. Truy cập ngày 12 tháng 6 năm 2021.
  26. ^ “Project Black change log”. Truy cập ngày 15 tháng 5 năm 2016.
  27. ^ “The drive U: in MagiC”. 28 tháng 3 năm 2016. Lưu trữ bản gốc ngày 15 tháng 1 năm 2017. Truy cập ngày 9 tháng 1 năm 2017.
  28. ^ “FreeMiNT-Portal - mint.doc”. 27 tháng 4 năm 2000. Lưu trữ bản gốc ngày 15 tháng 1 năm 2017. Truy cập ngày 9 tháng 1 năm 2017.

Đọc thêm

[sửa | sửa mã nguồn]

Bản mẫu:File systems Bản mẫu:Disk operating systems