-Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в pronchenko-dmitry

 -Сообщества

Читатель сообществ (Всего в списке: 1) axeeffect_ru

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 07.09.2008
Записей:
Комментариев:
Написано: 496




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

Как установить WordPress

Воскресенье, 16 Ноября 2008 г. 16:56 + в цитатник
Написал замечательный пост о том как установить WordPress

Регаюсь в блогуне.

Суббота, 15 Ноября 2008 г. 17:42 + в цитатник
И так, регаюсь в блогуне . Что такое блогун объяснять думаю не стоит, у них кстати тоже есть свой блог ))).


Блогун - монетизируем блоги

Метки:  

Редирект!!

Пятница, 07 Ноября 2008 г. 21:55 + в цитатник
Проводя время в интернете, кликаете по ссылкам. Случалось нажимая на ссылку www.хомячки.ru попадать на совсем не интересующее Вас www.нам_это_не_надо.ru ? Да конечно случалось)) и не раз!!
Хотите узнать почему это происходит? А может вы веб мастер и хотите реализовать это?
Тогда данная статья точно Вас заинтересует!!

Читать полную статью о редиректе!

Метки:  

Барак Абама

Четверг, 06 Ноября 2008 г. 19:22 + в цитатник
Новый президент в америке....


Читать полный пост!!

Чертова реклама

Среда, 05 Ноября 2008 г. 08:51 + в цитатник
Что то перестал мне последнее время нравиться сервис LiveInternet. Поражает огромное обилие рекламы повсюду. Я конечно понимаю что это огромный заработок, но можно было хотябы сделать ее как-то менее раздражающей...

Рассылка как инструмент продвижения.

Вторник, 04 Ноября 2008 г. 14:10 + в цитатник
ТУТ можно прочитать о том как привлекать посетителей на ваш блог путем рассылки.

устройство ядра Windows Vista: Часть 3

Вторник, 23 Сентября 2008 г. 15:40 + в цитатник
До сих пор в этой серии освещались усовершенствования ядра Windows Vista, относящиеся к процессам, системе ввода и вывода, управлению памятью, запуску системы, завершению работы системы и управлению питанием. В данной третьей и последней

части будут рассмотрены компоненты и усовершенствования, относящиеся к вопросам надежности, восстановления и безопасности.

В компоненте управления учетными записями пользователей (UAC — User Account Control), который не рассматривается в этой серии, используется несколько разных технологий, включая виртуализацию файловой системы и реестра для устаревших приложений, согласие на повышение уровня для получения доступа к административным правам и механизм Windows® Integrity Level для изоляции процессов, работающих с административными правами, от процессов с низким уровнем привилегий, работающих в рамках одной и той же учетной записи. Подробное обсуждение структуры компонента UAC появится в будущем выпуске TechNet Magazine.

В операционной системе Windows Vista™ повышение надежности системы и расширение возможностей пользователя при диагностике неполадок системы и приложений достигается посредством ряда новых компонентов и усовершенствований. Например, модуль регистрации отслеживания событий ядра для Windows (ETW) всегда находится в активном состоянии, создавая в кольцевом буфере события отслеживания для операций с файлами, реестром, прерываний и операций других видов. При возникновении неполадки новая диагностическая инфраструктура Windows (WDI) делает моментальный снимок буфера и анализирует его локально или загружает в службу технической поддержки Майкрософт для поиска и устранения неполадки.

Новый монитор производительности и надежности позволяет пользователям соотносить ошибки, например, сбои и зависания, с изменениями, внесенными в настройку системы. Мощный инструмент восстановления системы (SRT) заменяет консоль восстановления для восстановления в автономном режиме систем, не подлежащих перезагрузке.

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

Диспетчер транзакций ядра

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

Приложения, написанные для Windows Vista, при очень небольшой затрате усилий могут приобрести возможности автоматического восстановления после ошибок, используя для этого новую поддержку транзакций в NTFS и реестре, обеспечиваемую диспетчером транзакций ядра. Если приложению требуется выполнить ряд связанных изменений, оно может либо создать транзакцию координатора распределенных транзакций (DTC) и дескриптор транзакции KTM, либо напрямую создать дескриптор KTM и уставить связь между изменениями файлов и разделов реестра с транзакцией. В случае успешного завершения всех изменений приложение выполняет транзакцию, и изменения применяются, но в любой момент вплоть до этой точки приложение может выполнить откат транзакции, после чего изменения будут аннулированы.

Следующее преимущество состоит в том, что другие приложения не видят изменений, внесенных в транзакции, пока транзакция не будет завершена, а приложения, использующие DTC в Windows Vista и готовящийся к выпуску сервер Windows Server®, носящий кодовое название «Longhorn», могут координировать свои транзакции с помощью SQL Server™, сервера очереди сообщений Microsoft® (MSMQ) и других баз данных. Следовательно, служба обновления приложений, использующая транзакции KTM, никогда не оставит приложение в противоречивом состоянии. Именно поэтому как инструмент обновления Windows, так и инструмент восстановления системы используют транзакции.

Являясь основой поддержки транзакций, KTM обеспечивает диспетчерам транзакционных ресурсов, таких как NTFS и реестр, возможность координировать свои обновления в случае конкретного набора изменений, выполненных приложением. В Windows Vista файловая система NTFS использует для поддержки транзакций расширение TxF. Реестр использует аналогичное расширение с названием TxR. Эти диспетчеры ресурсов режима ядра работают совместно с KTM, координируя состояние транзакции, точно так же, как диспетчеры ресурсов пользовательского режима используют DTC для координации состояния транзакции в нескольких диспетчерах ресурсов пользовательского режима. Сторонние разработчики также могут использовать KTM для реализации своих собственных диспетчеров ресурсов.

Как TxF, так и TxR определяют новый набор интерфейсов файловой системы и реестров, аналогичных существующим, за исключением того, что в них включен параметр транзакции. Если приложению требуется создать файл в рамках транзакции, сначала используется KTM для создания транзакции, затем результирующая обработка транзакции передается интерфейсу API создания нового файла.

Как TxF, так и TxR основаны на быстро работающих функциях ведения журнала файловой системы, обеспечиваемых общей системой файлов журнала или системой CLFS (Common Log File System) (%SystemRoot%\System32\Clfs.sys), которая была введена в Windows Server 2003 R2. TxR и TxF используют CLFS для надежного хранения транзакционных изменений до завершения транзакции. Это позволяет им обеспечивать транзакционное восстановление и гарантии даже в случае сбоя в подаче питания. Кроме журнала CLFS расширение TxR создает набор связанных файлов журнала для отслеживания изменений в системном файле реестра в %Systemroot%\System32\Config\Txr, как показано на рис. 1, а также отдельные наборы файлов журналов для каждого пользовательского куста реестра. TxF хранит транзакционные данные для каждого тома в скрытом каталоге на томе с именем \$Extend\$RmMetadata.
Усовершенствованная поддержка при сбоях

В случае возникновения в Windows неустранимой ошибки режима ядра — из-за ошибок в драйвере устройства, сбоев оборудования или операционной системы — выполняется попытка предотвратить повреждение данных, хранящихся на диске, посредством остановки работы системы после отображения печально известного «синего экрана» и, если имеется соответствующая настройка, записи содержимого некоторого участка или всей физической памяти в файл аварийной копии памяти. Файлы аварийной копии памяти полезны, поскольку при перезагрузке после сбоя интерактивная служба Майкрософт для анализа сбоя (OCA — Online Crash Analysis) предлагает выполнить их анализ для поиска причины сбоя. При желании их можно проанализировать самостоятельно с помощью средств Майкрософт для отладки в Windows).

Однако в предыдущих версиях Windows поддержка файлов аварийной копии памяти оставалась не активированной до момента инициализации файлов страниц памяти процессом диспетчера сеанса (%Systemroot%\System32\Smss.exe). Это означало, что любые важные ошибки, возникавшие до этого момента, приводили к отображению синего экрана, а файл с копией памяти не создавался. Поскольку основная часть инициализации драйвера устройства происходит до запуска Smss.exe, сбои на раннем этапе никогда не сопровождаются аварийными копиями памяти, что крайне затрудняет выявление причин.

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

В Windows Vista усовершенствована также обработка сбоев приложений. В предыдущих версиях Windows при возникновении сбоя приложения выполнялся обработчик необработанных исключений. Обработчик запускал процесс Майкрософт для создания сообщения об ошибках приложения (AER) (%Systemroot%\System32\Dwwin.exe), отображающий диалоговое окно с указанием программы, в которой возник сбой, и запросом об отправке сообщения об ошибке в Майкрософт. Однако, если во время сбоя повреждался стек основного потока процесса, при выполнении обработчика необработанных исключений возникал сбой, приводящий к завершению процесса ядром, мгновенному исчезновению окон программы и полному отсутствию диалогового окна с сообщением.

В Windows Vista обработка ошибок перемещена из контекста обработки сбоев в новую службу создания сообщений об ошибках Windows (WER). Эта служба реализуется посредством библиотеки DLL (%Systemroot%\System32\Wersvc.dll) в рамках процесса размещения службы. При возникновении сбоя приложения по-прежнему выполняется обработчик необработанных исключений, но обработчик отправляет сообщение службе WER, и служба запускает процесс создания сообщений об отказах WER (%Systemroot%\System32\Werfault.exe) для отображения диалогового окна с сообщением об ошибке. Если стек поврежден, и возникает сбой обработчика необработанных исключений, обработчик выполняется повторно и снова возникает сбой, то, в конце концов, исчерпывая весь стек потока (вспомогательная область памяти), и в этот момент вступает в игру ядро и отправляет службе сообщение с уведомлением о сбое.

Отличие этих двух подходов видны на рис. 2 и 3, где показана взаимосвязь процессов Accvio.exe, тестовой программы, в которой возник сбой, и процессов создания сообщений об ошибках, выделенных зеленым цветом, в операционных системах Windows XP и Windows Vista. Новая архитектура обработки ошибок в Windows Vista означает, что программы больше не будут молча заканчивать работу, не предлагая Майкрософт возможности получить сообщение об ошибке, и разработчики программного обеспечения смогут усовершенствовать свои приложения.
Теневое копирование тома

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

Эти моментальные снимки не являются, по существу, полными копиями томов. Скорее они представляют собой виды тома из некоторой предшествующей точки, содержащие оперативные данные тома, перекрытые копиями секторов тома, подвергавшихся изменениям с момента создания моментального снимка. Драйвер поставщика моментальных снимков томов (%Systemroot\%System32\Drivers\Volsnap.sys) контролирует операции, в которых участвуют тома, и, прежде чем разрешить изменение секторов, делает их резервные копии, сохраняя исходные данные в файле, связанном с моментальным снимком, в каталоге тома, содержащем системную информацию о томе.

В Windows Server 2003 администраторам предоставлялась возможность управлять моментальными снимками на сервере и пользователям — на клиентских системах посредством теневых копий общих папок. Эта функция обеспечивала постоянные моментальные снимки, доступ к которым пользователи получали с помощью вкладки «Предыдущие версии» из диалоговых окон свойств проводника для своих папок и файлов, находящихся на общих файловых ресурсах сервера.

Компонент «Предыдущие версии» операционной системы Windows Vista обеспечивает поддержку для всех клиентских систем, автоматически создавая моментальные снимки томов, как правило, один раз в день, доступ к которым можно получить из диалоговых окон свойств проводника с помощью того же интерфейса, который используется теневыми копиями общих папок. Это позволяет просматривать, восстанавливать и копировать старые версии файлов и каталогов, которые могли быть случайно изменены или удалены. Не являясь с технической точки зрения новой технологией, реализация теневого копирования томов в компоненте «Предыдущие версии» операционной системы Windows Vista оптимизирует аналогичную функцию, существовавшую в Windows Server 2003, для применения в клиентской рабочей среде.

В Windows Vista преимущества моментальных снимков томов используются также для того, чтобы объединить механизмы защиты пользовательских и системных данных и избежать сохранения избыточного объема данных резервного копирования. Если установка приложения или внесение изменений в конфигурацию приводят к неправильному или нежелательному поведению, можно воспользоваться средством восстановления системы — компонентом, введенным в линейку операционных систем Windows NT® в системе Windows XP, чтобы восстановить системные файлы до состояния, в котором они находились в момент создания точки восстановления.

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

BitLocker

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

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

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

Для упрощения процедуры шифрования загрузочного тома (том, на котором находится каталог Windows), включая все его системные файлы и данные, в Windows Vista введен компонент шифрования диска Windows BitLocker, предназначенный для шифрования всего тома. В отличие от EFS, которая реализуется посредством драйвера файловой системы NTFS и работает на уровне файлов, BitLocker выполняет шифрование на уровне тома с помощью драйвера шифрования всего тома (FVE — Full Volume Encryption) (%Systemroot%\System32\Drivers\Fvevol.sys)
FVE представляет собой драйвер фильтра, поэтому он автоматически отслеживает все запросы операций ввода и вывода, которые система NTFS передает тому, шифруя блоки во время их записи и расшифровывая их во время чтения с помощью ключа шифрования всего тома (FVEK — Full Volume Encryption Key), назначенного тому во время его первоначальной настройки для использования компонента BitLocker. По умолчанию тома шифруются с использованием 128-разрядного ключа AES и 128-разрядного ключа рассеивателя. Поскольку шифрование и расшифровка выполняются на уровне системы ввода и вывода, находящейся ниже уровня системы NTFS, она воспринимает том как незашифрованный и не обязана знать о том, что компонент BitLocker активен. Однако при попытке чтения данных с тома без использования операционной системы Windows данные на томе выглядят как случайные.

Ключ FVEK шифруется с помощью главного ключа тома (VMK — Volume Master Key) и хранится на томе в области, специально отведенной для метаданных. При настройке компонента BitLocker предлагается ряд вариантов защиты ключа VMK, зависящих от возможностей оборудования системы. Если в системе имеется модуль доверенной платформы (TPM ), поддерживающий версию 1.2 спецификации TPM, и имеется соответствующая поддержка BIOS, ключ VMK может быть зашифрован либо с помощью TPM, когда система шифрует VMK с помощью ключа, хранящегося в TPM и ключа, хранящегося на флэш-устройстве USB, либо ключ может быть зашифрован с помощью ключа, хранящегося в TPM, и ПИН-кода, вводимого при загрузке системы. Для систем, в которых нет модуля TPM, BitLocker предлагает вариант шифрования ключа VMK с помощью ключа, хранящегося на внешнем флэш-устройстве USB. В любом случае необходим незашифрованный том емкостью 1,5 ГБ с системой NTFS, на котором хранятся диспетчер загрузки (Boot Manager) и база данных конфигурации загрузки (BCD).

Преимущество использования модуля TPM заключается в том, что в BitLocker используются функции TPM для гарантии того, что BitLocker не расшифрует ключ VMK и не разблокирует том, если BIOS или загрузочные файлы системы были изменены с момента активирования BitLocker. При первоначальном шифровании системного тома и при каждом обновлении любого из упомянутых компонентов BitLocker вычисляет хэши SHA-1 для этих компонентов и все хэши, называемые измерениями, сохраняет в разных регистрах конфигурации платформы (PCR) модуля TPM с помощью драйвера устройства TPM (%Systemroot%\Sys­tem32\Drivers\Tpm.sys). Затем модуль TPM используется для запечатывания ключа VMK. При выполнении этой операции используется хранящийся в TPM закрытый ключ для шифрования VMK и значения, хранящиеся в регистрах PCR, наряду с другими данными, которые BitLocker передает модулю TPM. Затем BitLocker сохраняет запечатанный ключ VMK и зашифрованный ключ FVEK в области метаданных тома.

При загрузке системы она выполняет измерение своего собственного хэширования и кода загрузки PCR и записывает хэш в первый PCR модуля TPM. Затем она хэширует BIOS и сохраняет это измерение в соответствующем PCR. В свою очередь BIOS хэширует следующий компонент из последовательности начальной загрузки, основную загрузочную запись (MBR) загрузочного тома, и эта процедура продолжается до тех пор, пока не будет измерен загрузчик операционной системы. Каждый последующий фрагмент кода, который выполняется, отвечает за измерение загружаемого им кода и за сохранение измерения в соответствующем регистре модуля TPM. Наконец, когда пользователь выбирает загружаемую операционную систему, диспетчер загрузки (Bootmgr) считывает зашифрованный ключ VMK с тома и выдает модулю TPM запрос на его раскрытие. Только в том случае, когда все измерения совпадают с теми, которые были сделаны при запечатывании ключа VMK, включая дополнительный ПИН-код, TPM успешно расшифровывает ключ VMK.

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

Проверка целостности кода

Вредоносное программное обеспечение, реализованное в виде драйвера устройства режима ядра, включая программы захвата прав администратора, работает с использованием того же уровня привилегий, что и ядро, и поэтому его выявление и удаление является наиболее сложной задачей. Такие программы могут изменять поведение ядра и других драйверов таким образом, что становятся практически неуловимыми. Компонент Windows Vista, обеспечивающий целостность кода режима ядра, известный также под названием подписывания кода режима ядра (KMCS), допускает загрузку драйверов устройств только в том случае, если они опубликованы и снабжены цифровой подписью разработчиков, проверенных одним из нескольких центров сертификации (CA). По умолчанию компонент KMCS обязательно присутствует в 64-разрядных версиях Windows Vista.

Поскольку центры сертификации берут плату за свои услуги и выполняют основные проверки происхождения кода, такие как проверка подлинности предприятия, довольно сложно создать анонимное вредоносное программное обеспечение, работающее в режиме ядра в 64-разрядной версии Windows Vista. Более того, вредоносная программа, которой удается пройти процедуру проверки, может, в принципе, оставить следы, ведущие к ее автору, в случае ее обнаружения в поврежденной системе. У компонента KMCS есть дополнительные применения, такие как предоставление информации группе Майкрософт, занимающейся интерактивным анализом сбоя, в случае возникновения подозрения о том, что драйвер содержит ошибку, вызывающую сбои пользовательских систем и разблокирование мультимедийного содержимого высокой четкости. Эти применения будут кратко описаны.

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

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

Windows выполняет также проверку соответствующих цепочек сертификатов вплоть до одной из служб выдачи корневых сертификатов, встроенных в загрузчик Windows и ядро операционной системы. Попытки загрузить неподписанный 64-разрядный драйвер невозможны в рабочей системе, поскольку в отличие от диспетчера Plug and Play, отображающего диалоговое окно с предупреждением, когда ему передается команда загрузить драйвер, не имеющий подписи, подтверждающей, что драйвер проходил проверку WQHL, 64-разрядная версия Windows Vista, каждый раз, когда она блокирует загрузку неподписанного драйвера, безмолвно записывает событие в журнал событий приложения проверки целостности кода, аналогичное показанному на рис. 5. 32-разрядная версия Windows Vista также проверяет подписи драйверов, но допускает загрузку неподписанных драйверов. Их блокирование привело бы к нарушению модернизированных систем Windows XP, которым требуются драйверы, которые были загружены в Windows XP, а также допускает поддержку оборудования, для которого существуют только драйверы Windows XP. Однако при выполнении загрузки неподписанного драйвера 32-разрядная версия Windows Vista также записывает события в журнал событий целостности кода.
Поскольку подписывание кода обычно используется для пометки кода в качестве версии, прошедшей тщательную официальную проверку, издатели, как правило, не стремятся подписывать тестовый код. Поэтому в Windows Vista включен режим тестового подписывания, который можно включать и отключать с помощью инструмента Bcdedit (описан в моей статье в мартовском выпуске TechNet Magazine за 2007 г.) и в рамках которого выполняется загрузка драйверов режима ядра, имеющих цифровую подпись, сделанную тестовым сертификатом, созданным собственным центром сертификации компании. Этот режим предназначен для использования программистами во время разработки кода. Когда операционная система Windows находится в этом режиме, на рабочем столе отображаются маркеры
Защищенные процессы

Мультимедийное содержимое следующего поколения, такое как HD-DVD, BluRay и другие форматы, имеющие лицензию AACS (Advanced Access Content System), получат широкое распространение в течение ближайших нескольких лет. В Windows Vista используется ряд технологий под общим названием Protected Media Path (PMP), которые требуются стандартом AACS для воспроизведения такого содержимого. К технологиям PMP относятся PUMA (Protected User-Mode Audio) и PVP (Protected Video Path), совместное использование которых обеспечивает для аудио и видео драйверов, а также для приложений медиа-проигрывателей, механизмы, предотвращающие запись содержимого в формате высокой четкости несанкционированными программами или аппаратурой.

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

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

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

Более того, для предотвращения повреждений извне весь исполняемый код, загруженный в защищенный процесс, включая его исполняемый образ и библиотеки DLL, должен быть подписан либо корпорацией Майкрософт (WHQL) с использованием флага защищенной среды (PE), либо, если это аудиокодек, он должен быть подписан разработчиком с использованием сертификата подписывания DRM, полученным от Майкрософт. Поскольку код режима ядра может получить полный доступ к любому процессу, включая защищенные, а 32-разрядная версия Windows допускает загрузку неподписанного кода режима ядра, ядро предоставляет интерфейс API для защищенных процессов. Этот интерфейс предназначен для выдачи запроса о «чистоте» среды режима ядра и использования результата для разблокирования высококачественного содержимого только в том случае, если среди загружаемого кода нет неподписанного.
Идентификация защищенных процессов

Не существует интерфейсов API, предназначенных специально для идентификации защищенных процессов, но имеется возможность выполнить косвенную идентификацию, основываясь на имеющейся ограниченной информации об этих процессах и невозможности выполнять их отладку даже при использовании учетной записи с административными правами. Процесс изоляции графа аудиоустройств (%Systemroot%\System32\Audiodg.exe) используется для воспроизведения дисков DVD, закодированных с помощью CSS, и в окне диспетчера задач его можно идентифицировать как защищенный процесс, поскольку диспетчер задач не в состоянии получить его командную строку, виртуализацию и состояние предотвращения выполнения данных, даже если он запускается с правами администратора.
Рандомизация загрузки адресного пространства

Несмотря на такие меры, как предотвращение выполнения данных и усовершенствованная проверка ошибок компилятора, создатели вредоносного программного обеспечения продолжают находить уязвимости переполнения буфера, позволяющие им заражать процессы, ориентированные на работу в сети, такие как обозреватель Internet Explorer®, службы Windows и приложения сторонних разработчиков, с целью получения опорного пункта в системе. После удачного заражения процесса, однако, им необходимо использовать интерфейсы API Windows для выполнения своей конечной цели — чтения данных пользователя или обеспечения своего постоянного присутствия посредством изменения параметров пользовательской или системной настройки.

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

Компонент рандомизации загрузки адресного пространства (ASLR) в операционной системе Windows Vista лишает вредоносные программы возможности выяснить местоположение интерфейсов API. Это достигается за счет того, что при каждой загрузке системы системные библиотеки DLL и исполняемые модули загружаются в новом месте. На раннем этапе процедуры первоначальной загрузки диспетчер памяти выбирает случайное смещение для загрузки образа DLL из одного из 256 адресов (выровненных на 64 кБ), имеющихся в области размером 16 МБ в верхней части адресного пространства пользовательского режима. Когда библиотеки DLL, в заголовке образа которых присутствует новый флаг динамического размещения, загружаются в процесс, диспетчер памяти размещает их в памяти начиная с адреса смещения загрузки образа и продолжает по направлению к меньшим адресам.

Исполняемые образы, в которых установлен данный флаг, проходят аналогичную процедуру загрузки в случайную точку, выровненную на 64 КБ, в области размером 16 МБ от базового адреса загрузки, хранящегося в заголовке их образа. Кроме того, если данная библиотека DLL или исполняемый образ снова загружается после того, как был выгружен всеми использовавшими его процессами, диспетчер памяти снова выбирает для загрузки случайное местоположение. На рис. 7 показан пример компоновки адресного пространства для 32-разрядной системы Windows Vista, включая области, из которых ASLR выбирает смещение для загрузки образа и адрес загрузки исполняемого образа.
Только образы, имеющие флаг динамического размещения, к которым относятся все библиотеки DLL операционной системы Windows Vista и исполняемые образы, можно размещать в новых местах, потому что перемещение устаревших образов может привести к нарушению внутренних допущений о месте загрузки образов, сделанных разработчиками. В пакете обновления Visual Studio® 2005 SP1 добавлена поддержка для установки этого флага, чтобы сторонние разработчики могли воспользоваться преимуществами механизма ASLR в полной мере.

Назначение адресов загрузки библиотек DLL, выбираемых случайным образом из 256 местоположений, не лишает вредоносные программы возможности угадывать правильное местоположение интерфейса API, но оно резко снижает скорость распространения сетевого червя и препятствует надежной работе вредоносной программы, получающей только один шанс в инфицированной системе. Кроме того, у стратегии ASLR по изменению местоположения есть дополнительное преимущество, заключающееся в том, что адресные пространства используются более эффективно, чем в предыдущих версиях Windows — создаются обширные участки свободной памяти для распределения памяти смежными областями, уменьшается число таблиц страниц, выделяемых диспетчером памяти для отслеживания компоновки адресного пространства, и минимизируются несовпадения в буфере TLB.

Повышение безопасности служб

Службы Windows являются идеальными целями для атак со стороны вредоносного программного обеспечения. Многие из них для расширения функциональных возможностей предлагают доступ в сеть, тем самым увеличивая уязвимость при удаленном доступе к системе. Большая часть служб выполняется с более высоким уровнем привилегий, чем у стандартных учетных записей пользователей, что дает шанс повысить уровень привилегий в локальной системе, если они будут затронуты вредоносным программным обеспечением. По этой причине в Windows расширялись изменения, сделанные в пакете обновления Windows XP SP2 и направленные на снижение назначаемого службам уровня привилегий и доступа до уровня, необходимого для выполнения их ролей. Например, в пакете обновления 2 для Windows XP введены учетные записи локальной службы и сетевой службы, содержащие только подмножество тех привилегий, которые были доступны учетной записи локальной системы, в рамках которой эти службы выполнялись ранее. Это сводит к минимуму права доступа, получаемые злоумышленником, использующим службу.
ASLR в действии

Влияние, оказываемое ASLR, легко оценить путем сравнения адресов загрузки библиотеки DLL для процесса в двух разных сеансах загрузки с помощью такого средства, как Process Explorer от Sysinternals (обозреватель процессов). На этих двух снимках экрана, сделанных в двух разных сеансах, сначала библиотека Ntdll.dll загружалась в проводник по адресу 0x77A30000, а затем по адресу 0x77750000.
В моей предыдущей статье было описано, как службы выполняются в их собственных сеансах изолированно от учетных записей пользователей, но в Windows Vista расширено также применение принципа наименьшего уровня привилегий путем дальнейшего уменьшения уровня привилегий и доступа к файлам, разделам реестра и портам брандмауэра, назначаемого большинству служб. В Windows Vista определена новая учетная запись группы, названная идентификатором безопасности службы (SID), уникальная для каждой службы. Служба может устанавливать разрешения на своих ресурсах, чтобы доступ к ним имелся только для идентификатора SID их службы, предотвращая, в случае компрометации службы, получение доступа другими службами, работающими в рамках этой же учетной записи. Идентификатор SID службы можно просмотреть, воспользовавшись командой sc showsid с указанием имени службы
Идентификаторы SID служб защищают доступ к ресурсам, принадлежащим конкретной службе, но по умолчанию у служб имеется еще доступ ко всем объектам, к которым имеет доступ учетная запись пользователя, в рамках которой они работают. Например, служба, работающая в рамках учетной записи локальной службы, может не иметь доступа к ресурсам, созданным другой службой, работающей в качестве локальной службы в другом процессе, защищающем свои объекты с помощью разрешений, ссылающихся на идентификатор SID службы. Однако она по-прежнему может читать и записывать любые объекты, для доступа к которым имеет разрешения локальная служба (и любые группы, к которым принадлежит локальная служба, такие как группа «Служба»).

Поэтому в Windows Vista введен новый ограниченный тип службы, названный службой с ограничениями на запись, который разрешает службе доступ для записи только к объектам, доступным ее идентификатору SID, группе «Все» и идентификатору SID, назначенному сеансу работы. Для реализации этого подхода в системе используются ограниченные идентификаторы SID — тип SID, введенный ранее в Windows 2000. Если процесс, открывающий объект, является службой с ограничениями на запись, алгоритм проверки доступа изменяется таким образом, чтобы SID, который не был назначен процессу ни в ограниченной форме, ни в форме без ограничений, не мог использоваться для предоставления процессу доступа к объекту для записи. Следующая команда дает возможность выяснить, есть ли у службы ограничения:

sc qsidtype [service]

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

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

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

Заключение

На этом завершается состоящий из трех частей обзор изменений, внесенных в ядро операционной системы Windows Vista. Некоторые компоненты и усовершенствования не были рассмотрены или упомянуты, например, новый рабочий пул потоков для разработчиков приложений, новые механизмы синхронизации, такие как общие блокировки средств чтения и записи, разметка потоков служб, поддержка интерактивной проверки диска NTFS и изменение объема том, а также новый механизм IPC ядра, названный ALPC. Для получения дополнительных сведений об этих и других компонентах см. следующее издание Windows Internals (Внутренняя структура Windows), публикация которого запланирована до конца 2007 г.
Просмотр службы с ограничениями на запись

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

svchost -k LocalServiceNoNetwork

К службам, настроенным для работы в рамках этого процесса, относятся служба базовой фильтрации, служба политики диагностики, брандмауэр Windows, журналы и оповещения производительности и Windows Media® Center Service Starter.

На этом экране показан текстовый формат идентификатора SID службы базовой фильтрации, NT SERVICE\BFE, представленный один раз с флагом Restricted, и еще раз без него, поэтому у процесса есть доступ к ресурсам, доступ к которым имеется в рамках этой учетной записи. Однако у него не обязательно имеется доступ к другим объектам, доступным, как правило, для учетной записи локальной службы. Например, поскольку учетная запись NT AUTHORITY\SERVICE не представлена в маркере процесса с флагом ограничений, процесс не может изменять объекты, предоставляющие доступ для записи только этой учетной записи, но не другим учетным записям в маркере, имеющим флаг ограничений.

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

устройство ядра Windows Vista: часть 2

Вторник, 23 Сентября 2008 г. 11:29 + в цитатник
С каждым новым выпуском ОС Windows® повышается масштабируемость и производительность системы. ОС Windows Vista ™ не является исключением. Диспетчер памяти ОС Windows Vista содержит множество нововведений, в том числе более широкое использование методов синхронизации без блокировок, улучшенная гранулярность блокировки, более плотная упаковка структур данных, увеличенный размер страниц операций ввода-вывода, поддержка архитектур памяти современных графических процессоров и более эффективное использование аппаратного буфера ассоциативной трансляции (TLB). Помимо этого диспетчер памяти в Windows Vista поддерживает динамическое выделение адресного пространства для меняющейся рабочей нагрузки.

В ОС Windows Vista впервые представлены четыре новые технологии увеличения производительности: SuperFetch, ReadyBoost, ReadyBoot и ReadyDrive. Они будут подробно рассмотрены далее в этой статье.

Динамическое адресное пространство ядра

ОС Windows и приложения, выполняемые под ее управлением, сталкиваются с ограничениями адресного пространства 32-разрядных процессоров. Размер адресного пространства ядра ОС Windows по умолчанию ограничен значением 2 Гбайт (половина 32-разрядного виртуального адресного пространства). Вторая половина зарезервирована для использования процессом, выполняющимся в текущий момент на ЦП. На свою половину памяти ядро должно отобразить себя, драйверы устройств, кэш файловой системы, стеки ядра, структуры данных кода для каждого сеанса, а также невыгружаемые (заблокированные в физической памяти) и выгружаемые буферы, выделенные драйверами устройств. В операционных системах, предшествовавших ОС Windows Vista, диспетчер памяти распределял адресные пространства для перечисленных нужд в момент загрузки системы. Этот негибкий механизм приводил иногда к ситуациям, когда некоторые области адресного пространства оказывались исчерпанными, в то время как в других еще оставалось много свободного места. Нехватка адресного пространства в одной из областей может привести к сбоям в работе приложений и нарушить операции ввода-вывода, выполняемые драйверами устройств.

В 32-разрядной версии ОС Windows Vista диспетчер памяти динамически распределяет адресное пространство ядра, выделяя и освобождая адресное пространство с учетом потребностей текущей рабочей нагрузки. Таким образом, количество виртуальной памяти, используемое для хранения выгружаемых буферов, может увеличиваться, когда этого требуют драйверы устройств, и уменьшаться, когда драйверы устройств освобождают память. Это позволяет ОС Windows Vista поддерживать более широкий диапазон рабочих нагрузок, а 32-разрядная версия следующего выпуска ОС Windows Server® (кодовое название «Longhorn») сможет поддерживать больше одновременно работающих пользователей сервера терминалов.

Конечно, в 64-разрядной версии ОС Windows Vista пределы адресных пространств не представляют практических ограничений, поэтому они не требуют каких-либо особых мер и установлены на максимальные значения.

Приоритеты памяти

Помимо приоритетов ввода-вывода (которые обсуждались в предыдущем выпуске), в ОС Windows Vista появились также и приоритеты памяти. Чтобы понять, как система использует приоритеты памяти, нужно разобраться, как в диспетчере памяти реализован кэш памяти, называемый списком ожидания (Standby List). Во всех версиях ОС Windows, предшествовавших Windows Vista, физическая страница, затребованная системой у приложения (размер страницы обычно составляет 4 Кбайт), помещалась диспетчером памяти в конец списка ожидания. Если процессу снова требовался доступ к этой странице, диспетчер памяти извлекал ее из списка ожидания и вновь назначал процессу. Если процессу требовалась новая страница физической памяти, но свободной памяти не было, диспетчер памяти отдавал процессу страницу из начала списка ожидания. В такой схеме все страницы в списке ожидания были равнозначны, и порядок страниц определялся только временем их помещения в список.

В ОС Windows Vista каждая страница памяти имеет приоритет от 0 до 7, и диспетчер памяти разделяет список ожидания на 8 списков, в каждом из которых хранятся страницы с соответствующим приоритетом. Если диспетчеру памяти нужно забрать страницу из списка ожидания, первыми будут извлекаться страницы из списков с более низким приоритетом. Приоритет страницы обычно совпадает с приоритетом потока, который первым вызвал выделение этой страницы. (Приоритет страницы с совместным доступом соответствует наивысшему приоритету памяти среди потоков, совместно использующих эту страницу). Поток наследует значение приоритета памяти от процесса, которому он принадлежит. Диспетчер памяти назначает низкий приоритет для страниц, которые он считывает с диска, когда предвидится обращение процесса к памяти.

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

Функция SuperFetch

Среди существенных изменений в работе диспетчера памяти – изменение способа управления физической памятью. У способа управления на основе списка ожидания, который использовался в предыдущих версиях ОС Windows, есть два ограничения. Во-первых, приоритет страниц определяется только на основании предшествующего поведения процессов без предсказания возможных будущих требований процессов к памяти. Во-вторых, определение приоритета осуществляется только на основании списка страниц памяти, которыми процесс владеет в конкретный момент времени. Эти недостатки могут привести к таким последствиям, как «послеобеденный синдром», когда пользователь оставляет на некоторое время свое рабочее место, и на компьютере запускается системное приложение, интенсивно работающее с памятью (например, выполняется сканирование диска антивирусом или производится дефрагментация диска). Работа такого приложения приводит к тому, что данные пользовательских приложений, которые находились в кэше, оказываются перезаписанными. Вернувшись на рабочее место, пользователь в течение некоторого времени страдает от низкой производительности, поскольку приложения запрашивают свои данные и код с диска.

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

Функция SuperFetch реализована в библиотеке %SystemRoot%\System32\Sysmain.dll; она выполняется в качестве службы Windows внутри процесса Service Host (%SystemRoot%\System32\Svchost.exe). Благодаря поддержке со стороны диспетчера памяти эта схема позволяет службе получать историю обращений к страницам памяти и отдавать диспетчеру памяти указания по предварительной загрузке данных или кода из файлов на диске или из файла подкачки в список ожидания, а также присваивать приоритет страницам памяти. Служба SuperFetch существенно расширяет отслеживание страниц памяти, учитывая страницы, которые были ранее загружены в память, но впоследствии освобождены диспетчером памяти для других данных и кода. Эта информация хранится в папке %SystemRoot%\Prefetch в виде файлов сценариев с расширением «.db» вместе со стандартными файлами упреждающего чтения, используемыми для оптимизации запуска приложений. Располагая подробной информацией об использовании памяти, служба SuperFetch может осуществлять предварительную загрузку данных и кода при освобождении физической памяти.

Когда освобождается память (например, при завершении работы приложения или когда приложение освобождает выделенную память), служба SuperFetch дает диспетчеру памяти инструкцию загрузить недавно выгруженные данные и код. Эта процедура осуществляется со скоростью в несколько страниц в секунду с приоритетом ввода-вывода «Very Low» (очень низкий), поэтому предварительная загрузка не мешает работе пользовательских и других активных приложений. Благодаря этому, когда пользователь оставляет свое рабочее место на время обеденного перерыва, и фоновые задачи, интенсивно работающие с памятью, приводят к выгрузке страниц памяти активных пользовательских приложений, службе SuperFetch зачастую удается вернуть большинство страниц в память еще до того, как пользователь вернется на рабочее место. У службы SuperFetch есть также специальные сценарии поддержки гибернации, ждущего режима, быстрого переключения пользователей (FUS) и запуска приложений. Например, когда система переходит в режим гибернации, служба SuperFetch сохраняет в файле гибернации данные и код, доступ к которым вероятнее всего потребуется после загрузки системы, с учетом истории предыдущих переходов в режим гибернации. В случае возобновления работы ОС Windows XP из режима гибернации при обращении к данным, находившимся в кэше до перехода в режим гибернации, необходимо было заново считывать эти данные с диска.

На врезке «Наблюдение за службой SuperFetch» представлены краткие результаты влияния службы SuperFetch на объем доступной памяти.
Наблюдение за службой SuperFetch

После работы в течение некоторого времени в ОС Windows Vista пользователь может заметить, что на вкладке «Быстродействие» диспетчера задач показатель свободной физической памяти становится невысоким. Это объясняется тем, что служба SuperFetch и стандартное кэширование Windows используют всю доступную физическую память для кэширования данных с диска. Например, если сразу после загрузки системы открыть диспетчер задач, можно заметить, что показатель свободной памяти уменьшается, в то время как показатель кэшированной памяти увеличивается. Если запустить приложение, использующее для работы большой объем памяти, а затем завершить его работу (подойдет любой бесплатный «оптимизатор памяти», который выделяет большое количество памяти и затем освобождает ее), или просто скопировать очень большой файл, показатель свободной памяти возрастет, и на графике использования физической памяти будет наблюдаться падение по мере того, как в систему возвращается освобожденная память. Однако через некоторое время служба SuperFetch снова заполнит кэш данными, которые были вытеснены из памяти, и показатель кэшированной памяти возрастет, а показатель свободной памяти уменьшится.
Функция ReadyBoost

Скорость работы ЦП и памяти гораздо выше скорости работы жесткого диска, из-за чего жесткие диски часто являются узким местом для производительности системы. Операции произвольного дискового ввода-вывода особенно сильно влияют на производительность, потому что время позиционирования головок жестких дисков (порядка 10 мс) – это вечность для современных процессоров с тактовой частотой 3 ГГц. Хотя оперативная память идеально подходит для кэширования дисковых данных, ее стоимость сравнительно высока. Флэш-память обычно дешевле оперативной памяти, при этом время произвольного доступа у флэш-памяти может быть на порядок меньше, чем у жесткого диска. Поэтому в ОС Windows Vista добавлена функция под названием ReadyBoost, которая позволяет воспользоваться преимуществами запоминающих устройств на основе флэш-памяти, создавая на них промежуточный уровень кэширования, логически расположенный между оперативной памятью и жесткими дисками.

Функция ReadyBoost состоит из службы, реализованной в файле %SystemRoot%\System32\Emdmgmt.dll, которая выполняется в процессе Service Host, и драйвера фильтра томов %SystemRoot%\System32\Drivers\Ecache.sys (EMD – это сокращение от рабочего названия функции ReadyBoost «External Memory Device» (внешнее устройство памяти), которое использовалось в процессе ее разработки). При подключении запоминающего устройства флэш-памяти к компьютеру служба ReadyBoost определяет производительность этого устройства и записывает результат в раздел реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Currentversion\Emdmgmt
Если объем памяти устройства от 256 МБ до 32 ГБ, скорость передачи для произвольных операций чтения блоками по 4 КБ превышает 2,5 МБ/с, скорость передачи для произвольных операций записи блоками по 512 КБ превышает 1,75 МБ/с, и это устройство еще не используется для кэширования, служба ReadyBoost предложит выделить до 4 ГБайт памяти этого устройства для кэширования дисков. (Хотя служба ReadyBoost может работать с разделами NTFS, максимальный объем кэша ограничен 4 ГБ для совместимости с файловой системой FAT32). Если пользователь соглашается, служба создает в корневой папке устройства файл кэша с именем ReadyBoost.sfcache и отдает службе SuperFetch указание заполнить кэш в фоновом режиме.

После инициализации кэширования службой ReadyBoost драйвер устройства Ecache.sys перехватывает все обращения чтения и записи к локальным жестким дискам (например, диску C:\) и копирует записываемые данные в созданный службой файл кэширования. Драйвер Ecache.sys осуществляет сжатие данных, достигая обычно степени сжатия 2:1, поэтому кэш объемом 4 ГБ, как правило, содержит около 8 ГБ данных. Драйвер шифрует каждый записываемый блок с помощью ключа сеанса, генерируемого случайным образом при каждой загрузке системы; при этом используется алгоритм AES. Шифрование обеспечивает конфиденциальность данных, содержащихся в кэше, на случай извлечения устройства.

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

Функция ReadyBoot

Если в системе установлено менее 512 МБ оперативной памяти, механизм упреждающего чтения при загрузке ОС Windows Vista не отличается от механизма, использовавшегося при загрузке ОС Windows XP. Если же размер оперативной памяти превышает 700 МБ, то для оптимизации процесса загрузки используется кэш в ОЗУ. Размер этого кэша зависит от общего объема доступной памяти; он достаточно велик, чтобы обеспечить эффективное кэширование, но оставляет при этом достаточно свободной памяти для нормального выполнения процедуры загрузки системы.

После каждой загрузки системы служба ReadyBoost (та же самая служба, которая реализует описанную выше функцию ReadyBoost) в моменты простоя ЦП планирует кэширование для следующей загрузки системы. Она анализирует информацию об обращениях к файлам за пять предыдущих загрузок и определяет, к каким файлам производились обращения, и где эти файлы расположены на диске. Обработанная информация об обращениях сохраняется в папке %SystemRoot%\Prefetch\Readyboot в виде файлов с расширением «.fx», а план кэширования сохраняется в разделе реестра HKLM\System\CurrentControlSet\Services\Ecache\Parameters в виде значений типа REG_BINARY с именами, соответствующими именам внутренних дисков.

Кэширование реализуется с помощью того же драйвера, что и в функции ReadyBoost (драйвер Ecache.sys), но управление заполнением кэша во время загрузки осуществляется службой ReadyBoost. Хотя кэш загрузки сжимается так же, как и кэш ReadyBoost, есть еще одно отличие между управлением кэшем в функциях ReadyBoost и ReadyBoot. В отличие от функции ReadyBoost, в режиме ReadyBoot содержимое кэша не изменяется при операциях чтения и записи, а определяется только обновлениями, вносимыми службой ReadyBoost. Служба ReadyBoost удаляет кэш через 90 секунд после начала загрузки или в случае, если требуется дополнительная оперативная память. Статистика использования кэша записывается в раздел реестра HKLM\System\CurrentControlSet\Services\Ecache\Parameters\ReadyBootStats, как показано на рис. 2. Измерение производительности, проведенное в корпорации Майкрософт, показало, что при использовании функции ReadyBoot производительность увеличивается примерно на 20 процентов по сравнению с технологией упреждающего чтения, используемой при загрузке ОС Windows XP.
Функция ReadyDrive

ReadyDrive – это функция ОС Windows Vista, использующая возможности новых гибридных жестких дисков (дисков H-HDD). Гибридный жесткий диск представляет собой жесткий диск со встроенной энергонезависимой флэш-памятью (известной также под названием NVRAM). Как правило, гибридные жесткие диски содержат от 50 МБ до 512 МБ кэш-памяти, но ОС Windows Vista поддерживает кэши размером до 2 ТБ.

Чтобы определить, какие данные следует поместить во флэш-память, ОС Windows Vista использует команды ATA-8. Например, при завершении работы система сохраняет в этом кэше данные для загрузки, что позволяет ускорить следующий запуск системы. При переходе в режим гибернации в кэше сохраняются некоторые части файла гибернации, что ускоряет возобновление работы. Поскольку кэш активен даже когда диск остановлен, система может использовать флэш-память для кэширования записи на диск, что позволяет не раскручивать диск, если компьютер питается от аккумулятора. Остановка диска позволяет существенно снизить энергопотребление по сравнению с обычным режимом работы.

База данных конфигурации загрузки

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

Одним из самых заметных изменений процесса загрузки системы является отсутствие файла Boot.ini в корневой папке системного тома. Это объясняется тем, что конфигурация загрузки, которая раньше хранилась в этом файле, теперь хранится в базе данных BCD. Одной из причин использования базы данных BCD в ОС Windows Vista является объединение двух поддерживаемых в ОС Windows архитектур загрузки: основной загрузочной записи (MBR) и расширяемого интерфейса микропрограмм (EFI). Загрузочная запись MBR обычно используется на компьютерах с архитектурами x86 и x64, а интерфейс EFI – в системах Itanium (хотя в ближайшем будущем, вероятно, будут поставляться и рабочие станции с поддержкой EFI). Использование базы данных BCD позволяет абстрагироваться от микропрограмм и обеспечивает ряд дополнительных преимуществ по сравнению с использованием файла Boot.ini, например поддержку строк в формате Юникод и поддержку исполнения альтернативных предзагрузочных программ.

Фактически база данных BCD хранится на диске в кусте реестра, загружаемом в реестр ОС Windows для доступа с помощью программных интерфейсов реестра. На платформах PC она хранится в файле \Boot\Bcd на системном томе. На системах EFI база данных хранится в системном разделе EFI. После загрузки куста он появляется в разделе реестра HKLM\Bcd00000000. Внутренний формат этой базы данных не документируется, поэтому для ее редактирования используются специальные инструменты, например программа %SystemRoot%\System32\Bcdedit.exe. Для поддержки сценариев и специализированных редакторов доступны интерфейсы для управления базой данных BCD с помощью инструментария WMI. Изменять и добавлять основные параметры, такие как команды отладки ядра, можно также с помощью программы настройки системы (%SystemRoot%\System32\Msconfig.exe).

Параметры загрузки, относящиеся ко всей платформе, например выбор ОС по умолчанию и время задержки меню загрузки, отделены в базе данных BCD от параметров, относящихся к конкретным операционным системам, таких как параметры загрузки ОС и путь к системному загрузчику. Если запустить программу Bcdedit без параметров командной строки, сперва в разделе «Windows Boot Manager» будут выведены параметры, относящиеся к платформе, а затем в разделе «Windows Boot Loader» – параметры для конкретной ОС
Во время загрузки установленной ОС Windows Vista новая схема загрузки разделяет задачи, выполнявшиеся в более ранних версиях ОС Windows одним системным загрузчиком Ntldr, между двумя программами – \BootMgr и %SystemRoot%\System32\Winload.exe. Программа BootMgr считывает базу данных BCD и отображает меню загрузки операционной системы, а программа Winload.exe осуществляет загрузку операционной системы. При «чистой» загрузке системы программа Winload.exe загружает драйверы устройств, необходимые для запуска системы, и основные файлы операционной системы, включая ядро Ntoskrnl.exe, а затем передает управление операционной системе. В случае возобновления работы из режима гибернации программа Winload.exe запускает программу %SystemRoot%\System32\Winresume.exe для загрузки данных из файла гибернации в оперативную память и возобновления работы ОС.

Загрузчик Bootmgr также поддерживает исполнение дополнительных предзагрузочных программ. В составе ОС Windows Vista поставляется программа диагностики оперативной памяти (\Boot\Memtest.exe), которая уже включена в меню загрузки. Сторонние разработчики могут добавлять собственные предзагрузочные программы, которые будут отображаться в меню загрузки Bootmgr.

Процесс загрузки системы

В предыдущих версиях ОС Windows взаимосвязь между различными системными процессами не была очевидной. Например, в процессе загрузки системы диспетчер интерактивного входа в систему (%SystemRoot%\System32\Winlogon.exe) запускал службу подсистемы локального администратора безопасности (Lsass.exe) и диспетчер управления службами (Services.exe). Далее система использовала контейнер пространств имен (сеанс) для изоляции процессов, запущенных в различных сеансах входа в систему. Однако в операционных системах, предшествовавших ОС Windows Vista пользователь, вошедший в консоль, использовал сеанс 0, в котором работают и системные процессы. Это создавало потенциальную угрозу для безопасности. Примером такой угрозы стала одна плохо написанная служба Windows, работавшая в сеансе 0 и отображавшая пользовательский интерфейс в интерактивной консоли, позволяя вредоносным программам атаковать окно этой службы методом «подрывной атаки» (shatter attack), получая административные привилегии.

Для устранения подобных проблем в ОС Windows Vista было реструктурировано несколько системных процессов. Диспетчер сеансов (Smss.exe) – это первый процесс пользовательского режима, запускаемый во время загрузки, как и в предыдущих версиях ОС Windows. Однако в ОС Windows Vista диспетчер сеансов запускает еще одну свою копию для настройки сеанса 0, который выделен исключительно для системных процессов. Процесс диспетчера сеансов для сеанса 0 запускает приложение инициализации Windows (Wininit.exe), процесс подсистемы Windows (Csrss.exe) для сеанса 0, а затем завершает свою работу. Далее приложение инициализации Windows запускает диспетчер управления службами, подсистему локального администратора безопасности и новый процесс – диспетчер локальных сеансов (Lsm.exe), который управляет сеансами терминального сервера на этом компьютере.

Когда пользователь входит в систему, первоначально запущенный диспетчер сеансов запускает еще одну свою копию для настройки нового сеанса. Вновь запущенный процесс Smss.exe запускает процесс подсистемы Windows и процесс Winlogon для нового сеанса. На рабочей станции запуск диспетчером сеансов собственных копий для инициализации каждого нового сеанса не дает никаких преимуществ. Но в случае работы на сервере Windows Server «Longhorn», выступающем в роли терминального сервера, копии диспетчера будут работать одновременно, обеспечивая более быстрый вход в систему нескольких пользователей.

В новой архитектуре все системные процессы, включая службы Windows, изолированы в сеансе 0. Если служба Windows, запущенная в сеансе 0, отображает пользовательский интерфейс, служба обнаружения интерактивных служб (%SystemRoot%\System32\UI0Detect.exe) запускает собственную копию в контексте безопасности любого выполнившего вход администратора и выводит сообщение, показанное на рис. 4. Если администратор принимает предложение просмотреть сообщение, служба выполняет переключение рабочего стола на рабочий стол служб Windows, где администратор получает доступ к пользовательскому интерфейсу службы, а затем переключается назад на свой рабочий стол. На врезке «Просмотр отношений между процессами загрузки» можно более подробно ознакомиться с тем, что происходит во время загрузки системы.
росмотр отношений между процессами загрузки

Для просмотра дерева загрузки процессов ОС Windows Vista можно воспользоваться программой Process Explorer от компании Sysinternals (microsoft.com/technet/sysinternals).

На снимке экрана присутствует столбец Session (Сеанс), который можно добавить с помощью диалогового окна выбора столбцов в программе Process Explorer. Выделен первоначальный процесс Smss.exe. Ниже него в сеансе 0 находятся процессы Csrss.exe и Wininit.exe, выровненные по левому краю, потому что их родительский процесс, экземпляр процесса Smss.exe, выполнивший настройку сеанса 0, завершил свою работу. Три дочерних процесса, порожденные процессом Wininit.exe – Services.exe, Lsass.exe и Lsm.exe.

Также в программе Process Explorer виден ряд процессов, запущенных в сеансе 1. Это сеанс, вход в который выполнен пользователем с помощью подключения к удаленному рабочему столу. Процессы, запущенные в рамках одной учетной записи с программой Process Explorer, выделены синим цветом. Наконец, сеанс 2 был инициализирован для подготовки к консольному входу пользователя в систему и созданию нового сеанса входа. Именно в этом сеансе запущен процесс Winlogon, использующий процесс LogonUI, чтобы предложить пользователю нажать сочетание клавиш Ctrl+Alt+Delete для входа в систему, и в которой процесс Logonui.exe затем попросит пользователя ввести свои учетные данные.
Поставщики учетных данных

Архитектура процесса входа в систему также поменялась в ОС Windows Vista. В предыдущих версиях ОС Windows процесс Winlogon загружал указанную в реестре динамическую библиотеку GINA, которая отображала пользовательский интерфейс для входа в систему, запрашивающий у пользователей ввод учетных данных. К сожалению, в модели GINA есть ряд ограничений: может быть использована только одна библиотека GINA; разработка полнофункциональной библиотеки GINA сложна для сторонних разработчиков; сторонние библиотеки GINA с нестандартным пользовательским интерфейсом меняют привычное взаимодействие с пользователем.

Вместо модели GINA в ОС Windows Vista используется архитектура поставщиков учетных данных. Процесс Winlogon запускает отдельный процесс – сервер пользовательского интерфейса входа в систему (Logonui.exe), который выполняет загрузку поставщиков учетных данных, настроенных в разделе реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Currentversion\Authentication\Credential Providers. Процесс Logonui может работать с несколькими поставщиками учетных данных одновременно. ОС Windows Vista поставляется с двумя поставщиками учетных данных: интерактивным поставщиком (Authui.dll) и поставщиком смарт-карт (Smart-cardcredentialprovider.dll). Для унификации взаимодействия с пользователем процесс LogonUI управляет пользовательским интерфейсом, который видят конечные пользователи. Он также позволяет поставщикам учетных данных добавлять собственные отображаемые элементы, такие как текст, значки и поля ввода.

Службы с отложенным автозапуском

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

Диспетчер управления службами запускает службы, настроенные на отложенный автоматический запуск, только после завершения запуска всех служб, настроенных на автоматический запуск. Диспетчер устанавливает первоначальному потоку таких служб приоритет THREAD_PRIORITY_LOWEST (наинизший приоритет потока). Установка такого приоритета приводит к тому, что все операции ввода-вывода, выполняемые потоком, выполняются с приоритетом «Very Low» (очень низкий). Когда служба завершает инициализацию, диспетчер управления службами устанавливает ей приоритет «Normal» (обычный). Сочетание отложенного запуска, низкого приоритета использования ЦП и памяти, а также фонового приоритета дисковых операций приводит к существенному снижению воздействия запуска таких служб на процесс входа пользователя в систему. Многие службы Windows, включая фоновую интеллектуальную службу передачи (BITS), клиент Windows Update и службу Windows Media® Center, используют этот метод запуска для увеличения производительности процесса входа в систему сразу после загрузки.

Завершение работы

Одна из проблем, с которыми сталкивались разработчики служб Windows, состоит в том, что по умолчанию у службы есть не более 20 секунд на завершение работы. В операционных системах Windows, предшествовавших ОС Windows Vista, не поддерживалось «чистое» завершение работы, при котором система дожидалась бы полного завершения работы всех служб, потому что в этом случае ошибка в службе могла бы полностью воспрепятствовать завершению работы системы. Некоторым службам, которым при завершении работы необходимо выполнить определенные сетевые операции или сохранить большой объем данных на диск, может потребоваться более продолжительное время для завершения работы, поэтому ОС Windows Vista позволяет службам запросить у системы уведомление о завершении работы.

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

Служба управления групповыми политиками и служба Windows Update используют еще одну возможность управления службами в ОС Windows Vista – упорядочение завершения работы. В предыдущих версиях ОС Windows можно было указать зависимости служб при запуске, и диспетчер управления службами придерживался указанного порядка запуска служб, но только в ОС Windows Vista появилась возможность указать зависимость служб при завершении работы. В ОС Windows Vista службы, которые регистрируют запрос уведомления о завершении работы, могут также включить себя в список, хранящийся в разделе реестра HKLM\System\CurrentControlSet\Control\PreshutdownOrder, и при завершении работы служб диспетчер управления службами будет завершать их работу в указанном порядке. Подробнее об этих возможностях см. врезку «Определение службы с отложенным автозапуском и службы с уведомлением о завершении работы».

Управление электропитанием

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

В ОС Windows Vista диспетчер управления электропитанием, входящий в ядро системы, по прежнему уведомляет драйверы и приложения о смене режима энергопотребления, позволяя им подготовиться к переходу в другой режим. Однако теперь ядро не спрашивает у них разрешения. Более того, диспетчер управления электропитанием ждет ответа приложений не более 20 секунд, а не 2 минуты, как это было в предыдущих версиях ОС Windows. В результате пользователи ОС Windows Vista могут быть уверены в том, что система действительно перейдет в ждущий режим или режим гибернации.

Что дальше

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

устройство ядра ОС Windows Vista: Часть 1

Понедельник, 22 Сентября 2008 г. 15:06 + в цитатник
Это — первая статья серии, посвященной нововведениям в ядре ОС Windows Vista. В этой работебудут затронуты изменения в области процессов, потоков и ввода-вывода. Следующие статьи будут посвящены управлению памятью, запуску и завершению работы, надежности и восстановлению, а также безопасности.

Данная статья охватывает изменения только ядра ОС Windows Vista™, в особенности файла Ntoskrnl.exe и связанных с ним компонентов. Следует помнить, что многие существенные изменения в ОС Windows Vista не затрагивают собственно ядро системы, и следовательно, здесь рассмотрены не будут. Это касается усовершенствований оболочки (например интегрированный поиск на рабочем столе), работы в сети (например новый стек IPv6 и двусторонний брандмауэр) и графической модели нового поколения (Aero™ Glass, платформа Windows® Presentation Foundation, диспетчер окон рабочего стола и новая модель графических драйверов). Также не будет рассмотрена новая инфраструктура драйверов пользовательского режима (UMDF) и режима ядра (KMDF) ОС Windows, поскольку ее можно устанавливать и на более ранние версии этой операционной системы.

Это — первая статья серии, посвященной нововведениям в ядре ОС Windows Vista. В этой работебудут затронуты изменения в области процессов, потоков и ввода-вывода. Следующие статьи будут посвящены управлению памятью, запуску и завершению работы, надежности и восстановлению, а также безопасности.

Данная статья охватывает изменения только ядра ОС Windows Vista™, в особенности файла Ntoskrnl.exe и связанных с ним компонентов. Следует помнить, что многие существенные изменения в ОС Windows Vista не затрагивают собственно ядро системы, и следовательно, здесь рассмотрены не будут. Это касается усовершенствований оболочки (например интегрированный поиск на рабочем столе), работы в сети (например новый стек IPv6 и двусторонний брандмауэр) и графической модели нового поколения (Aero™ Glass, платформа Windows® Presentation Foundation, диспетчер окон рабочего стола и новая модель графических драйверов). Также не будет рассмотрена новая инфраструктура драйверов пользовательского режима (UMDF) и режима ядра (KMDF) ОС Windows, поскольку ее можно устанавливать и на более ранние версии этой операционной системы.
В ОС Windows Vista планировщик отслеживает точное количество циклов ЦП, в течение которых выполняется поток, с помощью регистра счетчика циклов современных процессоров. Определив, сколько циклов может выполнить процессор на протяжении интервала времени, планировщик может точнее раздавать ресурсы ЦП. К тому же, планировщик ОС Windows Vista не засчитывает выполнение прерывания во время выполнения потока. Это означает, что поток в ОС Windows Vista всегда получит, по крайней мере, свою очередь выполнения, не превышающую один дополнительный временной интервал, что обеспечивает более справедливое выделение ресурсов и предсказуемое поведение приложений. На рис. 2 показана реакция ОС Windows Vista на ситуацию, изображенную на рис. 1, выделением обоим потокам, по меньшей мере, по одному временному интервалу выполнения.
Служба Multimedia Class Scheduler Service

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

Мультимедийное приложение, например проигрыватель Windows Media®, регистрируется в службе MMCSS с помощью новых функций прикладного интерфейса, отображающих его мультимедийные характеристики, которые должны совпадать с характеристиками, перечисленными по именам в следующем разделе реестра:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Currentversion\Multimedia\SystemProfile\Tasks

Разделы различных задач указывают, какое предпочтение получают потоки, связанные с разными типами мультимедиа, при выделении ресурсов ЦП и графического процессора (хотя управление ресурсами графического процессора в ОС Windows Vista не реализовано). На рис. 3 показано содержание одного из разделов задач реестра сразу после установки ОС Windows Vista, хотя сторонние разработчики могут добавлять и собственные определения задач.
Служба MMCSS, реализованная в файле %SystemRoot%\System32\Mmcss.dll и запускаемая в процессе работы узла службы (Svchost.exe), имеет поток управления приоритетами, который выполняется с приоритетом 27. (Приоритеты потоков в ОС Windows находятся в диапазоне от 0 до 31). Этот поток повышает приоритет зарегистрированных потоков мультимедиа до диапазона, связанного со значением Scheduling Category раздела реестра данной задачи
В системе Windows приоритеты потоков от 16 и выше относятся к диапазону приоритетов реального времени, что выше приоритета любых потоков в системе (за исключением рабочих потоков диспетчера памяти, которые выполняются с приоритетом 28 или 29). Права на увеличение приоритета, необходимые для установки приоритетов потоков реального времени, есть только у учетных записей с правами администратора, например у локальной системной учетной записи, в которой выполняется служба MMCSS.

При проигрывании звукового файла проигрыватель Windows Media регистрирует потоки задачи аудио, а при проигрывании файла видео — потоки задачи воспроизведения. Служба MMCSS повышает приоритет всех потоков, заявивших о доставке потоковых данных, одновременно, когда они выполняются в процессе, которому принадлежит окно переднего плана, и если в разделе определения их задачи значение BackgroundOnly установлено в True.

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

HKLM\Software\Microsoft\Windows NT\Currentversion\Multimedia\SystemProfile\SystemResponsiveness

По умолчанию это составляет 20 процентов, т.е. служба MMCSS отслеживает загрузку ЦП и не разрешает выполнение потоков с повышенным приоритетом в течение времени свыше 8 мс из 10, если ресурсы ЦП запрашиваются другими потоками. Чтобы потоки мультимедиа не мешали другим потокам в течение остальных 2 мс, планировщик понижает их приоритет до диапазона от 1 до 7.

Повышение приоритета потоков службой MMCSS можно увидеть на врезке «Наблюдение за повышением приоритета службой MMCSS».

Файловые символические ссылки

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

Одной из функций файловой системы, которой по мнению многих недоставало в системе NTFS, является поддержка символических ссылок на файлы (или, как они называются в UNIX-системах, гибких ссылок), которая появилась в ОС Windows Vista. В версии NTFS для Windows 2000 были представлены символические ссылки на каталоги, которые назывались соединениями каталогов, что позволяло создавать каталоги, указывающие на другие каталоги, но до выхода ОС Windows Vista файловая система NTFS поддерживала только жесткие ссылки на файлы.

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

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

Символическую ссылку можно создать из командной строки с помощью команды Mklink. Встроенная команда вывода содержимого каталога командной строки обозначает символические ссылки пометкой и показывает конечный объект в квадратных скобках, как показано на рисунке 5. Проводник Windows также понимает символические ссылки и отображает их со стрелкой как ярлыки. Конечный объект ссылки можно видеть в Проводнике, если добавить к окну обзора столбец Link Target (Цель ссылки).
Завершение и отмена операций ввода-вывода

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

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

Вероятно, одним из наиболее заметных нововведений в систему ввода-вывода с точки зрения конечного пользователя является поддержка в ОС Windows Vista отмены синхронных операций ввода-вывода. Всем, кто когда-либо выполнял команду net view или пытался обратиться к общему ресурсу на выключенном удаленном компьютере под управлением ОС Windows XP или Windows Server® 2003, знакомы проблемы с операциями ввода-вывода, которые невозможно отменить: команда или окно проводника не отвечали до истечения времени ожидания сети. Приложению не оставалось ничего иного, кроме как ожидать ошибки выполнения операции, поскольку не существовало способа оповестить драйвер устройства, выполняющий операцию ввода-вывода, о том, что данную операцию выполнять уже не нужно.

Большинство операций ввода-вывода в ОС Windows Vista можно отменить, включая операцию открытия файла, которую используют команда Net View и Проводник. Однако для того, чтобы приложения отвечали на запросы пользователя об отмене операции ввода-вывода, их необходимо обновить, и многие служебные программы ОС Windows Vista, взаимодействующих с устройствами, имеющими интервал ожидания, уже поддерживают данную возможность. Например, в диалоговых окнах открытия и сохранения файлов, применяющихся практически во всех приложениях ОС Windows, включая сторонние приложения, теперь во время отображения содержимого папки доступна кнопка Cancel (Отменить). Синхронные операции ввода-вывода команды Net также могут быть отменены нажатием комбинации клавиш Ctrl+C.

В преимуществах возможности отмены операций ввода-вывода легко убедиться, открыв окно командной строки в ОС Windows Vista и набрав команду:

net view (\\nonexistentmachine)

Команда не будет отвечать до тех пор, пока ОС Windows будет пытаться связаться с несуществующей системой, но ее можно будет прервать, воспользовавшись сочетанием клавиш Ctrl+C. В ОС Windows XP комбинация клавиш Ctrl+C не действовала и команда не отвечала до истечения срока ожидания сети.

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

Приоритет операций ввода-вывода

Несмотря на то, что операционная система Windows всегда поддерживала приоритеты использования ЦП, в ней отсутствовало понятие приоритетов операций ввода-вывода. Без поддержки приоритетов ввода-вывода фоновые операции, например индексация поиска, поиск вирусов и дефрагментация диска могут существенно ухудшать скорость ответа операций переднего плана. Пользователь, запускающий приложение или открывающий документ в то время, как другой процесс выполняет, например, операцию дискового ввода-вывода, сталкивается с задержками, поскольку приложению переднего плана приходится дожидаться доступа к диску. С теми же препятствиями сталкивается воспроизведение с жесткого диска потокового мультимедийного содержимого, например песни.

ОС Windows Vista обеспечивает два новых способа распределения приоритетов для предоставления предпочтения операциям ввода-вывода переднего плана: приоритеты на отдельные операции ввода-вывода и резервирование полосы пропускания ввода-вывода. Система ввода-вывода в ОС Windows Vista обеспечивает внутреннюю поддержку приоритетов операций ввода-вывода, как показано на рисунке 6, но используются только четыре приоритета (возможно, следующие версии ОС Windows будут поддерживать приоритет High (Высокий)).
Приоритетом по умолчанию для операций ввода-вывода является Medium (Средний), а диспетчер памяти использует приоритет High (Высокий) для записи на диск содержимого памяти в ситуациях нехватки памяти для освобождения ОЗУ для других данных и кода. Планировщик задач ОС Windows устанавливает приоритет по умолчанию для задач ввода-вывода Low (Низкий), а написанные для ОС Windows Vista приложения, осуществляющие фоновую обработку, указывают приоритет Very Low (Очень низкий). Все фоновые операции в ОС Windows Vista, включая сканирование Windows Defender (Защитник ОС Windows) и индексирование поиска на рабочем столе, используют приоритет ввода-вывода Very Low (Очень низкий).

Драйвер устройства класса системного хранения (%SystemRoot%\System32\Classpnp.sys) обеспечивает приоритеты ввода-вывода, которые автоматически применяются к операциям ввода-вывода, ориентированных на большинство устройств хранения. Этот и другие драйверы хранения помещают в свои очереди операции ввода-вывода с приоритетом Medium (Средний) до операций с приоритетами Low (Низкий) и Very Low (Очень низкий), но при этом выполняют, как минимум, одну операцию с приоритетом Low (Низкий) или Very Low (Очень низкий) в секунду, чтобы не препятствовать выполнению фоновых процессов. Данные, прочитанные операциями с приоритетами Low (Низкий) и Very Low (Очень низкий), также приводят к тому, что диспетчер кэша производит запись изменений на диск незамедлительно, не откладывая, и обходит логику упреждающего чтения для операций чтения, что в противном случае приводило бы к упреждающему чтению из файлов, открытых для чтения. Пример операций с приоритетом Very Low (Очень низкий), выводимых программой Process Monitor, можно увидеть на боковой врезке «Просмотр операций ввода-вывода с приоритетом Very Low (Очень низкий)».

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

В завершение следует упомянуть о еще одном изменении в системе ввода-вывода, относящемся к объему операций ввода-вывода. Со времен первой версии ОС Windows NT диспетчер памяти и система ввода-вывода ограничивали объем данных, обрабатываемых отдельным запросом ввода-вывода для устройства хранения, 64 КБ. Таким образом, даже если запрос ввода-вывода приложения был значительно больше, он разбивался на отдельные запросы, не превышающие 64 КБ. Каждая операция ввода-вывода подразумевала дополнительные затраты ресурсов на переключение в режим ядра и инициирование передачи ввода-вывода на устройство хранения, поэтому в ОС Windows Vista объем операций ввода-вывода больше не ограничивается. Некоторые компоненты пользовательского режима ОС Windows Vista подверглись модификациям для того, чтобы воспользоваться преимуществами большего объема операций ввода-вывода, включая функцию копирования в Проводнике и команду командной строки Copy (Копировать), которые теперь оперируют операциями ввода-вывода объемом 1 МБ.

Что дальше

Были рассмотрены две области, в которых ядро ОС Windows Vista подверглось улучшениям. Более подробное рассмотрение будет представлено в следующем издании книги Windows Internals (Внутренняя структура ОС Windows) (в соавторстве с Дэвидом Соломоном), которое должно выйти одновременно с ОС Windows Server под кодовым названием «Longhorn». В следующей статье данной серии будет продолжено знакомство с новым ядром и обсуждены вопросы управления памятью, а также запуска и завершения работы системы.

Наблюдение за процессом использования ЦП

Неточность стандартного метода учета процессорного времени в ОС Windows можно видеть на веб-странице (на английском языке), где представлена утилита Process Explorer от компании Sysinternals . Запустите программу Process Explorer в системе Windows Vista и добавьте к просмотру процессов столбец Cycles Delta (Разница циклов). В этом столбце отображается количество циклов исполнения потоков каждого процесса в интервале между обновлением данных программой Process Explorer. Поскольку учет времени ЦП все еще основан на интервальном таймере, можно добавить также столбец CPU Time (Время ЦП), в котором будет отображено множество процессов с потоками, потребляющими миллионы циклов ЦП, но с не меняющимися и не отображенными в столбце CPU usage значениями процессорного времени.
Просмотр повышения приоритетов службой MMCSS

Убедиться в повышении приоритета потоков проигрывателя Windows Media службой MMCSS можно включив воспроизведение видео или звукового клипа, запустив системный монитор, установив масштаб графика равным 31 (наивысший приоритет потока в ОС Windows) и добавив счетчик Priority Current (Текущий приоритет) для всех экземпляров объектов потоков проигрывателя Windows Media (Wmplayer.exe). Один или несколько потоков будут выполняться с приоритетом, равным 21.
Просмотр операций ввода-вывода с приоритетом Very Low (Очень низкий)

Служебная программа реального времени Process Monitor от компании Sysinternals для наблюдения за файловой системой и реестром собирает подробную информацию об операциях чтения и записи файловой системы, включая приоритеты ввода-вывода в ОС Windows Vista. Выделенная строка демонстрирует пример запроса с очень низким приоритетом ввода-вывода, инициированного компонентом SuperFetch (который будет рассмотрен в следующей статье цикла).

Метки:  

Windows Vista!!!

Воскресенье, 21 Сентября 2008 г. 22:21 + в цитатник
Этим постом я собираюсь открыть цикл статей и для начала краткий обзор версий Windows Vista.

Версии будущей ОС Vista имеют обычное условное деление на два класса, которые всем знакомы по работе с Windows XP. Первая категория – “домашняя”, она будет включать в себя такие версии как Starter, Home, and Media Center Editions, вторая категория это "Pro", с такими версиями как Professional, Professional x64, и версия для Tablet PC. При этом терминология в Windows Vista не много изменилась, категории называются Home и Business.

Microsoft планирует выпустить несколько “домашних” версий: Windows Starter, Windows Vista Home Basic (и специальную европейскую версию Home Basic N), Windows Vista Home Premium, и наиболее полную Windows Vista Ultimate (ранее известная как "Uber").

Категория Business будет представлена следующими версиями: Windows Vista Business (ранее известная как Professional Standard Edition; а так же выйдет европейская версия Business N), и наконец, Windows Vista Enterprise (ранее Professional Premium Edition).

Каждая версия ориентирована для определенного круга пользователей.

1. Windows Starter

Windows Starter, хорошо подойдет для начинающих пользователей, чьи компьютеры не обладают большой мощностью. Хотя данная версия во многом напоминает Vista Home Basic, выйдет она лишь в 32-bit варианте. Во время работы с Windows Starter пользователь сможет запускать только три приложения одновременно, при подключении к Internet нельзя использовать входящие сетевые средства связи. Так же будет недоступна возможность быстрого переключения учетных записей (FUS). Из Windows Starter удалены ряд новых технологий: отсутствует поддержка интерфейса Aero, специализированные инструменты, позволяющее разрабатывать интерактивные мультимедийные приложения с использованием DVD, и ряд других.

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

2. Windows Vista Home Basic

Это простая версия, предназначенная для работы на одном домашнем PC. Windows Vista Home Basic является базой, на которой основаны все остальные версии Windows Vista. Home Basic включает в себя Windows Firewall, новый центр безопасности Windows Security Center, безопасную беспроводную технологию работы в сети, функцию parental controls для присмотра за детьми, средства безопасности анти-спам/анти-вирус/анти-spyware, расширенный Movie Maker, новую программу Photo Gallery и многое другое. Однако наравне с упрощенной Windows Starter, данная версия так же не поддерживает графический интерфейс Aero. По своей сути это некий аналог Windows XP Home Edition. ОС Windows Vista Home Basic ориентирована на широкий круг пользователей, которые, тем не менее, рационально подходят к стоимости ПО.

Home Basic дает довольно высокий уровень безопасности за приемлемую стоимость. Работая с этой версией, пользователь уже может оценить все достоинства и новые возможности, которые предлагает новая ОС Windows Vista.

3. Windows Vista Home Premium

Эта версия предоставляет доступ ко всем средствам развлечения и средствам индивидуальной работы пользователя. Windows Vista Home Premium включает в себя все тоже самое что и Home Basic, но плюс к этому доступны возможности Media Center, а так же Media Center Extender, разработка интерактивных мультимедийных приложений с использованием DVD, возможность просмотра телевизионных программ высокой четкости (HDTV), монтаж DVD, большое количество сетевых возможностей.

Windows Vista Home Premium является аналогом Windows XP Media Center Edition, но с гораздо большими возможностями. Работа Home Premium сосредоточена на ряде функций, важных для активных пользователей, таких как развлечение (просмотр фильмов, изображений), работа с мобильными PC, расширенные возможности работы в сети.

4. Windows Vista Business

Мощная, надежная и безопасная система для компаний крупного и малого бизнеса. Windows Vista Business позволяет организовать подключение компьютеров к домену, и осуществлять широкий контроль производительности системы, обеспечивает совместную работу с протоколами сторонних разработчиков (Netware, SNMP, и т.д.), доступен контроль над удаленным рабочим столом, а так же технология шифрованной файловой системы (Encrypted File System). Доступна поддержка функций планшетных PC. Единственное с чем можно сейчас сравнить Windows Vista Business это с текущей версией XP Professional.

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

5. Windows Vista Enterprise

Оптимизирована для удобной работы крупных предприятий и компаний. Представляет собой усовершенствованную и развитую версию Windows Vista Business. Доступна особая функция "Виртуальный PC", многоязычный интерфейс пользователя (MUI), специальная технология организации безопасной работы, с момента в хода в систему Secure Startup ("Cornerstone"). В настоящее время нет ни одного известного аналога ОС Windows Vista Business. Данный вариант ОС будет распространяться только через специальную программу Microsoft гарантированное ПО (Software Assurance) по которой возможен переход на очередные версии лицензионного ПО, выходящие в течение срока действия лицензионного соглашения, и на оперативный доступ к новым функциям текущей версии.

6. Windows Vista Ultimate

Лучшая ОС для современного компьютера, оптимизированная для индивидуальной работы пользователя. Windows Vista Ultimate содержит все лучшие качества младших версий Vista Home Premium и Vista Business, а так же расширенные возможности работы с мультимедиа. Microsoft до сих пор ведет работу над самой функциональной ОС Windows Vista. До финального выхода ОС, перечень ее доступных возможностей может еще не раз увеличиться. Vista Ultimate будет представлять полную версию, без каких либо ограничений в функциональности. Версия будет содержать множество встроенных приложений, и являться системой high-end класса, с соответствующим уровнем требованием к оборудованию компьютера.

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

Метки:  

Поиск сообщений в pronchenko-dmitry
Страницы: 41 ..
.. 6 5 [4] 3 2 1 Календарь