Большая разница между Linux и Windows, по крайней мере, когда дело доходит до их файловых систем и деревьев каталогов, заключается в том, что в Linux "все является файлом", и все происходит от одного корня. Это также относится практически ко всем производным от Unix ОС, таким как BSD, OS X, Solaris и т.д., Но я собираюсь просто сказать "Linux", чтобы быть универсальным (если не совсем точным).
Но что это означает на практике?
Windows допускает наличие нескольких именованных корней для своих файловых систем. Вы понимаете это как буквы дисков: C: D: E:
и так далее. У каждого есть корень (\
) и дерево, которое происходит от него. Последние версии Windows допускают такие вещи, как точки монтирования тома, где том (то, что вы считаете разделом) можно монтировать в существующую пустую папку. Таким образом, вместо D:
\, представляющего корень, скажем, вашего оптического (CD/DVD/BR) привода, вы можете вместо этого смонтировать его в C:\Optical
. Это больше похоже на то, что делает Linux. Существует также базовое, однокорневое пространство имен объектов для всего в Windows, аналогичное тому, что использует Linux и которым управляет диспетчер объектов, но большинство пользователей редко видят в нем ссылки, поскольку оно в основном используется ядром.
У Linux один корень: /
. Все происходит от него, и он не обязательно должен представлять ваш жесткий диск. Жесткие диски, оптические приводы, карты памяти, сетевые ресурсы, принтеры, сканеры, процессоры, оперативная память, процессы ... все это представлено где-то внутри этого единого пространства имен и может быть доступно любому процессу с помощью стандартных API-интерфейсов управления файлами, если у вас есть достаточно высокий уровень доступа. То, что вы можете читать или писать с него, не означает, что это файл на вашем жестком диске в Linux. Например, устройства обычно монтируются в /dev
, поэтому доступ к ним часто означает, что вы разговариваете с устройством - может быть, это звуковая карта, или сканер, или камера и т.д. Они называются файлами устройств . Procfs - это специальная "файловая система", которая обычно монтируется в /proc
и имеет "каталог" для каждого запущенного процесса, с файлами в каждом каталоге, относящимися к таким вещам, как командная строка, используемая для вызова этого процесса, карты памяти, открытые файлы и т.д. Sysfs - это другая специальная файловая система (смонтированная в /sys
), используемая для предоставления обширной информации о запущенных объектах ядра, а также для точной настройки работающего ядра путем простой записи в определенный файл.