Реализация множества прикладных средств в Windows системах
Способы построения множественных прикладных сред
Множественные прикладные среды
Процессорная совместимость требует одного набора команд и диапазона адресов. При их отсутствии может использоваться:
1. Эмуляция двоичного кода. Программный эмулятор последовательно выбирает двоичную инструкцию процессора и выполняет эквивалентную программу в других инструкциях.
2. Использование множества прикладных (операционных) сред. Типовые вызовы выполняются не по командам, а через аналогичные библиотечные функции.
1. Трансляция системных вызовов
2. Поддержка множественных API
Функции каждого API реализуется ядром с учетом специфики ОС, даже если они имеют аналогичные значение. Для выбора нужного варианта системного вызова каждый процесс передаёт в ядро набор идентифицирующих характеристик.
3. Микроядерный принцип
Базовые, общие для всех прикладных сред механизмы ОС отделяются от специфических в каждой среде высокоуровневых функций, и оставшаяся прикладная среда оформляется в виде отдельного сервера пользовательского режима. Приложение, используя API, обращается с системными вызовами к соответствующей среде через микроядро.
Приложение Win
Приложение POSIX
Приложение OS/2
Подсистема Win
Подсистема POSIX
Подсистема OS/2
Системный интерфейс DLL
Интегральная подсистема (сервера, рабочей станции, безопасности)
Пользовательский режим
Режим ядра
Эмуляция ОС и приложений производится конвертированием текущих обращений через интерфейс API на пользовательском уровне. Невозможен прямой доступ к устройствам, подсистемы среды и приложения ограничены выделенным им адресным пространством.
Приложения, рассчитанные на основную платформу, осуществляются на большем уровне приоритета.
Пользователь (человек или выступающее в роли пользователя программное обеспечение) имеет дело с информацией, представленной в удобной для него форме. Он не знает, как она представлена внутри компьютера, и пользуется ее абстракцией.
Статические структуры данных неизменны во время выполнения программы. Они содержат одну и ту же информацию все время работы программы. Если программа считала какие-то данные (например из файла) то она ими пользуется до конца своей работы, они соответствуют тем, которые хранятся в файле, так как файл не подвергается никаким изменениям.