Уровни абстракции ОС. ОС с архитектурой микроядра. Виртуальные машины. Цели проектирования и разработки ОС. Генерация ОС
Механизмы и политики
При разработке ОС, как и любой другой сложной программной системы, различают концепции механизма и политики. Механизм определяет, каким образом реализовать некоторую функциональность (например, виртуальную память). Политика определяет, что именно требуется реализовать, т.е. набор требований, целей, условий для реализации функциональности. Например, политика безопасности в ОС определяет правила, по которым программе или пользователю предоставляются некоторые полномочия (например, возможность открытия некоторого файла). Эта политика может быть реализована многими способами, например, с помощью списков управления доступом (access control lists ); это понятие будет рассмотрено немного позже. Отделение механизма от политики – очень важный принцип для разработки ОС. Он допускает максимум гибкости, если "политические" решения могут быть изменены впоследствии.
Реализация операционных систем
Традиционно, начиная с 1950-х гг., ОС разрабатывались на низкоуровневых языках – ассемблерах. Система UNIX была первой ОС, разработанной почти полностью на языке высокого уровня – Си. Впоследствии язык Си стал одним из наиболее популярных языков системного программирования. Благодаря новаторскому подходу авторов UNIX, сложилась тенденция разработки ОС на языках высокого уровня.
Преимущества использования языков высокого уровня очевидны: код на языке высокого уровня
- может быть разработан быстрее
- более компактен
- легче для понимания и отладки.
Кроме того, операционная система гораздо легче переносима на другие аппаратные платформы, если она разработана на языке высокого уровня.
Гипотетический недостаток у языков высокого уровня, по сравнению с ассемблерами, только один – возможная неэффективность реализации высокоуровневых конструкций языка, по сравнению с "ручным" программированием на ассемблере. Однако данная проблема может быть решена путем разработки эффективного оптимизирующего компилятора с языка высокого уровня и не должна препятствовать его использованию.
Близкими автору примерами разработки ОС на языках высокого уровня, помимо UNIX, является разработка на Си ОС Solaris фирмой Sun, а также разработка ОС "Эльбрус" на языке высокого уровня Эль-76 [ 21 ] . Поставка ОС "Эльбрус" вместе с ее исходными кодами была весьма полезна для программистов и стимулировала целый ряд работ отраслевых организаций по разработке ОС реального времени на базе ОС "Эльбрус".
Генерация операционной системы
ОС проектируются с целью использования на любом компьютере из некоторого класса. В поставку ОС входит очень большой набор типовых модулей для различных классов компьютеров (например, настольных и портативных). Поэтому для каждого компьютера система должна быть сконфигурирована при ее инсталляции – установке ОС на конкретный компьютер.
Программа генерации ОС получает информацию о специфической конфигурации компьютерной системы.
После генерации и инсталляции ОС система готова к работе.
Следующий этап - загрузка (booting) – запуск компьютера посредством загрузки ядра ОС. При запуске компьютера первой запускается программа раскрутки (bootstrap program) – код, хранящийся в постоянной памяти (ROM) базовой системы ввода-вывода (BIOS) компьютера. Код программы раскрутки находит ядро ОС, загружает его в память и запускает.
Ключевые термины
Just-In-Time (JIT) – компилятор – компонента JVM,выполняющая при первом вызове каждого метода его компиляцию в объектный код целевой платформы ( native – код), что позволяет повысить суммарную производительность выполнения программ на Java.
OS/2 – ОС, разработанная фирмой IBM для персональных компьютеров PS/2.
POSIX (Portable Operating Systems of unIX type) – стандарт для библиотек, системных вызовов и системных программ для операционных систем типа UNIX.
Win32 - Библиотеки ( API ) ОС Windows для 32-разрядных процессоров.
Байт-код (bytecode) – команды виртуальной Java-машины, построенные на основе постфиксной записи операндов.
Верификатор классов (class verifier) – компонента JVM, выполняющая при загрузке класса проверку корректности его байт-кода, контроль типов и другие необходимые проверки.
Виртуальная машина – программный интерфейс, полностью аналогичный интерфейсу обычного компьютера без базового программного обеспечения.
Виртуальная машина Java (JVM) – виртуальная машина, исполняющая Java байт-код.
Загрузка (booting) – запуск компьютера посредством загрузки ядра ОС.
Загрузчик классов (class loader) – компонента JVM,выполняющая загрузку классов в виртуальную машину во время выполнения программы.
Инсталляция – установка ОС на конкретный компьютер.
Интерфейс прикладного программирования (application programming interface – API) - набор библиотечных функций, реализующий некоторую функциональность, используемую программой.
Механизм - метод реализации некоторой функциональности в ОС.
Микроядро (micro-kernel) – принцип разработки ОС, который заключается в переносе максимально возможного числа модулей из системного в пользовательское "пространство", т.е. ОС разрабатывается таким образом, что большинство ее модулей выполняются в пользовательском режиме, а размер ядра минимизируется.
Политика - набор требований, целей, условий для реализации некоторой функциональности в ОС.
Политика безопасности в ОС – совокупность правил, по которым программе или пользователю предоставляются некоторые полномочия для выполнения действий.
Программа раскрутки (bootstrap program) – код, запускаемый первым при включении компьютера, хранящийся в постоянной памяти (ROM) базовой системы ввода-вывода (BIOS) компьютера, который находит ядро ОС, загружает его в память и запускает.
Краткие итоги
При разработке ОС широко применяется принцип уровней абстракции. Он применен при разработке OS/2 – второй ОС фирмы Microsoft (после MS DOS), разработанной для персональных компьютеров PS/2. OS/2 имела четыре уровня абстракции.
ОС с микроядром – принцип разработки ОС, при котором минимизируется число модулей, выполнение которых необходимо в привилегированном режиме, что более безопасно, надежно и позволяет легче переносить ОС на другие платформы.
По принципу микроядра разработана ОС Windows NT, в которой имеются серверы для поддержки исполнения Win32- , OS/2 и POSIX-приложений.
Концепция виртуальной машины позволяет предоставить пользователю ОС воображаемую персональную машину со своим набором ресурсов. Таким образом, обеспечивается изоляция и защита системных ресурсов, однако подобная ОС сложнее для разработки. ОС на базе концепции виртуальных машин – хорошая основа для исследований.
В настоящее время широко используется виртуальная машина Java (JVM), выполняющая программу на Java байт-коде на реальной аппаратуре. JVM состоит из загрузчика классов, верификатора классов, интерпретатора байт-кода и just-in-time – компилятора.
Цели проектирования и разработки ОС: с точки зрения пользователя – удобство, простота, надежность, безопасность, эффективность; с точки зрения разработчика ОС – простота проектирования, реализации и сопровождения, гибкость надежность, свобода от ошибок, эффективность.
При разработке ОС различают механизмы – методы реализации функциональностей – и политики – правила и требования к реализации функциональностей. Механизмы отделены от политик.
Реализация ОС долгое время выполнялась на ассемблерах. Начиная с UNIX, разработка ОС ведется на языках высокого уровня, чаще всего – на языке Си.
При установке ОС на конкретный компьютер происходит фактически генерация ОС, так как ОС предназначена для широкого класса машин, и в ее поставку входит широкий набор типовых модулей, из которых инсталлятор генерирует конкретную ОС для конкретной машины.
Загрузка ОС – это ее запуск при включении компьютера. Она реализуется с помощью программы раскрутки, которая хранится в ROM BIOS, запускается самой первой, находит ядро ОС, загружает его в память и запускает.
Набор для практики
Вопросы
- Что такое уровень абстракции и какие ограничения накладываются на реализацию его операций?
- Какие уровни абстракции реализованы в системе OS/2?
- Что такое микроядро и как организуются операционные системы по принципу микроядра?
- В чем преимущество разработки ОС по принципу микроядра?
- По каким принципам организована ОС Windows NT и с приложениями для каких платформ она поддерживает совместимость?
- Что такое виртуальная машина и каким образом концепция виртуальной машины используется при разработке ОС?
- В чем преимущества для пользователя при работе в персональной виртуальной машине в рамках операционной системы?
- Что такое виртуальная машина Java (JVM) и из каких компонент она состоит?
- Что такое загрузчик классов в JVM?
- Что такое верифиикатор в JVM?
- Что такое интерпретатор в JVM?
- Что такое JIT-компилятор в JVM?
- Что такое VES в платформе Microsoft.NET и в чем преимущество .NET, по сравнению с Java?
- Каковы цели проектирования и разработки ОС, с точки зрения ее пользователей?
- Каковы цели проектирования и разработки ОС, с точки зрения ее разработчиков?
- Что такое механизм (при разработке ОС)?
- Что такое политика (при разработке ОС)?
- На каких языках высокого уровня разрабатываются ОС?
- Почему разрабатывать ОС на языках высокого уровня удобнее, чем на ассемблере?
- Почему при установке ОС на конкретный компьютер необходима генерация ОС именно для данного компьютера?
- Что такое раскрутка и программа раскрутки?
- Что такое BIOS и ROM BIOS и как они используются при раскрутке системы?
Упражнения
- Предположим, что Вы – разработчик ОС для новой компьютерной системы. Предложите набор уровней абстракции для проектирования и разработки Вашей ОС и охарактеризуйте назначение каждого из уровней.
- То же задание относительно принципа микроядра: Предложите архитектуру ОС с микроядром и опишите, какого рода модули следует отнести к ядру, а какие можно выполнять в непривилегированном режиме.
- Предложите архитектуру ОС, реализующей систему виртуальных машин.
- Сформулируйте, в чем принципиальные различия работы пользователя в виртуальной машине от монопольной работы на реальном компьютере, в чем достоинства и недостатки каждого из этих режимов использования компьютера.
- Инсталлируйте на своем компьютере продукт Microsoft Virtual PC, инсталлируйте в виртуальной машине другую ОС (например, Windows 7, если у Вас на компьютере инсталлирована Windows Vista), поэкспериментируйте с ней и опишите свои впечатления.
- Загрузите с сайта http://java.sun.com новую версию Java Development Kit (JDK), Standard Edition, инсталлируйте его и пропустите простейшие примеры с использованием JVM.
- Запустите используемую Вами операционную систему на Вашем компьютере и проанализируйте действия системы при запуске: какие сообщения выдаются, каков порядок загрузки компонент системы, в том числе драйверов, какие драйверы хранятся в ROM BIOS, а какие являются частью ОС.
Темы для курсовых работ, рефератов, эссе
- Принцип уровней абстракции и его использование при разработке операционных систем (реферат).
- Обзор операционной системы OS/2 и ее архитектуры (реферат).
- Обзор операционных систем, разработанных по принципу микроядра (реферат).
- Обзор операционной системы Windows NT и ее архитектуры (реферат).
- Концепция виртуальной машины и операционные системы, основанные на данной концепции (реферат).
- Обзор Java-технологии и виртуальной машины Java (реферат).
- Анализ и подробное описание процесса запуска компьютера и загрузки операционной системы (курсовая работа).
- Инсталляция Microsoft Virtual PC, инсталляция в ней другой ОС, пропуск в ней простых примеров программ и подробное аналитическое описание результатов работы (курсовая работа).
- Инсталляция JDK (включающего JVM), пропуск простых тестов на Java из состава JDK и подробное аналитическое описание результатов (курсовая работа).