"Mọi thứ là một tập tin" chỉ là một lời nói quá. Nó là tiểu thuyết vào những năm 1970 và nó là một đặc điểm phân biệt chính của UNIX. Nhưng đó chỉ là một khái niệm tiếp thị, không phải là nền tảng thực sự của UNIX, vì rõ ràng nó không đúng. Nó không có lợi hoặc hợp lý để coi MỌI THỨ như một tập tin.
CPU có phải là một tập tin không? Chương trình của bạn có đọc () CPU để nhận hướng dẫn mới không? RAM có phải là một tập tin không? Chương trình của bạn có đọc () byte tiếp theo không?
Trước đó, có những loại HĐH cung cấp cho bạn một API cho đĩa mềm và API khác cho đĩa cứng, API khác cho băng từ và một loạt API khác nhau cho các thiết bị đầu cuối khác nhau, v.v. Các hệ thống máy tính lớn của IBM có các loại tệp khác nhau trên các đĩa cứng và cung cấp cho bạn một API khác nhau cho mỗi loại, tin hay không! Vì vậy, cách tiếp cận "nó là một tệp" của UNIX, cùng với cách tiếp cận "stdin / stdout / stderr", đã mang đến một sự trừu tượng rất thanh lịch cho cả người dùng và lập trình viên.
Với mạng, sự trừu tượng đặc biệt này không thành công. Và không có hại gì, chỉ hơi kém về sự thanh lịch và sự gắn kết của HĐH. Nhưng nó đã có tác dụng. Bạn có thấy một tập tin được gọi là /dev/myinternetz/www/google/com/tcp/80
bất cứ nơi nào trên hệ thống của bạn ngày hôm nay? Bạn có thể mở () nó, viết () một truy vấn và đọc () câu trả lời bằng HTML hay không? Không? Điều này là do sự trừu tượng "là một tệp" này không thuận tiện cho việc tương tác trên mạng. Nó sẽ không hoạt động quá tốt trong thực tế. Luật trừu tượng bị rò rỉ trong hành động.