Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
165
Добавлен:
04.06.2015
Размер:
263.68 Кб
Скачать

27. Лекция: Обзор архитектуры и возможностей систем Windows 2000/xp/2003/Vista/2008/7

В лекции рассмотрены следующие вопросы: история Windows; роль Windows NT; архитектура Windows; ядро; исполнительная подсистема; подсистемы окружения.

Содержание

  • Введение

  • Система Windows 2000

  • История Windows

  • Принципы проектирования Windows 2000 – расширяемость, переносимость, надежность, безопасность, совместимость, производительность, поддержка интернационализации и локализации.

  • Архитектура Windows 2000

  • Ядро Windows 2000

  • Обработка прерываний в ядре

  • Исполнительная подсистема (executive) ОС Windows 2000

  • Подсистемы окружения в Windows 2000

  • Ключевые термины

  • Краткие итоги

  • Набор для практики

    • Вопросы

    • Упражнения

    • Темы для курсовых работ, рефератов, эссе

Введение

Windows – наиболее распространённое семейство операционных систем для настольных и портативных компьютеров. Имеются также версии Windows для мобильных устройств (Windows Mobile) и для компьютерных кластеров. Можно без преувеличения сказать, что Windows – это тот мир, в котором живут и работают миллионы программистов. Windows в своем развитии бурно прогрессирует. Значительно повысилась надежность системы, значительно возросли ее возможности. В данной и следующей лекциях рассмотрены история, архитектура и возможности Windows. В "Обзор архитектуры и возможностей систем Windows 2000/XP/2003/Vista/2008/7 " и "Системные механизмы Windows " рассмотрены следующие вопросы:

  • История

  • Принципы проектирования

  • Компоненты системы

  • Подсистемы окружения

  • Файловая система

  • Работа в сети

  • Программный интерфейс.

Система Windows 2000

Windows 2000 – это 32-битовая многозадачная операционная система для микропроцессоров типа Intel. Windows 2000 продолжает линию развития, начатую в середине 1990-х гг. системой Windows NT.

Основные цели разработки Windows 2000 и последующих новых версий Windows (2003/2008/7):

  • переносимость

  • безопасность

  • соответствие POSIX

  • поддержка многопроцессорности

  • расширяемость

  • поддержка интернационализации

  • совместимость приложений с MS-DOS и ранними версиями Microsoft Windows.

Новые версии Windows используют архитектуру микроядра.

Windows 2000 доступна в нескольких версиях - Professional, Server, Advanced Server, National Server.

История Windows

Для большинства отечественных пользователей, включая автора, Windows стала доступной впервые в конце 1980-х гг. как графическая оболочка, запускаемая в среде операционной системы MS DOS командой win. Уже тогда были ощутимы основные характерные черты Windows, хотя она еще не была операционной системой, - удобный многооконный (как тогда называли) графический пользовательский интерфейс.

Затем появились наиболее известные в те годы версии - Windows 3.0, Windows 3.11, Windows for Workgroups (Windows для рабочих групп). Все они поддерживали исполнение приложений под управлением графической многооконной оболочки.

В 1988 Microsoft приняла решение о разработке переносимой ОС "new technology" (NT), которая поддерживала бы и OS/2, и POSIX API.

Первоначально Windows NT должна была использовать OS/2 API как свое естественное окружение, однако в процессе разработки NT была изменена и стала использовать Win32 API, что отражает популярность Windows 3.0.

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

Весьма важной линией развития Windows стало семейство клиентских ОС - Windows 9x – Windows 95 и Windows 98, затем – Windows Millennium. В этих операционных системах были реализованы расширенные мультимедийные возможности, поддержка драйверов самых разнообразных устройств (в том числе – механизм Plug-and-Play автоматического распознавания новых устройств и установки их драйверов), а также кодеки для обработки мультимедийной информации. Пользовательский интерфейс Windows 95 (с его "летающими листками" и характерным дизайном окон) стал эталоном для разработчиков GUI. Не случайно Microsoft значительно продлила срок поддержки Windows 98 для пользователей. Автору, так же как и миллионам других разработчиков, не хотелось "расставаться" с комфортным интерфейсом Windows 95 / 98.

Значительным рубежом в развитии ОС стал выпуск в 2001 г. ОС Windows XP, которая и в настоящее время, почти через 10 лет (дополненная Service Packs 1, 2 и 3), является одной из наиболее широко используемых ОС в мире. Кодовое название Windows XP – whistler (свистулька), по-видимому, из-за характерной мелодии, сопровождающей вход в системы и выход их системы. Windows XP популярна среди пользователей, благодаря удобному инсталлятору, повышенной надежности, удобному и эстетичному пользовательскому интерфейсу, расширенной поддержке драйверов устройств (начиная с Windows XP, практически никаких проблем с драйверами при установке новых устройств пользователи Windows не испытывают).

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

ОС Windows 2008 – серверная ОС с удобными средствами конфигурирования, удобной поддержкой сети, поддержкой параллельного программирования. Выпущена также ее специальная версия Windows 2008 HPC – High Performance Computing, с расширенной поддержкой параллелизма.

Недавно на рынке ОС появилась Windows 7 – клиентская ОС, по отзывам пользователей, весьма надежная и удобная.

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

Наиболее значительной представляется линия развития ОС Windows NT – Windows 2000 – Windows XP – Windows 2003 – Windows Vista - Windows 2008 – Windows 7. Это семейство ОС использует общие принципы архитектуры и общую кодовую базу (код ядра). Поэтому в дальнейшем в данной и следующей лекциях, рассматривая принципы организации Windows 2000, мы фактически рассматриваем архитектуру всех новых ОС семейства Windows.

Принципы проектирования Windows 2000 – расширяемость, переносимость, надежность, безопасность, совместимость, производительность, поддержка интернационализации и локализации.

Расширяемость. Windows 2000 имеет многоуровневую архитектуру. Ядро и его исполнительная подсистема (executive), исполняемое в защищенном режиме, обеспечивает базовые системные сервисы. Поверх ядра реализованы несколько серверных подсистем, работающих в пользовательском режиме. Модульная структура позволяет добавлять новые подсистемы окружения без модификации ядра.

Переносимость. Благодаря своим принципам проектирования и архитектуры, Windows 2000 может быть перенесена с одной аппаратной платформы на другую со сравнительно небольшими изменениями. Система написана на языках высокого уровня - C и C++. Код, зависящий от процессора, изолирован в динамически линкуемую библиотеку (DLL), называемую уровень абстрагирования от аппаратуры - hardware abstraction layer (HAL). Идея HAL была реализована фирмой Microsoft, по признанию ее менеджеров, гораздо раньше – при разработке в 1980-х гг. пакета Microsoft Office для различных аппаратных платформ, включая Macintosh / MacOS (ОС Windows тогда еще не было). Эта же идея была использована и в Windows 2000, и еще позднее – при реализации академической версии .NET – SSCLI (Rotor), работающей на трех различных платформах.

Надежность. Windows 2000 использует аппаратную защиту для виртуальной памяти и программные защитные механизмы для ресурсов ОС.

Безопасность. Как уже было сказано в предыдущих лекциях, именно с улучшения безопасности Windows 2000 была начата инициатива trustworthy computing, и с тех пор в каждой новой ОС Microsoft уделяет особое внимание безопасности.

Совместимость. Приложения, которые разработаны с учетом требований стандарта IEEE 1003.1 (POSIX), могут компилироваться для Windows 2000 без изменений в исходном коде и исполняться в среде Windows 2000.

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

Поддержка интернационализации (i18n) и локализации (l10n). Windows 2000 поддерживает различные языки и культурные среды (locales) с помощью специализированных библиотек - NLS API.

Архитектура Windows 2000

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

Схема архитектуры Windows 2000 приведена на рис. 27.1.

Рис. 27.1.  Архитектура Windows 2000.

В последующей части лекции рассмотрим подробнее основные компоненты архитектуры Windows 2000.

Ядро Windows 2000

Ядро в системе является основой функционирования исполнительной подсистемы (executive) и подсистем, выполняемых в пользовательском режиме. Отказы страниц в ядре исключены. Его исполнение никогда не прерывается.

Ядро выполняет следующие основные функции:

  • Планирование потоков

  • Обработка прерываний и исключений

  • Низкоуровневую синхронизацию процессов

  • Восстановление после отказов электропитания.

Особенно важной и принципиально новой в операционных системах особенностью является то, что ядро системы Windows - объектно-ориентированное. Ядро использует два набора объектов:

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

  • Управляющие объекты - асинхронные вызовы процедур, обработчики прерываний, объекты нотификации об электропитании, объекты состояния электропитания, объекты профилирования.

Поддержка потоков и процессов в ядре. Процесс имеет адресное пространство в виртуальной памяти, информацию (например, базовый приоритет) и тесную связь с одним или несколькими процессами. Потоки – единицы исполнения, планируемые диспетчером ядра. Каждый поток имеет свое собственное состояние, включая приоритет, связь с процессором и статистическую информацию. Поток может быть в следующих состояниях: ready, standby, running, waiting, transition и terminated.

Планирование в ядре. Диспетчер использует 32-уровневую схему приоритетов для определения порядка выполнения потоков. Приоритеты разбиты на два класса:

  • Класс real-time содержит потоки с приоритетами от 16 до 31.

  • Класс variable содержит потоки с приоритетами от 0 до 15.

Характерными чертами стратегии приоритетов Windows 2000 являются следующие:

  • Хорошее время ответа для потоков, использующих мышь и окна.

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

Планирование выполняется, когда поток переходит в состояние ready или wait, когда поток завершается, либо когда приложение изменяет приоритет потока или связь с процессором.

Потокам реального отдается предпочтение при выделении процессора; но ОС не гарантирует, что поток начнет выполняться в течение какого-либо определенного интервала времени (такой подход известен как soft real-time).

Обработка прерываний в ядре

Ядро обеспечивает обработку прерываний, если исключения и прерывания генерируются аппаратурой и программным обеспечением. Таким образом, в Windows 2000 введены средства обработки исключений (exceptions) – более высокоуровневый механизм обработки ошибок, чем сигналы в UNIX.

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

Диспетчер прерываний в ядре обрабатывает прерывание либо путем вызова подпрограммы, обслуживающей прерывание (например, драйвера устройства), либо путем вызова внутренней подпрограммы ядра.

Уровни запросов на прерывания в Windows 2000 приведены в таблица 1.

Таблица 1. Уровни запросов на прерывания в Windows 2000

уровни прерываний

типы прерываний

31

аппаратный контроль или ошибка шины

30

отказ электропитания

29

межпроцессорная нотификация (запрос к активности другого процессора, например, для диспетчеризации или обновления TLB - кэша страниц

28

часы (используется для отслеживания времени

27

профиль

3-26

традиционные IRQ-прерывания

2

диспетчеризация или отложенный вызов процедуры (DPC) - ядро

1

асинхронный вызов процедуры (АРС)

0

пассивно

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

Для иллюстрации приведем код на ассемблере x86 реализации spin lock:

mov eax, spinlock_address

mov ebx, SPINLOCK_BUSY

wait_cycle: lock xchg [eax], ebx

cmp ebx, SPINLOCK_FREE

jnz wait_cycle ;

<работа с разделяемым ресурсом – критическая секция>

mov eax, spinlock_address

mov ebx, SPINLOCK_FREE

lock xchg [eax], ebx

Исполнительная подсистема (executive) ОС Windows 2000

Рассмотрим более подробно исполнительную подсистему (executive) Windows 2000.

Менеджер объектов. Как уже было сказано, Windows 2000 использует объекты для управления всеми своими службами и для представления сущностей. Менеджер объектов исполнительной подсистемы управляет использованием всех объектов. Основные функции менеджера объектов:

  • Генерирация object handle - ссылки на объект ядра Windows 2000;

  • Выполнение проверок безопасности при работе с объектом;

  • Слежение за использованием каждого объекта процессами.

Объекты управляются стандартным набором методов: create, open, close, delete, query name, parse, security.

Модуль executive поддерживает именование объектов. Имя может быть постоянным или временным. Имена объектов структурируются как имена путей доступа к файлам в MS-DOS или UNIX.

Реализованы объекты-символические ссылки, которые подобны символическим ссылкам в UNIX и дают возможность иметь несколько синонимов для одного файла.

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

Каждый объект защищен списком управления доступом.

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

Менеджер виртуальной памяти в Windows 2000 использует страничную организацию с размером страницы 4 килобайта.

Используется двухуровневая схема выделения памяти:

  1. На первом шаге резервируется часть адресного пространства процесса.

  2. На втором шаге данное выделение поддерживается выделением пространства в файле откачки (paging file).

Схема распределения виртуальной памяти в Windows 2000 приведена на рис. 27.2.

Рис. 27.2.  Схема распределения виртуальной памяти в Windows 2000.

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

Трансляция виртуальных адресов в Windows 2000 использует несколько структур данных.

Каждый процесс имеет справочник страниц (page directory), содержащий 1024 элемента справочника страниц размером по 4 байта.

Каждый элемент справочника страниц ссылается на таблицу страниц, которая содержит 1024 элемента таблицы страниц (page table entries - PTEs) размером по 4 байта.

Каждый PTE ссылается на фрейм страницы (4 KB) в физической памяти.

Ссылка на элемент всегда занимает 10 битов (0..1023). Это свойство используется при трансляции виртуальных адресов в физические.

Страница может находиться в следующих состояниях: valid (корректна), zeroed (обнулена), free standby (свободна), modified (модифицирована), bad (некорректна).

На рис. 27.3 изображена структура виртуального адреса в Windows 2000.

Рис. 27.3.  Структура виртуального адреса в Windows 2000.

В виртуальном адресе 10 битов для page directory entry, 10 битов для page table entry, 12 битов для смещения в байтах на странице.

На рис. 27.4 изображена структура элемента таблицы страниц.

Рис. 27.4.  Структура элемента таблицы страниц в Windows 2000.

В элементе 5 битов отведено для защиты страницы, 20 битов - для адреса фрейма страницы, 4 бита - для выбора файла откачки, 3 бита для описания состояния страницы. Бит V равен 0.

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

Важный элемент менеджера процессов – механизм локального вызова процедуры (LPC). LPC передает запросы и результаты между клиентским и серверным процессами на локальной машине. В частности, он используется для запросов к сервисам различных подсистем ОС.

При создании канала для LPC должно быть указано сообщение одного из трех типов.

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

  • Второй тип – во избежание копирования больших сообщений, передаются ссылки на разделяемые объекты, содержащие сообщения.

  • Третий тип - быстрый LPC – используется графическими подсистемами Win32.

Рассмотрим структуру сообщения LPC, описанную на языке Си:

typedef struct _LPC_MESSAGE_HEADER {

// длина тела сообщения

USHORT DataLength;

// длина сообщения с заголовком

USHORT TotalLength; /

/ тип сообщения

USHORT MessageType;

USHORT DataInfoOffset;

// уникальный идентификатор процесса, пославшего сообщение

ULONG ProcessId;

уникальный идентификатор потока, пославшего сообщение

ULONG ThreadId;

// идентификатор сообщения

ULONG MessageId;

ULONG CallbackId;

} LPC_MESSAGE_HEADER, *PLPC_MESSAGE_HEADER;

Менеджер ввода-вывода в executive. Менеджер ввода-вывода отвечает за следующие компоненты и действия ОС:

  • Файловые системы

  • Управление кэш-памятью

  • Драйверы устройств

  • Сетевые драйверы.

Менеджер ввода-вывода следит за тем, какие файловые системы загружены, и управляет буферами для запросов на ввод-вывод.

Он также взаимодействует с менеджером виртуальной памяти для обеспечения ввода-вывода в файлы, отображаемые в память.

Менеджер ввода-вывода управляет кэш-менеджером, который обеспечивает кэширование для всей системы ввода-вывода.

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

Схема файлового ввода-вывода в Windows 2000 изображена на рис. 27.5.

Рис. 27.5.  Файловый ввод-вывод в Windows 2000.

Монитор безопасности в executive. Объектно-ориентированная архитектура Windows 2000 обеспечивает использование единого механизма для контроля доступа во время выполнения и аудита всех объектов системы.

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

Менеджер Plug-and-Play. Менеджер Plug-and-Play (PnP) используется для распознавания изменений в конфигурации оборудования и адаптации к ним (установки соответствующих драйверов).

Когда добавляются новые устройства (например, PCI или USB), менеджер PnP загружает соответствующий драйвер.

Менеджер PnP также следит за ресурсами, используемыми каждым устройством.

Соседние файлы в папке все лекции по ОС