Индустрия программирования

Множественные прикладные среды Windows NT


Виктор Олифер,









Защищенные подсистемы взаимодействуют путем передачи
сообщений, используя механизм LPC

LPC - Local Procedure Call - вызов локальных процедур

Цели подсистем окружения:



  • Обеспечить несколько программных интерфейсов
  • Экранировать базовую ОС от изменений API
  • Объединить общие для всех API глобальные данные, уменьшая
    избыточность
  • Обеспечить возможность включения новых API
  • Защита окружений от приложений




Множественные прикладные среды обеспечивают совместимость на ДВОИЧНОМ уровне

Цели:

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


Примеры ОС, содержащих встроенные средства
обеспечения множественных прикладных сред:


  • OS/2 2.x
  • Workplace OS
  • Windows NT
  • PowerOpen
  • некоторые версии UNIX





Пример различия в системных вызовах:

fork()
  • Наследует адресное пространство родителя
  • Имеет одну нить
  • При завершении потомка нужно послать сигнал родителю
  • DosExecPgm()
  • Адресное пространство создается заново на основе файла prog.exe
  • Имеет несколько нитей
  • При завершении потомка созданного с опцией EXEC_SYNC идентификатор процесса нельзя повторно использовать



  • Цели разработки микроядра Mach

    1. Обеспечение базовых функций для создания других
      операционных систем (например, UNIX)
    2. Поддержка больших разряженных адресных пространств
    3. Обеспечение прозрачного доступа к сетевым ресурсам
    4. Поддержка параллелизма как в системе, так и в
      приложениях
    5. Обеспечение переносимости Mach на различные типы
      компьютеров

    Абстрактная модель эмуляции UNIX на основе
    Mach




    Функции микроядра Mach:

    • управление процессами,
    • управление памятью,
    • коммуникации
    • функции ввода-вывода


    Функции управления файлами, каталогами и другие традиционные
    для операционных систем функции выполняются в пользовательском
    пространстве эмуляторами различных ОС


    Модель API на основе DLL





    Системные сервисы
    Менеджер объектовМонитор ссылокбезопасности
    Менеджер процессовСредство вызова локальных процедур
    Менеджер виртуальной памяти
    Менеджер ввода-выводаЯдро
    <


    Обращение к системным сервисам в традиционных ОС

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


    Вызов системной функции (API Win32) в Windows NT

    • Динамическая библиотека DLL Win32 обращается
      к системному сервису NT с просьбой послать сообщение серверу,
      выполняющему требуемую функцию
    • Сервис посылает сообщение и ждет ответ
    • Сервер получает сообщение, выполняет функцию
      и отсылает ответ
    • NT-executive выполняет следующую последовательность
      действий:

      • сохраняет контекст клиентской нити
      • выбирает серверную нить для выполнения и загружает
        ее контекст
      • выполняет функцию API Win32, используя серверную
        нить
      • сохраняет контекст серверной нити
      • загружает контекст клиентской нити и обрабатывает
        результаты выполнения функции API



    Оптимизация

    • некоторые функции API реализованы внутри библиотеки
      заглушек
    • некоторые данные Win32 хранятся в адресном пространстве
      NT-executive
    • запросы приложений на выполнение функций API
      объединяются в пакеты


    Содержание раздела