Это отчасти по историческим причинам, а отчасти потому, что это имеет больше смысла.
Multics
Multics была первой операционной системой, которая представила иерархическую файловую систему, известную нам сегодня, с каталогами, которые могут содержать каталоги. Цитируя «Универсальную файловую систему для вторичного хранения» Р. К. Дейли и П. Г. Неймана:
Во втором разделе статьи представлена иерархическая структура файлов, которая позволяет гибко использовать систему. Эта структура содержит достаточные возможности для обеспечения универсальности. (...)
Для простоты понимания файловую структуру можно рассматривать как дерево файлов, некоторые из которых являются каталогами. То есть, за одним исключением, каждый файл (например, каждый каталог) непосредственно указывает на одну ветвь в одном каталоге. Исключением является корневой каталог или корневой каталог в корне дерева. Хотя на него явно не указывает ни один каталог, на корень неявно указывает фиктивная ветвь, известная файловой системе. (...)
В любой момент пользователь считается работающим в каком-то одном каталоге, называемом его рабочим каталогом. Он может получить доступ к файлу, на который фактически указывает запись в своем рабочем каталоге, просто указав имя записи. Несколько пользователей могут иметь один и тот же рабочий каталог одновременно.
Как и во многих других аспектах, Multics стремился к гибкости. Пользователи могут работать в поддереве файловой системы и игнорировать все остальное, а также использовать каталоги для организации своих файлов. Каталоги также использовались для контроля доступа - атрибут READ позволял пользователям перечислять файлы в каталоге, а атрибут EXECUTE позволял пользователям получать доступ к файлам в этом каталоге (это, как и многие другие функции, использовалось в Unix).
Multics также следовал принципу единого пула хранения. В статье не останавливаться на этом аспекте. Один пул хранения хорошо соответствовал аппаратным средствам того времени: не было съемных устройств хранения, по крайней мере, тех, которые могли бы волновать пользователей. У Multics был отдельный пул хранения резервных копий, но это было прозрачно для пользователей.
Юникс
Unix получил много вдохновения от Multics, но нацелен на простоту, тогда как Multics нацелен на гибкость.
Единая иерархическая файловая система хорошо подходила для Unix. Как и в случае с Multics, пулы хранения обычно не имеют отношения к пользователям. Однако, были съемные устройства и Unix сделал разоблачить их пользователям через операторы mount
и umount
команды (зарезервировано для «супер-пользователя», то есть администратор). В «Системе разделения времени UNIX» Деннис Ритчи и Кен Томпсон объясняют:
Хотя корень файловой системы всегда хранится на одном и том же устройстве, необязательно, чтобы вся иерархия файловой системы находилась на этом устройстве. Существует системный запрос монтирования с двумя аргументами: имя существующего обычного файла и имя специального файла, чей связанный том хранения (например, пакет диска) должен иметь структуру независимой файловой системы, содержащей свою собственную иерархию каталогов. , Эффект монтирования заключается в том, чтобы ссылки на ранее существовавший файл ссылались вместо этого на корневой каталог файловой системы на съемном томе. По сути, mount заменяет лист дерева иерархии (обычный файл) на целое новое поддерево (иерархия, хранящаяся на съемном томе). После монтирования практически нет различий между файлами на съемном томе и файлами в постоянной файловой системе. Например, в нашей установке корневой каталог находится на небольшом разделе одного из наших дисков, в то время как другой диск, содержащий файлы пользователя, монтируется в последовательности инициализации системы. Монтируемая файловая система генерируется путем записи в соответствующий специальный файл. Доступна служебная программа для создания пустой файловой системы, или можно просто скопировать существующую файловую систему.
Иерархическая файловая система также имеет преимущество, заключающееся в концентрации сложности управления несколькими устройствами хранения в ядре. Это означало, что ядро было более сложным, но в результате все приложения были проще. Поскольку ядро должно заботиться об аппаратных устройствах, а большинство приложений - нет, это более естественный дизайн.
Windows
Windows ведет свое происхождение от двух линий: VMS , операционной системы, изначально разработанной для миникомпьютера VAX , и CP / M , операционной системы, разработанной для ранних микрокомпьютеров Intel.
VMS имела распределенную иерархическую файловую систему Files-11 . В Files-11 полный путь к файлу содержит имя узла, обозначение учетной записи на этом узле, имя устройства, путь к дереву каталогов, имя файла, тип файла и номер версии. В VMS была мощная функция логических имен, позволяющая определять ярлыки для определенных каталогов, поэтому пользователям редко придется заботиться о «реальном» расположении каталога.
CP / M был разработан для компьютеров с 64 КБ ОЗУ и дисководом гибких дисков, поэтому все было просто. Не было никаких каталогов, но ссылка на файл могла содержать указание диска ( A:
или B:
).
Когда MS-DOS 2.0 ввел каталоги, он сделал это с синтаксисом, который был совместим с MS-DOS 1, который сам следовал CP / M. Таким образом, пути были основаны на диске с однобуквенным именем. (Кроме того, символ косой черты /
использовался в VMS и CP / M для запуска параметров командной строки, поэтому в качестве разделителя каталогов необходимо было использовать другой символ. Вот почему DOS и более поздние версии Windows используют обратную косую черту, хотя некоторые внутренние компоненты также поддерживают косую черту ).
Windows сохранила совместимость с DOS и подходом VMS, поэтому она сохранила понятие букв дисков даже тогда, когда они стали менее актуальными. Сегодня под капотом Windows использует UNC- пути ( первоначально разработанные Microsoft и IBM для OS / 2 , связанных с ними). Хотя это зарезервировано для опытных пользователей (вероятно, из-за веса истории), Windows разрешает монтирование через точки повторной обработки .