Принято называть программы, предназначенные для работы под управлением данной системы. Даже для одной аппаратной платформы, например такой, как

Вид материалаЛекция

Содержание


Основные функции операционных систем.
Классификация операционных систем (ОС).
1. ДОС (Дисковые Операционные Системы).
3. Системы виртуальных машин.
4. Системы реального времени.
5. Системы промежуточных типов.
Cisco с K9Q
Файловые системы.
Файл - это совокупность данных, доступ к которой осуществляется по ее имени.
Наименьшей физической единицей хранения данных является сектор.
Краткий обзор файловых систем. Наиболее распространенные на сегодняшний день файловые системы - это
Ms-dos, os/2
HPFS (High Performace Filesystem)
NTFS (New Technology Filesystem).
Файловая система NTFS
Компрессия данных
Поддержка формата ISO Unicode
Физическая структура NTFS
MFT и его структура
Файлы и потоки
...
Полное содержание
Подобный материал:
Лекция №6

Операционные системы персональных компьютеров.

ПОНЯТИЕ ОПЕРАЦИОННОЙ СИСТЕМЫ.

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

Даже для одной аппаратной платформы, например такой, как IBM PC, существует несколько операционных систем. Различия между ними рассматривают в двух кате­гориях: внутренние и внешние. Внутренние различия характеризуются методами реализации основных функций. Внешние различия определяются наличием и доступностью приложений данной системы, необходимых для удовлетворения тех­нических требований, предъявляемых к конкретному рабочему месту.

Основные функции операционных систем. Современные ОС - по крайней мере, широко распространенные системы - во многом похожи друг на друга. Прежде всего, это определяется требованием переносимости программного обеспечения. Именно для обеспечения этой переносимости был принят POSIX (Portable OS Interface based on uniX) - стандарт, определяющий минимальные функции по управлению файлами, межпроцессному взаимодействию и т.д., которые должна уметь выполнять система.

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

Существуют ОС, функции которых этим и исчерпываются. Одна из хорошо известных систем такого типа - дисковая операционная система MS DOS.

Более развитые ОС предоставляют также следующие возможности:
  • Параллельное (точнее, псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач.
  • Распределение ресурсов компьютера между задачами.
  • Организация взаимодействия задач друг с другом.
  • Взаимодействие пользовательских программ с нестандартными внешними устройствами.
  • Организация межмашинного взаимодействия и разделения ресурсов.
  • Защита системных ресурсов, данных и программ пользователя, исполняющихся процессов и самой себя от ошибочных и зловредных действий пользователей и их программ

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

1. ДОС (Дисковые Операционные Системы). Это системы, берущие на себя выполнение только первых четырех функций. Как правило, это просто некий резидентный набор подпрограмм, не более того. Он загружает пользовательскую программу в память и передает ей управление, после чего программа делает с системой все, что ей заблагорассудится. Считается желательным, чтобы после завершения программы машина оставалась в таком состоянии, чтобы ДОС могла продолжить работу. Если же программа приводит машину в какое-то другое состояние...\ что ж, ДОС ничем ей в этом не может помешать. Характерный пример - различные загрузочные мониторы для машин класса Spectrum. Как правило, такие системы работают одновременно только с одной программой.

Существование систем такого класса обусловлено их простотой и тем, что они потребляют мало ресурсов. Для машин класса Spectrum это более чем критичные параметры. Еще одна причина, по которой такие системы могут использоваться даже на довольно мощных машинах - требование программной совместимости с ранними моделями того же семейства компьютеров.

2. ОС. К этому классу относятся системы, берущие на себя выполнение всех вышеперечисленных функций. Разделение на ОС и ДОС идет, по-видимому, от систем IBM DOS/360 и OS/360 для больших компьютеров этой фирмы, клоны которых известны у нас в стране под названием ЕС ЭВМ серии 10XX. (Кстати, у IBM была еще TOS/360, Tape Operating System - Ленточная Операционная Система).

Здесь под ОС мы будем подразумевать системы ``общего назначения'', то есть рассчитанные на интерактивную работу одного или нескольких пользователей в режиме разделения времени, при не очень жестких требованиях на время реакции системы на внешние события. Как правило, в таких системах уделяется большое внимание защите самой системы, программного обеспечения и пользовательских данных от ошибочных и злонамеренных программ и пользователей. Обычно такие системы используют встроенные в архитектуру процессора средства защиты и виртуализации памяти. К этому классу относятся такие широко распространенные системы семейства Unix и OS/2, хотя последняя не обеспечивает одновременной работы нескольких пользователей и защиты пользователей друг от друга.

3. Системы виртуальных машин. Такие системы стоят несколько особняком. Это система, допускающая одновременную работу нескольких программ, но создающая при этом для каждой программы иллюзию, что машина находится в полном ее распоряжении, как при работе под ДОС. Примером такой системы является IBM VM, известная у нас в стране под названием СВМ (Система Виртуальных Машин). Аналогичным образом работают DesqView и другие многозадачники (multitaskers) для MS DOS.

Часто такие системы являются подсистемой ОС общего назначения: MS DOS и MS Windows-эмуляторы под UNIX и OS/2, окно DOS в MS Windows.

4. Системы реального времени. Это системы, предназначенные для облегчения разработки так называемых приложений реального времени. Это программы, управляющие некомпьютерным по природе оборудованием, часто с очень жесткими ограничениями по времени. Примером такого приложения может быть программа бортового компьютера крылатой ракеты, системы управления ускорителем элементарных частиц или промышленным оборудованием. Такие системы обязаны поддерживать многопроцессность, гарантированное время реакции на внешнее событие, простой доступ к таймеру и внешним устройствам. Такие системы могут по другим признакам относиться как к классу ДОС (RT-11), так и к ОС (OS-9, QNX). Часто такие системы (например, VxWorks) рассчитаны на работу совместно с управляющей host-машиной, исполняющей ``нормальную'' операционную систему.

Любопытно, что новомодное течение в компьютерной технике - multimedia - при качественной реализации предъявляет к системе те же требования, что и промышленные задачи реального времени. В multimedia основной проблемой является синхронизация изображения на экране со звуком. Именно в таком порядке. Звук обычно генерируется внешним аппаратным устройством с собственным таймером, и изображение синхронизуется с ним же. Человек способен заметить довольно малые временные неоднородности в звуковом потоке. Напротив, пропуск кадров в визуальном потоке не так заметен, а расхождение звука и изображения заметно уже при задержках около 30 мс. Поэтому системы качественного multimedia должны обеспечивать синхронизацию с такой же или более высокой точностью, что мало отличается от систем мягкого реального времени.

5. Системы промежуточных типов. Существуют системы, которые с первого взгляда нельзя отнести к одному из вышеперечисленных классов. Примером промежуточной системы являются MS Windows 3.x и Windows 95 которые, как ОС, используют аппаратные средства процессора для защиты и виртуализации памяти и даже могут обеспечивать некоторое подобие многозадачной работы, но не защищают себя и программы от ошибок других программ.

В последнее время вошел в употребление еще один термин: сетевые ОС, или сокращенно NOS (Networking Operating System). На взгляд авторов, сложившееся использование этого термина несколько неудачно. Его можно употреблять в двух различных смыслах:
  1. Системы, предназначенные для предоставления сетевых услуг, аналогично тому, как ДОС предназначена для предоставления средств работы с диском. Под такое понимание NOS подходят узкоспециализированные системы, такие как Novell Netware, K9Q или программное обеспечение маршрутизаторов Cisco.
  2. Системы, способные предоставлять сетевые услуги. Под такое определение подходят практически все современные ОС общего назначения.

Судя по тому, что большинство ``обзоров сетевых операционных систем'' в компьютерных журналах сравнивают не маршрутизатор Cisco с K9Q, а Windows NT с SunSoft Solaris или OS/2, термин NOS в этих публикациях понимается во втором смысле. Как уже говорилось, практически все современные ОС и некоторые ДОС способны предоставлять сетевые сервисы, поэтому этот термин почти эквивалентен словам ``Современная ОС общего назначения'' и, таким образом, почти не несет полезной информации.

ФАЙЛОВЫЕ СИСТЕМЫ.

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

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

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

Понятие файла вводится в самом начале любого курса компьютерного ликбеза, но мало в каком курсе дается внятное определение этого понятия. Слово файл (file) дословно переводится с английского как папка или подшивка, но такой перевод почти не добавляет ясности. Одно из наилучших определений, известных авторам, звучит так:

Файл - это совокупность данных, доступ к которой осуществляется по ее имени.

Файл, таким образом, противопоставляется другим объектам, доступ к которым осуществляется по их адресу, например, записям внутри файла или блокам на диске.

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

Наименьшей физической единицей хранения данных является сектор. Размер сектора равен 512 байт. Поскольку размер FAT-таблицы ограничен, то для дисков, размер которых превышает 32 Мбайт, обеспечить адресацию к каждому отдельному сектору не представляется возможным. В связи с этим группы секторов условно объединяются в кластеры. Кластер является наименьшей единицей адресации к данным. Размер кластера, в отличие от размера сектора, не фиксирован и зависит от емкости диска.

Для современных жестких дисков потери, связанные с неэффективностью файловой системы, весьма значительны и могут составлять от 25% до 40% полной емкости диска, в зависимости от среднего размера хранящихся файлов.

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

Несмотря на то, что данные о местоположении файлов хранятся в табличной структуре, пользователю они представляются в виде иерархической структуры (так удобнее людям), а все необходимые преобразования берет на себя операционная система. Каталоги (папки) - важные элементы этой иерархической структуры, необходимые для обеспечения удобного доступа к файлам. Файлы объединяются в каталоги по любому общему признаку, определяемому их создателем (по типу, по назначению, по времени создания и т.п.). Каталоги низких уровней вкладываются в каталоги более высоких уровней и являются для них вложенными. Верхним уровнем вложенности является корневой каталог диска.

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

Краткий обзор файловых систем. Наиболее распространенные на сегодняшний день файловые системы - это:


FAT. Эта файловая система была разработана вместе с первой версией DOS и предположительно является работой Билла Гейтса. Ее название происходит от названия метода, применяемого для организации файлов – таблица размещения файлов (File Allocation Table). Эта таблица размещается в начале тома. В целях защиты на томе хранятся две копии FAT. По принципу построения похожа на оглавление книги, т.к. операционная система использует ее для поиска файла и определения кластера, который этот файл занимает на диске. Такие ФС используют очень мало памяти и являются самыми простыми из существующих.

Операционные системы MS-DOS, OS/2, Windows 95 и Windows NT реализуют 16-разрядные поля в таблицах размещения файлов. Такая файловая система называ­ется FAT 16. Она позволяет разместить в FAT-таблицах не более 65 536 записей (216) о местоположении единиц хранения данных и, соответственно, для дисков объемом от 1 до 2 Гбайт длина кластера составляет 32 Кбайт (64 сектора). Это не вполне рациональный расход рабочего пространства, поскольку любой файл (даже очень маленький) полностью оккупирует весь кластер, которому соответствует только одна адресная запись в таблице размещения файлов. Даже если файл достаточно велик и располагается в нескольких кластерах, все равно в его конце образуется некий остаток, нерационально расходующий целый кластер.

FAT32. Впервые введена в Windows 95 OSR2 и Windows 98. FAT32 избавился от некоторых проблем старой FAT. Как и следует из названия, FAT32 использует 32 битные номера кластеров, т.е. - позволяет иметь около 4 миллиардов кластеров на раздел. Это позволяет использовать достаточно небольшой размер кластеров даже для больших дисков.

HPFS (High Performace Filesystem) HPFS была создана IBM и Microsoft для системы OS/2. Предполагалось, что эта система будет быстрой, поддерживающей длинные имена файлов, небольшие размеры кластеров, не имеющей проблем с дефрагментацией и поддерживающей больше атрибутов. HPFS, являясь предшественницей NTFS, является по сути дела NTFS минус атрибуты безопасности. Вместо того, чтобы хранить цепочки кластеров в связанном списке, HPFS сохраняет всю информацию в сортированном B-дереве, что значительно ускоряет поиск файлов.

HPFS - представитель семейства "inode" - файловых систем, в противопоставление FAT-семейству. Другие примеры inode: NTFS, ext2fs и большинство файловых систем, используемых в UNIX'ах. Вместо того, чтобы хранить таблицы директорий и другие дескрипторы в начале диска, HPFS размещает их по всему диску через определенные интервалы, поэтому для того, чтобы прочитать таблицы, головки диска должны добраться до ближайшей таблицы, а не до начала диска.

NTFS (New Technology Filesystem). NTFS - родная файловая система ОС Windows NT. Она очень похожа на HPFS, но поддерживает атрибуты безопасности, такие как контроль доступа. Поскольку Windows NT полностью Unicode, NTFS - тоже Unicode, т.е. каждый символ представляется двумя байтами. Кроме атрибутов безопасности, NTFS добавляет к HPFS и другие возможности. Во первых - это повышенная надежность - при использовании HPFS стирание кластера в (не) нужном месте могло сделать весь диск недоступным. Во вторых - добавлена поддержка нескольких твердых ссылок на файл. В третьих - NTFS может использовать различные размеры сектора и поддерживает более одного кластера на сектор.

ext2fs (Second Extended Filesystem) ext2fs - родная файловая система ОС Linux. Она является еще одним примеров inode-фс. Раздел ext2fs составлен из блоков, каждый из которых обычно имеет размер 1кб. Первый блок (загрузочный) обнулен, все остальные разделена на т.н. группы блоков (обычно от 256 до 8192 блоков в каждой). Каждая группа блоков содержит:

Копию суперблока,
дескрипторы ФС,
карту блоков,
карту inode'ов,
блоки данных, на которых ссылаются inode'ы.

Первый inode - особенный, он содержит список всех поврежденных блоков, пятый inode содержит загрузчик, а одиннадцатый - корневую директорию.

ext3fs (Third Extended Filesystem). Журнальная файловая система, по сути - то ext2fs с добавленным логгированием операций ввода/вывода.

NFS. Разработана Sun Microsystems. Широко распространилась, благодаря простоте реализации. Оборотная сторона медали - это плохое быстродействие и практически полное отсутствие безопасности. Она хорошо подходит для read-only доступа, но если использовать ее например для совместного доступа к базе данных, то проявляется крайняя ненадежность NFS - например, если одновременно два клиента ведут запись в файл базы данных, то информация одного из них будет потеряна. Многие проблемы были разрешены в новых версиях.

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


NTFS выросла из файловой системы HPFS, разрабатываемой совместно IBM и Microsoft для проекта OS/2. Она начала использоваться вместе с Windows NT 3.1 в 1993 году. Windows NT 3.1 должна была составить конкуренцию серверам на базе NetWare и Unix, поэтому NTFS вобрала в себя все тогдашние технологические достижения. Вот основные из них:
  1. Работа с большими дисками. NTFS имеет размер кластера 512 байт, что в принципе оптимально, но его можно менять до 64К. Более важно то, что NTFS способна, теоретически, работать с томами размером в 16,777,216 терабайт. Теоретически, потому что таких жестких дисков пока просто не существует, и появятся они весьма не скоро.
  2. Устойчивость. NTFS содержит две копии аналога FAT, которые называются MFT (Master File Table). В отличие от FAT MSDOS, MFT больше напоминает таблицу базы данных. Если оригинал MFT повреждён в случае аппаратной ошибки (например, появления bad-сектора), то система при следующей загрузке использует копию MFT, и автоматически создаёт новый оригинал, уже с учётом повреждений. Но это не самое главное. Главное, что NTFS использует систему транзакций при записи файлов на диск. Такая система гарантирует абсолютную сохранность данных в случае копирования, перемещения и удаления файлов или директорий. При внесении изменений в файл, вы теряете те изменения, которые находились в момент сбоя в памяти или в кэше контроллера, и не успели записаться на диск.
  1. Защищенность. NTFS рассматривает файлы, как объекты. Каждый файловый объект обладает свойствами, такими как его имя, дата создания, дата последнего обновления, архивный статус, и дескриптор безопасности. Файловый объект также содержит набор методов, которые позволяют с ним работать, такие как open, close, read и write. Пользователи, включая сетевых, для обращения к файлу вызывают эти методы, а Security Reference Monitor определяет, имеет ли пользователь необходимые права для вызова какого-либо из этих методов. Кроме этого, файлы можно шифровать. Правда, с шифрованием стоит быть осторожнее. Если у вас рухнет система, или вы её переустановите то вы не сможете прочитать зашифрованные файлы, если не имеете ERD.
  2. Компрессия данных. NTFS позволяет компрессировать отдельные каталоги и файлы, в отличие от DriveSpace, который позволял сжимать только диски целиком. Это очень удобно, для экономии пространства на диске, например можно сжимать "на лету" большие графические файлы формата BMP, или текстовые файлы, причём для пользователя всё это будет прозрачно.
  3. Поддержка формата ISO Unicode. Формат Unicode использует 16bit для кодировки каждого символа, в отличие от ASCII, который использовал 8bit, или ещё хуже - 7bit. Для простого пользователя это означает то, что теперь он может называть файлы на любом языке, хоть на китайском - система это будет поддерживать, не требуя изменить кодовую страницу, как это делал DOS и W9x.

Физическая структура NTFS


Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону - пространство, в которое растет метафайл MFT (об этом ниже). Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой - это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов. 



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

Файловая система NTFS представляет собой выдающееся достижение структуризации: каждый элемент системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT, или Master File Table - общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска, и, как не парадоксально, себя самого. MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности (они очень важны) хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, "зацепившись" за самую основу - за первый элемент MFT.
Метафайлы

Первые 16 файлов NTFS (метафайлы) носят служебный характер. Каждый из них отвечает за какой-либо аспект работы системы. Преимущество настолько модульного подхода заключается в поразительной гибкости - например, на FAT-е физическое повреждение в самой области FAT фатально для функционирования всего диска, а NTFS может сместить, даже фрагментировать по диску, все свои служебные области, обойдя любые неисправности поверхности - кроме первых 16 элементов MFT.

Метафайлы находятся корневом каталоге NTFS диска - они начинаются с символа имени "$", хотя получить какую-либо информацию о них стандартными средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер - можно узнать, например, сколько операционная система тратит на каталогизацию всего вашего диска, посмотрев размер файла $MFT. В следующей таблице приведены используемые в данный момент метафайлы и их назначение.

$MFT

сам MFT

$MFTmirr

копия первых 16 записей MFT, размещенная посередине диска

$LogFile

файл поддержки журналирования (см. ниже)

$Volume

служебная информация - метка тома, версия файловой системы, т.д.

$AttrDef

список стандартных атрибутов файлов на томе

$.

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

$Bitmap

карта свободного места тома

$Boot

загрузочный сектор (если раздел загрузочный)

$Quota

файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5)

$Upcase

файл - таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально.
Файлы и потоки

Итак, у системы есть файлы - и ничего кроме файлов. Что включает в себя это понятие на NTFS?
  • Прежде всего, обязательный элемент - запись в MFT, ведь, как было сказано ранее, все файлы диска упоминаются в MFT. В этом месте хранится вся информация о файле, за исключением собственно данных. Имя файла, размер, положение на диске отдельных фрагментов, и т.д. Если для информации не хватает одной записи MFT, то используются несколько, причем не обязательно подряд.
  • Опциональный элемент - потоки данных файла. Может показаться странным определение "опциональный", но, тем не менее, ничего странного тут нет. Во-первых, файл может не иметь данных - в таком случае на него не расходуется свободное место самого диска. Во-вторых, файл может иметь не очень большой размер. Тогда идет в ход довольно удачное решение: данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT. Файлы, занимающие сотни байт, обычно не имеют своего "физического" воплощения в основной файловой области - все данные такого файла хранятся в одном месте - в MFT.

Довольно интересно обстоит дело и с данными файла. Каждый файл на NTFS, в общем-то, имеет несколько абстрактное строение - у него нет как таковых данных, а есть потоки (streams). Один из потоков и носит привычный нам смысл - данные файла. Но большинство атрибутов файла - тоже потоки. Таким образом, получается, что базовая сущность у файла только одна - номер в MFT, а всё остальное опционально. Данная абстракция может использоваться для создания довольно удобных вещей - например, файлу можно "прилепить" еще один поток, записав в него любые данные - например, информацию об авторе и содержании файла, как это сделано в Windows 2000 (самая правая закладка в свойствах файла, просматриваемых из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами: наблюдаемый размер файла - это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длинны, при стирании которого освободится 1 Гбайт свободного места - просто потому, что какая-нибудь хитрая программа или технология прилепила в нему дополнительный поток (альтернативные данные) гигабайтового размера. Но на самом деле в текущий момент потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Просто имейте в виду, что файл на NTFS - это более глубокое и глобальное понятие, чем можно себе вообразить просто просматривая каталоги диска. Ну и напоследок: имя файла может содержать любые символы, включая полый набор национальных алфавитов, так как данные представлены в Unicode - 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла - 255 символов.
Каталоги

Каталог на NTFS представляет собой специфический файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога поделен на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку на элемент MFT, который уже предоставляет полную информацию об элементе каталога. Внутренняя структура каталога представляет собой бинарное дерево. Вот что это означает: для поиска файла с данным именем в линейном каталоге, таком, например, как у FAT-а, операционной системе приходится просматривать все элементы каталога, пока она не найдет нужный. Бинарное же дерево располагает имена файлов таким образом, чтобы поиск файла осуществлялся более быстрым способом - с помощью получения двухзначных ответов на вопросы о положении файла. Вопрос, на который бинарное дерево способно дать ответ, таков: в какой группе, относительно данного элемента, находится искомое имя - выше или ниже? Мы начинаем с такого вопроса к среднему элементу, и каждый ответ сужает зону поиска в среднем в два раза. Файлы, скажем, просто отсортированы по алфавиту, и ответ на вопрос осуществляется очевидным способом - сравнением начальных букв. Область поиска, суженная в два раза, начинает исследоваться аналогичным образом, начиная опять же со среднего элемента.



Вывод - для поиска одного файла среди 1000, например, FAT придется осуществить в среднем 500 сравнений (наиболее вероятно, что файл будет найден на середине поиска), а системе на основе дерева - всего около 10-ти (210 = 1024). Экономия времени поиска налицо. Не стоит, однако думать, что в традиционных системах (FAT) всё так запущено: во-первых, поддержание списка файлов в виде бинарного дерева довольно трудоемко, а во-вторых - даже FAT в исполнении современной системы (Windows2000 или Windows98) использует сходную оптимизацию поиска. Главный каталог диска - корневой - ничем не отличается об обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.
Журналирование

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

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

Пример 2: более сложный случай - идет запись данных на диск. Вдруг, бах - отключается питание и система перезагружается. На какой фазе остановилась запись, где есть данные, а где чушь? На помощь приходит другой механизм системы - журнал транзакций. Дело в том, что система, осознав свое желание писать на диск, пометила в метафайле $LogFile это свое состояние. При перезагрузке это файл изучается на предмет наличия незавершенных транзакций, которые были прерваны аварией и результат которых непредсказуем - все эти транзакции отменяются: место, в которое осуществлялась запись, помечается снова как свободное, индексы и элементы MFT приводятся в с состояние, в котором они были до сбоя, и система в целом остается стабильна. Ну а если ошибка произошла при записи в журнал? Тоже ничего страшного: транзакция либо еще и не начиналась (идет только попытка записать намерения её произвести), либо уже закончилась - то есть идет попытка записать, что транзакция на самом деле уже выполнена. В последнем случае при следующей загрузке система сама вполне разберется, что на самом деле всё и так записано корректно, и не обратит внимания на "незаконченную" транзакцию.

И все-таки помните, что журналирование - не абсолютная панацея, а лишь средство существенно сократить число ошибок и сбоев системы. Вряд ли рядовой пользователь NTFS хоть когда-нибудь заметит ошибку системы или вынужден будет запускать chkdsk - опыт показывает, что NTFS восстанавливается в полностью корректное состояние даже при сбоях в очень загруженные дисковой активностью моменты. Вы можете даже оптимизировать диск и в самый разгар этого процесса нажать reset - вероятность потерь данных даже в этом случае будет очень низка. Важно понимать, однако, что система восстановления NTFS гарантирует корректность файловой системы, а не ваших данных. Если вы производили запись на диск и получили аварию - ваши данные могут и не записаться.

В данной таблице сведены воедино все существенные плюсы и минусы распространенных в наше время систем, таких как FAT32, FAT и NTFS.




FAT

FAT32

NTFS

Системы, её поддерживающие

DOS, Windows9Х, NT всех версий

Windows98, Win2k, XP

NT4, Win2k,XP

Максимальный размер тома

2 Гбайт

практически неограничен

практически неограничен

Макс. число файлов на томе

примерно 65 тысяч

практически не ограничено

практически не ограничено

Имя файла

с поддержкой длинных имен - 255 символов, системный набор символов

с поддержкой длинных имен - 255 символов, системный набор символов

255 символов, любые символы любых алфавитов (65 тысяч разных начертаний)

Возможные атрибуты файла

Базовый набор

Базовый набор

всё, что придет в голову производителям программного обеспечения

Безопасность

нет

нет

да (начиная с NT5.0 встроена возможность физически шифровать данные)

Сжатие

нет

нет

да

Устойчивость к сбоям

средняя (система слишком проста и поэтому ломаться особо нечему)

плохая (средства оптимизации по скорости привели к появлению слабых по надежности мест)

полная - автоматическое восстановление системы при любых сбоях (не считая физические ошибки записи, когда пишется одно, а на самом деле записывается другое)

Экономичность

минимальная (огромные размеры кластеров на больших дисках)

улучшена за счет уменьшения размеров кластеров

максимальна. Очень эффективная и разнообразная система хранения данных

Быстродействие

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

полностью аналогично FAT, но на дисках большого размера (десятки гигабайт) начинаются серьезные проблемы с общей организацией данных

система не очень эффективна для малых и простых разделов (до 1 Гбайт), но работа с огромными массивами данных и внушительными каталогами организована как нельзя более эффективно и очень сильно превосходит по скорости другие системы



ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.

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

Кроме того, ОС часто предоставляют средства - разделяемые библиотеки, серверы и т.д. для реализации графического пользовательского интерфейса прикладными программами. Часто оказывается сложно провести границу между ядром ОС и этими средствами, особенно если стандартная оболочка ОС реализована с их использованием. В некоторых системах, например в MS Windows 3.x и MacOS, практически все ядро состоит из средств реализации графического интерфейса.

В настоящее время оформилось два принципиально различных подхода к организации пользовательского интерфейса. Первый, исторически более ранний подход состоит в предоставлении пользователю командного языка, в котором запуск программ оформлен в виде отдельных команд. Этот подход известен как интерфейс командной строки (Command Line Interface - CLI).

Альтернативный подход состоит в символическом изображении доступных действий в виде картинок – икон (icons) на экране и предоставлении пользователю возможности выбирать действия при помощи мыши или другого координатного устройства ввода. Этот подход известен как графический пользовательский интерфейс (Graphical User Interface - GUI).

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