Автоматизация сбора и первичной обработки информации
70 Микроядро предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием. Основная часть работы осуществляется с помощью специальных пользовательских процессов, называемых сервисами, что повышает устойчивость к сбоям оборудования и ошибкам в компонентах системы. Недостатки модульной архитектуры фактически те же, что и у монолитной. проблемы перешли с уровня API на уровень микроядра. системный интерфейс по-прежнему не допускает переключения задач во время работы микроядра, только сократилось время пребывания в этом состоянии. API по- прежнему может быть реализован только на ассемблере, проблемы с переносимостью ядра уменьшились (в связи с сокращением его размера), но остались. Передача данных между процессами требует накладных расходов. ОС РВ на основе микроядра (рис.4.4) имеют сегодня наибольшее распространение, например: IA-SPOX, RTX, Falcon, OS-9, QNX и т.д. Ядра ОС РВ предоставляют пользователю такие базовые функции, как планирование и синхронизация задач, межзадачные коммуникации, управление памятью и т.д. Ядро, например, широко распространенной в России ОС РВ QNX, имеет размер около 10 Кбайт, а у OS-9 – 16 Кбайт. В дополнение к этому ОС РВ имеет возможность выбора файловой системы, сетевой поддержки, интерфейса с оператором и других средств высокого уровня. В объектно-ориентированной архитектуре (используемой в ОСРВ SoftKernel) API отсутствует вообще (рис.4.6). Рис. 4.6 Взаимодействие между компонентами системы (микроядрами) и пользовательскими процессами осуществляется посредством обычного вызова функций, поскольку и система и приложения написаны на одном языке (С++). Это обеспечивает максимальную скорость системных вызовов. Фактическое равноправие всех компонент системы обеспечивает возможность переключения задач в любое время. Объктно-ориентированный подход обеспечивает модульность, безопасность, легкость модернизации и повторного использования кода. Роль API здесь играет компилятор и динамический редактор объектных связей (linker). При старте приложения linker загружает нужные ему микроядра (т.е. в отличие от предыдущих систем, не все компоненты ОС должны быть загружены в ОП). Если микроядро уже загружено для другого приложения, то оно повторно не загружается, а используется код и данные уже имеющегося в памяти микроядра. Все эти приемы позволяют сократить объем требуемой памяти. Поскольку разные приложения разделяют одни микроядра, то они должны работать в одном адресном пространстве. Следовательно, система не может использовать виртуальную память, правда, работает тем самым быстрее (т.к. исключаются задержки на трансляцию
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy