Совместимость операционных систем
Если архитектурные особенности операционных систем касаются только системных программистов, то совместимость операционных систем непосредственно связана с нуждами конечных пользователей.
Различают совместимость на двоичном уровне (в котором хранятся приложения в ОС) и совместимость на уровне исходных текстов.
Двоичная совместимость достигается в том случае, когда можно запустить исполняемую программу на выполнение в среде другой операционной системы. Для этого операционные системы должны иметь одинаковые API.
Совместимость на уровне исходных текстов требует наличия соответствующего компилятора в составе программного обеспечения компьютера, на котором предполагается выполнять данное приложение. При этом необходима перекомпиляция имеющегося исходного текста в новый исполняемый модуль.
Для конечного пользователя практическое значение имеет только двоичная совместимость. Обладает ли новая ОС двоичной совместимостью, в первую, очередь зависит от архитектуры процессора, на котором работает новая ОС. На процессорах, имеющих разную архитектуру достичь двоичной совместимости (реализовать такой же API) сложнее.
Один из путей – использование специальных программ – эмуляторов. Эмулятор должен последовательно выбирать каждую двоичную инструкцию, предназначенную для эмулируемого процессора, дешифровать ее программным способом, чтобы определить, какие действия она задает, а затем выполнять эквивалентную подпрограмму, написанную в инструкциях своего процессора.
При этом имитируются регистры, флаги и внутреннее арифметически-логическое устройство эмулируемого процессора. Это простая, но очень медленная работа, так как одна команда процессора выполняется значительно быстрее, чем эмулирующая работу этого процессора последовательность команд на другом процессоре.
Более эффективно использование так называемых прикладных программных сред.Сегодня в типичных программах 60…80 % времени тратится на выполнение функций GUI (графического интерфейса пользователя) и других библиотечных вызовов ОС.
Тщательно спроектированная программная прикладная среда имеет в своем составе библиотеки, имитирующие внутренние библиотеки GUI, но написанные на своем «родном» коде.
Таким образом, достигается существенное ускорение выполнения программ с API другой операционной системы. Такой подход называют трансляцией, чтобы отличить от более медленного процесса эмулирования кода по одной команде.
В зависимости от архитектуры ОС трансляторы прикладных сред могут реализовываться в виде обычных приложений или как серверы пользовательского режима (в микроядерной архитектуре).
В других вариантах реализации множественных прикладных сред ядро ОС имеет несколько равноправных прикладных программных интерфейсов (API), где функции каждой API реализуются ядром с учетом специфики соответствующей ОС.
Выводы
1. Операционная система является посредником между пользователем (приложением, запущенным пользователем) и аппаратурой, предоставляя пользователю удобный интерфейс и эффективно распределяя ресурсы вычислительной системы между различными приложениями. В качестве аппаратуры может выступать не только средства локального компьютера, но и средства компьютерной сети. В последнем случае операционная система называется сетевой операционной системой. Все современные операционные системы являются сетевыми.
2. Все задачи, решаемые операционной системой, выполняют ее четыре основные подсистемы: подсистема управления процессами, подсистема управления памятью, подсистема управления файлами и внешними устройствами, подсистема защиты данных и администрирования.
3. При построении современных операционных систем используют многослойный подход в их архитектуре, что позволяет выделить машинно-зависимые модули ОС в отдельный слой, при этом остальные модули операционной системы не будут зависеть от особенностей аппаратной платформы. Кроме этого, многослойный подход позволяет выполнять независимую разработку и модернизацию отдельных слоев операционной системы.
4. Операционные системы, построенные на основе микроядерной архитектуры, более надежны и расширяемы, но менее производительны, чем операционные системы, не содержащие микроядро.
Вопросы для самопроверки
1. Дайте определение операционной системы.
2. Каковы функции операционная система предоставляет для пользователя?
3. Каковы функции операционная система предоставляет для прикладного программиста?
4. Какие задачи решает операционная система в отношении аппаратуры вычислительной системы?
5. Что такое API?
6. В чем суть мультипрограммирования?
7. Какие задачи операционной системы относятся к работе подсистемы управления процессами?
8. Какие задачи операционной системы относятся к работе подсистемы управления памятью?
9. Какие задачи операционной системы относятся к работе подсистемы управления файлами и внешними устройствами?
10. Какие задачи операционной системы относятся к работе подсистемы защиты данных и администрирования?
11. Дайте определение понятия файл и каталог?
12. Дайте определение сетевой операционной системы
13. Какие операционные системы называют распределенными?
14. Какие функциональные компоненты входят в состав сетевой операционной системы?
15. Что называется сетевой службой?
16. Как могут быть реализованы сетевые службы в одноранговой сети?
17. Как реализуются сетевые службы в сети с выделенным сервером?
18. В чем суть многослойного подхода к построению операционной системы?
19. Зачем нужен привилигированный режим работы процессора?
20. Каковы особенности функционирования ядра операционной системы?
21. Какие слои обычно выделяют при построении ядра операционной системы? Их назначение?
22. Каковы особенности функционирования вспомогательных модулей операционной системы?
23. Какие задачи решают средства аппаратой поддержки операционной системы?
24. Какие особенности функционирования менеджеров ресурсов в операционной системе с микроядерной архитектурой?
25. Каковы достоинства и недостатки микроядерной архитектуры операционной системы?
26. В чем заключается совместимость операционных систем?
27. В чем суть механизма эмуляции работы операционной системы?