Спонсор: Microsoft
Санкт-Петербургский государственный университет
Опубликован: 13.11.2010 | Доступ: свободный | Студентов: 6726 / 1527 | Оценка: 4.64 / 4.23 | Длительность: 45:08:00
ISBN: 978-5-9963-0495-0
Лекция 7:

Уровни абстракции ОС. ОС с архитектурой микроядра. Виртуальные машины. Цели проектирования и разработки ОС. Генерация ОС

< Лекция 6 || Лекция 7: 123 || Лекция 8 >

Механизмы и политики

При разработке ОС, как и любой другой сложной программной системы, различают концепции механизма и политики. Механизм определяет, каким образом реализовать некоторую функциональность (например, виртуальную память). Политика определяет, что именно требуется реализовать, т.е. набор требований, целей, условий для реализации функциональности. Например, политика безопасности в ОС определяет правила, по которым программе или пользователю предоставляются некоторые полномочия (например, возможность открытия некоторого файла). Эта политика может быть реализована многими способами, например, с помощью списков управления доступом (access control lists ); это понятие будет рассмотрено немного позже. Отделение механизма от политики – очень важный принцип для разработки ОС. Он допускает максимум гибкости, если "политические" решения могут быть изменены впоследствии.

Реализация операционных систем

Традиционно, начиная с 1950-х гг., ОС разрабатывались на низкоуровневых языках – ассемблерах. Система UNIX была первой ОС, разработанной почти полностью на языке высокого уровняСи. Впоследствии язык Си стал одним из наиболее популярных языков системного программирования. Благодаря новаторскому подходу авторов UNIX, сложилась тенденция разработки ОС на языках высокого уровня.

Преимущества использования языков высокого уровня очевидны: код на языке высокого уровня

  1. может быть разработан быстрее
  2. более компактен
  3. легче для понимания и отладки.

Кроме того, операционная система гораздо легче переносима на другие аппаратные платформы, если она разработана на языке высокого уровня.

Гипотетический недостаток у языков высокого уровня, по сравнению с ассемблерами, только один – возможная неэффективность реализации высокоуровневых конструкций языка, по сравнению с "ручным" программированием на ассемблере. Однако данная проблема может быть решена путем разработки эффективного оптимизирующего компилятора с языка высокого уровня и не должна препятствовать его использованию.

Близкими автору примерами разработки ОС на языках высокого уровня, помимо 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, запускается самой первой, находит ядро ОС, загружает его в память и запускает.

Набор для практики

Вопросы

  1. Что такое уровень абстракции и какие ограничения накладываются на реализацию его операций?
  2. Какие уровни абстракции реализованы в системе OS/2?
  3. Что такое микроядро и как организуются операционные системы по принципу микроядра?
  4. В чем преимущество разработки ОС по принципу микроядра?
  5. По каким принципам организована ОС Windows NT и с приложениями для каких платформ она поддерживает совместимость?
  6. Что такое виртуальная машина и каким образом концепция виртуальной машины используется при разработке ОС?
  7. В чем преимущества для пользователя при работе в персональной виртуальной машине в рамках операционной системы?
  8. Что такое виртуальная машина Java (JVM) и из каких компонент она состоит?
  9. Что такое загрузчик классов в JVM?
  10. Что такое верифиикатор в JVM?
  11. Что такое интерпретатор в JVM?
  12. Что такое JIT-компилятор в JVM?
  13. Что такое VES в платформе Microsoft.NET и в чем преимущество .NET, по сравнению с Java?
  14. Каковы цели проектирования и разработки ОС, с точки зрения ее пользователей?
  15. Каковы цели проектирования и разработки ОС, с точки зрения ее разработчиков?
  16. Что такое механизм (при разработке ОС)?
  17. Что такое политика (при разработке ОС)?
  18. На каких языках высокого уровня разрабатываются ОС?
  19. Почему разрабатывать ОС на языках высокого уровня удобнее, чем на ассемблере?
  20. Почему при установке ОС на конкретный компьютер необходима генерация ОС именно для данного компьютера?
  21. Что такое раскрутка и программа раскрутки?
  22. Что такое BIOS и ROM BIOS и как они используются при раскрутке системы?

Упражнения

  1. Предположим, что Вы – разработчик ОС для новой компьютерной системы. Предложите набор уровней абстракции для проектирования и разработки Вашей ОС и охарактеризуйте назначение каждого из уровней.
  2. То же задание относительно принципа микроядра: Предложите архитектуру ОС с микроядром и опишите, какого рода модули следует отнести к ядру, а какие можно выполнять в непривилегированном режиме.
  3. Предложите архитектуру ОС, реализующей систему виртуальных машин.
  4. Сформулируйте, в чем принципиальные различия работы пользователя в виртуальной машине от монопольной работы на реальном компьютере, в чем достоинства и недостатки каждого из этих режимов использования компьютера.
  5. Инсталлируйте на своем компьютере продукт Microsoft Virtual PC, инсталлируйте в виртуальной машине другую ОС (например, Windows 7, если у Вас на компьютере инсталлирована Windows Vista), поэкспериментируйте с ней и опишите свои впечатления.
  6. Загрузите с сайта http://java.sun.com новую версию Java Development Kit (JDK), Standard Edition, инсталлируйте его и пропустите простейшие примеры с использованием JVM.
  7. Запустите используемую Вами операционную систему на Вашем компьютере и проанализируйте действия системы при запуске: какие сообщения выдаются, каков порядок загрузки компонент системы, в том числе драйверов, какие драйверы хранятся в ROM BIOS, а какие являются частью ОС.

Темы для курсовых работ, рефератов, эссе

  1. Принцип уровней абстракции и его использование при разработке операционных систем (реферат).
  2. Обзор операционной системы OS/2 и ее архитектуры (реферат).
  3. Обзор операционных систем, разработанных по принципу микроядра (реферат).
  4. Обзор операционной системы Windows NT и ее архитектуры (реферат).
  5. Концепция виртуальной машины и операционные системы, основанные на данной концепции (реферат).
  6. Обзор Java-технологии и виртуальной машины Java (реферат).
  7. Анализ и подробное описание процесса запуска компьютера и загрузки операционной системы (курсовая работа).
  8. Инсталляция Microsoft Virtual PC, инсталляция в ней другой ОС, пропуск в ней простых примеров программ и подробное аналитическое описание результатов работы (курсовая работа).
  9. Инсталляция JDK (включающего JVM), пропуск простых тестов на Java из состава JDK и подробное аналитическое описание результатов (курсовая работа).
< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков