Физическая организация NTFS

 

NTFS появилась позже FAT и HPFS (для OS/2). Отличительные черты этой системы:

· Поддержка больших дисков и файлов (объемом до 2 64 байт)

· Восстанавливаемость после сбоев и отказов программ и аппаратуры управления дисками

· Высокая скорость операций

· Относительно низкий уровень фрагментизации

· Гибкая структура атрибутов файлов, возможность добавлять новые типы атрибутов

· Поддержка длинных символьных имен

· Контроль доступа к файлам и каталогам

 

Базовой единицей распределения дискового пространства является отрезок - непрерывная последовательность логических (физических) кластеров (LCN) тома. Так как файл может состоять из нескольких отрезков, для него определено понятие виртуального кластера (VCN) – относительного порядкового номера кластера внутри файла.

 

На томе (логическом диске) размещаются только файлы или части файлов. Каталоги представляют такие же файлы (в том числе и корневой). В начале тома размещается загрузочный сектор, затем главная таблица файлов (Master File Table – MFT). MFT – это файл, содержащий по одной или больше записей (размером, обычно, 2 К) для каждого файла тома. В нулевой записи – сведения о самом файле MFT. В последующих 15 записях - сведения о стандартных служебных файлах. Далее идут сведения о всех создаваемых на томе файлах.

 

В качестве системных файлов, кроме самой MFT, выступают:

· Копия первых трех записей MFT

· Файл журнала транзакций, используемый для восстановления файловой системы после сбоя

· Файл с именем тома, версией NTFS, другой информацией о томе

· Файл с таблицей определения атрибутов. Для каждого атрибута хранится имя типа, номер, описание.

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

· Файл с битовой картой логических кластеров тома (по 1 биту на кластер, для определения занят он или свободен)

· Файл с адресом загрузочного сектора тома

· Файл со списком плохих кластеров тома

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

· Файл с таблицей преобразования регистра символов для кодировки Unicode

 

Четыре записи (11-15) в MFT зарезервированы для последующих модификаций NTFS.

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

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

· Attribute List – список атрибутов (используется редко, если список атрибутов не помещается в первую запись MFT для файла

· File Name – имя файла – содержит длинное имя файла в Unicode и номер записи в таблице MFT для родительского каталога. Если файл зафиксирован в нескольких каталогах, то у него будет несколько атрибутов типа Eile Name, по одному для каждого каталога

· MS-DOS Name – имя файла в формате MS-DOS (8+3)

· Version – номер последней версии файла

· Security Description – атрибут хранит информацию о защите файла - список прав доступа ACL и поле аудита – указания, какие операции с файлом нужно регистрировать

· Volume Version – версия тома (только для системных файлов)

· Volume Name – имя тома (только для системных файлов)

· MFT bitmap – карта использования кластеров тома (только для системного файла)

· Index Root – Корень двоичного дерева для поиска файлов в каталоге (только для каталогов)

· Index Allocation – размещение продолжений каталога, когда он не помещается в одну запись (т.е. для больших каталогов)

· Standard Information – стандартная информация о файле – в частности, время создания, последней модификации файла и т.д.

 

Если данные файла занимают мало места (в пределах 1500 байт) то весь он помещается в запись MFT вместе с остальными атрибутами. Такие файлы называются резидентными, а запись в MFT состоит из 4-х атрибутов:

1. SI – стандартной информации

2. FN – имени файла

3. Data – собственно данных файла

4. SD – дескриптора безопасности

Если он длиннее, то запись содержит средства поиска отрезков, составляющих файл. Однако атрибуты SI, FN и SD содержатся всегда. Большой файл вместо данных содержит списки отрезков, где расположены данные, очень большие данные вместо атрибута данные содержит номер записи MFT, где содержатся списки отрезков файла, а сверхбольшие файлы вместо атрибута данных содержат список записей MFT, в которых хранятся списки отрезков с данными файла.

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

 

Управление процессами

 

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

Процесс – единица работы, связанная с обработкой заявки на ресурсы ВС.

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

 

Потоки

Процесс может состоять из нескольких потоков. Хотя бы один поток будет в процессе всегда. В таком случае «поток»=«процесс».

Все потоки процесса разделяют его адресное пространство и множество переменных среды.

 

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

Подсистема управления процессами занимается:

· Планирование взаимодействия процессов

· Порождение/уничтожение процессов

· Обеспечение необходимыми ресурсами

 

Жизненный цикл процесса:

· Готовность – пассивное состояние – процесс имеет все необходимые ресурсы, но нет процессорного времени.

· Выполнение – активное состояние процесса, когда процессорный ресурс предоставлен процессу.

· Ожидание – пассивное состояние – процесс не имеет любого другого ресурса, кроме процессора.

Очереди: готовности (по приоритетам – prio 0 .. prio n) и ожидания (по типу ресурсов – res0 ... res m)

 

 

8->3 если есть место в ОЗУ, если нет, то 8->5

4, 6 – ожидание

1, 2 – выполнение

3, 5, 7 - готовность

Образ процесса – совокупность его кодов и данных и ресурсов.

Управление процессом в режиме задач возможно, если мы сами создаем процесс с помощью специальных системных вызовов (напр. fork()). Момент возвращения из ядра определяется только ОС.

1 <-> 2 может быть много переходов, это связано с внутренними прерываниями и событиями.

4 – ждем предоставления ресурса.

5 – swapping – если нужно освободить ОЗУ.

7 – если есть место в ОЗУ. Процесс возвращен из привилегированного режима в непривилегированный режим. Ядро резервирует его и переключается на другой процесс такая ситуация возможна при прерывании.

Жизненный цикл процесса в UNIX-подобных ОС: создание нового процесса (fork(), выделение ресурсов) -> готовность в ОЗУ (завершение fork(), exec()) -> выполнение в режиме ядра (runnable) -> завершение процесса (exit(), defunct zombie) -> полный возврат ресурсов. Если ресурсы заняты, то после fork() переход в готовность вне ОЗУ.

Контекст и дескриптор

 

Для возобновления выполнения процесса необходимо сохранить информацию о состоянии ОС:

Контекст – информация, которая отражает состояние операционной среды, та информация, которая необходима для выполнения процесса:

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

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

· Указатели на открытые файлы

· Информация о незавершенных операциях ввода/вывода

· Коды ошибок, выполняемых системных вызовов

Дескриптор процесса – информация, необходимая для планирования:

· Идентификатор процесса

· Состояние процесса

· Данные о степени его привилегированности

· Место нахождения сегмента кода

· Права доступа

· Информация о соседних дескрипторах в очереди

 

В дескрипторе хранится более оперативная информация, которая должна быть доступна извне => дескриптор всегда в ОЗУ, в отличие от контекста, который может быть вынесен в область swapping’a.

Очереди процессов представляются как списки дескрипторов, т.е. дескриптор содержит ссылку на соседей в очереди дескрипторах. Управление очередями = управление списками.

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

Создать процесс – значит создать информационную структуру (контекст/дескриптор).

Необходимо:

1) Создать структуру данных, описывающих данный процесс.

2) Включить дескриптор в очередь готовых процессов.

3) Загрузить кодовый сегмент в ОЗУ или область swapping’a.