Файловая система NTFS. Тома NTFS. Физическая структура MFT и метафайлы. Атрибуты в NTFS. Хранение файлов и каталогов. Сжатие файлов в NTFS. Защита целостности данных. Дополнительные возможности NTFS. — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Файловая система NTFS. Тома NTFS. Физическая структура MFT и метафайлы. Атрибуты в NTFS. Хранение файлов и каталогов. Сжатие файлов в NTFS. Защита целостности данных. Дополнительные возможности NTFS.

2017-11-16 491
Файловая система NTFS. Тома NTFS. Физическая структура MFT и метафайлы. Атрибуты в NTFS. Хранение файлов и каталогов. Сжатие файлов в NTFS. Защита целостности данных. Дополнительные возможности NTFS. 0.00 из 5.00 0 оценок
Заказать работу

Защита целостности данных.

Система восстановления NTFS гарантирует корректность файловой системы, а не ваших данных.

 

NTFS является восстанавливаемой ФС и поддерживает следующие технологии защиты целостности данных:

Тома с аппаратной или программной поддержкой RAID 0, RAID 4, RAID 5 и пр.

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

Механизм транзакций – каждая операция ввода-вывода, которая изменяет файл на разделе NTFS, рассматривается файловой системой как транзакция и может выполняться только как неделимый блок.

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

Примеры транзакций:

l создание файла

l удаление файла

l расширение файла

l урезание файла

l установка файловой информации

l переименование файла

l изменение прав доступа к файлу

 

 

В состав средств протоколирования NTFS входят следующие компоненты:

l журнал транзакций (log file) – это системный файл, создаваемый командой format;

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

l диспетчер кэша (cache manager) – это системный компонент Windows, поддерживающий кэширование для NTFS и драйверов других файловых систем (FAT32).

 

 

Файл журнала состоит из двух частей:

l область рестарта (restart area) – в этой области NTFS хранит информацию о том, откуда начинать чтение области протоколирования при восстановлении после сбоя системы. Для повышения отказоустойчивости LFS создает копию области рестарта.

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

Для идентификации записей, помещенный журнал, LFS использует номера логической последовательности (logical sequence number, LSN).

В файле журнала различают 3 вида записей:

l записи модификации (большинство записей в журнале транзакций – записи модификации);

Структура записи модификации:

l Информация для повтора (redo info)

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

l Информация для отмены (undo info)

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

l записи подтверждения транзакции;

после протоколирования транзакции NTFS выполняет ее подоперации непосредственно над томом – в кэше. По окончании обновления кэша NTFS помещает в журнал еще одну запись – подтверждение транзакции (committing a transaction). После того как транзакция подтверждена, NTFS гарантирует, что все вызванные ею модификации будут отражены на томе, даже если после подтверждения произойдет сбой системы.

l записи контрольной точки.

Периодически (5 сек.) NTFS помещает в журнал транзакций записи контрольной точки: запись контрольной точки помогает NTFS определить, какая обработка необходима для восстановления тома, если сбой произошел “сразу” после помещения этой записи в журнал. LSN контрольной точки записывается в область рестарта.

Контрольная точка содержит две таблицы восстановления:

l Таблица транзакций (transaction table) предназначена для отслеживания транзакций, которые были начаты, но еще не подтверждены. Их надо удалить в процессе восстановления.

l В таблицу измененных страниц (dirty page table) записывается информация о том, какие изменения структуры файловой системы еще не записанные на диск. Эти данные в процессе восстановления должны быть сброшены на диск.

 

При восстановлении тома NTFS загружает журнал транзакций в оперативную память и выполняет три прохода:

l анализ;

l повтор транзакций;

l сканирование журнала транзакций в прямом направлении, начиная с LSN самой старой записи, которая была обнаружена на проходе анализа;

l поиск записей "обновление страницы", содержащие модификации тома, которые были запротоколированы до сбоя системы, но не сброшены из кэша на диск;

l повторение найденных обновлений в кэш.

l отмена транзакций.

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

l поскольку отмена транзакций изменяет структуру ФС на томе, NTFS должна протоколировать операцию отмены в журнале транзакций;

l сброс на диск изменений кэша;

l запись пустой области рестарта

Потом NTFS начинает проход отмены (undo pass), откатывая все транзакции, не подтвержденные к моменту сбоя системы. В таблице транзакций NTFS для каждой незавершенной транзакции хранится LSN записи модификации, которая была помещена в журнал последней. Каждая запись модификации содержит информацию двух видов: как повторить подоперацию и как отменить ее.

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

 

 

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

 

Защита памяти.

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

Средства защиты при управлении памятью обычно выполняют:

· проверку адреса ячейки памяти на корректность;

· проверку разрешения доступа программы к адресуемой ячейке памяти;

· проверку прав доступа (разрешенных операций) программы по отношению к ячейке памяти.

Основные классические подходы защиты:

· защита отдельных ячеек памяти;

Защита отдельных ячеек памяти организуется в ЭВМ, предназначенных для работы в системах управления, где необходимо обеспечить возможность отладки новых программ без нарушения функционирования находящихся в памяти рабочих программ, управляющих технологическим процессом. Это может быть достигнуто выделением в каждой ячейке памяти специального "разряда защиты". Установка этого разряда в "1" запрещает производить запись в данную ячейку, что обеспечивает сохранение рабочих программ. Недостаток такого подхода – большая избыточность в кодировании информации из-за излишне мелкого уровня защищаемого объекта (ячейка).

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

Система со страничной организацией ATLAS предоставляла для каждого блока памяти однобитовый флаг-замок. Любая попытка получения доступа к «запертому» блоку приводила к прерыванию.

В страничной системе XDS 940 для каждой страницы виртуальной памяти был назначен однобитовый флаг rol. Если rol == 1, то блок используется только для чтения, иначе разрешен любой тип доступа.

 

· метод граничных регистров;

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

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

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

Пример реализации – IBM 7090. Регистры верхней (UP) и нижней (LR) границы хранили допустимые верхний и нижний значения адресов.

 

 

 

· метод ключей защиты;

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

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

Пример реализации – в IBM OS 360 для каждого 2KБ блока основной памяти был поставлен в соответствие 4-битовый ключ защиты. Реализовывался принцип защиты «все или ничего».

Развитием предыдущего способа (IBM OS 360/67) является использование дополнительно к ключу защиты еще одного флага – Разряда Режима Обращения (РРО).

В этом случае если при проверке ключ защиты и ключ программы не совпадает, то при значении РРО равном «0» все-таки разрешалось выполнить операцию чтения памяти, а при значении «1» доступ запрещается и выполняется прерывание.

 

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

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

 

· защита памяти по привилегиям.

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

 

 

· метод матрицы доступа.

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

Элемент aij этой матрицы определял тип доступа, разрешенный сегменту i к сегменту j:

 

Свопинг.

Для того, чтобы обеспечить все линейное адресное пространство процесса физическими ячейками памяти, Windows применяет свопинг. Организацией свопинга занимается VMM. При генерации системы на диске образуется специальный файл свопинга, куда записываются те страницы, которым не находится места в физической памяти. Процессы могут захватывать память в своем ВАП и, затем, использовать ее. Страница может иметь различные состояния. VMM использует локальный алгоритм LRU (Least Recently Used) – замещение дольше всех неиспользовавшихся страниц.

Стратегии управления виртуальной памятью:

· Стратегия выборки (fetch policy).

Выборка определяет, в какой момент необходимо переписать страницу с диска в ОП.

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

 

· Стратегия размещения (placement policy).

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

 

· Стратегия замещения (replacement policy).

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

Реализация свопинга:

 

Реализация алгоритма замещения LRU:

 

· VMM периодически просматривает список страниц с атрибутом Valid и пытается похитить их у процесса (1). Он помечает их как отсутствующие (P=0), но на самом деле оставляет их на месте, только переводит в разряд Modified или Standby в зависимости от значения бита D из PTE.

· Если содержимое страницы была изменено в ОП (D=1), то VMM выполнит запись страницы на диск (4).

· Если похищенная страница принадлежит рабочему множеству, то к ней в ближайшее время произойдет обращение. Это, конечно, вызовет исключение - ведь страница-то помечена как отсутствующая. Но VMM очень быстро сделает эту страницу вновь доступной процессу, поскольку она реально находится в памяти (2).

· Далее если к странице не будет обращений (страница вне рабочего множества), то она со временем перейдет в состояние Free (5) и станет доступна для замещения страниц в рамках данного процесса (6).

· Затем системный поток обнуляет страницу – Zeroed (7), и она станет доступна другим процессам системы (8).

 

Реализация алгоритма оптимального замещения:

 

1’st page fault: страница 1 была вытеснена и заменена страницей 5, т.к. страница 1 в будущем больше не будет вызываться.

2’nd page fault: страница 2 была вытеснена и заменена страницей 4, т.к. страница 2 будет вызвана позже чем остальные две страницы (страницы 5 и 3).

3’rd page fault: страница 4 была вытеснена и заменена страницей 2, т.к. страница 4 в будущем больше не будет вызываться.

 

Алгоритмы замещения страниц (свопинга):

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

Локальные – оперируют множеством страниц оперативной памяти, принадлежащих конкретному процессу.

 

FIFO (First In First Out) – замещение первой использованной страницы

FIFO 2nd Chance (похож на clock)

LRU (Least Recently Used) – замещение дольше всех неиспользовавшихся страниц

NRU (Not Recently Used) или clock – замещение не использовавшихся в последнее время страницы

NFU (Not Frequently Used) – замещение наименее часто используемых страниц

Пример действия FIFO:

 

FIFO 2nd Chance:

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

Если признак установлен (R = 1), то страница, в отличие от FIFO, не выталкивается, а очищается бит (R = 0) и страница становится в конец очереди.

Недостаток – недостаточная эффективность алгоритма, потому что постоянно передвигает страницы по списку. Поэтому лучше хранить описания страничных блоков в виде кольцевого списка и использовать указатель на старейшую страницу – алгоритм NRU (clock).

Алгоритм LRU:

Для замещения выбирается дольше всего неиспользовавшаяся страница. Часто используется и считается хорошим.

Основная проблема – реализация (требуется аппаратная поддержка).

Реализация LRU №1:

Основана на использовании специального признака обращения (reference bit) к странице (требуется аппаратная поддержка).

Каждой странице назначается свой счетчик обращений.

С некоторым постоянным временным интервалом для каждой страницы выполняется:

· если признак обращения = 0 (страница не использовалась), увеличить счетчик на 1;

· если признак обращения = 1 (страница использовалась), обнулить счетчик;

· сбросить признак обращения.

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

 

Реализация LRU №2:

В некоторых архитектурах (например, Intel) признак обращения отсутствует. Для эмуляции признака обращения можно использовать признак достоверности (valid bit), сбрасывая его для возникновения «псевдосбоев» страниц – пример ОС Windows 2000-2008.

Недостаток – огромное количество дополнительных страничных прерываний.

 

NRU или clock:

· все страничные кадры ОП выстраиваются в один большой круг (часы) реализуемый обычным кольцевым списком;

· “стрелка часов” указывает следующего кандидата на вытеснение движется по списку страниц как стрелка часов;

· если признак обращения сброшен, значит, страница давно не использовалась, и она – подходящая жертва;

· если признак обращения установлен, он сбрасывается, и стрелка переводится на следующую страницу.

Особенности:

· чем чаще требуются страницы, тем быстрее движется стрелка;

· при достаточно большом объеме памяти дополнительные расходы невелики;

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

NFU (Not Frequently Used):

Программная реализация алгоритма, близкого к LRU, - алгоритм NFU.

Для него требуются программные счетчики, по одному на каждую страницу, которые сначала равны нулю. При каждом прерывании по времени ОС сканирует все страницы в памяти и у каждой страницы с установленным флагом обращения увеличивает на единицу значение счетчика, а флаг обращения сбрасывает. Таким образом, кандидатом на освобождение оказывается страница с наименьшим значением счетчика, как страница, к которой реже всего обращались. Главный недостаток алгоритма NFU состоит в том, что он ничего не забывает. Например, страница, к которой очень часто обращались в течение некоторого времени, а потом обращаться перестали, все равно не будет удалена из памяти, потому что ее счетчик содержит большую величину (глубина истории ограничена разрядностью счетчика). Возможна небольшая модификация алгоритма, которая позволяет ему "забывать". Достаточно, чтобы при каждом прерывании по времени содержимое счетчика сдвигалось вправо на 1 бит, а уже затем производилось бы его увеличение для страниц с установленным флагом обращения. Другим, уже более устойчивым недостатком алгоритма является длительность процесса сканирования таблиц страниц.

 

Понятие «trashing».

Высокая частота страничных прерываний называется трешинг (thrashing).

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

 

Решение проблемы trashing:

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


10. Архитектура памяти MS Windows 2000. Менеджер ВП. Виртуальное АП. Средства защиты памяти. Страничное преобразование. Реализация свопинга в MS Windows 2000-2003.

 

Менеджер виртуальной памяти:

l управление виртуальными адресными пространствами процессов;

l разделение памяти между процессами;

l защита виртуальной памяти одного процесса от других процессов.

l Менеджер виртуальной памяти (VMM) является составной частью ядра ОС. Приложения не могут получить к нему прямой доступ.

 

 

Менеджер виртуальной памяти (VMM) является составной частью ядра ОС. Приложения не могут получить к нему прямой доступ.

Для управления памятью прикладным программам предоставляются различные интерфейсы (API).

 

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

Memory Mapped File API - набор функций, позволяющий работать с файлами, отображаемыми в память. Новый механизм, предоставляемый Win32 API для работы с файлами и взаимодействия процессов.

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

Local, Global Memory API - набор функций работы с памятью, совместимых с 16-битной Windows. Следует избегать их использования.

CRT Memory API - функции стандартной библиотеки языка “С” периода исполнения (runtime).

 

Проецируемые файлы.

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

(Джеффри Рихтер. Windows для профессионалов.)

 

Файлы, проецируемые (отображаемые) в память, - это один из самых замечательных сервисов, которые Win32 предоставляет программисту. Его существование стирает для программиста грань между оперативной и дисковой памятью. Действительно, с точки зрения классической теории кэш, оперативная память и дисковое пространство - это три вида памяти, отличающиеся скоростью доступа и размером. Но если заботу о перемещении данных между кэшем и ОП берут на себя процессор и ОС, то перемещение данных между ОП и диском обычно выполняет прикладной процесс с использованием функций read() и write().

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

 

Применение проецируемых файлов:

· Для запуска исполняемых файлов (EXE) и динамически связываемых библиотек (DLL).

· Для работы с файлами.

· Для одновременного использования одной области данных двумя процессами.

 

Запуск процесса:

1. Создать виртуальное адресное пространство процесса (размером 4Gb).

2. Резервировать в ВАП регион размером, достаточным для размещения исполняемого файла. Начальный адрес региона определяется в заголовке EXE-модуля. Обычно он равен 0x00400000.

3. Отобразить исполняемый файл на зарезервированное адресное пространство.

4. Таким же образом отобразить на ВАП процесса необходимые ему динамически связываемые библиотеки. Информация о необходимых библиотеках находится в заголовке EXE-модуля. Желательное расположение региона адресов описано внутри библиотеки.

Запуск EXE-файлов и DLL-библиотек

 

 

Одновременное использование одной области данных двумя процессами

 

Файлы данных, проецируемые в память

Проецирование файла данных в память:

1. Создается объект ядра “файл”. Для создания объекта “файл” используется функция CreateFile.

2. С помощью функции CreateFileMapping создается объект ядра “проецируемый файл”. При этом используется дескриптор файла, возвращенный функцией CreateFile.

3. Производится отображение объекта “проецируемый файл” или его части на адресное пространство процесса. Для этого применяется функция MapViewOfFile.

Завершение проецирования файла данных:

1. Выполняется открепление файла от адресного пространства процесса с помощью функции UnmapViewOfFile.

2. Выполняется уничтожение объектов “файл” и “проецируемый файл” с помощью функции CloseHandle.

Обеспечение когерентности:

Если один процесс меняет разделяемую область данных, то она меняется и для другого процесса. Операционная система обеспечивает когерентность разделяемой области данных для всех процессов. Но для обеспечения когерентности процессы должны работать с одним объектом “проецируемый файл”, а не с одним файлом.

 

Создание объекта «проецируемый файл»:

HANDLE CreateFileMapping (

HANDLE hFile, // дескриптор файла

LPSECURITY_ATTRIBUTES lpAttributes, // атрибуты защиты объекта

DWORD flProtect, // атрибуты защиты

DWORD dwMaximumSizeHigh, // старшее слово размера

DWORD dwMaximumSizeLow, // младшее слово размера

LPCTSTR lpName // имя объекта

);

 

Открытие объекта «проецируемый файл»:

HANDLE OpenFileMapping (

DWORD dwDesiredAccess, // режим доступа

BOOL bInheritHandle, // флажок наследования

LPCTSTR lpName // имя объекта

);

 

Функция проецирования области:

LPVOID MapViewOfFile (

HANDLE hFileMappingObject, // дескриптор объекта проецируемый файл

DWORD dwDesiredAccess, // режим доступа

DWORD dwFileOffsetHigh, // старшее DWORD смещения

DWORD dwFileOffsetLow, // младшее DWORD смещения

SIZE_T dwNumberOfBytesToMap // число отображаемых байтов

);

 

 

Функция проецирования области по определенному адресу:

LPVOID MapViewOfFileEx (

HANDLE hFileMappingObject, // дескриптор отображаемого объекта

DWORD dwDesiredAccess, // режим доступа

DWORD dwFileOffsetHigh, // старшее DWORD смещения

DWORD dwFileOffsetLow, // младшее DWORD смещения

SIZE_T dwNumberOfBytesToMap, // число отображаемых байтов

LPVOID lpBaseAddress // начальный адрес

);

 

Параметр dwDesiredAccess определяет требуемый режим доступа для страниц ВП, используемых для отображения:

· FILE_MAP_WRITE – доступ к операциям чтения-записи, проецируемый файл должен быть создан с защитой PAGE_READWRITE.

· FILE_MAP_READ – доступ только для чтения, проецируемый файл должен быть создан с защитой PAGE_READWRITE или PAGE_READONLY.

· FILE_MAP_ALL_ACCESS – то же самое, что и FILE_MAP_WRITE.

· FILE_MAP_COPY – копирование при доступе для записи, проецируемый файл должен создаваться с флажком защиты PAGE_WRITECOPY.

· FILE_MAP_EXECUTE – доступ к исполнению кода из отображаемой памяти, проецируемый файл должен быть создан с доступом PAGE_EXECUTE_READWRITE или PAGE_EXECUTE_READ.

 

Функция отмены проецирования области:

BOOL UnmapViewOfFile (

LPCVOID lpBaseAddress // начальный адрес

);

 

Создание и использование проецируемых файлов:

Общий механизм таков: один процесс создает объект “проецируемый файл” с помощью функции CreateFileMapping, передавая в параметре lpName имя объекта, которое является глобальным в системе. Другой процесс открывает уже созданный объект “проецируемый файл” по глобальному имени.Теперь два процесса могут совместно использовать объект “проецируемый файл”. При этом, при помощи функции MapViewOfFile каждый процесс проецирует этот объект на свое ВАП и используют эту часть адресного пространства как разделяемую область данных.

Объекты Windows.

Основные понятия:

Задание – набор процессов, управляемых как единое целое, с общими квотами и лимитами

Процесс – контейнер для ресурсов

Поток – сущность планируемая ядром

Волокно – облегченный поток, управляемый полностью в пространстве пользователя

 

Процессы и потоки Windows:

· Иерархия процессов (ссылки между процессами-родителями и процессами-потомками) в явном виде не поддерживается.

· Процессы имеют многопоточную организацию.

· Процессы и потоки реализованы в форме объектов, и доступ к ним осуществляется посредством службы объектов.

· Объекты-процессы и объекты-потоки имеют встроенные средства синхронизации.

 

Процессы.

Процесс – это совокупность системных ресурсов, задействованная для выполнения определенной работы.

Понятие "процесс" включает следующее:

· исполняемый код;

· собственное адресное пространство, которое представляет собой совокупность виртуальных адресов,

которые может использовать процесс;

· ресурсы системы, такие как файлы, семафоры и т.п., которые назначены процессу операционной системой;

· хотя бы один выполняемый поток.

 

Атрибуты процесса:

· Идентификатор процесса – уникальное значение, которое идентифицирует процесс в рамках ОС (только в текущий момент времени).

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

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

· Список открытых дескрипторов различных системных ресурсов – семафоров, файлов и других объектов, доступных всем потокам в данном процессе.

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

· Базовый приоритет – основа для исполнительного приоритета потоков процесса.

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

· Предельные значения квот ресурсов (см. Job).

· Время исполнения – общее количество времени, в течение которого выполняются все потоки процесса.

· Список потоков процесса (как минимум один поток).

 

Потоки.

Поток (нить) – это непрерывная последовательность инструкций, выполняющих определенную функцию.

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

Потоки процесса могут сообща пользоваться ресурсами процесса-родителя.

По умолчанию у потоков нет собственного маркера доступа и для целей безопасности используется маркер доступа процесса-родителя.

При необходимости каждый поток может получить собственный маркер доступа.


Дескрипторы виртуальных адресов (virtual address descriptors, VAD) – это структуры данных, используемые VMM для учета виртуальных адресов, задействованных процессом.

 

Атрибуты потоков:

· Идентификатор клиента – уникальное значение, которое идентифицирует поток при ее обращении к серверу.

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

· Два стека, один из которых используется потоком при выполнении в режиме ядра, а другой – в пользовательском режиме.

· Локальная память потока (thread local storage, TLS) – закрытая область памяти потока.

· Динамический приоритет – значение приоритета потока в данный момент.

· Базовый приоритет – нижний предел динамического приоритета потока.

· Процессорная совместимость потока – перечень типов процессоров, на которых может выполняться поток.

· Номер идеального процессора потока.

· Номер процессора, на котором поток выполнялся прошлый раз.

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

· Счетчик приостановок – текущее количество приостановок выполнения потока.

 

Номер идеального процессора потока:

Идеальный процессор для потока выбирается случайным образом при его создании с использованием зародышевого значения (seed) в блоке процесса. Это значение увеличивается на 1 всякий раз, когда создается новый поток, поэтому создаваемые потоки равномерно распределяются по набору доступных процессоров. Например, первый поток в первом процессе в системе закрепляется за идеальным процессором 0, второй поток того же процесса – за идеальным процессором 1. Однако у следующего процесса в системе идеальный процессор для первого потока устанавливается в 1, для второго – в 2 и т. д. Благодаря этому потоки внутри каждого процесса равномерно распределяются между процессорами. Номер идеального процессора может быть изменен с помощью функции SetThreadIdealProcessor.

 

Задание (job).

Процессы Windows не поддерживают в явном виде отношения родитель-потомок, поэтому начиная с Windows 2000 в модель процессов введено новое расширение – задания (jobs). Задания предназначены в основном для того, чтобы группами процессов можно было оперировать и управлять как единым целым. Задание позволяет устанавливать определенные атрибуты и накладывать ограничения на процесс или процессы, сопоставленные с заданием.


Поделиться с друзьями:

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.255 с.