Я ищу формальное определение файла, который включает не только хранилище, но и абстракции, такие как procfs или / dev / null (или любой файл на основе предохранителей), которые не относятся к хранилищу.
До сих пор я знаю, что все файлы являются абстракциями, которые
- можно определить
- могут иметь имена (обычно организованные в иерархические структуры)
- может быть доступен как поток байтов
- обычно предоставляют разрешения и другие (специфичные для системы) метаданные
однако мне не удалось найти какое-либо полезное формальное определение в любой книге по ОС, которую я читал до сих пор.
operating-systems
os-kernel
filesystems
Джакомо Тесио
источник
источник
Ответы:
Согласно Википедии, компьютерный файл - это просто ресурс для хранения информации. Похоже, этот термин возник в эпоху перфокарт, когда компьютерная программа буквально хранилась в файле (например, ящик для хранения потерянных страниц, см. Изображение ниже). По мере появления других форм носителей, таких как диски, использовалась номенклатура.
С точки зрения * nix, все является файлом: сокеты, устройства, терминалы, экраны / мониторы, файлы данных, каналы и так далее. Microsoft Windows, напротив, имеет тенденцию называть данные постоянного хранения «файлами», а энергозависимые ресурсы такими, какими они являются, такими как именованные каналы, сокеты, растровые устройства и т. Д. Другие системы могут иметь аналогичные определения где-то между этими двумя крайностями.
К сожалению, как я только что сказал, нет единого определения, что такое файл, потому что это разные вещи для разных людей, за исключением того, что все склонны согласиться с определением базовой линии, что файл является именованным ресурсом, который хранит данные на постоянном носителе (постоянный не означает, что он никогда не может быть изменен, просто, что он сохраняется в циклах питания).
( Википедия )
источник
Я думаю о файле как последовательность байтов. Даже после того, как он потерял свое имя (обычно вызванное вызовом rm, который его отменяет), он все еще существует на диске, пока его чанки не будут перезаписаны другими вещами. Форматы файлов - это контексты для чтения файлов. Все восходит к принципу, что информация - это байты плюс контекст.
Предыдущий постер прав, что устройства, которые рассматриваются как файлы, на самом деле не являются файлами. Это очень полезный хак.
Итак, мое определение файла: последовательность байтов, хранящихся в памяти.
источник