Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
27. Лекция: Обзор архитектуры и возможностей систем Windows 2000/XP/2003/Vista/2008/7
В лекции рассмотрены следующие вопросы: история Windows; роль Windows NT; архитектура Windows; ядро; исполнительная подсистема; подсистемы окружения.
Содержание
Введение
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):
Новые версии 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-уровневую схему приоритетов для определения порядка выполнения потоков. Приоритеты разбиты на два класса:
Характерными чертами стратегии приоритетов 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 использует объекты для управления всеми своими службами и для представления сущностей. Менеджер объектов исполнительной подсистемы управляет использованием всех объектов. Основные функции менеджера объектов:
Объекты управляются стандартным набором методов: create, open, close, delete, query name, parse, security.
Модуль executive поддерживает именование объектов. Имя может быть постоянным или временным. Имена объектов структурируются как имена путей доступа к файлам в MS-DOS или UNIX.
Реализованы объекты-символические ссылки, которые подобны символическим ссылкам в UNIX и дают возможность иметь несколько синонимов для одного файла.
Процесс получает ссылку на объект при его создании, при открытии уже существующего объекта, при получении скопированной ссылки от другого процесса, либо путем наследования ссылки от процесса-родителя.
Каждый объект защищен списком управления доступом.
Менеджер виртуальной памяти в executive. При проектировании менеджера виртуальной памяти предполагалось, что процессор поддерживает для отображения виртуальных адресов в физические механизм страничной организации, прозрачный кэш для многопроцессорных систем, а также алиасы для виртуальных адресов.
Менеджер виртуальной памяти в Windows 2000 использует страничную организацию с размером страницы 4 килобайта.
Используется двухуровневая схема выделения памяти:
Схема распределения виртуальной памяти в 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 должно быть указано сообщение одного из трех типов.
Рассмотрим структуру сообщения 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 также следит за ресурсами, используемыми каждым устройством.
Над executive надстраиваются процессы пользовательского режима, обеспечивающие исполнение программ, разработанных для других ОС.
Windows 2000 использует подсистему Win32 как основное операционное окружение. Подсистема Win32 используется для запуска всех процессов. Она же обеспечивает средства работы с мышью, клавиатурой и средства графики.
Окружение MS-DOS обеспечивается приложением Win32, называемым Virtual Dos machine (VDM), процессом пользовательского уровня, для которого поддерживается страничная организация и диспетчеризация, как и для всех других потоков.
Окружение для 16-битовых Windows обеспечивается VDM, которая содержит подсистему Windows on Windows. Последняя предоставляет процедуры ядра Windows 3.1 для менеджера окон и функций GDI.
Подсистема POSIX спроектирована для исполнения POSIX-приложений, следующих POSIX.1 стандарту, который базируется на модели UNIX.
Подсистема OS/2 выполняет OS/2 - приложения.
Подсистема входа и безопасности аутентифицирует пользователей, входящих в систему Windows 2000. Требуется, чтобы пользователи имели учетную запись с логином и пароль. Пакет аутентификации подсистемы безопасности аутентифицирует всех пользователей, которые пытаются осуществить доступ к какому-либо объекту системы. Windows 2000 использует Kerberos как пакет аутентификации по умолчанию.
Plug-and-Play (PnP) механизм автоматического распознавания изменений в конфигурации оборудования и адаптации к ним (установки соответствующих драйверов).
Virtual Dos Machine (VDM) - процесс пользовательского уровня, обеспечивающий совместимость с приложениями MS-DOS.
Блокировщик (spin lock, буквально вертящийся замок) системный механизм синхронизации, используемый для взаимного исключения процессов ядра Windows.
Исполнительная подсистема (executive) основная часть ядра Windows, исполняемая в защищенном режиме, реализующая базовые системные сервисы.
Локальный вызов процедуры (LPC) системный механизм вызова процедур Windows, передающий запросы и результаты между клиентским и серверным процессами на локальной машине; используется для запросов к сервисам различных подсистем ОС.
Объект-диспетчер - системный объект в Windows, управляющий диспетчеризацией и синхронизацией.
Объектная ссылка (object handle) - ссылка на системный объект ядра Windows.
Управляющий объект - системный объект Windows, управляющий асинхронным вызовом процедуры, обработкой прерывания, нотификацией об электропитании или профилированием.
Уровень абстрагирования от аппаратуры (hardware abstraction layer, HAL) динамически линкуемая библиотека Windows, инкапсулирующая код, зависящий от конкретного процессора, - тем самым обеспечивающая независимость от аппаратуры всего остального кода Windows.
Windows 2000 / XP / 2003 / 2008 / 7 новейшая линия в развитии ОС Windows, которой предшествовало более чем 20-летнее развитие Windows от графической оболочки в среде MS DOS до наиболее популярной в мире операционной системы. Windows 2000 объектно-ориентированная ОС, основными целями разработки которой являются переносимость, безопасность, соответствие POSIX, поддержка многопроцессорности, расширяемость, поддержка интернационализации, совместимость приложений с MS DOS и первыми версиями Windows. Использует архитектуру микроядра.
Первой ОС в новой линии развития Windows стала Windows NT, выпущенная в середине 1990-х гг. Windows NT, 2000 и более новые версии Windows имеют общую кодовую базу ядро ОС.
Windows 2000 написана на C и C++. Код, зависящий от процессора, выделен в специальный API hardware abstraction layer (HAL).
Архитектура Windows 2000 - многоуровневая. В защищенном режиме исполняется ядро, исполнительная подсистема ядра executive, реализующая базовые системные сервисы, и HAL. Над этими компонентами надстраиваются подсистемы пользовательского режима, эмулирующие различные ОС и обеспечивающие реализацию безопасности.
Ядро Windows разработано в объектно-ориентированном стиле и использует два набора системных объектов объекты-диспетчеры и управляющие объекты.
Ядро поддерживает процессы и потоки. Используется гибкая система приоритетов, включающая поддержку потоков реального времени и разделения времени. Процессы реального времени планируются как soft real-time (без обязательности выдерживания фиксированного интервала времени ответа).
Ядро обеспечивает обработку прерываний и системный механизм исключений. Для синхронизации процессов ядра используются блокировщики типа spin locks.
Менеджер системных объектов обеспечивает генерацию системных объектных ссылок (object handles) и выполнение базовых операций над объектами. Поддерживается именование объектов и объекты символические ссылки. Каждый объект защищен списком управления доступом.
Для реализации виртуальной памяти используется двухуровневая таблица страниц с размером страницы 4 килобайта. Используются файлы откачки.
Для системных вызовов процедур используется механизм LPC (local procedure call), обеспечивающий передачу сообщений или ссылок на общим области памяти.
Менеджер ввода-вывода поддерживает синхронные и асинхронные операции, тайм-ауты для драйверов, кэширование ввода-вывода, использование файлов, отображаемых в память.
Монитор безопасности использует маркеры безопасности процессов и списки управления доступом к объектам для авторизации.
Менеджер PnP отслеживает изменения в конфигурации и установку соответствующих драйверов новых устройств.
Подсистемы окружения Windows: подсистема Win32; DOS Virtual Machine; подсистема Windows on Windows (исполнение 16-битовых приложений Windows); подсистема POSIX, подсистема OS/2; подсистема входа и безопасности (управляет учетными записями пользователей, используя Kerberos-аутентификацию по умолчанию).
Вопросы
Упражнения
Темы для курсовых работ, рефератов, эссе