Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Стоулинг ГЛАВА 2 Обзор ОС.doc
Скачиваний:
30
Добавлен:
11.05.2015
Размер:
510.46 Кб
Скачать

2.5. Обзор операционной системы windows 2000

В этом разделе изложены основные особенности операционной системы Win­dows 2000. Описание операционной системы UNIX представлено в следующем разде­ле. Для краткости вместо Windows 2000 мы будем употреблять название W2K.

История возникновения

Операционная система W2K появилась в результате развития операционной системы под названием MS-DOS (или PC-DOS), разработанной фирмой Microsoft для первого персонального компьютера фирмы IBM. Первая версия этой операционной системы, DOS 1.0, была выпущена в августе 1981 года и существенно отличалась от современной W2K. Операционная система DOS 1.0 содержала в себе 4000 строк исходного ассемблерного кода. Эта система работала на микро­ процессоре Intel 8086 и занимала 8 Кбайт памяти.

Когда фирма IBM начала выпускать персональные компьютеры PC XT с жест­ким диском, фирма Microsoft разработала DOS 2.0, которая вышла в 1983 году. Данная версия операционной системы обеспечивала поддержку жесткого диска, а также иерархическую структуру каталогов. До этого на диске мог находиться только один каталог с файлами, количество которых не превышало 64. Если в эпоху дискет этого было достаточно, то с появлением жесткого диска это стало слишком сильным ограничением. Новая версия операционной системы позволяла хранить в каталогах не только файлы, но и подкаталоги, а кроме того, она предоставляла пользователю более богатый набор команд. С помощью этих команд можно было выполнять дейст­вия, которые в предыдущей версии выполнялись с помощью внешних служебных программ. Некоторые добавленные возможности были привнесены из операционной системы UNIX, например, такие, как перенаправление ввода-вывода (т.е. возмож­ность изменять источник ввода и приемник вывода данного приложения) и печать в фоновом режиме. Постоянно находящаяся в оперативной памяти часть этой опера­ционной системы возросла до 24 Кбайт.

Когда в 1984 году фирма IBM объявила о выпуске компьютера PC AT, Mi­crosoft выставила на рынок программных продуктов версию DOS 3.0. Персо­нальные компьютеры AT работали на процессоре Intel 80286, который обладал по сравнению со своим предшественником дополнительными возможностями расширенной адресации и защиты памяти. Операционной системой DOS эти воз­можности не использовались. Чтобы сохранять совместимость с предыдущими версиями, эта операционная система использовала процессор 80286 просто как быстрый процессор 8086. Эта система обеспечивала поддержку новой клавиа­туры и новых жестких дисков. Даже с учетом таких ограниченных возможностей потребляемая операционная память возросла до 36 Кбайт. С тех пор было сделано несколько обновлений версии 3.0, о которых следует упомянуть. Систе­ма DOS 3.1, вышедшая в 1984 году, поддерживала сети персональных компью­теров. Размер ее резидентной части не изменился, что было достигнуто за счет увеличения подкачиваемой с диска части операционной системы. DOS 3.3, вы­пущенная в 1987 году, обеспечивала поддержку новой серии машин фирмы IBM — PS/2. Эта версия, как и предыдущие, не использовала всех преимуществ процессора компьютера PS/2, которые предоставлялись благодаря микросхемам 80286 и 32-битовой 80386. На этой стадии минимальная резидентная часть сис­темы, которая зависела от определенных дополнительных возможностей, воз­росла до 46 Кбайт.

До этого времени операционная система DOS далеко не полностью исполь­зовала возможности системы, на которой она эксплуатировалась. Появившийся процессор 80486, а впоследствии и Pentium, обеспечивали возможности и произ­водительность, которые бесхитростная операционная система DOS была просто не в состоянии использовать. Тем временем в начале 80-х годов фирма Microsoft начала разрабатывать графический интерфейс пользователя (graphical user inter­face — GUI), который служил бы посредником между пользователем и DOS. Причиной этого послужило то, что фирма Microsoft решила посостязаться с фирмой Macintosh, операционная система которой на то время не имела себе равных по простоте использования. К 1990 году Microsoft разработала графиче­ский интерфейс пользователя, известный под названием Windows 3.0, который приблизился к Macintosh по своей дружественности к пользователю. Однако Windows 3.0 имел тот недостаток, что он был надстройкой поверх DOS.

Фирмой Microsoft была также предпринята неудачная попытка разработать операционную систему нового поколения совместно с фирмой ЮМ5. Эта опера­ционная система должна была в полной мере использовать мощности новых микропроцессоров и в то же время быть такой же удобной в использовании, как и Windows. После этого Microsoft самостоятельно разработала операционную систему Windows NT, которая использует возможности современных микропро­цессоров и обеспечивает многозадачность в однопользовательской или много­пользовательской среде.

Первая версия Windows NT — 3.1 — появилась в 1993 году с таким же графическим интерфейсом пользователя, как и у Windows 3.1, другой операци­онной системы фирмы Microsoft, которая последовала за Windows 3.0. Однако NT 3.1 была новой 32-битовой операционной системой, которая поддерживала приложения предыдущих версий DOS и Windows, а также приложения операци­онной системы OS/26.

После выпуска нескольких версий NT 3.x фирма Microsoft выпустила сис­тему NT 4.0, которая, в основном, имела ту же внутреннюю архитектуру, что и 3.x. Наиболее заметным внешним изменением было то, что NT 4.0 предоставля­ла такой же интерфейс пользователя, как и Windows 98. Главное же изменение архитектуры состояло в том, что некоторые графические компоненты, которые в версиях 3.x работали как часть подсистемы Win32 в режиме приложений поль­зователей, были перенесены в исполняющую систему Windows NT, которая ра­ботает в режиме ядра. В результате работа этих важных функций ускорилась, что стало несомненным преимуществом. Потенциальным недостатком стало то, что теперь эти графические функции получили доступ к сервисам низкого уров­ня, что могло негативно повлиять на надежность операционной системы.

В 2000 году фирма Microsoft сделала еще одно важное обновление, которое теперь называется Windows 2000. Архитектура исполняющей системы и микро­ядра не претерпела фундаментальных изменений по сравнению с NT 4.0, однако в системе появились некоторые новые особенности. В операционную систему W2K были добавлены дополнительные сервисы и возможности, поддерживаю­щие распределенную обработку. Главной особенностью W2K стала служба Active Directory, которая обслуживает распределенные каталоги и может на основании имен объектов выдавать информацию о них.

В заключение сделаем одно замечание о различии между W2K Server и W2K Professional. Архитектура микроядра и архитектура исполняющей системы по существу являются одинаковыми, однако в версии Server содержатся некото­рые сервисы, которые необходимы для использования системы в качестве сете­вого сервера.

Однопользовательская многозадачность

Операционная система W2K является типичным представителем операци­онных систем для микрокомпьютеров (в качестве других примеров можно при­вести OS/2 и MacOS). Она была вызвана к жизни необходимостью использовать возможности современных 32-битовых микропроцессоров, которые по скорости, совершенству используемого аппаратного обеспечения и емкости памяти сравни­мы с теми мейнфреймами, которые выпускались еще несколько лет назад.

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

  1. Открыть программу для создания изображений.

  2. Создать нужный рисунок и сохранить его в виде файла или временно поместить в буфер обмена.

  3. Закрыть графическую программу.

  4. Открыть текстовый редактор.

  5. Вставить рисунок в нужное место.

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

Второй причиной появления многозадачности является увеличение объема вычислений в соответствии с моделью клиент/сервер. При этом персональный компьютер или рабочая станция (клиент) и главная вычислительная система (сервер) используются для совместного выполнения данного приложения. Обе машины связаны между собой, и за каждой из них закреплена та часть задания, которая отвечает возможностям данной машины. Модель клиент/сервер может быть реализована в локальной сети персональных компьютеров и серверов или с помощью установления непосредственной связи между системой пользователя и главной вычислительной системой. Для обработки приложения могут привле­каться один или несколько персональных компьютеров и один или несколько серверов. Используемая при этом операционная система должна поддерживать сложное сетевое аппаратное обеспечение реального времени, а также связанные с ним протоколы обмена информацией и компоненты передачи данных. К тому же операционная система должна постоянно поддерживать взаимодействие с поль­зователем. Приведенные выше замечания касаются версии W2K Professional. Версия Server также является многозадачной, но она может поддерживать рабо­ту нескольких пользователей, используя для связи с сервером несколько терми­налов, а также предоставляя разделяемые сервисы. Используемая в качестве In­ternet-сервера W2K может одновременно поддерживать тысячи Web-соединений.

Архитектура

На рис. 2.13, взятом из [SOLO98b], представлена общая структура операци­онной системы W2K. Модульная структура этой системы делает ее довольно гибкой. Она в состоянии работать на самых разных аппаратных платформах и поддерживать приложения, написанные для разных операционных систем. К моменту написания этой книги операционная система W2K была реализована только на аппаратной платформе Pentium/x86.

Как и прочие операционные системы, W2K различает прикладные про­граммы и программы операционной системы. К последним относятся испол­няющая система, микроядро, драйверы устройств и уровень аппаратных абст­ракций (hardware abstraction layer — HAL), которые выполняются в режиме яд­ра. Программы, выполняющиеся в этом режиме, имеют доступ к системным данным и к аппаратному обеспечению. Остальные программы, работающие в пользовательском режиме, имеют ограниченный доступ к системным данным.

Организация операционной системы

В операционной системе W2K трудно однозначно выделить микроядро. Вместо этого W2K имеет структуру, которую фирма Microsoft называет модифицированной архитектурой микроядра. Как и обычной архитектуре микроядра, операционной системе W2K присуще четкое разделение на модули. Каждая функция системы управляется только одним компонентом операционной систе­мы. Остальные ее части и все приложения обращаются к этой функции через стандартный интерфейс. Доступ к основным системным данным можно получить только через определенные функции. В принципе любой модуль можно удалить, обновить или заменить, не переписывая всю систему или стандартный интерфейс прикладного программирования (application program interface — API). Однако в отличие от систем с четко выделенным микроядром, у W2K многие функции системы, которые не входят в микроядро, выполняются в режиме ядра, что сде­лано с целью повышения производительности. Разработчики системы W2K об­наружили, что использование традиционного подхода с выделением микроядра приводит к тому, что многие функции, не входящие в микроядро, требуют на­личия нескольких переключателей процессов или потоков, переключателей ре­жимов, а также используют дополнительные буферы памяти.

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

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

Рис. 2.13. Архитектура операционной системы Windows 2000

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

  • Драйверы устройств. К ним относится как файловая система, так и драйверы аппаратных устройств, которые преобразуют поступившие от пользова­теля вызовы функций ввода-вывода в запросы для конкретных устройств.

Исполнительная система W2K включает модули, обеспечивающие поддерж­ку ее функций и предоставляющие работающим в пользовательском режиме программам соответствующий API. Ниже приведено краткое описание каждого из модулей исполнительной системы.

  • Диспетчер ввода-вывода. Поддерживает доступность для приложений устройств ввода-вывода. Кроме того, этот диспетчер отвечает за координацию работы драйверов устройств, выполняющих дальнейшую обработку. Диспетчер ввода-вывода реализует все API ввода-вывода W2K и (с помощью диспетчера объектов) следит за безопасностью и именованием устройств и файловых систем. Система ввода-вывода W2K рассматривается в главе 11, "Управление вводом-выводом и дисковое планирование".

  • Диспетчер объектов. Создает и удаляет объекты и абстрактные типы данных исполнительной системы W2K, а также управляет ими. Эти объекты и абстрактные типы данных используются для представления таких ресурсов, как процессы, потоки и объекты синхронизации. Диспетчер объектов обеспечивает выполнение стандартных правил поддержки объектов, именования и безопасности. Кроме того, этот диспетчер создает дескрипторы объектов, в которых содержится информация о правах доступа и указатель на объект. Объекты операционной системы W2K обсуждаются немного позже.

  • Монитор безопасности обращений. Обеспечивает выполнение правил прав доступа и аудита. Объектно-ориентированная модель операционной системы W2K позволяет сформировать согласованный и единообразный взгляд на безопасность фундаментальных составляющих исполняющей системы. Так, для авторизации доступа и аудита всех защищенных объектов, включая файлы, процессы, адресные пространства и устройства ввода-вывода, опера­ционная система W2K использует одни и те же служебные программы. Безопасность W2K обсуждается в главе 15, "Безопасность".

  • Диспетчер процессов и потоков. Создает и удаляет объекты, а также следит за процессами и потоками. Управление процессами и потоками в операционной системе W2K рассматривается в главе 4, "Потоки, симметричная мультипроцессорная обработка и микроядра".

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

  • Диспетчер виртуальной памяти. Отображает виртуальные адреса адресного пространства процессов на физические страницы памяти компьютера. Управление виртуальной памятью в операционной системе W2K описано в главе 8, "Виртуальная память".

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

  • Графические модули. Создают оконный экранный интерфейс и управляют графическими устройствами.

Пользовательские процессы

Операционная система W2K поддерживает четыре основных типа пользова­тельских процессов.

  • Специальные процессы системной поддержки. К таким процессам относят­ся служебные программы, которые не вошли в операционную систему W2K, например процесс входа в систему и диспетчер сессий.

  • Серверные процессы. Другие сервисы W2K, такие, как журнал регистра­ции событий.

  • Подсистемы среды. Предоставляют приложениям пользователя сервисы W2K, обеспечивая таким образом среду операционной системы. Поддержи­ваются такие подсистемы, как Win32, POSIX и OS/2. В каждую подсистему среды входят динамически компонуемые библиотеки, преобразующие вызо­вы приложений пользователя в вызовы операционной системы W2K.

  • Приложения пользователя. Могут быть одного из пяти типов: Win32, POSIX, OS/27, Windows 3.1 или MS-DOS.

Операционная система W2K поддерживает приложения, написанные для W2K, Windows 98 и нескольких других операционных систем. Эта поддержка обеспечивается с помощью единой и компактной исполнительной системы через защищенные подсистемы среды, к которым относятся части операционной сис­темы W2K, взаимодействующие с конечным пользователем. Каждая из подсис­тем является отдельным процессом, а исполнительная система защищает адрес­ное пространство этих подсистем от вмешательства других подсистем и прило­жений. Защищенная подсистема предоставляет пользователю графический интерфейс или интерфейс командной строки, который определяет внешний вид и наполнение операционной системы для конечного пользователя. Кроме того, каждая защищенная подсистема обеспечивает свой API для каждой из операци­онных сред. Это означает, что приложения, разработанные для определенной операционной среды, могут быть запущены W2K в неизменном виде, так как им будет предоставлен тот интерфейс операционной системы, для которого они бы­ли созданы. Так, 16-битовые приложения для операционной системы OS/2 мож­но запускать в операционной системе W2K без каких-либо изменений. Более то­го, поскольку W2K разработана независимой от платформы (что обеспечивается наличием уровня аппаратных абстракций), защищенные подсистемы и приложе­ния, которые они поддерживают, должны сравнительно легко переноситься с одной аппаратной платформы на другую. Во многих случаях для этого нужна лишь обычная перекомпиляция.

Наиболее важной из подсистем является Win32. Win32 — это API, который реализован как для W2K, так и для Windows 98. Некоторые возможности подсисте­мы Win32 недоступны в Windows 98, но все возможности, реализованные в Windows 98, идентичны возможностям, имеющимся в W2K. Некоторые основные функции, которые предоставляет программисту Win32, перечислены в табл. 2.5.

Таблица 2.5. Некоторые области API Win32 [RICH97]

Атомы Безопасность

Ввод с помощью клавиатуры и мыши Время

Вывод на печать Графические примитивы

Динамически компонуемые библиотеки Журнал регистрации событий

Коммуникации Конвейеры и почтовые ящики

Консоли Мультимедиа

Операции с буфером обмена Отладка

Порожденные окна Процессы и потоки

Резервное копирование на магнитную ленту Ресурсы

Сервисы Сети

Системная информация Структурированная обработка исключений

Управление окнами Управление памятью

Управление реестром Файлы

Модель клиент/сервер

Структура исполнительной системы, защищенных подсистем и прило­жений выполнена в соответствии с вычислительной моделью кли­ент/сервер — общепринятой моделью распределенных вычислений, которая обсуждается в части 6, "Распределенные системы". Можно сказать, что эта структура внутренне присуща W2K.

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

К преимуществам модели клиент/сервер можно отнести следующие.8

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

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

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

• Эта модель является базой для распределенных вычислений. Обычно распределенные вычисления используют модель клиент/сервер, с реализацией удаленных вызовов процедур посредством распределенных модулей клиен­тов и серверов, а также путем обмена сообщениями между клиентами и серверами. В операционной системе W2K локальный сервер может переда­вать сообщение от локального приложения-клиента для обработки на уда­ленном сервере. Клиентам нет нужды иметь информацию о том, как обра­батываются их запросы — локально или удаленно, ведь способ обработки может изменяться динамически в зависимости от загруженности систем и от изменений конфигурации.

Потоки и симметричная многопроцессорность

Возможности поддержки потоков и поддержки симметричной многопроцес­сорности, о которых мы говорили в разделе 2.4, — две важные характеристики операционной системы W2K. Ниже перечислены основные возможности под­держки потоков и SMP в операционной системе W2K [CUST93].

• Служебные программы операционной системы могут выполняться на любом из свободных процессоров; различные программы могут выполняться одно­ временно на разных процессорах. Операционная система W2K поддерживает выполнение одного процесса, разделенного на несколько потоков. Эти потоки могут выполняться одно­ временно на нескольких процессорах.

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

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

Объекты Windows 2000

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

  • Инкапсуляция. Объект состоит из одного или нескольких полей данных (атрибутов), и одной или нескольких процедур, с помощью которых можно обрабатывать эти данные (методов, сервисов). Единственный способ полу­чить доступ к данным объекта — запросить один из его методов (сервисов). Таким образом, данные объекта легко защитить от несанкционированного или некорректного использования.

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

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

  • Полиморфизм. Для управления объектами любого типа операционная система W2K использует общий набор функций API — в этом и заключается ее полиморфизм. Однако W2K не является полностью полиморфной, потому что в ее состав входит множество API для конкретных типов объектов.

Не все сущности операционной системы W2K являются объектами. Объек­ты используются в тех случаях, когда данные открыты для доступа в пользова­тельском режиме, а также при совместном использовании данных и ограничении доступа. Среди представляемых объектами сущностей —файлы, процессы, пото­ки, семафоры, таймеры и окна. Система W2K создает все типы объектов и управляет ими одним и тем же способом — с помощью диспетчера объектов.

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

Каждый объект исполнительной системы (иногда эти объекты называются объектами ядра, чтобы отличать их от объектов пользовательского уровня, не имеющих отношения к исполнительной системе) находится в области памяти, выделяемой ядром, доступ к которой имеет только ядро. Некоторые элементы структуры данных присущи объектам всех типов (например, имена объектов, параметры безопасности, счетчик использований). С другой стороны, каждый отдельный тип объектов имеет свои специфические элементы (например, при­оритет потока объекта). Структуры данных объектов ядра доступны только через ядро; приложение не может ни размещать в памяти эти структуры данных, ни непосредственно считывать или записывать в них информацию. Вместо этого приложения манипулируют объектами опосредованно, через набор функций для работы с объектами, которые поддерживаются исполнительной системой. Когда создается объект для какого-нибудь приложения, последнему возвращается де­скриптор созданного объекта, который, по сути, является указателем на объект. Впоследствии дескриптор объекта может использоваться любым потоком этого процесса при вызове функций Win32, работающих с объектами.

С объектами может быть связана информация о безопасности, представлен­ная в виде дескриптора безопасности (Security Descriptor — SD). Эта информа­ция используется для ограничения доступа к объекту. Например, процессом мо­жет быть создан объект, являющийся именованным семафором, открывать и ис­пользовать который будет позволено лишь некоторым пользователям. В дескрипторе защиты этого семафора могут быть перечислены пользователи, ко­торым разрешен (или запрещен) к нему доступ, а также тип разрешенного дос­тупа (для чтения, записи, изменения и т.д.).

В операционной системе W2K объекты могут быть именованными или не­именованными. Если при работе процесса создается неименованный объект, то диспетчер объектов возвращает дескриптор этого объекта. Впоследствии обра­титься к этому объекту можно будет только через его дескриптор. У именован­ного объекта есть имя, с помощью которого другие процессы могут получить его дескриптор. Например, если нужно, чтобы процесс А выполнялся синхронно с процессом В, в нем можно создать объект-событие, а затем передать его имя процессу В, в котором это событие будет использовано для синхронизации. Од­нако если нужно синхронизовать два потока одного и того же процесса А, то в нем можно создать неименованный объект-событие, потому что другие процессы не должны ничего о нем знать.

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

  • Объекты управления. Объекты этого типа используются для управления операциями микроядра, не связанными с диспетчеризацией и синхрониза­цией. Объекты управления микроядра перечислены в табл. 2.6.

  • Объекты диспетчера. Используются для диспетчеризации и синхронизации операций системы. Эти объекты описаны в главе 6, "Взаимоблокировка и голодание".

Таблица 2.6. Объекты управления микроядра NT [MS96]

Асинхронный Используется для прерывания выполнения определенного потока и

вызов процедуры вызова процедуры в указанном режиме процессора

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

ния прерывания посредством записи из таблицы диспетчеризации преры­ваний (Interrupt Dispatch Table — IDT). Такая таблица, используемая для диспетчеризации прерываний, имеется у каждого процессора

Процесс Представляет собой виртуальное адресное пространство и управляющую

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

Профиль Используется в качестве меры при распределении времени выполне-

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

Операционная система W2K не является объектно-ориентированной в пол­ном смысле. Она реализована не на объектно-ориентированном языке програм­мирования. Структуры данных, содержащиеся в компоненте исполнительной системы, не представлены в виде объектов. Тем не менее W2K иллюстрирует мощь объектно-ориентированной технологии и ее использование при разработке операционных систем.