- •Общие сведения, ос 90-х годов.
- •Рабочие станции
- •Цели проекта Windows nt: расширяемость и переносимость.
- •Расширяемость
- •Переносимость
- •Цели проекта Windows nt: надежность, совместимость и производительность.
- •Совместимость
- •Производительность
- •Модели Windows nt: клиент-сервер.
- •Объектная модель. Симметричная мультипроцессорная обработка.
- •Защищенные подсистемы. Исполнительная система.
- •Исполнительная система
- •Основные понятия: сессия регистрации, подсистемы среды.
- •Сессия регистрации
- •Подсистемы среды
- •Базовые сервисы: объекты, объекты в памяти.
- •Объекты
- •Объекты размещаются в памяти ос.
- •Ввод-вывод и файловые системы
- •Интернационализация, регионы, Unicode.
- •Интернационализация
- •Регионы
- •Структурная обработка исключений.
- •Удержание объектов
- •Учет использования ресурсов
- •Методы объектов.
- •Защита объектов. Маркеры доступа.
- •Маркеры доступа
- •Списки контроля доступа. Общий принцип работы.
- •Как все это работает вместе
Объекты размещаются в памяти ос.
Чтобы предотвратить захват одним процессом слишком большого объема памяти, с него списывается определенный объем выделенной процессу квоты всякий раз, когда один из его потоков открывает описатель объекта некоторого типа. Если процесс израсходовал всю свою квоту, то диспетчер объектов больше не позволит ему открывать описатели объектов.
Помимо управления ресурсами и поддержки их совместного использования, объектная система NT служит центром, в котором обеспечивается защита ресурсов. При открытии процессом описателя объекта активизируется подсистема защиты NT. С каждым объектом связана маленькая база данных, называемая списком контроля доступа (access control list, ACL) и содержащая информацию о том, какие процессы имеют доступ к объекту и какие действия эти процессы могут над ним производить. При открытии описателя объекта процесс указывает, какие действия он собирается производить с объектом. Например, процесс может открыть файл для доступа по чтению. Система защиты проверяет,
Рис. 2-12. Создание объектов NT.
предоставлен ли процессу доступ по чтению к данному файлу, и если это так, то диспетчер объектов возвращает процессу описатель, имеющий доступ по чтению. Процесс может затем использовать этот описатель для чтения соответствующего файла. Если процессу необходим также доступ по записи, то он может либо запросить оба вида доступа при открытии первого описателя, либо открыть второй описатель с доступом по записи. В силу того, что процесс должен открыть описатель объекта, прежде чем он сможет что-либо с объектом сделать, и того, что в открытии описателя участвует подсистема защиты, ни один процесс не может обойти контроль доступа NT.
Базовые сервисы: виртуальная память, I\O и файловые системы.
Разные ОС по-разному представляют физическую память и требуют от своих программ доступа к ней по определенным правилам. В Windows NT прикладные программы исполняются в одной из сред, которые ведут себя как некоторая ОС: Windows, MS-DOS, POSIX или OS/2. Задача состоит в том, чтобы приложения всех типов могли выполняться без изменений и без столкновений друг с другом в памяти.
Каждая подсистема среды Windows NT представляет память в том виде, который ожидают от нее приложения. Исполнительная система NT, лежащая ниже подсистем среды, имеет свою собственную структуру памяти, к которой подсистемы обращаются, вызывая базовые сервисы NT.
Архитектура памяти NT — это система виртуальной памяти, использующая 32-разрядные адреса в плоском (линейном) адресном пространстве. Виртуалъное адресное пространство процесса (virtual address space) — это набор адресов, которые могут использовать потоки процесса. Во время выполнения диспетчер виртуальной памяти при помощи аппаратных средств транслирует, или отображает виртуальные адреса в физические адреса, по которым данные хранятся на самом деле. Посредством контроля над процессом отображения ОС может гарантировать, что процессы не будут пересекаться друг с другом и не повредят ОС.
Виртуальное адресное пространство каждого процесса равно четырем гигабайтам (232 байта), два из которых предназначены для использования программой, а другие два зарезервированы для ОС. Четыре гигабайта (и даже два) — это гораздо больше объема физической памяти, доступного на обычных машинах. Когда физической памяти не хватает, диспетчер виртуальной памяти пересылает, или "откачивает" часть содержимого памяти на диск. Перемещение данных на диск освобождает физическую память, и ее теперь можно использовать для других целей. При обращении потока по виртуальному адресу, соответствующему откачанным на диск данным, диспетчер виртуальной памяти снова загружает информацию с диска в память.
В Windows NT ОС располагается в верхней части виртуальной памяти, а пользовательский код и данные — в нижней, как показано на рис. 2-13. Поток пользовательского режима не может производить непосредственную запись и чтение системной памяти.
Часть системной памяти, называемая резидентным пулом (nonpaged pool), никогда не откачивается на диск и используется для хранения некоторых объектов NT и других важных структур данных. Другая часть системной памяти, которая может быть перемещена на диск, называется нерезидентным пулом (paged pool). Всю пользовательскую память можно откачать.
