Особенности архитектуры и основные возможности 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; просмотров: 239;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.