Tập tin thiết bị

Giao diện với driver thiết bị xuất hiện trong hệ thống tập tin như một tập tin thông thường; ví dụ: /dev* trong hệ thống tương tự Unix; CON, PRN, NUL trong DOS/WindowsBản mẫu:SHORTDESC:Giao diện với driver thiết bị xuất hiện trong hệ thống tập tin như một tập tin thông thường; ví dụ: /dev* trong hệ thống tương tự Unix; CON, PRN, NUL trong DOS/Windows
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ệt là giao 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/2 và Windows. 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ệu và trì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 file và block 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). 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 BSD và Darwin 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; 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.