Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Лекция 3
3.1. Классификация операционных систем
Все многообразие существующих (и ныне не использующихся) ОС можно
классифицировать по множеству различных признаков. Остановимся на основных
классификационных признаках.
1. По назначению ОС делятся на универсальные и специализированные.
Специализированные ОС, как правило, работают с фиксированным набором
программ (функциональных задач). Применение таких систем обусловлено
невозможностью использования универсальной ОС по соображениям
эффективности, надежности, защищенности и т.п., а также вследствие
специфики решаемых задач [10].
Универсальные ОС рассчитаны на решение любых задач пользователей, но, как
правило, форма эксплуатации вычислительной системы может предъявлять
особые требования к ОС, т.е. к элементам ее специализации.
2. По способу загрузки можно выделить загружаемые ОС (большинство) и системы,
постоянно находящиеся в памяти вычислительной системы. Последние, как
правило, специализированные и используются для управления работой
специализированных устройств (например, в БЦВМ баллистической ракеты или
спутника, научных приборах, автоматических устройствах различного
назначения и др.).
3. По особенностям алгоритмов управления ресурсами. Главным ресурсом системы
является процессор, поэтому дадим классификацию по алгоритмам управления
процессором, хотя можно, конечно, классифицировать ОС по алгоритмам
управления памятью, устройствами ввода-вывода и.т.д.
o Поддержка многозадачности (многопрограммности). По числу
одновременно выполняемых задач ОС делятся на 2 класса:
однопрограммные (однозадачные) и многопрограммные (многозадачные).
Однопрограммные ОС предоставляют пользователю виртуальную машину,
делая более простым и удобным процесс взаимодействия пользователя с
компьютером. Они также имеют средства управления файлами,
периферийными устройствами и средства общения с пользователем.
Многозадачные ОС, кроме того, управляют разделением совместно
используемых ресурсов (процессор, память, файлы и т.д.), это позволяет
значительно повысить эффективность вычислительной системы.
o
Поддержка многопользовательского режима. По числу одновременно
работающих пользователей ОС делятся: на однопользовательские и
многопользовательские.
Главное отличие многопользовательских систем от однопользовательских
– наличие средств защиты информации каждого пользователя от
несанкционированного доступа других пользователей. Следует заметить,
что может быть однопользовательская мультипрограммная система.
o
Виды многопрограммной работы. Специфику ОС во многом определяет
способ распределения времени между несколькими одновременно
существующими в системе процессами (или потоками). По этому признаку
можно выделить 2 группы алгоритмов: не вытесняющая
многопрограммность и вытесняющая многопрограммность.
В первом случае активный процесс выполняется до тех пор, пока он сам
не отдает управление операционной системе. Во втором случае решение о
переключении процессов принимает операционная система. Возможен и
такой режим многопрограммности, когда ОС разделяет процессорное
время между отдельными ветвями (потоками, волокнами) одного
процесса.
o
Многопроцессорная обработка. Важное свойство ОС – отсутствие или
наличие средств поддержки многопроцессорной обработки. По этому
признаку можно выделить ОС без поддержки мультипроцессирования и с
поддержкой мультипроцессирования.
Многопроцессорные ОС классифицируются по способу организации
вычислительного процесса на асимметричные ОС (выполняются на одном
процессоре, распределяя прикладные задачи по остальным процессорам)
и симметричные ОС (децентрализованная система).
4. По области использования и форме эксплуатации. Обычно здесь выделяют три
типа в соответствии с использованными при их разработке критериями
эффективности:
o системы пакетной обработки;
o системы разделения времени;
o системы реального времени.
Первые предназначались для решения задач в основном вычислительного
характера, не требующих быстрого получения результатов. Критерий создания
таких ОС – максимальная пропуская способность при хорошей загрузке всех
ресурсов компьютера. В таких системах пользователь отстранен от компьютера.
Системы разделения времени обеспечивают удобство и эффективность работы
пользователя, который имеет терминал и может вести диалог со своей
программой.
Системы реального времени предназначены для управления техническими
объектами (станок, спутник, технологический процесс, например доменный и
т.п.), где существует предельное время на выполнение программ, управляющих
объектом.
5. По аппаратной платформе (типу вычислительной техники), для которой они
предназначаются, операционные системы делят на следующие группы.
o Операционные системы для смарт-карт. Некоторые из них могут
управлять только одной операцией, например, электронным платежом.
Некоторые смарт-карты являются JAVA-ориентированным и содержат
интерпретатор виртуальной машины JAVA. Апплеты JAVA загружаются на
карту и выполняются JVM-интерпретатором. Некоторые из таких карт
могут одновременно управлять несколькими апплетами JAVA, что
приводит к многозадачности и необходимости планирования.
o Встроенные операционные системы. Управляют карманными
компьютерами (бытовая техника), мобильными телефонами,
телевизорами, микроволновыми печами и т.п.
o Операционные системы для персональных компьютеров, например.
o Операционные системы мини-ЭВМ, например, OC реального времени,ОС
разделения времени.
o Операционные системы мэйнфреймов (больших машин). Обычно ОС
мэйнфреймов предполагает одновременно три вида обслуживания:
пакетную обработку, обработку транзакций (например, работа с БД,
бронирование авиабилетов, процесс работы в банках) и разделение
времени.
o
o
Серверные операционные системы, например, UNIX, Windows, Linux.
Область применения – ЛВС, региональные сети, Intranet, Internet.
Кластерные операционные системы. Кластер – слабо связанная
совокупность нескольких вычислительных систем, работающих совместно
для выполнения общих приложений и представляющихся пользователю
единой системной, например, Windows Cluster Server, Windows Server, Sun
Cluster (базовая ОС – Solaris).
3.2. Эффективность и требования, предъявляемые к ОС
К операционным системам современных компьютеров предъявляется ряд требований.
Главным требованием является выполнение основных функций эффективного
управления ресурсами и обеспечения удобного интерфейса для пользователя и
прикладных программ. Современная ОС должна поддерживать мультипрограммную
обработку, виртуальную память, свопинг, развитый интерфейс пользователя
(многооконный графический, аудио -, менюориентированный и т.д.), высокую степень
защиты, удобство работы, а также выполнять многие другие необходимые функции и
услуги. Кроме этих требований функциональной полноты, к ОС предъявляется ряд
важных эксплуатационных требований.
1. Эффективность. Под эффективностью вообще любой технической (да и не
только технической) системы понимается степень соответствия системы своему
назначению, которая оценивается некоторым множеством показателей
эффективности [10].
Поскольку ОС представляет собой сложную программную систему, она
использует для собственных нужд значительную часть ресурсов компьютера.
Часто эффективность ОС оценивают ее производительностью (пропускной
способностью) – количеством задач пользователей, выполняемых за некоторый
промежуток времени, временем реакции на запрос пользователя и др.
На все эти показатели эффективности ОС влияет много различных факторов,
среди которых основными являются архитектура ОС, многообразие ее функций,
качество программного кода, аппаратная платформа (компьютер) и др.
2. Надежность и отказоустойчивость. Операционная система должна быть, по
меньшей мере, так же надежна, как компьютер, на котором она работает.
Система должна быть защищена как от внутренних, так и от внешних сбоев и
отказов. В случае ошибки в программе или аппаратуре система должна
обнаружить ошибку и попытаться исправить положение или, по крайней мере,
постараться свести к минимуму ущерб, нанесенный этой ошибкой
пользователям.
Надежность и отказоустойчивость ОС, прежде всего, определяются
архитектурными решениями, положенными в ее основу, а также отлаженностью
программного кода (основные отказы и сбои ОС в основном обусловлены
программными ошибками в ее модулях). Кроме того, важно, чтобы компьютер
имел резервные дисковые массивы, источники бесперебойного питания и др., а
также программную поддержку этих средств.
3. Безопасность (защищенность). Ни один пользователь не хочет, чтобы другие
пользователи ему мешали. ОС должна защищать пользователей и от воздействия
чужих ошибок, и от попыток злонамеренного вмешательства
(несанкционированного доступа). С этой целью в ОС как минимум должны быть
средства аутентификации – определения легальности пользователей,
авторизации – предоставления легальным пользователям установленных им
прав доступа к ресурсам, и аудита – фиксации всех потенциально опасных для
системы событий.
Свойства безопасности особенно важны для сетевых ОС. В таких ОС к задаче
контроля доступа добавляется задача защиты данных, передаваемых по сети.
4. Предсказуемость. Требования, которые пользователь может предъявить к
системе, в большинстве случаев непредсказуемы. В то же время пользователь
предпочитает, чтобы обслуживание не очень сильно менялось в течение
предположительного времени. В частности, запуская свою программу в системе,
пользователь должен иметь основанное на опыте работы с этой программной
приблизительное представление, когда ему ожидать выдачи результатов.
5. Расширяемость. В отличие от аппаратных средств компьютера полезная жизнь
операционных систем измеряется десятками лет. Примером может служить ОС
UNIX. Операционные системы изменяются со временем, как правило, за счет
приобретения новых свойств, например, поддержки новых типов внешних
устройств или новых сетевых технологий. Если программный код модулей ОС
написан таким образом, что дополнения и изменения могут вноситься без
нарушения целостности системы, то такую ОС называют расширяемой.
Операционная система может быть расширяемой, если при ее создании
руководствовались принципами модульности, функциональной избыточности,
функциональной избирательности и параметрической универсальности.
6. Переносимость. В идеальном случае код ОС должен легко переноситься с
процессора одного типа на процессор другого типа и с аппаратной платформы
(которые различаются не только типом процессора, но и способом организации
всей аппаратуры компьютера) одного типа на аппаратную платформу другого
типа. Переносимые ОС имеют несколько вариантов реализации для разных
платформ, такое свойство ОС называется также многоплатформенностью.
Достигается это свойство за счет того, что основная часть ОС пишется на языке
высокого уровня (например С, C++ и др.) и может быть легко перенесена на
другой компьютер (машинно-независимая часть), а некоторая меньшая часть ОС
(программы ядра) является машинно-зависимой и разрабатывается на машинном
языке другого компьютера.
7. Совместимость. Существует несколько "долгоживущих" популярных ОС
(разновидности UNIX, Windows), для которых наработана широкая номенклатура
приложений. Для пользователя, переходящего с одной ОС на другую, очень
привлекательна возможность – выполнить свои приложения в новой
операционной системе. Если ОС имеет средства для выполнения прикладных
программ, написанных для других операционных систем, то она совместима с
этими системами. Следует различать совместимость на уровне двоичных кодов и
совместимость на уровне исходных текстов. Кроме того, понятие совместимости
включает также поддержку пользовательских интерфейсов других ОС.
8. Удобство. Средства ОС должны быть простыми и гибкими, а логика ее работы
ясна пользователю. Современные ОС ориентированы на обеспечение
пользователю максимально возможного удобства при работе с ними.
Необходимым условием этого стало наличие у ОС графического
пользовательского интерфейса и всевозможных мастеров – программ,
автоматизирующих активизацию функций ОС, подключение периферийных
устройств, установку, настройку и эксплуатацию самой ОС.
9. Масштабируемость. Если ОС позволяет управлять компьютером с различным
числом процессов, обеспечивая линейное (или почти такое) возрастание
производительности при увеличении числа процессоров, то такая ОС является
масштабируемой. В масштабируемой ОС реализуется симметричная
многопроцессорная обработка. С масштабируемостью связано понятие
кластеризации – объединения в систему двух (и более) многопроцессорных
компьютеров. Правда, кластеризация направлена не столько на
масштабируемость, сколько на обеспечение высокой готовности системы.
Следует заметить, что в зависимости от области применения конкретной операционной
системы может изменяться и состав предъявляемых к ней требований.
3.3 Совместимость и множественные прикладные среды
В то время как многие архитектурные особенности ОС непосредственно касаются
только системных программистов, концепция множественных прикладных
(операционных) средств непосредственно связана с нуждами конечных пользователей
– возможностью операционной системы выполнять приложения, написанные для других
операционных систем. Такое свойство операционной системы называется
совместимостью.
Совместимость приложений может быть на двоичном уровне и на уровне исходных
текстов [13]. Приложения обычно хранятся в ОС в виде исполняемых файлов,
содержащих двоичные образы кодов и данных. Двоичная совместимость достигается в
том случае, если можно взять исполняемую программу и запустить ее на выполнение в
среде другой ОС.
Совместимость на уровне исходных текстов требует наличие соответствующего
компилятора в составе программного обеспечения компьютера, на котором
предполагается выполнить данное приложение, а также совместимости на уровне
библиотек и системных вызовов. При этом необходима перекомпиляция исходных
текстов приложения в новый исполняемый модуль.
Совместимость на уровне исходных текстов важна в основном для разработчиков
приложений, в распоряжении которых эти исходные тексты имеются. Но для конечных
пользователей практическое значение имеет только двоичная совместимость, так как
только в этом случае они могут использовать один и тот же продукт в различных
операционных системах и на различных машинах.
Вид возможной совместимости зависит от многих факторов. Самый главный из них –
архитектура процессора. Если процессор применяет тот же набор команд (возможно, с
добавлениями, как в случае IBM PC: стандартный набор + мультимедиа + графика +
потоковые) и тот же диапазон адресов, то двоичная совместимость может быть
достигнута достаточно просто. Для этого необходимо соблюдение следующих условий:
•
•
API, который использует приложение, должен поддерживаться данной ОС;
внутренняя структура исполняемого файла приложения должна соответствовать
структуре исполняемых файлов данной ОС.
Если процессоры имеют разную архитектуру, то, кроме перечисленных условий,
необходимо организовать эмуляцию двоичного кода. Например, широко используется
эмуляция команд процессора Intel на процессоре Motorola компьютера Macintosh.
Программный эмулятор в этом случае последовательно выбирает двоичную инструкцию
процессора Intel и выполняет эквивалентную подпрограмму, написанную в инструкциях
процессора Motorola. Так как у процессора Motorola нет в точности таких же регистров,
флагов, внутреннего АЛУ и др., как в процессорах Intel, он должен также имитировать
(эмулировать) все эти элементы с использованием своих регистров или памяти.
Это простая, но очень медленная работа, поскольку одна команда Intel выполняется
значительно быстрее, чем эмулирующая ее последовательность команд процессора
Motorola. Выходом в таких случаях является применение так называемых прикладных
программных сред или операционных сред. Одной из составляющих такой среды
является набор функций интерфейса прикладного программирования API, который ОС
предоставляет своим приложениям. Для сокращения времени на выполнение чужих
программ прикладные среды имитируют обращение к библиотечным функциям.
Эффективность этого подхода связана с тем, что большинство сегодняшних программ
работает под управлением GUI (графических интерфейсов пользователя) типа
Windows, MAC или UNIX Motif, при этом приложения тратят 60-80% времени на
выполнение функций GUI и других библиотечных вызовов ОС. Именно это свойство
приложений позволяет прикладным средам компенсировать большие затраты времени,
потраченные на покомандное эмулирование программ. Тщательно спроектированная
программная прикладная среда имеет в своем составе библиотеки, имитирующие
библиотеки GUI, но написанные на "родном" коде. Таким образом, достигается
существенное ускорение выполнения программ с API другой операционной системы.
Иначе такой подход называют трансляцией – для того, чтобы отличить его от более
медленного процесса эмулирования по одной команде за раз.
Например, для Windows-программы, работающей на Macintosh, при интерпретации
команд процессора Intel производительность может быть очень низкой. Но когда
производится вызов функции GUI, открытие окна и др., модуль ОС, реализующий
прикладную среду Windows, может перехватить этот вызов и перенаправить его на
перекомпилированную для процессора Motorola подпрограмму открытия окна. В
результате на таких участках кода скорость работы программы может достичь (а,
возможно, и превзойти) скорость работы на своём родном процессоре.
Чтобы программа, написанная для одной ОС, могла быть выполнена в рамках другой
ОС, недостаточно лишь обеспечивать совместимость API. Концепции, положенные в
основу разных ОС, могут входить в противоречия друг с другом. Например, в одной ОС
приложению может быть разрешено управлять устройствами ввода-вывода, в другой –
эти действия являются прерогативой ОС.
Каждая ОС имеет свои собственные механизмы защиты ресурсов, свои алгоритмы
обработки ошибок и исключительных ситуаций, особую структуру процессора и схему
управления памятью, свою семантику доступа к файлам и графический
пользовательский интерфейс. Для обеспечения совместимости необходимо
организовать бесконфликтное сосуществование в рамках одной ОС нескольких
способов управления ресурсами компьютера.
Существуют различные варианты построения множественных прикладных сред,
отличающиеся как особенностями архитектурных решений, так и функциональными
возможностями, обеспечивающими разную степень переносимости приложений. Один
из наиболее очевидных вариантов реализации множественных прикладных сред
основывается на стандартной многоуровневой структуре ОС.
На рис. 3.1 ОС OS1 поддерживает кроме своих "родных" приложений приложения
операционных систем OS2 и OS3. Для этого в её составе имеются специальные
приложения, прикладные программные среды, которые транслируют интерфейсы
"чужих" операционных систем API OS2 и API OS3 в интерфейс своей "родной" ОС – API
OS1. Так, например, в случае если бы в качестве OS2 выступала ОС UNIX, а в качестве
OS1 – OS/2, для выполнения системного вызова создания процесса fork () в UNIXприложении программная среда должна обращаться к ядру операционной системы OS/2
с системным вызовом ExecPgm ().
Рис. 3.1. Организация множественных прикладных сред
К сожалению, поведение почти всех функций, составляющих API одной ОС, как
правило, существенно отличается от поведения соответствующих функций другой ОС.
Например, чтобы функция создания процесса в Dos ExecPgm () полностью
соответствовала функции создания процесса fork () в UNIX-подобных системах, её
нужно было бы изменить и прописать новую функциональность: поддержку
возможности копирования адресного пространства родительского процесса в
пространство процесса-потомка [17].
Еще один способ построения множественных прикладных сред основан на
микроядерном подходе. При этом очень важно отметить базовое, общее для всех
прикладных сред отличие механизмов операционной системы от специфических для
каждой из прикладных сред высокоуровневых функций, решающих стратегические
задачи. В соответствии с микроядерной архитектурой все функции ОС реализуются
микроядром и серверами пользовательского режима. Важно, что прикладная среда
оформляется в виде отдельного сервера пользовательского режима и не включает
базовых механизмов.
Приложения, используя API , обращаются с системными вызовами к соответствующей
прикладной среде через микроядро. Прикладная среда обрабатывает запрос,
выполняет его (возможно, обращаясь для этого за помощью к базовым функциям
микроядра) и отсылает приложению результат. В ходе выполнения запроса прикладной
среде приходится, в свою очередь, обращаться к базовым механизмам ОС,
реализуемым микроядром и другими серверами ОС.
Такому подходу к конструированию множественных прикладных сред присущи все
достоинства и недостатки микро ядерной архитектуры, в частности:
•
•
•
очень просто можно добавлять и исключать прикладные среды, что является
следствием хорошей расширяемости микро ядерных ОС;
при отказе одной из прикладных сред остальные сохраняют работоспособность,
что способствует надежности и стабильности системы в целом;
низкая производительность микроядерных ОС сказывается на скорости работы
прикладных средств, а значит, и на скорости работы приложений.
В итоге следует отметить, что создание в рамках одной ОС нескольких прикладных
средств для выполнения приложений различных ОС представляет собой путь, который
позволяет иметь единственную версию программы и переносить ее между различными
операционными системами. Множественные прикладные среды обеспечивают
совместимость на двоичном уровне данной ОС с приложениями, написанными для
других ОС.
3.4. Виртуальные машины как современный подход к
реализации множественных прикладных сред
Понятие "монитор виртуальных машин" (МВМ) возникло в конце 60-х годов как
программный уровень абстракции, разделявший аппаратную платформу на несколько
виртуальных машин. Каждая из этих виртуальных машин (ВМ) была настолько похожа
на базовую физическую машину, что существующее программное обеспечение могло
выполняться на ней в неизменном виде. В то время вычислительные задачи общего
характера решались на дорогих мэйнфреймах, и пользователи высоко оценили
способность МВМ распределять дефицитные ресурсы среди нескольких приложений.
В 80-90-е годы существенно снизилась стоимость компьютерного оборудования и
появились эффективные многозадачные ОС, что уменьшило ценность МВМ в глазах
пользователей. Мэйнфреймы уступили место мини-компьютерам, а затем ПК, и нужда в
МВМ отпала. В результате из компьютерной архитектуры попросту исчезли аппаратные
средства для их эффективной реализации. К концу 80-х в науке и на производстве
МВМ воспринимались не иначе как исторический курьез [10].
Сегодня МВМ – снова в центре внимания. Корпорации Intel, AMD, Sun Microsystems и
IBM создают стратегии виртуализации, в научных лабораториях и университетах для
решения проблем мобильности, обеспечения безопасности и управляемости
развиваются подходы, основанные на виртуальных машинах. Что же произошло между
отставкой МВМ и их возрождением?
В 90-е годы исследователи из Стэндфордского университета начали изучать
возможность применения ВМ для преодоления ограничений оборудования и
операционных систем. Проблемы возникли у компьютеров с массовой параллельной
обработкой (Massively Parallel Processing, MPP), которые плохо поддавались
программированию и не могли выполнять имеющиеся ОС. Исследователи обнаружили,
что с помощью виртуальных машин можно сделать эту неудобную архитектуру
достаточно похожей на существующие платформы, чтобы использовать преимущества
готовых ОС. Из этого проекта вышли люди и идеи, ставшие золотым фондом компании
VMware (www.vmware.com), первого поставщика МВМ для компьютеров массового
применения.
Как ни странно, развитие современных ОС и снижение стоимости оборудования
привели к появлению проблем, которые исследователи надеялись решить с помощью
МВМ. Дешевизна оборудования способствовала быстрому распространению
компьютеров, но они часто бывали недогруженными, требовали дополнительных
площадей и усилий по обслуживанию. А следствиями роста функциональных
возможностей ОС стали их неустойчивость и уязвимость.
Чтобы уменьшить влияние системных аварий и защититься от взломов, системные
администраторы вновь обратились к однозадачной вычислительной модели (с одним
приложением на одной машине). Это привело к дополнительным расходам, вызванным
повышенными требованиями к оборудованию. Перенос приложений с разных
физических машин на ВМ и консолидация этих ВМ на немногих физических платформах
позволили повысить эффективность использования оборудования, снизить затраты на
управление и производственные площади. Таким образом, способность МВМ к
мультиплексированию аппаратных средств – на этот раз во имя консолидации серверов
и организации коммунальных вычислений – снова возродила их к жизни.
В настоящее время МВМ стал не столько средством организации многозадачности,
каким он был когда-то задуман, сколько решением проблем обеспечения безопасности,
мобильности и надежности. Во многих отношениях МВМ дает создателям операционных
систем возможность развития функциональности, невозможной в нынешних сложных
ОС. Такие функции, как миграция и защита, намного удобнее реализовать на уровне
МВМ, поддерживающих обратную совместимость при развертывании инновационных
решений в области операционных систем при сохранении предыдущих достижений.
Виртуализация – развивающаяся технология. В общих словах, виртуализация
позволяет отделить ПО от нижележащей аппаратной инфраструктуры. Фактически она
разрывает связь между определенным набором программ и конкретным компьютером.
Монитор виртуальных машин отделяет программное обеспечение от оборудования и
формирует промежуточный уровень между ПО, выполняемым виртуальными машинами,
и аппаратными средствами. Этот уровень позволяет МВМ полностью контролировать
использование аппаратных ресурсов гостевыми операционными системами (GuestOS),
которые выполняются на ВМ.
МВМ создает унифицированное представление базовых аппаратных средств, благодаря
чему физические машины различных поставщиков с разными подсистемами вводавывода выглядят одинаково и ВМ выполняются на любом доступном оборудовании. Не
заботясь об отдельных машинах с их тесными взаимосвязями между аппаратными
средствами и программным обеспечением, администраторы могут рассматривать
оборудование просто как пул ресурсов для оказания любых услуг по требованию.
Благодаря полной инкапсуляции состояния ПО на ВМ монитор МВМ может отобразить
ВМ на любые доступные аппаратные ресурсы и даже перенести с одной физической
машины на другую. Задача балансировки нагрузки в группе машин становится
тривиальной, и появляются надежные способы борьбы с отказами оборудования и
наращивания системы. Если нужно отключить отказавший компьютер или ввести в
строй новый, МВМ способен соответствующим образом перераспределить виртуальные
машины. Виртуальную машину легко тиражировать, что позволяет администраторам по
мере необходимости оперативно предоставлять новые услуги.
Инкапсуляция также означает, что администратор может в любой момент приостановить
или возобновить работу ВМ, а также сохранить текущее состояние виртуальной
машины либо вернуть ее к предыдущему состоянию. Располагая возможностью
универсальной отмены, удается легко справиться с авариями и ошибками
конфигурации. Инкапсуляция является основой обобщенной модели мобильности,
поскольку приостановленную ВМ можно копировать по сети, сохранять и
транспортировать на сменных носителях.
МВМ играет роль посредника во всех взаимодействиях между ВМ и базовым
оборудованием, поддерживая выполнение множества виртуальных машин на единой
аппаратной платформе и обеспечивая их надежную изоляцию. МВМ позволяет собрать
группу ВМ с низкими потребностями в ресурсах на отдельном компьютере, снизив
затраты на аппаратные средства и потребность в производственных площадях.
Полная изоляция также важна для надежности и обеспечения безопасности.
Приложения, которые раньше выполнялись на одной машине, теперь можно
распределить по разным ВМ. Если одно из них в результате ошибки вызовет аварию
ОС, другие приложения будут от нее изолированы и продолжат работу. Если же одному
из приложений угрожает внешнее нападение, атака будет локализована в пределах
"скомпрометированной" ВМ. Таким образом, МВМ – это инструмент реструктуризации
системы для повышения ее устойчивости и безопасности, не требующий
дополнительных площадей и усилий по администрированию, которые необходимы при
выполнении приложений на отдельных физических машинах.
МВМ должен связать аппаратный интерфейс с ВМ, сохранив полный контроль над
базовой машиной и процедурами взаимодействия с ее аппаратными средствами. Для
достижения этой цели существуют разные методы, основанные на определенных
технических компромиссах. При поиске таких компромиссов принимаются во внимание
основные требования к МВМ: совместимость, производительность и простота.
Совместимость важна потому, что главное достоинство МВМ – способность выполнять
унаследованные приложения. Производительность определяет величину накладных
расходов на виртуализацию – программы на ВМ должны выполняться с той же
скоростью, что и на реальной машине. Простота необходима, поскольку отказ МВМ
приведет к отказу всех ВМ, выполняющихся на компьютере. В частности, для надежной
изоляции требуется, чтобы МВМ был свободен от ошибок, которые злоумышленники
могут использовать для разрушения системы.
Вместо того чтобы заниматься сложной переработкой кода гостевой операционной
системы, можно внести некоторые изменения в основную операционную систему,
изменив некоторые наиболее "мешающие" части ядра. Подобный подход называется
паравиртуализацией [10]. Ясно, что в этом случае адаптировать ядро ОС может только
автор, и, например, Microsoft не проявляет желания адаптировать популярное ядро
Windows к реалиям конкретных виртуальных машин.
При паравиртуализации разработчик МВМ переопределяет интерфейс виртуальной
машины, заменяя непригодное для виртуализации подмножество исходной системы
команд более удобными и эффективными эквивалентами. Заметим, что хотя ОС нужно
портировать для выполнения на таких ВМ, большинство обычных приложений могут
выполняться в неизменном виде.
Самый большой недостаток паравиртуализации – несовместимость. Любая
операционная система, предназначенная для выполнения под управлением
паравиртуализованного монитора МВМ, должна быть портирована в эту архитектуру,
для чего нужно договариваться о сотрудничестве с поставщиками ОС. Кроме того,
нельзя использовать унаследованные операционные системы, а существующие машины
не удается легко заменить виртуальными.
Чтобы добиться высокой производительности и совместимости при виртуализации
архитектуры x86, компания VMware разработала новый метод виртуализации, который
объединяет традиционное прямое выполнение с быстрой трансляцией двоичного кода
"на лету". В большинстве современных ОС режимы работы процессора при выполнении
обычных прикладных программ легко поддаются виртуализации, а следовательно, их
можно виртуализировать посредством прямого выполнения. Непригодные для
виртуализации привилегированные режимы может выполнять транслятор двоичного
кода, исправляя "неудобные" команды x86. В результате получается
высокопроизводительная виртуальная машина, которая полностью соответствует
оборудованию и поддерживает полную совместимость ПО.
Преобразованный код очень похож на результаты паравиртуализации. Обычные
команды выполняются в неизменном виде, а команды, нуждающиеся в специальной
обработке (такие как POPF и команды чтения регистров сегмента кода), транслятор
заменяет последовательностями команд, которые подобны требующимся для
выполнения на паравиртуализованной виртуальной машине. Однако есть важное
различие: вместо того, чтобы изменять исходный код операционной системы или
приложений, транслятор двоичного кода изменяет код при его выполнении в первый
раз.
Хотя трансляция двоичного кода требует некоторых дополнительных расходов, при
нормальных рабочих нагрузках они незначительны. Транслятор обрабатывает лишь
часть кода, и скорость выполнения программ становится сопоставимой со скоростью
прямого выполнения – как только заполнится кэш-память трассировки.
Трансляция двоичного кода также помогает оптимизировать прямое выполнение.
Например, если при прямом выполнении привилегированного кода часто происходит
перехват команд, это может привести к существенным дополнительным расходам,
поскольку при каждом перехвате управление передается от виртуальной машины к
монитору и обратно. Трансляция кода может устранить многие из таких перехватов, что
приведет к снижению накладных расходов на виртуализацию. Это особенно верно для
центральных процессоров с длинными конвейерами команд, в частности, для
современного семейства x86, в котором перехват связан с высокими дополнительными
расходами.
3.5. Эффекты виртуализации
Экспертиза современных продуктов и недавние исследования раскрывают некоторые
интересные возможности развития МВМ и требования, которые они предъявят к
технологиям виртуализации.
Администраторы центра данных могут с единой консоли быстро вводить в действие ВМ
и управлять тысячами виртуальных машин, выполняющихся на сотнях физических
серверов. Вместо того чтобы конфигурировать отдельные компьютеры, администраторы
будут создавать по имеющимся шаблонам новые экземпляры виртуальных серверов и
отображать их на физические ресурсы в соответствии с политиками
администрирования. Уйдет в прошлое взгляд на компьютер как на средство
предоставления конкретных услуг. Администраторы будут рассматривать компьютеры
просто как часть пула универсальных аппаратных ресурсов (примером тому может
служить виртуальный центр VMware VirtualCenter).
Отображение виртуальных машин на аппаратные ресурсы очень динамично.
Возможности миграции работающих ВМ (подобные тем, которые обеспечивает
технология VMotion компании Vmware) позволяют ВМ быстро перемещаться между
физическими машинами в соответствии с потребностями центра данных. МВМ сможет
справляться с такими традиционными проблемами, как отказ оборудования, за счет
простого перемещения ВМ с отказавшего компьютера на исправный. Возможность
перемещения работающих ВМ облегчит решение аппаратных проблем, таких как
планирование профилактического обслуживания, окончание срока действия
лизингового договора и модернизация оборудования: администраторы станут устранять
эти проблемы без перерывов в работе.
Еще недавно нормой являлась ручная миграция, но сейчас уже распространены
инфраструктуры виртуальных машин, которые автоматически выполняют балансировку
нагрузки, прогнозируют отказы аппаратных средств и соответствующим образом
перемещают ВМ, создают их и уничтожают в соответствии со спросом на конкретные
услуги.
Решение проблем на уровне МВМ положительно сказывается на всех программах,
выполняющихся на ВМ, независимо от их возраста (унаследованная или новейшая) и
поставщиков. Независимость от ОС избавляет от необходимости покупать и
обслуживать избыточную инфраструктуру. Например, из нескольких версий ПО службы
поддержки или резервного копирования останется лишь одна – та, которая работает на
уровне МВМ.
Виртуальные машины сильно изменили отношение к компьютерам. Уже сейчас простые
пользователи умеют легко создавать, копировать и совместно использовать ВМ. Модели
их применения значительно отличаются от привычных, сложившихся в условиях
вычислительной среды с ограниченной доступностью аппаратных средств. А
разработчики ПО могут применять такие продукты, как VMware Workstation, чтобы
легко установить компьютерную сеть для тестирования или создать собственный набор
испытательных машин для каждой цели.
Повышенная мобильность ВМ значительно изменила способы их применения. Такие
проекты, как Collective и Internet Suspend/Resume, демонстрируют возможность
перемещения всей вычислительной среды пользователя по локальной и
территориально-распределенной сети. Доступность высокоемких недорогих сменных
носителей, например, жестких дисков USB, означает, что потребитель может захватить
свою вычислительную среду с собой, куда бы он ни направлялся.
Динамический характер компьютерной среды на базе ВМ требует и более динамичной
топологии сети. Виртуальные коммутаторы, виртуальные брандмауэры и оверлейные
сети становятся неотъемлемой частью будущего, в котором логическая вычислительная
среда отделится от своего физического местоположения.
Виртуализация обеспечивает высокий уровень работоспособности и безопасности
благодаря нескольким ключевым возможностям.
Локализация неисправностей. Большинство отказов приложений происходят из-за
ошибок ПО. Виртуализация обеспечивает логическое разделение виртуальных
разделов, поэтому программный сбой в одном разделе никак не влияет на работу
приложения в другом разделе. Логическое разделение также позволяет защищаться от
внешних атак, что повышает безопасность консолидированных сред.
Гибкая обработка отказов. Виртуальные разделы можно настроить так, чтобы
обеспечить автоматическую обработку отказов для одного или нескольких приложений.
Благодаря средствам обеспечения высокой степени работоспособности, заложенным
сейчас в платформы на базе процессоров Intel MP, требуемый уровень услуг часто
можно обеспечить, предусмотрев аварийный раздел на той же платформе, где работает
основное приложение. Если требуется еще более высокий уровень работоспособности,
аварийный раздел можно разместить на отдельной платформе.
Разные уровни безопасности. Для каждой виртуальной машины можно установить
разные настройки безопасности. Это позволит IT-организациям обеспечить высокий
уровень контроля за конечными пользователями, а также гибкое распределение
административных привилегий.
МВМ имеют мощный потенциал для реструктуризации существующих программных
систем в целях повышения уровня защиты, а также облегчают развитие новых
подходов к построению безопасных систем. Сегодняшние ОС не обеспечивают
надежной изоляции, оставляя машину почти беззащитной. Перемещение механизмов
защиты за пределы ВМ (чтобы они выполнялись параллельно с ОС, но были
изолированы от нее) позволяет сохранить их функциональные возможности и повысить
устойчивость к нападениям.
Размещение средств безопасности за пределами ВМ – привлекательный способ
изоляции сети. Доступ к сети предоставляется ВМ после проверки, гарантирующей, что
она, с одной стороны, не представляет угрозы, а с другой – неуязвима для нападения.
Управление доступом к сети на уровне ВМ превращает виртуальную машину в мощный
инструмент борьбы с распространением злонамеренного кода.
Мониторы МВМ особенно интересны в плане управления многочисленными группами
программ с различными уровнями безопасности. Благодаря отделению ПО от
оборудования ВМ обеспечивают максимальную гибкость при поиске компромисса между
производительностью, обратной совместимостью и степенью защиты. Изоляция
программного комплекса в целом упрощает его защиту. В сегодняшних ОС почти
невозможно судить о безопасности отдельного приложения, поскольку процессы плохо
изолированы от друг друга. Таким образом, безопасность приложения зависит от
безопасности всех остальных приложений на машине.
Гибкость управления ресурсами, которую обеспечивают МВМ, может сделать системы
более стойкими к нападениям. Возможность быстро тиражировать ВМ и динамически
адаптироваться к большим рабочим нагрузкам станет основой мощного инструмента,
позволяющего справиться с нарастающими перегрузками из-за внезапного наплыва
посетителей на Web-сайте или атаки типа "отказ в обслуживании".
Модель распространения программных продуктов на основе ВМ потребует от
поставщиков ПО корректировки лицензионных соглашений. Лицензии на эксплуатацию
на конкретном процессоре или физической машине не приживутся в новых условиях, в
отличие от лицензий на число пользователей или неограниченных корпоративных
лицензий. Пользователи и системные администраторы будут отдавать предпочтение
операционным средам, которые легко и без особых затрат распространяются в виде
виртуальных машин.
Возрождение МВМ существенно изменило представления разработчиков программных и
аппаратных средств о структурировании сложных компьютерных систем и управлении
ими. Кроме того, МВМ обеспечивают обратную совместимость при развертывании
инновационных решений в области операционных систем, которые позволяют решать
современные задачи, сохраняя предыдущие достижения. Эта их способность станет
ключевой при решении грядущих компьютерных проблем.
Виртуализация предоставляет также преимущества для сред разработки и тестирования
ПО. Различные этапы цикла создания ПО, включая получение рабочей версии, можно
выполнять в разных виртуальных разделах одной и той же платформы. Это поможет
повысить степень полезного использования аппаратного обеспечения и упростить
управление жизненным циклом. Во многих случаях IT-организации получат
возможность тестировать новые и модернизированные решения на имеющихся рабочих
платформах, не прерывая производственный процесс. Это не только упрощает
миграцию, но также позволяет сократить расходы, устранив необходимость
дублирования вычислительной среды.
Освобождая разработчиков и пользователей от ресурсных ограничений и недостатков
интерфейса, виртуальные машины снижают уязвимость системы, повышают
мобильность программного обеспечения и эксплуатационную гибкость аппаратной
платформы.
Компьютерные системы существуют и продолжают развиваться благодаря тому, что
разработаны по законам иерархии и имеют хорошо определенные интерфейсы,
отделяющие друг от друга уровни абстракции. Использование таких интерфейсов
облегчает независимую разработку аппаратных и программных подсистем силами
разных групп специалистов. Абстракции скрывают детали реализации нижнего уровня,
уменьшая сложность процесса проектирования.
Подсистемы и компоненты, разработанные по спецификациям разных интерфейсов, не
способны взаимодействовать друг с другом. Например, приложения, распространяемые
в двоичных кодах, привязаны к определенной ISA и зависят от конкретного
интерфейса к операционной системе. Несовместимость интерфейсов может стать
сдерживающим фактором, особенно в мире компьютерных сетей, в котором свободное
перемещение программ столь же необходимо, как и перемещение данных.
Виртуализация позволяет обойти эту несовместимость. Виртуализация системы или
компонента (например, процессора, памяти или устройства ввода/вывода) на
конкретном уровне абстракции отображает его интерфейс и видимые ресурсы на
интерфейс и ресурсы реальной системы. Следовательно, реальная система выступает в
роли другой, виртуальной системы или даже нескольких виртуальных систем.
В отличие от абстракции, виртуализация не всегда нацелена на упрощение или
сокрытие деталей. Например, при отображении виртуальных дисков на реальные
программные средства виртуализации используют абстракцию файла как
промежуточный шаг. Операция записи на виртуальный диск преобразуется в операцию
записи в файл (и следовательно, в операцию записи на реальный диск). Отметим, что в
данном случае никакого абстрагирования не происходит – уровень детализации
интерфейса виртуального диска (адресация секторов и дорожек) ничем не отличается
от уровня детализации реального диска.