2.7Файловые системы Linux От свойств файловая системы, особенностей архитектуры, возможностей, надежности во многом зависит работоспособность операционной системы. Помимо продуманной "родной" файловой системы желательно, чтобы была возможность также работать с другими наиболее распространенными файловыми системами (например, FAT16/FAT32).
Как уже говорилось ранее, ядро взаимодействует с файловыми системами через VFS.
VFS и драйверы файловых систем являются одной из важнейших составляющих ядра. Для того, чтобы получить доступ к файлам, хранящимся на каком-либо устройстве хранения данных, необходимо, чтобы был активен драйвер соответствующей файловой системы, и файловая система была смонтирована. Драйвера всех файловых систем поддерживают набор стандартных функций: открыть файл по имени, записать данные в файл, прочитать данные из файла, закрыть файл, удалить файл и т.д. Буферизация (кэширование) выполняется на уровне VFS.
В настоящее время в Linux наиболее часто используется 2-я и 3-я версия файловой системы ExtFS "Extended File System". Ext3 отличается поддержкой журналирования. Существуют также и другие журналируемые файловые системы: ReiserFS и JFS от фирмы IBM.
Как правило, у этих файловых систем существует специальная область, называемая журналом. Журналирование должно обеспечивать целостность файловой системы после внезапного сбоя, такого как отключение питания. Для этого такие файловые системы, как reiserfs и ext3 в Linux, все изменения метаданных (служебной информации), а в некоторых режимах и данных (содержимого файлов) записывают сначала в журнал (выделенную область файловой системы), и только после попадания в журнал всех изменений (вызванных одной операцией) начинают изменять метаданные в их обычном месте. После сбоя, при следующем монтировании, система читает журнал и завершает все неоконченные транзакции, записанные в журнале, а те, что не успели полностью записаться в журнал, игнорирует. Таким образом гарантируется, что каждая транзакция будет либо полностью завершена, либо не будет иметь никакого эффекта.
В большинстве случаев, журналируемые файловые системы способны решить проблемы с надежностью при неожиданных сбоях без тех потерь производительности, к которым может привести использование опций sync при монтировании.
Посмотреть список обслуживаемых ядром файловых систем можно в файле
/proc/filesystems
Linux поддерживает большое количество типов файловых систем. В операционную систему Linux для обеспечения обмена файлами с другими операционными системами включена поддержка некоторых файловых систем. Однако их функциональные возможности могут быть значительно ограничены по сравнению с возможностями, обычно предоставляемыми файловыми системами UNIX®.
2.8Утилиты Обращаться к системным вызовам могут, конечно, не только демоны, но и вообще любые программы. В UNIX® входит немало программ, при помощи которых можно решать разнообразные инструментальные (т. е. связанные с работой самой системы) задачи. Это так называемые системные утилиты. Они используются в первую очередь самой системой (причем вызываются, как правило, из командных сценариев) и системным администратором для управления системой. Однако и пользователь, не обладающий правами администратора, вполне может задействовать системные утилиты, если они помогают ему в работе, а системе не мешают (например, создавать файловую систему на дискете, просматривать состояние системы или демонов и т. п.).
Слово "утилиты" (utilities) буквально означает "полезности". Утилиты - это программы, которые могут понадобиться при решении всевозможных задач.
Множество пользовательских утилит занимается преобразованием текста, так как текстовый файл - универсальное пространство. Немало утилит помогает при разработке решений: компиляторы, отладчики, редакторы диаграмм, трассировщики и т. д.
2.9Типы программ В Linux исполняемые файлы можно условно поделить на две группы – те, которые содержат в себе весь код, необходимые для работы, и те, которым необходимы разделяемые библиотеки. Первые называют статически собранными бинарными файлами, вторые называют динамически собранными исполняемыми файлами.
Статически собранные программы характеризуются тем, что могут корректно функционировать в любых условиях, и не зависят от наличия или отсутствия разделяемых библиотек, что может оказаться полезным в ситуациях, когда возникают конфликты версий разделяемых библиотек, или когда системные библиотеки повреждены или недоступны (например во время восстановления операционной системы после серьезного сбоя). К недостаткам таких исполняемых файлов следует отнести то, что они имеют значительный размер и для обновления программы необходимо полностью заменить ее исполняемый файл – например, если несколько статически собранных программ, которые работают с архивами ZIP, содержат ошибку, то для исправления ошибки необходимо заменить все эти программы, что может быть затруднено (например, будет трудно точно установить, какие именно программы содержат ошибочный код и нуждаются в обновлении). Кроме того, статически собранные программы не умеют совместно использовать совпадающие участки кода, что ведет к излишнему расходу системных ресурсов.
Динамически собранные исполняемые файлы для корректной работы требуют наличия файлов разделяемых библиотек, и соответственно при их отсутствии/повреждении не могут корректно функционировать, но зато для обновления программы и исправления ошибки часто оказывается достаточным просто заменить соответствующую разделяемую библиотеку, после чего ошибка исчезает во всех программах, которые эту библиотеку используют динамически. Динамически связанные программы также значительно меньше по объему, чем статически связанные, и код разделяемых библиотек может использоваться одновременно многими программами – что позволяет экономить системные ресурсы.
|