#45. ОС и ФС

Операционная система. Файловая система

enter image description here

План

  1. Операционная система.
  2. Файловая система.
  3. Пути, права доступа, простейшие утилиты.
  4. UNIXWAY: Все является файлом.
  5. Потоки, перенаправление и объединение потоков, сокеты.
  6. Терминал против графического интерфейса, автоматизация.

Операционная система

enter image description here

Операцио́нная систе́ма, сокр. ОС (англ. operating system, OS) - комплекс программного обеспечения, который управляет всем аппаратным и другим программным обеспечением и предоставляет интерфейс для взаимодействия пользователя с компьютером.
ОС предназначена для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений.

В логической структуре типичной вычислительной системы операционная система занимает положение между устройствами с их микроархитектурой, машинным языком и, возможно, собственными (встроенными) микропрограммами (драйверами) — с одной стороны — и прикладными программами с другой.

Разработчикам программного обеспечения операционная система позволяет абстрагироваться от деталей реализации и функционирования устройств, предоставляя минимально необходимый набор функций (см.: интерфейс программирования приложений).

В большинстве вычислительных систем операционная система является основной, наиболее важной (а иногда и единственной) частью системного программного обеспечения.

С 1990-х годов наиболее распространёнными операционными системами являются системы семейства Windows и системы класса UNIX (особенно Linux и Mac OS). С 2000-х большое распространение получили мобильные компьютеры (смартфоны и планшеты) и с ними ОС Android и iOS.

Функции

Основные функции:

  1. Исполнение запросов программ (ввод и вывод данных, запуск и остановка других программ, выделение и освобождение дополнительной памяти и др.).
  2. Загрузка программ в оперативную память и их выполнение.
  3. Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).
  4. Управление оперативной памятью (распределение между процессами, организация виртуальной памяти).
  5. Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, оптические диски и др.), организованным в той или иной файловой системе.
  6. Обеспечение пользовательского интерфейса.
  7. Сохранение информации об ошибках системы.

Дополнительные функции:

  1. Параллельное или псевдопараллельное выполнение задач (многозадачность).
  2. Эффективное распределение ресурсов вычислительной системы между процессами.
  3. Разграничение доступа различных процессов к ресурсам.
  4. Организация надёжных вычислений (невозможности одного вычислительного процесса намеренно или по ошибке повлиять на вычисления в другом процессе), основана на разграничении доступа к ресурсам.
  5. Взаимодействие между процессами: обмен данными, взаимная синхронизация.
  6. Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений.
  7. Многопользовательский режим работы и разграничение прав доступа (см.: аутентификация, авторизация).

enter image description here

В чем разница между прошивкой и ОС

Многие устройства просто запускают «прошивку» — тип низкоуровневого программного обеспечения, которое обычно запрограммировано непосредственно в памяти аппаратного устройства. Прошивка — это всего лишь небольшая часть программного обеспечения, предназначенного для работы только с абсолютными основами.

Когда компьютер загружается, он загружает прошивку UEFI с материнской платы. Эта прошивка — это низкоуровневое программное обеспечение, которое быстро инициализирует аппаратное обеспечение Вашего компьютера. Затем он загружает Вашу операционную систему с твердотельного накопителя Вашего компьютера или жесткого диска. (Этот твердотельный накопитель или жесткий диск имеет собственную встроенную прошивку, которая управляет хранением данных на физических секторах внутри накопителя.)

Граница между прошивкой и операционной системой также может быть немного размытой. Например, операционную систему для iPhone и iPads от Apple, называемую iOS, часто называют «прошивкой». Операционная система PlayStation 4 официально называется прошивкой.

Это операционные системы, которые взаимодействуют с несколькими аппаратными устройствами, предоставляют услуги программам и распределяют ресурсы между приложениями. Тем не менее, очень простая прошивка, которая работает на пульте дистанционного управления телевизором, например, обычно не называется операционной системой.

Классификация операционных систем

enter image description here
По количеству пользователей однопользовательская операционная система может обслуивать только одного пользователя. Многопользовательская ОС позволяет создавать одноранговую или иерархическую вычисительную сеть с обслуживанием множества пользователей. Далее подробнее рассмотрим классификацию «Тип доступа пользователя к системе».

Пакетная обработка – режим выполнения совокупности задач, при котором все задачи выполняются автоматически, без синхронизации с событиями вне данной системы обработки информации, в частности без связи с лицами, представившими задание для выполнения. ОС с пакетной обработкой предусматривают, что из программ, подлежащих исполнению формируется пакет, который загружается в управляющий комплекс и далее обрабатывается ОС и МПр. В этом случае пользователи непосредственно с ОС в процессе выполнения пакета не взаимодействуют.

Разделение времени – процесс обработки информации, при котором ресурсы системы обработки информации (микропроцессорная система) предоставляются каждому процессу из группы процессов обработки информации на интервалы времени длительность и очередность предоставления которых определяются управляющей программой системы обработки информации с целью обеспечения одновременной работы процессов данной группы в интерактивном режиме.

Интерактивный режим – режим взаимодействия в процессе обработки информации с человеком, выражающийся в разного рода воздействиях на этот процесс, предусмотренных механизмом управления конкретной системы и вызывающих ответную реакцию процесса.

ОС с разделением времени обеспечивают одновременный интерактивный доступ нескольких пользователей через ОС к ресурсам управляющего комплекса. Ресурсы выделяются каждому пользователю «по очереди» на определенное время, согласно установленной дисциплине обслуживания, по приоритету.

Для многопользовательских и многозадачных ОС различают две основные дисциплины обслуживания процессов с точки зрения выделения процессорного времени на ту или иную задачу. Это вытесняющий и согласующий режим многозадачной работы.

При вытесняющем режиме распределением процессорного времени занимается только ОС, в результате чего для выполнения каждой задачи МПр занимается на строго определенный интервал времени с учетом приоритета задачи. Достоинством вытесняющего режима является отсутствие монопольного доступа к МПр для любой программы или задачи. Здесь же возможен запуск программ по предварительно составленному расписанию. Недостатком вытесняющего режима является негибкое и малоэффективное использование ресурсов процессора, например в том случае, если задача требует больше времени на исполнение, чем отведено расписанием.

При согласующем режиме каждая задача, получив управление ресурсами и доступ к МПр, сама определяет, когда МПр следует «отдать» другой задаче. Достоинством согласующего режима является возможность эффективного использования ресурсов процессора в случае перегрузок и критических повреждений, когда процессора должен обслуживать только программы самовосстановления, тестирования, эксплуатации или испытательно-наладочных программ.

Недостатком согласующего режима является возможность монопольного доступа к процессору со стороны одной программы, что влечет за собой остановку выполнения других программ и повышает вероятность перезагрузки/перезапуска в случае, если произошел сбой «многопольной» программы.

Под сетевой операционной системой понимается операционная система, обеспечивающая обработку, хранение и передачу данных в информационно-вычислительной сети. Сетевая ОС определяет взаимосвязанную группу протоколов верхних уровней модели взаимосвязи открытых систем, обеспечивающих основные функции информационно- вычислительной сети: адресацию объектов, функционирование служб, обеспечение безопасности данных, управление сетью.

Классификация операционных систем по назначению

enter image description here

Операционные системы являются неотъемлимой частью информационно-вычислительных комплексов, которые выполняют определённые функции и могут быть по этому признаку разделены на некоторые классы.

Системы реального времени

Основной особенностью таких систем является сторого регламентированное время отклика на внешние события. Другим важным параметром является одновременная обработка – даже если одновременно происходит несколько событий, реакция системы на них не должна запаздывать. Компьютеры для управления самолетами, ядерными реакторами и подобными сложными системами работают под управлением часто специализированных операционных систем реального времени.

Операционные системы реального времени принято делить на два класса: жесткого и мягкого реального времени. Можно выделить признаки систем жёсткого реального времени:

  • недопустимость никаких задержек ни при каких условиях;
  • бесполезность результатов при опоздании;
  • катастрофа при задержке реакции;
  • цена опоздания бесконечно велика.

Хороший пример системы жесткого реального времени – бортовая система управления самолетом. Среди систем с жеским реальным временем можно выделить распространённую коммерческую операционную систему QNX, которая основывается на UNIX и имеет схожий интерфейс.

Система мягкого реального времени характеризуется следующими признаками:

  • за опоздание результатов приходится платить;
  • снижение производительности системы, вызванное запаздыванием реакций, приемлемое.

Операционные системы мягкого времени могут использоваться в мобильных и коммуникационных системах – там, где цена опаздания не так велика. В настоящее время многие многозадачные операционные системы разделения времени модифицируются для того, чтобы соответствовать требованием мягкого реального времени. Среди примеров можно выделить варианты Windows NT и специфические версии ядра Linux.

Встраиваемые системы

Такие системы работают на специфическом аппаратном обеспечении (автомобили, микроволновые печи, роботы) и также обладают некоторыми требованиями к времени отклика системы. Как правило, в таких операционных системах применяются специфичные алгоритмы, минимизирующие потребляемые ресурсы. В настоящее время широкое распространение имеют операционные системы Windows Embedded фирмы Microsoft и различные версии операционной системы Linux.

Операционные системы для супер-компьютеров

Для решения очень сложных и объёмных вычислительных задач создается специализированные компьютеры, содержащие сотни и тысячи процессоров. Для управления такими системами применяются специальные операционные системы, в которых особенно важны вопросы производительности и скорости обмена между элементами системы. В настоящее время самыми распространёнными среди сверх-производительных систем являются модификации операционной системы Linux.

Операционные системы для серверов

С момента расцвета сети Интернет нишу серверов (специализированных систем, предоставляющих по сети какой-то сервис клиентским системам) занимают универсальные многопользовательские многозадачные операционные системы. Для таких систем имеют большое значение имеют стабильность работы, безопасность и производительность, меньшее – интерфейс пользователя.

Примерами таких систем могут служить: банковские системы, веб-серверы и серверы баз данных, файловые серверы масштаба предприятия, многопользовательские терминальные серверы и т.п. Традиционно этот класс систем обслуживается коммерческими операционными системами – различными версиями UNIX, операционными системами от компаний IBM, Nowell, а затем и Microsoft. Сейчас все большую популярность в этом классе систем завоёвывают открытые и свободные операционные системы, базирующиеся на UNIX.

Операционные системы для домашних и офисных компьютеров

Современные персональные компьютеры обладают высокой производительностью и богатыми мультимедийными возможностями. Для операционных систем этого класса важны удобный пользовательский интерфейс и поддержка широкого набора устройств для персональных компьютеров. Самыми распространёнными операционными системами в этом классе являются продукты компании Micrososft, также на персональных компьютерах Apple используется операционная система MacOS (с версии 10 она также основывается на UNIX).

Исследовательские операционные системы

Многие алгоритмы и подходы в построении операционных систем не пошли дальше исследовательских лабораторий. Например, операционные системы, основанные на микроядре, в чистом виде не используются до сих пор из-за огромных затрат на пересылку сообщений. Одной из самых известных микроядерных операционных систем является Mach, на которой основывается целый ряд операционных систем, в том числе GNU Hurd, реализующая интерфейс UNIX.

Из чего состоит ОС

  • Ядро;
  • Командный модуль;
  • Комплекс драйверов;
  • Сервисные утилиты;
  • Оболочка.

Ядром операционной системы называют её основную часть, которая как раз и обеспечивает запуск всех действий, организует работу других программ и работу компонентов компьютерной системы. Процессы, происходящие в ядре ОС можно назвать организующей программно-аппаратной деятельностью.

Командный модуль — это программа, функцией которой является выполнение команд от пользователя компьютеру.

Драйвера это целый внутренний комплекс специальных программ для обеспечения корректной работы именно аппаратных устройств с операционной системой, проще говоря – это инструкция для управления операционной системой компьютерных комплектующих, периферии.

Утилиты - дополнительные программные средства, которые взаимодействуют с ПО для выполнения различных задач.

Для пользователя оболочка операционной системы, является очень важным элементом - графический интерфейс - это то, что пользователь видит на дисплее любого компьютерного устройства. Именно благодаря графической оболочки ОС появились персональные компьютеры.

Ядро

Ядро — центральная часть операционной системы, управляющая выполнением процессов, ресурсами вычислительной системы и предоставляющая процессам координированный доступ к этим ресурсам. Основными ресурсами являются процессорное время, память и устройства ввода-вывода. Доступ к файловой системе и сетевое взаимодействие также могут быть реализованы на уровне ядра.

Как основополагающий элемент операционной системы, ядро представляет собой наиболее низкий уровень абстракции для доступа приложений к ресурсам вычислительной системы, необходимым для их работы. Как правило, ядро предоставляет такой доступ исполняемым процессам соответствующих приложений за счёт использования механизмов межпроцессного взаимодействия и обращения приложений к системным вызовам ОС.

Описанная задача может различаться в зависимости от типа архитектуры ядра и способа её реализации.

Объекты ядра ОС:

  • процессы
  • файлы
  • события
  • потоки
  • семафоры
  • мьютексы
  • каналы
  • файлы, проецируемые в память.

Для надежного управления ходом выполнения программ операционная система должна иметь по отношению к пользовательским процессам оперделённые привелегии – иначе некорректно работающее приложение сможет вмешаться в работу операционной системы. Например, взаимодействие с аппаратурой возможно только на самом высоком уровне привелегий, который не дается обычным программам. Чаще всего именно ядро является той частью операционной системы, которая работает в привелегированном режиме.

Большинство современных операционных систем представляет собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Существует ряд универсальных подходов к стуктурированию операционных систем, среди которых можно выделить монолитную и микроядерную архитектуры.

Режим работы процессора

Чтобы защитить жизненно важные системные данные от доступа и (или) внесения изменений со стороны пользовательских приложений, в ОС используются два процессорных режима доступа
(По уровню привилегий:):

  • пользовательский режим (user mode)
  • режим ядра, или привилегированный режим (kernel mode)

Код пользовательского приложения запускается в пользовательском режиме, а код операционной системы (например, системные службы и драйверы устройств) запускается в режиме ядра.
Режим ядра — такой режим работы процессора, в котором предоставляется доступ ко всей системной памяти и ко всем инструкциям центрального процессора. Предоставляя программному обеспечению операционной системы более высокий уровень привилегий, нежели прикладному программному обеспечению, процессор гарантирует, что приложения с неправильным поведением не смогут в целом нарушить стабильность работы системы.

enter image description here

Монолитная операционная система

enter image description here

Большинство операционных систем использует монолитное ядро, которое компонуется как одна программа, работающая в привилегированном режиме и использующая быстрые переходы с одной процедуры на другую, не требующие переключения из привилегированного режима в пользовательский и наоборот (хоть этот процесс и происходит с аппаратной поддержкой, он занимает значительное время). Такое ядро делится на основные компоненты и модули, реализующие дополнительную функциональность – например, работу со специфическими внешними устройствами и файловыми системами. Переход из пользовательского режима в режим ядра осуществляется через системные вызовы – интерфейс ядра операционноый системы.
Примеры: Традиционные ядра UNIX (такие как BSD), Linux; ядро MS-DOS, ядро KolibriOS.

Микроядерная операционная система

enter image description here

Альтернативой является построение операционной системы на базе микроядра, работающего также в привилегированном режиме и выполняющего только минимум функций по управлению аппаратурой. Тогда как функции операционной системы более высокого уровня выполняют специализированные компоненты – серверы, работающие в пользовательском режиме. Управление и обмен данными при этом осуществляется через передачу сообщений, доставка которых является одной из основных функций микроядра.

При таком построении операционная система работает значительно более медленно, так как часто выполняются переходы между привилегированным и пользовательским режимом, зато система получается более гибкой – её функции можно наращивать или модифицировать, добавляя, изменяя или исключая серверы пользовательского режима. Кроме того, серверы хорошо защищены друг от друга, как и любые пользовательские процессы.
Примеры: Symbian OS; Windows CE;Mac OS X.

Гибридное ядро

Гибридные ядра — это модифицированные микроядра, позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра.
Пример: ядра ОС Windows семейства NT.

Файловая система

enter image description here

Фа́йловая систе́ма (англ. file system) — способ организации, хранения и именования данных на носителях информации. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имен файлов (и каталогов), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.

Файловая система связывает носитель информации с одной стороны и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же как и о том, на каком физическом типе носителя (CD, жёстком диске, магнитной ленте, блоке флеш-памяти или другом) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).

С точки зрения операционной системы, весь диск представляет собой набор кластеров (как правило, размером 512 байт и больше). Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.

Однако файловая система не обязательно напрямую связана с физическим носителем информации. Существуют виртуальные файловые системы, а также сетевые файловые системы, которые являются лишь способом доступа к файлам, находящимся на удалённом компьютере.

Каталог

Каталог (директория, справочник, папка) — объект в файловой системе, упрощающий организацию файлов. Ранее часто использовалось слово директо́рия, которое представляет собой транслитерацию с английского (англ. directory). Типичная файловая система содержит большое количество файлов, и каталоги помогают упорядочить её путём их группировки. Каталог может быть реализован как специальный файл, где регистрируется информация о других файлах и каталогах на носителе информации.

Термин «Папка»

Термин папка (англ. folder) был введён для представления объектов файловой системы в графическом пользовательском интерфейсе путём аналогии с офисными папками. Он был впервые использован в Mac System Software, предшественнице Mac OS, а в системах семейства Windows — с выходом Windows 95.[3] Эта метафора стала использоваться в большом числе операционных систем: Windows NT, Mac OS, Mac OS X, а также в средах рабочего стола для систем семейства UNIX (например, KDE и GNOME).

До выхода Windows 95 это понятие называлось словами каталог или директория.

В этой терминологии папка, находящаяся в другой папке, называется подпапка, вложенная папка или дочерняя папка. Все вместе папки на компьютере представляют иерархическую структуру (дерево каталогов). Подобная древообразная структура возможна в операционных системах, не допускающих существование «физических ссылок» (таких как Windows 3.x и 9x, которые допускали только ярлыки).

Корневой каталог

Каталог, прямо или косвенно включающий в себя все прочие каталоги и файлы файловой системы, называется корневым. В Unix-подобных ОС он обозначается символом / (дробь, слеш, капиталистическая палочка), в DOS и Windows исторически используется символ \ (обратный слеш, бэкслеш, коммунистическая палочка), но с некоторого времени поддерживается и /…

Текущий каталог

Текущим называется каталог, с которым работает ОС, если ей не указать другого каталога. Он обозначается точкой (.).

Для смены текущего каталога на другой используется команда [cd]; без указания целевого каталога она меняет каталог на домашний (в Unix-подобных ОС) или возвращает текущий (в Windows).

Родительский каталог

Родительским каталогом называется каталог, в котором находится текущий. Он обозначается двумя точками (…).

Пример (переход в родительский каталог):

cd …

Основные функции файловых систем

  • размещение и упорядочивание на носителе данных в виде файлов;
  • определение максимально поддерживаемого объема данных на носителе информации;
  • именование, создание, чтение и удаление файлов;
  • назначение и изменение атрибутов файлов (размер, время создания и изменения, владелец и создатель файла, доступен только для чтения, скрытый файл, временный файл, архивный, исполняемый, максимальная длина имени файла и т. п.);
  • определение структуры файла;
  • поиск файлов;
  • организация каталогов для логической организации файлов;
  • защита файлов при системном сбое;
  • защита файлов от несанкционированного доступа и изменения их содержимого.
  • программный интерфейс работы с файлами для приложений;
  • отображения логической модели файловой системы на физическую организацию хранилища данных;
  • организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств;
  • содержание параметров файла, необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.).

Организация и классификация файловых систем

enter image description here

Файловая система определяет порядок хранения данных на диске и принципы доступа к ним, однако, во многом тип файловой системы зависит и от типа носителя. Например, очевидно, что для магнитной ленты, которая поддерживает запись только последовательных блоков данных, подойдёт лишь одноуровневая файловая система с последовательным доступом к кластерам с информацией, а для современного SSD-диска – любая многоуровневая с произвольным доступом.
enter image description here

По принципу последовательности хранения блоков данных файловые системы, как мы уже увидели, можно разделить на те, которые хранят кластеры с фрагментами файла последовательно или произвольно. Что касается уровней, то по ним ФС можно разделить на одноуровневые и древовидные (многоуровневые). В первом случае все файлы отображаются в виде единого плоского списка, а во втором – в виде иерархического. Уровень вложений при этом, как правило, неограничен, а ветвление идёт либо только от одного (“root” в UNIX), либо от нескольких корневых каталогов (логические диски в Windows):
enter image description here

К особенностям файловых систем можно также отнести наличие различных механизмов, защищающих структуру данных от сбоев. Одним из наиболее современных механизмов обеспечения отказоустойчивости ФС является журналирование. Оно позволяет записывать в специальные служебные файлы (их называют “журналами” или “логами”) все действия, производимые с файлами.

Журналирование может быть полным, когда для каждой операции создаётся бэкап не только состояния кластеров, но и всех записанных данных. Такое журналирование часто применяют для различных баз данных, но оно существенно замедляет работу системы и увеличивает размер логов (фактически логи хранят полный бэкап всей файловой системы со всеми её данными).

Гораздо же более часто журналируются только логические операции и (опционально) состояние кластеров файловой системы. То есть, в журнал записывается только то, что, скажем, файл с именем “file.txt” размером 52 КБ был записан в такие-то кластеры. Содержимое же самого файла в логе никак не значится. Такой подход позволяет избежать дублирования данных, ускоряет процессы работы с файлами и уменьшает в разы размеры самого журнала. Единственный недостаток при таком способе журналирования – при сбое могут быть потеряны записываемые данные (поскольку их копии нет), но само состояние файловой системы останется работоспособным.

Особенности файловых систем

Теперь рассмотрим некоторые особенности самых распространённых файловых систем.

Файловые системы Windows

Исходный код файловой системы, получившей название FAT, был разработан по личной договоренности владельца Microsoft Билла Гейтса с первым наемным сотрудником компании Марком Макдональдом в 1977 году. Основной задачей FAT была работа с данными в операционной системе Microsoft 8080/Z80 на базе платформы MDOS/MIDAS. Файловая система FAT претерпела несколько модификаций – FAT12, FAT16 и, наконец, FAT32, которая используется сейчас в большинстве внешних накопителей. Основным отличием каждой версии является преодоление ограниченного объема доступной для хранения информации. В дальнейшем были разработаны еще две более совершенные системы обработки и хранения данных – NTFS и ReFS.

Файловая система Windows

**FAT (сокр. англ. “File Allocation Table” – “таблица размещения файлов”)

Числа в FAT12, FAT16 и FAT32 обозначают количество бит, используемых для перечисления блока файловой системы. FAT32 является фактическим стандартом и устанавливается на большинстве видов сменных носителей по умолчанию. Одной из особенностей этой версии ФС является возможность применения не только на современных моделях компьютеров, но и в устаревших устройствах и консолях, снабженных разъемом USB.

Пространство FAT32 логически разделено на три сопредельные области:

  • зарезервированный сектор для служебных структур;
  • табличная форма указателей;
  • непосредственная зона записи содержимого файлов.

К недостатком стандарта FAT32 относится ограничение размера файлов на диске до 4 Гб и всего раздела в пределах 8 Тб. По этой причине данная файловая система чаще всего используется в USB-накопителях и других внешних носителях информации. Для установки последней версии ОС Microsoft Windows 10 на внутреннем носителе потребуется более продвинутая файловая система.

С целью устранения ограничений, присущих FAT32, корпорация Microsoft разработала обновленную версию файловой системы exFAT (расширенная таблица размещения файлов). Новая ФС очень схожа со своим предшественником, но позволяет пользователям хранить файлы намного большего размера, чем четыре гигабайта. В exFAT значительно снижено число перезаписей секторов, ответственных за непосредственное хранение информации. Функция очень важна для твердотельных накопителей ввиду необратимого изнашивания ячеек после определенного количества операций записи. Продукт exFAT совместим с операционными системами Mac, Android и Windows. Для Linux понадобится вспомогательное программное обеспечение.

**NTFS(сокр. англ. “New Technology File System” — “файловая система новой технологии”)

Стандарт NTFS разработан с целью устранения недостатков, присущих более ранним версиям ФС. Впервые он был реализован в Windows NT в 1995 году, и в настоящее время является основной файловой системой для Windows. Система NTFS расширила допустимый предел размера файлов до шестнадцати гигабайт, поддерживает разделы диска до 16 Эб (эксабайт, 1018 байт). Использование системы шифрования Encryption File System (метод «прозрачного шифрования») осуществляет разграничение доступа к данным для различных пользователей, предотвращает несанкционированный доступ к содержимому файла. Файловая система позволяет использовать расширенные имена файлов, включая поддержку многоязычности в стандарте юникода UTF, в том числе в формате кириллицы. Встроенное приложение проверки жесткого диска или внешнего накопителя на ошибки файловой системы повышает надежность работы харда, но отрицательно влияет на производительность.

exFAT (сокр. англ. “Extended FAT” – “расширенная FAT”)

exFAT С увеличением во второй половине 2000-х годов объёмов флеш-накопителей стало ясно, что повсеместно используемая файловая система FAT32 скоро исчерпает свой потенциал. Использовать журналируемую NTFS для флешек с их ограниченным количеством циклов перезаписи и более медленной работой оказалось не совсем целесообразно. Поэтому в 2006 году всё та же корпорация Microsoft выпустила в свет новую файловую систему exFAT в комплекте с операционной системой Windows Embedded CE 6.0

Она стала логическим продолжением развития FAT32, поэтому иногда её называют также FAT64. Главным козырем новой файловой системы стало снятие ограничения на размеры файлов и увеличение теоретического предела для дискового раздела до 16 ЭиБ (как в NTFS). При этом, в силу отсутствия журналирования, exFAT сохранила высокую скорость доступа к данным и компактность.

Ещё одним преимуществом exFAT стала возможность увеличения размера кластера до 32 МБ, что существенно позволило оптимизировать хранение больших файлов (например, видео). Кроме того, хранение данных в exFAT организовано таким образом, чтобы максимально минимизировать процессы фрагментации и перезаписи одних и тех же кластеров. Всё это сделано, опять же, в угоду оптимизации работы флеш-накопителей, для которых и была изначально разработана файловая система.

В силу того, что exFAT – относительно новая ФС, имеются некоторые ограничения по её использованию. В Windows полная её поддержка появилась лишь в Vista SP1 (хотя есть обновление для Windows XP SP2 – KB955704). MacOS поддерживает exFAT с версии 10.6.5, а для Linux требуется устанавливать отдельный драйвер (в некоторых дистрибутивах он встроен, а в некоторых поддерживается только чтение).

ReFS (Resilient File System)

Последняя разработка Microsoft, доступная для серверов Windows 8 и 10. Архитектура файловой системы в основном организована в виде B + -tree. Файловая система ReFS обладает высокой отказоустойчивостью благодаря реализации новых функций:

  • Copy-on-Write (CoW) – никакие метаданные не изменяются без копирования;
  • данные записываются на новое дисковое пространство, а не поверх существующих файлов;
  • при модификации метаданных новая копия хранится в свободном дисковом пространстве, затем система создает ссылку из старых метаданных на новую версию.

Все это позволяет повысить надежность хранения файлов, обеспечивает быстрое и легкое восстановление данных.

Файловые системы macOS

HFS (сокр. англ. “Hierarchical File System” – “иерархическая файловая система”)

Первые версии данной системы появились ещё в 1985 году вместе с операционной системой Macintosh System 1.0:
enter image description here
По современным меркам данная файловая система была весьма малоэффективной, поэтому в 1998 года вместе с MacOS 8.1 появилась её улучшенная версия под названием HFS+ или Mac OS Extended, которая поддерживается до сегодняшнего дня.

Как и предшественница, HFS+ делит диск на блоки по 512 КБ (по умолчанию), которые объединяет в кластеры, ответственные за хранение тех или иных файлов. Однако, новая ФС имеет 32-битную адресацию (вместо 16-битной). Это позволяет избежать ограничений на размер записываемого файла и обеспечивает поддержку максимального размера тома до 8 ЭиБ (а в последних ревизиях до 16 ЭиБ).

Из других преимуществ HFS+ нужно отметить журналирование (под него выделяется целый скрытый том под названием HFSJ), а также многопоточность. Причём, если в NTFS альтернативные потоки не имеют особо чёткой регламентации на типы хранимой информации, то в HFS+ конкретно выделяется два потока: поток данных (хранит основные данные файлов) и поток с ресурсами (хранит метаданные файлов).

HFS+ практически идеальна для традиционных HDD, однако, как и рассмотренная выше ReiserFS, имеет не самые эффективные алгоритмы борьбы с фрагментацией данных. Поэтому с распространением SSD-накопителей и внедрением их в технику Apple всё чаще на смену ей приходит файловая система, разработанная в 2016 году APFS (сокр. англ. “Apple File System” – “Файловая система Apple”), появившаяся в настольной macOS High Sierra (10.13) и мобильной iOS 10.3.

Во многом APFS сходна с exFAT в плане оптимизации процессов чтения/записи, однако, в отличие от неё, имеет журналирование, поддерживает распределение прав доступа к данным, имеет улучшенные алгоритмы шифрования и сжатия данных, а также может работать с томами размером аж до 9 ЙиБ (не смейтесь – “йобибайт”, подробнее) за счёт 64-битной адресации! Единственным минусом APFS является то, что она поддерживается лишь современной техникой Apple и пока недоступна на других платформах.

APFS - файловая система по умолчанию в macOS, iOS, watchOS и tvOS.

enter image description here

Файловые системы Linux

В отличие от ОС Windows и macOS, ограничивающих выбор файловой системы предустановленными вариантами, Linux предоставляет возможность использования нескольких ФС, каждая из которых оптимизирована для решения определенных задач. Файловые системы в Linux используются не только для работы с файлами на диске, но и для хранения данных в оперативной памяти или доступа к конфигурации ядра во время работы системы. Все они включены в ядро и могут использоваться в качестве корневой файловой системы.

Файловая система Линукс

Основные файловые системы, используемые в дистрибутивах Linux:

  • Ext2;
  • Ext3;
  • Ext4;
  • JFS;
  • ReiserFS;
  • XFS;
  • Btrfs;
  • ZFS.

Ext2, Ext3, Ext4 или Extended Filesystem– стандартная файловая система, первоначально разработанная еще для Minix. Содержит максимальное количество функций и является наиболее стабильной в связи с редкими изменениями кодовой базы. Начиная с ext3 в системе используется функция журналирования. Сегодня версия ext4 присутствует во всех дистрибутивах Linux.

На мобильных гаджетах с ОС Android чаще всего установлена ФС версии ext4 во внутренней памяти и FAT32 на карточках microSD.

JFS или Journaled File System разработана в IBM в качестве альтернативы для файловых систем ext. Сейчас она используется там, где необходима высокая стабильность и минимальное потребление ресурсов (в первую очередь в многопроцессорных компьютерах). В журнале хранятся только метаданные, что позволяет восстанавливать старые версии файлов после сбоев.

ReiserFS такжеразработана в качестве альтернативы ext3, поддерживает только Linux. Динамический размер блока позволяет упаковывать несколько небольших файлов в один блок, что предотвращает фрагментацию и улучшает работу с небольшими файлами. Недостатком является риск потери данных при отключении энергии.

XFS рассчитана на файлы большого размера, поддерживает диски до 2 терабайт. Преимуществом системы является высокая скорость работы с большими файлами, отложенное выделение места, увеличение разделов на лету, незначительный размер служебной информации. К недостаткам относится невозможность уменьшения размера, сложность восстановления данных и риск потери файлов при аварийном отключении питания.

Btrfs или B-Tree File System легко администрируется, обладает высокой отказоустойчивостью и производительностью. Используется как файловая система по умолчанию в OpenSUSE и SUSE Linux.

Другие ФС, такие как NTFS, FAT, HFS, могут использоваться в Linux, но корневая файловая система на них не устанавливается, поскольку они для этого не предназначены.

Дополнительные файловые системы

В операционных системах семейства Unix BSD (созданы на базе Linux) и Sun Solaris чаще всего используются различные версии ФС UFS (Unix File System), известной также под названием FFS (Fast File System). В современных компьютерных технологиях данные файловые системы могут быть заменены на альтернативные: ZFS для Solaris, JFS и ее производные для Unix.

Кластерные файловые системы включают поддержку распределенных хранилищ, расширяемость и модульность. К ним относятся:

  • ZFS – «Zettabyte File System» разработана для распределенных хранилищ Sun Solaris OS;
  • Apple Xsan – эволюция компании Apple в CentraVision и более поздних разработках StorNext;
  • VMFS (Файловая система виртуальных машин) разработана компанией VMware для VMware ESX Server;
  • GFS – Red Hat Linux именуется как «глобальная файловая система» для Linux;
  • JFS1 – оригинальный (устаревший) дизайн файловой системы IBM JFS, используемой в старых системах хранения AIX.

Сравнение файловых систем

Хар-ки /
ФС
FAT32 NTFS exFAT ext2 ext4 ReiserFS HFS+ APFS
Год внедрения 1996 1993 2008 1993 2006 2001 1998 2016
Сфера применения Windows, съёмные накопители, Linux Windows, съёмные накопители, Linux съёмные накопители, Windows Vista+, Linux Linux, съёмные накопители Linux Linux MacOS MacOS
Максимальный размер файла 4 ГиБ 16 ЭиБ 16 ЭиБ 2 ТиБ 16 ТиБ 8 ТиБ 16 ЭиБ 9 ЙиБ
Максимальный размер тома 8 ТиБ 16 ЭиБ 64 ЗиБ (зебибайт) 32 ТиБ 1 ЭиБ 16 ТиБ 16 ЭиБ 9 ЙиБ
Журналирование - - -
Управление правами доступа - - -

Литература

I. ОС

  1. История вычислительной техники
  2. Список операционных систем
  3. Система реального времени и Операционная система реального времени
  4. Режим работы процессора и Кольца защиты
  5. Ядро операционной системы

II. ФС

  1. Файловые системы: сравнение, секреты и уникальные особенности
  2. Файловая система