рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

События с автоматическим сбросом.

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

Освобождаются с помощью SetEvent(…), переходят в занятое состояние с помощью WaitForMultipleObjects(…), как только событие освобождается.

 

WaitForMultipleObjects(…);

.

.

.

SetEvent(…);

Для событий с автосбросом SetEvent(…) не используется.

 

 

23. Объекты Мutex.

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

Для использования объекта Mutex один из процессов должен сначала создать его вызовом CreateMutex:

function CreateMutex(lpMutexAttributes: PSecurityAttributes;

bInitialOwner: BOOL; lpName: PChar): THandle;

где lpMutexAttributes – указывает на структуру SECURITY_ATTRIBUTES, которая содержит информацию о защите объекта ядра «mutex». Если защиты не нужно в этот параметр заносится nil.

bInitialOwner – определяют начальное состояние мьютекса. Если в нем передается FALSE (что обычно и бывает), объект-мьютекс не принадлежит ни одному из потоков и поэтому находится в свободном состоянии. Если же в нем передается TRUE, мьютекс изначально находится в занятом состоянии.

lpName – указатель на сроку, , заканчивающуюся двоичным нулем и содержащую имя объекта «mutex». Применяется в тех случаях, когда объект «mutex» используется для синхронизации потоков разных процессов. Если мьютекс используется для синхронизации потоков одного процесса, этот параметр устанавливается в nil.

При успешном выполнении функция CreateMutex возвращает дескриптор мьютекса, В случае ошибки функция возвращает nil. Причем, если при вызове функции CreateMutex указывается имя мьютекса и объект мьютекс с таким именем уже существует, то функция вернет значение – nil, а функция GetLastError вернет значение - ERROR_ALREADY_EXISTS.

Любой процесс может получить свой («процессо-зависимый») дескриптор существующего объекта "мьютекс", вызвав функцию OpenMutex:

HANDLE OpenMutex( DWORD fdwAccess, 800L bInheritHandle, PCTSTR pszName);

function OpenMutex(dwDesiredAccess: DWORD; bInheritHandle: BOOL;

lpName: PChar): THandle;

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

bInheritHandle - определяет тип наследования дескриптора. Если данный параметр имеет значение TRUE, процесс, создаваемый функцией CreateProcess будет наследовать данный дескриптор. Если же параметр имеет значение FALSE, дескриптор мьютекса не будет наследуемым.

lpName - указатель на сроку, заканчивающуюся двоичным нулем и содержащую имя мьютекса.

Значения параметра dwDesiredAccess

Значение Описание
MUTEX_ALL_ACCESS Означает все возможные флаги доступа для мьютекса
SYNCHRONIZE Допускается использование дескриптора объекта мьютекс в любой wait- функции для ожидания освобождения мьютекс.

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

Если Wait-функция определяет, что мьютекса занят, то поток переходит в состояние ожидания освобождения объекта мьютекс.

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

function ReleaseMutex(hMutex: THandle): BOOL;

где hMutex – дескриптор объекта мьютекс.

При успешном выполнении функция ReleaseMutex возвращает значение TRUE.

Объект мьютекс отличается от остальных объектов ядра тем, что занявшему его потоку передаются права на владение им. Объекты мьютексы способны запоминать, какому потоку они принадлежат. Если какой-то посторонний поток попытается освободить мьютекс вызовом функции ReleaseMutex, то данная функция вернет FALSE. Вызов функции GetLastError даст значение ERROR_NOT_OWNER.

 

24. Синхронизация потоков с помощью семафоров.

Объекты ядра «семафор» используются для учета ресурсов Как и все объекты ядра, они содержат счетчик числа пользователей, но, кроме того, поддерживают два 32 битных значения со знаком: одно определяет максимальное число ресурсов (контролируемое семафором), другое используется как счетчик текущего числа ресурсов

Для семафоров определены следующие правила:

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

· если этот счетчик равен 0, семафор занят,

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

· счетчик текущего числа ресурсов не может быть больше максимального числа ресурсов

Не следует путать счетчик текущего числа ресурсов со счетчиком числа пользователей объекта-семафора

Объект ядра «семафор» создается вызовом функции CreateSemapbore: function CreateSemaphore(lpSemaphoreAttributes: PSecurityAttributes;

lInitialCount, lMaximumCount: Longint; lpName: PChar): THandle;

где lpSemaphoreAttributes - указывает на структуру SECURITY_ATTRIBUTES, которая содержит информацию о защите объекта ядра «семафор». Если защиты не нужно в этот параметр заносится nil.

lInitialCount – счетчик текущего числа ресурсов.

lMaximumCount – максимальное число ресурсов, контролируемое семафором. Данный параметр должен быть больше 0.

lpName – указатель на сроку, , заканчивающуюся двоичным нулем и содержащую имя объекта «семафор». Применяется в тех случаях, когда объект «семафор» используется для синхронизации потоков разных процессов. Если объект «семафор» используется для синхронизации потоков одного процесса, этот параметр устанавливается в nil.

При успешном выполнении функции CreateSemaphore возвращает дескриптор семафора, В случае ошибки функция возвращает nil. Причем, если при вызове функции CreateSemaphore указывается имя семафора и объект «семафор» с таким именем уже существует, то функция вернет значение – nil, а функция GetLastError вернет значение - ERROR_ALREADY_EXISTS.

Любой процесс может получить свой («процессо-зависимый») описатель существующего объекта «семафор», вызвав функцию OpenSemaphore:

function OpenSemaphore(dwDesiredAccess: DWORD; bInheritHandle: BOOL;

lpName: PChar): THandle;

где dwDesiredAccess - определяет требуемый доступ к объекту «семафор». Возможные значения данного параметра приведены в таблице 7.2.

bInheritHandle - определяет тип наследования данного дескриптора. Если данный параметр имеет значение TRUE, процесс, создаваемый функцией CreateProcess будет наследовать данный дескриптор. Если же данный параметр имеет значение FALSE, дескриптор семафора не будет наследуемым.

lpName - указатель на сроку, заканчивающуюся двоичным нулем и содержащую имя объекта «семафор».

Значения параметра dwDesiredAccess

Значение Описание
SEMAPHORE_ALL_ACCESS Означает все возможные флаги доступа для объекта «семафор»
SEMAPHORE _MODIFY_STATE Объект событие можно использовать только в функции ReleaseSemaphore для изменения счетчика текущего числа ресурсов
SYNCHRONIZE Допускается использование дескриптора объекта «семафор» в любой wait- функции для ожидания освобождения семафора.

Поток получает доступ к ресурсу, вызывая одну из Wait-функций и передавая ей дескриптор семафора. Wait-функция проверяет у семафора счетчик текущего числа ресурсов, если его значение больше 0 (семафор свободен), уменьшает значение этого счетчика на 1, и вызывающий поток остается планируемым

Если Wait-функция определяет, что счетчик текущего числа ресурсов равен 0 (семафор занят), система переводит вызывающий поток в состояние ожидания. Когда другой поток увеличит значение этого счетчика, система вспомнит о ждущем потоке и снова начнет выделять ему процессорное время (а он, захватив ресурс, уменьшит значение счетчика на 1).

Поток увеличивает значение счетчика текущего числа ресурсов, вызывая функцию ReleaseSemaphore:

function ReleaseSemaphore(hSemaphore: THandle; lReleaseCount:

Longint;lpPreviousCount: Pointer): BOOL;

Где hSemaphore – дескриптор семафора.

Данная функция складывает величину lReleaseCount со значением счетчика текущего числа ресурсов. Обычно в параметре lReleaseCount передают 1, но это вовсе не обязательно. Функция возвращает исходное значение счетчика ресурсов в lpPreviousCount. Если исходное значение счетчика в приложении не используется, то вместо параметра lpPre viousCount записывается значение nil.

При успешном выполнении функция ReleaseSemaphore возвращает значение TRUE

25. Синхронизация потоков с помощью событий. События со сбросом вручную и с автоматическим сбросом.

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

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

Для работы с объектом «событие» используются следующие функции:

1. Создание объекта ядра «событие», функция CreateEvent:

function CreateEvent(lpEventAttributes: PSecurityAttributes;

bManualReset, bInitialState: BOOL; lpName: PChar): THandle;

где lpEventAttributes - указывает на структуру SECURITY_ATTRIBUTES, которая содержит информацию о защите объекта ядра «событие». Если защиты не нужно в этот параметр заносится nil.

Пареметр fManualReset (булева переменная) определяет тип объекта «событие» - событие со сбросом вручную (TRUE) или с автосбросом (FALSE).

Параметру fInitialState определяет начальное состояние события — свободное (TRUE) или занятое (FALSE).

lpName – указатель на сроку, , заканчивающуюся двоичным нулем и содержащую имя объекта «событие». Применяется в тех случаях, когда объект «событие» используется для синхронизации потоков разных процессов. Если объект «событие» используется для синхронизации потоков одного процесса, этот параметр устанавливается в nil.

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

· вызовом CreateEvent с тем же параметром lpName;

· наследованием l;tcrhbgnjhf;

· применением функции DuplicateHandle;

· вызовом OpenEvent c передачей в параметре lpName имени, совпадающего с указанным в аналогичном параметре функции CreateEvent.

2. Открытие объекта ядра «событие», функция OpenEvent:

function OpenEvent(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: PChar): THandle;

где dwDesiredAccess - определяет требуемый доступ к объекту «событие».

bInheritHandle - определяет тип наследования данного дескриптора. Если данный параметр имеет значение TRUE, процесс, создаваемый функцией CreateProcess будет наследовать данный дескриптор. Если же данный параметр имеет значение FALSE, дескриптор события не будет наследуемым.

lpName – указатель на сроку, заканчивающуюся двоичным нулем и содержащую имя объекта «событие».

Значения параметра dwDesiredAccess

Значение Описание
EVENT_ALL_ACCESS Означает все возможные флаги доступа для объекта «событие»
EVENT_MODIFY_STATE Объект событие можно использовать только в функциях SetEvent и ResetEvent для изменения состояния объекта «событие»
SYNCHRONIZE Допускается использование объекта «событие» в любой wait- функции для ожидания освобождения события.

3. Закрытие объекта ядра «событие».

Ненужный объект ядра "событие" следует закрыть вызовом CloseHandle.

4. Перевод события в свободное состояние

function SetEvent(hEvent: THandle): BOOL; где hEvent – дескриптор события.

При успешном выполнении функция возвращает ненулевое значение. В случае ошибки функция возвращает ноль.

5. Перевод события в занятое состояние

function ResetEvent(hEvent: THandle): BOOL; где hEvent – дескриптор события.

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

– Конец работы –

Эта тема принадлежит разделу:

Определение операционной системы ОС. Назначение и основные функции ОС.

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

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

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Эволюция ОС.
I. 1945-1955 г.г. В восемнадцатом веке английский математик Чарльз Бэббидж изобрёл компьютер (теоретически). ОС он не имел. С середины 40-х годов были изобретены первые ламповые вычислительн

Краткий обзор архитектуры Windows.
  Процессы поддержки системы Процессы сервисов

Основные системные файлы Windows 95, NT, 2000.
ntoskrnl.exe - исполнительная система и ядро hal.dll - уровень абстрагирования от оборудования win32k.sys - часть подсистемы win32, работающий в режиме ядра. kernel32.dll

Страничная или сегментно-страничная организация памяти.
Память процессора разбивается на страницы, размер которых зависит от типа процессора (обычно 4 - 8 Кб). 1) С помощью сегментной организации из логического адреса формируется линейный. Начи

В физическом адресном пространстве выбрана страница. Выбранная страница 1.
Каждый процесс имеет свой каталог страниц. Как только процесс (программа) загружается на выполнение в системный регистр CR3 записывается адрес каталога страниц. Индекс каталога страниц требуется дл

Алгоритм NRU (Not Recently Used - не использовавшаяся в последнее время страница)
Используются биты обращения (R-Referenced) и изменения (M-Modified) в таблице страниц. При обращении бит R выставляется в 1, через некоторое время ОС не переведет его в 0. M перев

Алгоритм FIFO (первая прибыла - первая выгружена)
Недостаток заключается в том, что наиболее часто запрашиваемая страница может быть выгружена. 7.1.3 Алгоритм "вторая попытка" Подобен FIFO, но

Алгоритм LRU (Least Recently Used - использовавшаяся реже всего)
Первый метод: Чтобы реализовать этот алгоритм, можно поддерживать список, в котором выстраивать страницы по количеству использования. Эта реализация очень дорога. Второй м

Регионы в адресном пространстве.
4 Гб адресное пространство выделяется процессу в момент создания и является практически свободным, незарезервированным. Для того, чтобы воспользоваться адресным пространством нужно выделить регион,

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

Механизм выделения страниц физической памяти.
  СФ – страничный файл. Если данные в страничном файле есть. LIFO. LRU - менеджер виртуальной памяти отмечает и выгружается та страница, к которой наиболее длительно

Выделение физической памяти под программный код.
Физическая память выделяется в страничном файле. При запуске приложения ОС открывает его исполняемый файл и определяет объем кода и данных приложения. ОС резервирует регион адресного пространства и

Атрибуты защиты страниц.
Отдельные страницы имеют различные атрибуты защиты: 1) PAGE_NOACCESS. Попытка чтения, записи, исполнения в этом регионе памяти вызовет нарушение доступа. 2) PAGE_READONLY. Попытка

Функции компилятора для контроля стека.
В случае DOS при компиляции программ нужно было включать дополнительный программный код для конроля размера стека. В Windows 95, 98, NT этой проблемы нет, но возникает проблема контроля за выделени

КУЧИ (Heaps).
Мы рассматривали функции для работы с виртуальной памятью. Для работы с небольшими областями памяти используются кучи. В DOS кучей являлась вся свободная память. Каждая программа имеет сле

Особенности кучи в Windows 95, Windows NT.
1. В Windows максимальный размер кучи может быть практически равен размеру свободного адресного пространства. По умолчанию выделяется 1 Мб и передаются 2 страницы физической памяти. 2. В W

Структура кучи. Список(Заголовок и арена) кучи Win32.
… 2 блок 2 арена 1 блок 1 арена … критическая секция массив из 4-х заголовков размер   заголовок куч

Список свободных блоков
куча заголовок ////////////////////////////    

Структура арены.
Арена в занятых блоках. Начинается с поля длины блока. Затем в некоторых версиях Windows кроме длины блока могут указываться значения счётчика команд перед обращением к куче. Арена в свобо

Удаление кучи.
HeapDestroy(…). Проблема состоит в том, что 1.куча должна быть свободной, то есть CriticalSection=0. 2. куча может иметь подкучи. Необходимо удалить весь список связанных подкуч. Wi

Дополнительные кучи Win32 процесса.
Создаются по следующим причинам: 1. для защиты компонентов кучи. 2. для более эффективного управления памятью. 3. для локализации доступа. Рассмотрим вариант 1.

Создание дополнительных куч для эффективного управления памятью.
А3 А5 А4 х А6 В5 В1 А2 х

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

Файлы проецируемые в память (ФПВП).
Как и виртуальная память проецирование файлов в память позволяет резервировать регион адресного пространства и передавать ему физическую память, но физическая память берётся не из страничного файла

Проецирование в память exe и dll файлов.
Чтобы запустить ехе файл CreateProcess(…), где имя файла – это один из параметров. 1. Отыскивается ехе файл, вызванный функцией. 2. Создаётся объект ядра процесс. 3. Созд

Совместное использование статических данных несколькими экземплярами exe и dll модулей.
Например, имеется ехе файл, который состоит из ехе файл виртуальная память ВАП раздел кода 3 страницы   раздел данных 2 страницы

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

Объекты kernel32.dll.
Объекты kernel32 являются ключевыми структурами данных ОС и находятся в куче, которой владеет kernel32. Например, в Windows 95,98 около 17 объектов, в Windows 2000 около 26 объектов. Примеры объект

Структура IMTE.
таблица модулей IMTE kernel32.dll pModuleTableArray user32.dll

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

Основные функции для работы с потоками.
1) CreateThread(…). Создаёт новый поток в текущем процессе. 2) CreateRemoteThread(…).Создаёт новый поток в другом процессе. 3) ExitThread(…). Нормальное завер

Уровни приоритета.
В Windows поддерживается 32 уровня приоритета от 0 до 31. Все приоритеты делятся на четыре класса. Класс приоритета присваивается процессу с помощью одного из флагов функции CreateProcess. Рассмотр

Функции Win32 связанные с планированием.
SuspendThread(…) – приостанавливает поток. ResumeThread(…) – возобновляет. SetPriorityClass(…) – установить класс приоритета процесса. GetPriorityClass(…) – получить. SetThreadPriority(…) – установ

Сценарий планирования.
1) Самостоятельное переключение потока 2) Вытеснение потоков 3) Завершение кванта времени 4) Завершение потока   1) Самостоятельное переключение

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

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

Синхронизация потоков без использования объектов синхронизации.
Пусть есть 2 потока. Поток 1 синхронизирует себя завершением какой-либо задачи в другом потоке, постоянно просматривая значения некоторой переменной, доступной из обоих потоков.

Синхронизация потоков.
1. Объекты синхронизации могут находится в двух состояниях. 1) signaled – свободен 2) non-signaled – занят 2. Если состояние свободное, то работа потока разрешена, если в занятом,

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

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

Синхронизация объектов.
Для синхронизации с использованием объектов используются функции WaitForSingleObject(…), WaitForMultipleObject(…). Синхронизация с использованием таких объе

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

События со сбросом вручную.
При освобождении события со сбросом вручную из состояния ожидания могут выйти одновременно несколько потоков. Пример. Один поток считывает, другой эти данные обрабатывает. ResetEvent(…) –

События с автоматическим сбросом.
Освобождаются с помощью SetEvent(…), переходят в занятое состояние с помощью WaitForMultipleObjects(…), как только событие освобождается. WaitForMultipleObjects(…); . Set

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

Формат PE-файла.
Фирма Microsoft разработала переносимый формат файла Portable Executable для использования во всех ОС. Эта же фирма разработала новый формат для объектных (obj) и для библиотечных (lib) фа

Особенности РЕ-формата.
1. Исполняемый файл на диске и модуль, получаемый после загрузки практически идентичны. Загрузчик должен создать из файла процесс без усилий механизмом проецирования в память. 2. Использов

Заголовок РЕ-файла.
Заголовок – это набор полей, который определяет, как будет выглядеть остальная часть файла. Несколько сотен байт РЕ-файлов заняты под заглушку (‘This program must be run u

Основные секции исполняемого PE-файла.
В ней (text.) обычно собран весь программный код общего назначения. BC++ помещает весь программный код в секцию CODE. Особенностью данной секции в РЕ-файле являетс

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

Экспорт в PE-файлах
Информация об экспортируемых функциях хранится в секции .edata (обычно в dll файлах). Таблица экспорта имеет следующую структуру:   Из dll экспортируется 3 ф

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

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

Возможности NTFS.
1. Множественные потоки данных. В NTFS файл – это набор атрибутов, причём данные – это один из атрибутов файла. В файле можно создавать несколько атрибутов данных.

Тома в NTFS.
Структура NTFS начинается с тома. Том соответствует логическому разделу на диске и создаётся при форматировании диска или его части под NTFS. Оснастка Disk Management (Управ

Кластеры в NTFS.
Размер кластера на томе NTFS, или кластерный множитель (cluster factor), уста­навливается при форматировании тома командой

Назначение основных файлов NTFS.
Так, имя файла MFT –– $Mft. Остальные файлы NTFS-тома являются обычными файлами и каталогами. Обычно каждая запись MFT соответств

HKEY_LOCAL_MACHINESystemCurrentControlSetControlFileSystem
Windows NT не генерирует коротких имен для файлов, созданных приложениями POSIX в разделе NTFS. Это означает, что приложения MS-DOS и Wind

Структура файловых ссылок.
Файл на томе NTFS идентифицируется 64-битным значением, которое называ­ется файловой ссылкой (file reference). Файловая ссылка состоит из номера фай­ла и но

Атрибуты файла NTFS
NTFS рассматривает файл не просто как хранилище текстовых или двоичных данных, а как совокупность пар атрибутов их значения, одна из которых со­держит данные файла (соответствующий

Резидентные атрибуты.
Тело резидентного атрибута хранятся в файловой записи, расположенной внутри MFT. Если 8-разрядное поле, расположенное по смещению 08h байт от начала атрибутного заголовка, равно ну

Нерезидентные атрибуты.
Тело нерезидентного атрибута хранится вне MFT, в одном или нескольких кластерах, перечисленных в заголовке данного атрибута в специальном списке. Если 8-разрядное поле, расположенн

Структура каталогов в NTFS
Каталог на NTFS представляет собой специфический файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога поделен на блоки,

Структура больших файлов в NTFS
Файлы NTFS в зависимости от способа размещения делятся на небольшие, большие, очень большие и сверхбольшие. Большие файлы (large). Если данн

Индексация файлов в NTFS.
Здесь мы будем говорить о структуре каталогов NTFS. Каталог в NTFS представляет собой индекс имён файлов, т. е список имён, упорядоченных по любому признаку. В нас

Битовая карта.
Используется для отслеживания того, какие VCN в индексных буферах заняты, а какие свободны. Каждый индексный буфер размером 2 Кб может содержать около 15 записей для имён файлов. Э

Восстанавливаемость NTFS.
NTFS представляет собой останавливающуюся файловую систему. Файловые системы делятся на: 1. Файловые системы с точной записью. 2. Файловые системы с отложенной записью или останав

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

Журнал транзакций.
Используется несколько типов записей. Это записи модификации и записи контрольной точки. Записи модификации. Большинство зап

Записи модификации.
Большинство записей в журнале – это запись модификации. Каждая запись модификации содержит два вида информации: 3. Информация для повтора, которая содержит сведения о том, как вновь примен

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

Проход анализа.
При проходе анализа (analysis pass) NTFS просматривает журнал транзакций в прямом направлении, начиная с последней операции контрольной точки, чтобы найти записи м

Проход повтора.
На проходе повтора (redo pass) NTFS сканирует журнал транзакций в прямом направлении, начиная с LSN самой старой записи, которая была обнаружена на проходе анализа. Она ищет записи

Проход отмены.
Откатывает неподтверждённые транзакции. В таблице транзакций для каждой незавершённой транзакции хранится LSN.   Транзакция 1 – Транзакция 2 – – – – – – Каж

Переназначение плохих кластеров.
Не восстанавливает данные. Для восстановления используются три схемы избыточного хранения: 1. Зеркальные наборы. 2. Дуплексные наборы. 3. Чередование дис

Выбор операционной системы.
Во время загрузки Ntldr считывает файл Boot.ini. Если в этом файле за-Дан выбор одной из нескольких ОС, будет выведен запрос (Выберите операционную систему для запуска

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

Компоновка программы
TLINK [ключи] список_объектных_файлов [,имя_загрузочного_модуля] [,имя_файла_карты] [,имя_файла_библиотеки] [,имя_файла_определений] [,имя_ресурсного_файла] Ключ /v указывает на н

Листинг Копирование строки
<1> ; - Prg.asm - <2> masm <3>model small <4> .data <5> ... <6> str_l db "Асс

Команды циклического сдвига
К командам линейного сдвига относятся команды, осуществляющие сдвиг по следующему алгоритму. 1. Очередной «выдвигаемый» бит устанавливает флаг CF. 2. Бит, появляющийся с другого к

Команды циклического сдвига через флаг переноса CF.
К командам простого циклического сдвига относятся: rol перанд, счетчик_сдвигов — циклический сдвиг влево (Rotate Left). Содержимое операнда сдвигается влево на количество

Перечень команд условного перехода для команды cmp
Типы операндов Мнемокод команды услов­ного перехода Критерий условного перехода Значения флагов для перехода

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги