Loading AI tools
основная единица хранения двоичных данных Из Википедии, свободной энциклопедии
Файл (англ. file) — именованная область данных на носителе информации, используемая как базовый объект взаимодействия с данными в операционных системах.
Работа с файлами реализуется как правило с применением файловых систем, обеспечивающих организацию работы с файлами и абстракцию над носителями информации. Обычно выделяют исполняемые файлы (программы) и собственно файлы данных (например, текстовые файлы или медиаконтейнеры). Формат файла — способ организации данных внутри файла, позволяющий записывать в него информацию в соответствии с её смыслом и интерпретировать записанное. Многие операционные системы приравнивают к файлам и обрабатывают сходным образом и другие ресурсы; наиболее широкое использование понятия файла характерно для Unix-подобных операционных систем, реализующих концепцию «всё есть файл» (англ. everything is a file). В них файлами считаются не только области данных на томе, но и, в частности, физические устройства (порты или принтеры), виртуальные устройства (/dev/null, /dev/random, /dev/urandom и другие), потоки данных (например, именованные каналы), сетевые ресурсы, сокеты.
Слово англ. file происходит от лат. filum («нить, струна»).[1] Слово англ. file впервые применено к компьютерной системе хранения в 1950 году. Реклама памяти на запоминающих ЭЛТ фирмы RCA в журнале Popular Science[2] гласила:
…результаты бесчисленных вычислений можно держать «в картотеке» (англ. on file) и получать снова. Эта «картотека» теперь существует в запоминающей трубке, разработанной в лабораториях RCA. Она электрически сохраняет цифры, отправленные в вычислительную машину, и держит их в хранилище, заодно запоминая новые — ускоряя интеллектуальные решения в лабиринтах математики.
В 1952 году слово file отнесли к колоде перфокарт.[3] Поначалу словом file называли само устройство памяти, а не его содержимое (регистровый файл). Например, диски IBM 350, использовавшиеся, например, в машине IBM 305, назывались disk files[4]. Системы наподобие Compatible Time-Sharing System ввели концепцию файловой системы, когда на одном запоминающем устройстве существует несколько виртуальных «устройств памяти», что и дало слову «файл» современное значение. Имена файлов в CTSS состояли из двух частей, «основного имени» и «дополнительного имени» (последнее существует и поныне как расширение имени файла)[5][6].
По мере развития вычислительной техники файлов в системах становилось всё больше. Для удобства работы с ними, их, как и другие данные, стали организовывать в структуры (тогда же появились символьные имена). Вначале это был простой массив, «привязанный» к конкретному носителю информации. В настоящее время наибольшее распространение получила древовидная организация с возможностью монтирования и вставки дополнительных связей (то есть ссылок). Соответственно, имя файла приобрело характер пути к файлу: перечисление узлов дерева файловой системы, которые нужно пройти, чтобы до него добраться.
Операционная система предоставляет приложениям набор функций и структур для работы с файлами. Возможности операционной системы накладывают дополнительные ограничения на ограничения файловой системы. С точки зрения API файл — объект, по отношению к которому могут быть применены функции этого API. На уровне API уже не существенно, существует ли файл как объект файловой системы или является, например, устройством ввода-вывода.
В зависимости от файловой системы, файл может обладать различным набором свойств.
В большинстве файловых систем имя файла используется для указания, к какому именно файлу производится обращение. В различных файловых системах ограничения на имя файла сильно различаются: в FAT16 и FAT12 размер имени файла ограничен 8.3 знаками (8 на имя и 3 на расширение); в других системах имя файла ограничено обычно в 255 байт; в NTFS имя ограничено в некоторых ОС 256 символами Unicode (по спецификации — 32 768 символов).
Помимо ограничений файловой системы, интерфейсы операционной системы дополнительно ограничивают набор символов, который допустим при работе с файлами.
Для MS-DOS в имени файла допустимы только заглавные латинские буквы, цифры. Недопустимы пробел, знак вопроса, звёздочка, символы больше и меньше, символ вертикальной черты.[7] При вызове системных функций имена файлов в нижнем или смешанном регистре приводятся к верхнему регистру.
Для Windows в имени файла разрешены заглавные и строчные буквы, цифры, некоторые знаки препинания, пробел. Запрещены символы >
, <
, |
, ?
, *
, /
, \
, :
, "
.
Для Linux (с учётом возможности маскировки) разрешены все символы, кроме /
и нуль-символа.
Большинство операционных систем требуют уникальности имени файла в одном каталоге, хотя некоторые системы допускают файлы с одинаковыми именами (например, при работе с ленточными накопителями).
В некоторых файловых системах можно создавать и использовать файлы без имени. Такие файлы всегда являются временными. Их основные преимущества: при создании не может возникнуть конфликта имён и их нельзя найти в их каталоге по имени. В остальном это полноценные файлы.
Расширение имени файла (часто: расширение файла или расширение) как самостоятельный атрибут файла существует в файловых системах FAT16, FAT32, NTFS, используемых операционными системами MS-DOS, DR-DOS, PC DOS, MS Windows и используется для определения типа файла. Оно позволяет системе определить, каким приложением следует открывать данный файл. По умолчанию в операционных системах Windows и Mac OS расширение скрыто от пользователя.
В остальных файловых системах расширение — условность, часть имени, отделённая самой правой точкой в имени (суффикс).
В некоторых файловых системах, таких как NTFS, предусмотрены атрибуты (обычно это бинарное значение «да»/«нет», кодируемое одним битом). Во многих современных операционных системах атрибуты практически не влияют на возможность доступа к файлам, для этого в некоторых операционных и файловых системах существуют права доступа.
Название атрибута | Перевод | Значение | Файловые системы | Операционные системы |
---|---|---|---|---|
Read only | только для чтения | файл запрещено редактировать | FAT32, FAT12, FAT16, NTFS, HPFS, VFAT | DOS, OS/2, Windows |
System | системный | критический для работы операционной системы файл | FAT32, FAT12, FAT16, NTFS, HPFS, VFAT | DOS, OS/2, Windows |
Hidden | скрытый | файл скрывается от показа, пока явно не указано обратное | FAT32, FAT12, FAT16, NTFS, HPFS, VFAT | DOS, OS/2, Windows |
Archive | архивный (требующий архивации) | файл изменён после резервного копирования или не был скопирован программами резервного копирования; при изменении файла ОС автоматически устанавливает этот атрибут | FAT32, FAT12, FAT16, NTFS, HPFS, VFAT | DOS, OS/2, Windows |
SUID | Установка пользовательского ID | выполнение программы от имени владельца | ext2 | Unix-подобные |
SGID | Установка группового ID | выполнение программы от имени группы (для каталогов: любой файл созданный в каталоге с установленным SGID, получит заданную группу-владельца) | ext2 | Unix-подобные |
Sticky Bit | липкий бит | изначально предписывал ядру не выгружать завершившуюся программу из памяти сразу, а лишь спустя некоторое время, чтобы избежать постоянной загрузки с диска наиболее часто используемых программ, в настоящее время в разных ОС используется по-разному | ext2 | Unix-подобные |
Для файла могут быть определены временные метки создания, последней модификации, последнего доступа и другие.
В некоторых файловых системах предусмотрено указание на владельца файла и группу-владельца.
В некоторых файловых системах предусмотрена возможность для ограничения доступа пользователей к содержимому файла. В Unix-подобных операционных системах для файлов ранее обычно выделяли три типа прав: на запись, чтение и выполнение. Каждое право задаётся раздельно для владельца, для группы и для всех остальных. ACL позволяет использовать более детальное разделение и прав, и пользователей.
В операционных системах Windows NT при работе с файловой системой NTFS права доступа задаются явно для пользователей или групп или наследуются от вышестоящих объектов. Права в себя включают право на чтение, запись, исполнение, удаление, смену атрибутов и владельца, создание и удаление подпапок (для папок) и чтение прав доступа и другие как в POSIX. Каждое право может быть задано как разрешением, так и запретом. Запрет имеет больший приоритет, чем разрешение в отличие от POSIX.
Условно можно выделить два типа операций с файлом — связанные с его открытием и выполняющиеся без его открытия. Операции первого типа обычно служат для чтения и записи информации или подготовки к чтению или записи. Операции второго типа выполняются с файлом как с «объектом» файловой системы, в котором файл является наименьшим элементом структурирования.
В зависимости от операционной системы те или иные операции могут отсутствовать.
Обычно выделяют дополнительные сущности, связанные с работой с файлом:
Операции
Операции, не требующие открытия файла, оперируют с его «внешними» признаками — размером, именем, положением в дереве каталогов. При таких операциях невозможно получить доступ к содержимому файла, файл является минимальной единицей деления информации.
Возможные операции с файлами: создание, удаление, переименование, копирование, перенос на другую файловую систему, создание символьной ссылки или жёсткой ссылки, получение и изменение атрибутов.
В зависимости от файловой системы, носителя информации, операционной системы часть операций может быть недоступна.
По способу организации файлы делятся на файлы с произвольным доступом и файлы с последовательным доступом.
В различных операционных и файловых системах могут быть реализованы различные типы файлов, кроме того, реализация различных типов может различаться.
В операционной системе Unix процессы (обычно находятся в каталоге /proc
) и устройства (/dev
) представляются в виде файлов особого типа, что позволяет использовать некоторые файловые операции для манипуляции этими объектами.
В некоторых файловых системах (например, в файловой системе VMS) файлы имеют версию, что позволяет открывать более старые варианты данного файла. В файловой системе Mac OS (HFS) у файлов есть два «потока»: поток данных (где хранится содержимое файла) и поток ресурсов, хранящий информацию о программе, предназначенной для открывания данного файла и, возможно, некоторую информацию для этой программы. В NTFS файл может содержать, кроме основного, сколько угодно именованных потоков.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.