Файл: Debian Таненбаум Бос.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 47986

Скачиваний: 190

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

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

1041

Windows поддерживает специальный режим выключения под названием гибернация 
(hybernation), при котором выполняется копирование всей физической памяти на диск, 
а затем потребление энергии снижается до минимального (в состоянии гибернации 
ноутбуки могут работать неделями), при этом батарея разряжается минимально. По-
скольку все состояние памяти записано на диск, то вы можете даже заменить батарею 
ноутбука (пока он находится в гибернации). Когда система возобновляет свою работу, 
выходя из гибернации, она восстанавливает сохраненное состояние памяти (и повторно 
инициализирует устройства). Это приводит компьютер в то же самое состояние, в кото-
ром он был перед гибернацией (без необходимости выполнять повторно регистрацию 
и запускать все приложения и службы, которые выполнялись. Windows старается 
оптимизировать этот процесс, игнорируя немодифицированные страницы (имеющие 
резервирование на диске), и сжимает остальные страницы памяти для снижения 
требуемого объема ввода-вывода. Алгоритм гибернации предусматривает автомати-
ческую балансировку пропускной способности системы ввода-вывода и процессора. 
Чтобы при более высокой пропускной способности процессора снизить потребность 
в пропускной способности системы ввода-вывода, используется более ресурсоемкое, 
но при этом более эффективное сжатие данных. Достаточная пропускная способность 
системы ввода-вывода позволяет избежать сжатия при переходе в режим гибернации. 
При использовании мультипроцессоров последнего поколения вход в состояние гибер-
нации и выход из него могут составлять всего несколько секунд, даже если оперативная 
память системы имеет большой объем.

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

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

Ожидается, что вычислительные устройства на телефонах и планшетных компью-
терах, а также на новых поколениях ноутбуков всегда будут потреблять небольшое 
количество электроэнергии. Чтобы обеспечить такой режим, в современной Windows 
реализована специальная версия управления электропитанием, которая называется 
CS (connected standby — ожидание в режиме подключения). CS возможна на системах 
со специальным оборудованием подключения к сети, способным отслеживать трафик 
в небольшом наборе подключений, используя намного меньше энергии, чем при работе 
центрального процессора. Получается, что CS-система всегда включена, выход из CS 


background image

1042  

 Глава 11. Изучение конкретных примеров: Windows 8 

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

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

Сегодня многие приложения реализуются как с локальным кодом, так и со служба-
ми, находящимися в облаке. Windows предоставляет службу уведомлений Windows 
(Windows Notification Service (WNS)), позволяющую сторонним службам протал-
кивать уведомления в устройство Windows в CS, не требуя от сетевого оборудования 
CS специально прислушиваться к пакетам от сторонних серверов. WNS-уведомления 
могут оповещать о критичных по времени событиях, таких как поступление текстово-
го сообщения или вызова по VoIP. При поступлении WNS-пакета процессор должен 
будет включиться для его обработки, но сетевое оборудование CS имеет возможность 
различать трафик разных подключений, что означает, что процессор не должен вклю-
чаться в ответ на каждый произвольный пакет, поступающий из сетевого интерфейса.

11.10. Безопасность в Windows 8

Первоначально NT проектировалась под требования безопасности С2 (DoD 5200.28-
STD, так называемой «Оранжевой книгой» Министерства обороны США), которым 
должны соответствовать безопасные системы Министерства обороны. Этот стандарт 
требует наличия у операционных систем определенных свойств (чтобы они могли 
быть классифицированы как достаточно безопасные для определенных видов работы 


background image

11.10. Безопасность в Windows 8   

1043

на военных). Несмотря на то что Windows Vista не проектировалась специально под 
требования С2, она наследует многие свойства безопасности исходного дизайна NT, 
в том числе следующие:

1.  Безопасная регистрация с мерами антиспуфинга.

2.  Собственные средства управления доступом.

3.  Привилегированные средства управления доступом.

4.  Защита адресного пространства каждого процесса.

5.  Новые страницы перед отображением обнуляются.

6. Аудит безопасности.

Давайте кратко рассмотрим эти вопросы.

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

CTRL+ALT+DEL

 при регистрации. 

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

CTRL+ALT+DEL

 клавиатурным драйвером. Однако в некоторых 

случаях NT может отключить использование 

CTRL+ALT+DEL

 (и делает это), в частности, 

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

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

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

В следующем разделе мы опишем основные концепции системы безопасности Windows 
Vista. После этого мы рассмотрим системные вызовы безопасности. И наконец, завер-
шим раздел рассмотрением реализации системы безопасности.


background image

1044  

 Глава 11. Изучение конкретных примеров: Windows 8 

11.10.1. Фундаментальные концепции

Каждый пользователь (и группа) в Windows идентифицируется с использованием 
идентификатора безопасности (Security ID (SID)). SID — это двоичное число с ко-
ротким заголовком, за которым следует длинный случайный компонент. Каждый SID 
должен быть глобально-уникальным. Когда пользователь запускает процесс, то этот 
процесс и его потоки выполняются под пользовательским идентификатором SID. 
Большая часть системы безопасности спроектирована так, чтобы обеспечить доступ 
к любому объекту только потоков с авторизованными SID.

Каждый процесс имеет маркер доступа (access token), в котором указаны SID и прочие 
свойства. Маркер обычно создается модулем winlogon (как описано далее). Формат 
маркера показан на рис. 11.29. Процессы могут вызвать GetTokenInformation (чтобы 
получить эту информацию). Заголовок содержит некоторую административную ин-
формацию. Поле 

Срок годности

 может сказать, когда маркер утрачивает актуальность 

(в настоящее время оно не используется). Поле 

Группы

 указывает группы, которым 

принадлежит процесс (это нужно для подсистемы POSIX). DACL (Discretionary 
ACL) — это список управления доступом, присваиваемый созданным процессом объ-
ектам (если не указан другой ACL). Пользовательский SID говорит о том, кто владеет 
процессом. Ограниченные идентификаторы SID позволяют ненадежным процессам 
принимать участие в заданиях вместе с надежными процессами (и при этом у них 
меньше возможностей что-то испортить).

Рис. 11.29. Структура маркера доступа

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

Когда пользователь регистрируется, то winlogon дает начальному процессу маркер до-
ступа. Следующие процессы обычно наследуют этот маркер. Маркер доступа процесса 
первоначально применяется ко всем потокам процесса. Однако поток при выполнении 
может получить другой маркер доступа, в этом случае маркер доступа потока замещает 
маркер доступа процесса. В частности, клиентский поток может передать свои права до-
ступа серверному потоку, чтобы сервер мог обратиться к защищенным файлам (и про-
чим объектам) клиента. Этот механизм называется олицетворением (impersonation). 
Он реализован в транспортных слоях (например, ALPC, именованные каналы, TCP/
IP), используемых в RPC для обмена между клиентами и серверами. Транспортные 
слои используют внутренние интерфейсы монитора безопасности ядра, извлекая кон-
текст безопасности для маркера доступа текущего потока и отправляя его на сервер, где 
он используется для конструирования маркера, который сервер может использовать 
для олицетворения клиента.


background image

11.10. Безопасность в Windows 8   

1045

Еще одна фундаментальная концепция — дескриптор безопасности (security 
descriptor). Каждый объект имеет связанный с ним дескриптор безопасности, который 
говорит о том, кто и какие операции может выполнять с ним. Дескрипторы безопас-
ности указываются при создании объектов. Файловая система NTFS и реестр под-
держивают постоянную форму дескриптора безопасности, который используется для 
создания дескриптора безопасности для объектов File и Key (это объекты диспетчера 
объектов, представляющие открытые экземпляры файлов и ключей).

Дескриптор безопасности состоит из заголовка, за которым следует список DACL 
с одним (или более) элементом управления доступом ACE (Access Control Entries). 
Два основных типа такого элемента — Allow и Deny. Элемент Allow указывает SID 
и битовый массив, который указывает, какие операции этот SID может выполнять 
над объектом. Элемент Deny работает аналогично (однако совпадение означает, что 
вызывающая сторона не может выполнять операцию). Например, Ида имеет файл, 
в дескрипторе безопасности которого указано, что доступ для чтения имеют все, 
Элвис доступа не имеет, Кэти имеет доступ для чтения/записи, а сама Ида имеет 
полный доступ. Этот простой пример показан на рис. 11.30. Идентификатор Все 
относится к множеству всех пользователей, но он перекрывается всеми (последую-
щими) явными ACE.

Рис. 11.30. Пример дескриптора безопасности для файла

В дополнение к списку DACL дескриптор безопасности имеет также список SACL 
(System Access Control), который похож на DACL, за исключением того, что он ука-
зывает не тех, кто может использовать объект, а то, какие операции над объектом 
записываются в системный журнал событий безопасности. На рис. 11.30 будет реги-
стрироваться каждая операция, которую Мэрилин выполняет с файлом. SACL также 
содержит уровень целостности (который мы скоро обсудим).