Особенности архитектуры и основные возможности OS/2 Warp
Строение и функционирование OS/2 можно считать практически идеальными с точки зрения теории и довольно неплохими – в реализации. В качестве подтверждения этому можно привести один пример, который представляется очень показательным: OS/2 до сегодняшних дней практически неизменна, начиная с версии 2.0, увидевшей свет в 1992 году. Этот факт говорит о глубокой продуманности архитектуры системы, ведь и по сей день OS/2 является одной из самых мощных и продуктивных ОС. Здесь наиболее показательными являются тесты серверов.
В одной из вычислительных лабораторий Санкт-Петербургского государственного университета аэрокосмического приборостроения (ГУАП) с 1995 года в течение нескольких лет функции сервера кафедры вычислительных систем и сетей выполняла OS/2 Warp Adwanced Server. При переходе на сервер Windows NT 4.0 пришлось в два раза увеличить объём оперативной памяти и поменять процессор (с Pentium 90 до Pentium II 300), и даже после этого скорость работы обычных приложений на рабочих станциях не смогла достичь той производительности, какую имели пользователи при сервере на базе OS/2. Аналогичные замечания можно прочесть и в зарубежных публикациях – однопроцессорный OS/2 Warp Server обгоняет по производительности двухпроцессорную Windows NT. Разработчики системы OS/2 решили использовать статические структуры данных (таблицы) для различных системных информационных структур, что приводит к большему быстродействию. Для реализации механизмов поддержки виртуальной памяти использованы наиболее эффективные алгоритмы. Очень удачно реализована диспетчеризация задач.
В OS/2 имеется несколько видов виртуальных машин для выполнения прикладных программ. Собственные 32- и 16-разрядные программы OS/2 выполняются на отдельных виртуальных машинах в режиме вытесняющей многозадачности и могут общаться между собой с помощью средств DDE OS/2. Прикладные программы DOS и Win 16 могут запускаться на отдельных виртуальных машинах в многозадачном режиме. При этом они поддерживают полноценные связи DDE и OLE 2.0 друг с другом и связи DDE с 32-разрядными программами OS/2. Кроме того, при желании можно запустить несколько программ Win 16 на общей виртуальной машине Win 16, где они работают в режиме невытесняющей многозадачности, как это реализовано в Windows 3.х.
Разнообразные сервисные функции API OS/2, в том числе SOM (system object model – модель системных объектов), обеспечиваются с помощью системных динамических библиотек DLL, к которым можно обращаться без требующих затрат времени переходов между кольцами защиты. Ядро OS/2 предоставляет многие базовые сервисные функции API, обеспечивает поддержку файловой системы, управление памятью и имеет диспетчер аппаратных прерываний. В ядре виртуальных DOS-машин (VDM-ядре) осуществляется эмуляция DOS и процессора 8086, а также управление VDM. Драйверы виртуальных устройств обеспечивают уровень аппаратной абстракции. Драйверы физических устройств напрямую взаимодействуют с аппаратурой.
Модуль реализации механизмов виртуальной памяти в ядре OS/2 поддерживает большие, постраничные, разбросанные адресные пространства, составленные из объектов памяти. Каждый объект памяти управляется так называемым «пейджером» – задачей вне ядра, обеспечивающей резервное хранение страниц объекта памяти. Адресные пространства управляются отображением или размещением объектов памяти внутри них. Ядро управляет защитой памяти и её распределением на основе объектов памяти абстрактным образом, вне зависимости от каких-либо конкретных аппаратных средств трансляции процессорных адресов. В частности, ядро интенсивно использует режим копирования при записи для придания программам способности делить объекты памяти без копирования большого числа страниц, когда новое адресное пространство получает доступ к объекту памяти. Новые копии страниц создаются только тогда, когда программа в одном из адресных пространств обновляет их. Когда ядро принимает страничный сбой в объекте памяти и не имеет страницы памяти в наличии или когда оно должно удалить страницы из памяти по требованию других программ, работающих в машине, оно с помощью механизма IPC1 уведомляет пейджер об объекте памяти, в котором произошёл сбой. Теперь дело пейджера сервера приложений определить, каким образом предоставить или сохранить данные. Это позволяет системе устанавливать различную семантику для объектов памяти, основываясь на потребностях программ, которые их используют.
Ядро управляет средами исполнения для программ обеспечением множественных заданий и потоков. Каждое задание имеет своё собственное адресное пространство или отображение. Оно назначает объекты памяти, которые задание отобразило на диапазон адресов внутри адресного пространства. Задание также является блоком размещения ресурсов и защиты, при этом заданиям придаются возможности и права доступа к средствам IPC системы. Для поддержки параллельного исполнения с другой программой в пределах одного адресного пространства ядро отделяет среду исполнения от действительно идущего потока инструкций. Потоки вычислений, включая процессорные ресурсы, потребные для их поддержки, называются потоками. Таким образом, программа может быть загружена в задание и может быть исполнена в нескольких различных местах в коде в одно и то же время на мультипроцессоре или параллельной машине. Это приводит к повышению быстродействия приложения.
Система IPC обеспечивает базовый механизм, позволяющий потокам работать в различных заданиях для связи друг с другом. Система IPC поддерживает надёжную доставку сообщений на порты. Порты представляют собой защищенные каналы между заданиями. Каждому заданию, использующему порт, приписывается набор прав на этот порт. Права могут быть различными для разных заданий. Только одно задание может получать по какому-либо порту, хотя любой поток внутри задания может выполнять операцию приёма. Одно или более заданий могут иметь права посылать в порт. Ядро позволяет заданиям применять систему IPC на передачу друг другу прав на порт. Оно также обеспечивает высокопроизводительный способ передачи больших областей данных в сообщениях. Вместо того чтобы копировать данные, сообщение содержит указатель на них, он называется указателем на данные вне линии. Когда ядро передает сообщение от передатчика к приёмнику, оно заставляет передаваемую память появиться в адресном пространстве приёмника и, как вариант, исчезнуть из адресного пространства передатчика. Ядро само структурировано как задание с потоками, и большинство системных сервисов реализованы как механизмы IPC к ядру, а не как прямые системные вызовы.
Для поддержки операций ввода/вывода (I/O) и доступа к внешним устройствам ядро ОС обеспечивает доступ к ресурсам I/O, таким как устройства с отображаемой памятью, I/O порты и каналы прямого доступа к памяти (DMA1), а также возможность отражать прерывания на драйверы устройств, исполняемые в пользовательском пространстве. Оно имеет сервисы, которые позволяют приоритетным программам заполучать устройства в своё владение: такими программами обычно являются задачно-нейтральные сервисы, типа серверов драйверов устройств, работающих как приложения. Поскольку ядро обязано разместить все прерывания (в силу того, что прерывания обычно выдаются в приоритетном состоянии компьютера, а также в целях поддержания целостности системы), оно имеет логику, которая определяет, должно ли оно обрабатывать прерывание или его следует отразить на сервер. Если прерывание следует отразить в приложение, оно должно быть зарегистрировано в ядре и содержать код, который будет ожидать, пока ядро не отразит прерывание. Как только прерывание отражено, в приложении запускается поток по обработке прерывания.
Характеристики наборов хоста (host) и процессора предоставляют два связанных набора функций, требующихся, если прикладным программам следует обеспечить максимум сервисов операционной системы. Характеристики набора хоста возвращают информацию о процессорном комплексе, работающем в системе, и предоставляют определённые функции системного менеджмента типа времени, даты, останова и рестарта системы. Характеристики набора процессора используются в мультипроцессорных машинах для группировки процессоров в классы. Эти классы позволяют параллельному приложению выполнять несколько потоков одновременно на различных процессорах в машине, в итоге происходит истинно параллельное исполнение.
В соответствии с концепцией микроядерных ОС непосредственно поверх ядра системы OS/2 располагается ряд серверов приложений, которые обеспечивают системные сервисы общего назначения, то есть задачно-нейтральные сервисы. Они зависят только от ядра, некоторых вспомогательных сервисов, экспортируемых доминирующей задачей операционной системы, и от себя самих. В числе задачно–нейтральных сервисов имеются пейджер умолчания, мастер-сервер, который загружает другие задачно-нейтральные серверы в память, сервис низкоуровневых имён, сервис защиты, сервисы инициализации, набор драйверов устройств со связанным кодом поддержки, а также библиотечные подпрограммы для стандартной программной среды. Дополнительные задачно-нейтральные сервисы типа одиночного файлового сервера могут быть просто добавлены.
С помощью ядра ОС и задачно-нейтральных сервисов приоритетная задача может обеспечить операционную системную среду типа UNIX. Поскольку приоритетная задача является прикладным сервером, возможно добавлять другие серверы для различных задач, исполняющих программы, написанные в различных операционных системах, работающих на машине в одно и то же время.
Существуют некоторые операционные системные сервисы, такие как трансляция сообщений об ошибках, не обеспечиваемые задачно-нейтральными сервисами. Поскольку лучше не дублировать подобные сервисы, приоритетная задача обеспечивает эти сервисы не только своим клиентским приложениям, но и любой другой задаче, исполняющейся в машине.
Дата добавления: 2022-02-05; просмотров: 246;