Хотя в IBM виртуальные машины используются уже четыре десятилетия и ряд других компаний, включая Sun Microsystems и Hewlett-Packard, недавно добавили поддержку виртуальных машин к своим высокопроизводительным промышленным серверам, тем не менее, по большому счету, идея виртуализации в мире персональных компьютеров до последнего времени практически игнорировалась. Но в последнее время сочетание новых потребностей, нового программного обеспечения и новых технологий придало этой теме особую актуальность.
Сначала о потребностях. Многие компании традиционно запускали свои почтовые серверы, веб-серверы, FTP-серверы и все остальные серверы на отдельных компьютерах, иногда имеющих различные операционные системы. Виртуализация рассматривается ими как способ запуска всех этих серверов на одной и той же машине, избегая при этом отказа всех серверов при отказе одного из них.
Виртуализация также популярна в мире веб-хостинга. Без нее клиенты вынуждены выбирать между общим хостингом1 (который дает им только учетную запись на веб-сервере, но не позволяет управлять его программным обеспечением) и выделенным хостингом (который предоставляет им их собственную, очень гибкую, но не оправдывающую затрат машину при небольших или средних по объему веб-сайтах). Когда компания, предоставляющая услуги веб-хостинга (хостинг- провайдер), сдает в аренду виртуальные машины, на одной физической машине может быть запущено множество виртуальных машин, каждая из которых превращается во вполне полноценную машину Клиенты, арендовавшие виртуальную машину, могут запускать на ней какую угодно операционную систему и программное обеспечение, но за часть стоимости выделенного сервера (поскольку та же самая физическая машина одновременно поддерживает множество виртуальных машин).
Другой вариант использования виртуализации предназначен для конечных пользователей, которым необходима возможность одновременного запуска двух или более операционных систем, например Windows и Linux, поскольку некоторые из любимых ими приложений работают под управлением только одной, а некоторые под управлением только другой операционной системы. Такая ситуация показана на рис. 1.25, а, при этом термин «монитор виртуальной машины» заменен на «гипервизор первого типа» (type 1 hypervisor) в соответствии с терминологией последних лет.
Теперь о программном обеспечении. Привлекательность виртуальных машин сомнениям не подвергалась, проблема заключалась в их реализации. Чтобы запустить на компьютере программное обеспечение виртуальных машин, его центральный процессор должен быть готов к работе в этом режиме (Popek and Goldberg, 1974). Проблема заключается в следующем. Когда операционная система, запущенная на виртуальной машине (в режиме пользователя) выполняет привилегированные инструкции, например изменение слова состояния программы — PSW или осуществление операции ввода-вывода, необходимо, чтобы оборудование осуществило ее перехват и вызов монитора виртуальных машин, который выполнит программную эмуляцию данной инструкции. На некоторых центральных процессорах, особенно на Pentium, его предшественниках и их клонах, попытки выполнения привилегированных инструкций в режиме пользователя просто игнорируются. Эта особенность исключает создание виртуальных машин на таком оборудовании, чем объясняется недостаточный интерес к ним в мире персональных компьютеров. Конечно, существовали интерпретаторы для Pentium, которые запускались на этом процессоре, но при потере производительности обычно в 5-10 раз они не подходили для серьезной работы.
В 90-х годах, благодаря ряду научно-исследовательских проектов, особенно Disco в Стэнфорде (Bugnion et al., 1997), ситуация изменилась, появились коммерческие продукты (например, VMware Workstation) и интерес к виртуальным машинам снова оживился. VMware Workstation — это гипервизор второго типа, показанный на рис. 1.25, б. В отличие от гипервизора первого типа, который работает непосредственно на реальном оборудовании, гипервизоры второго типа работают как прикладные программы в качестве надстройки над Windows, Linux или над какой-нибудь другой операционной системой, известной как основная операционная система (host operating system). После запуска гипервизор второго типа считывает установочный компакт-диск для выбора и установки гостевой операционной системы на виртуальный диск, который является просто большим файлом в файловой системе основной операционной системы.
Во время своей загрузки гостевая операционная система делает все то же самое, что и на настоящем оборудовании, как обычно запуская некоторые фоновые процессы, а затем графический пользовательский интерфейс. Некоторые гипервизоры поблочно транслируют двоичные программы гостевой операционной системы, заменяя определенные управляющие инструкции вызовами гипервизора. Затем оттранслированные блоки выполняются и кэшируются для последующего использования.
Виртуальная машина Java
Виртуальные машины используются — правда, несколько иным образом — и в другой области: для запуска программ на языке Java. Когда компания Sun Microsystems изобрела язык программирования Java, она также изобрела и виртуальную машину (то есть архитектуру компьютера), названную JVM (Java Virtual Machine — виртуальная машина Java). Компилятор Java создает код для JVM, который затем обычно выполняется программным интерпретатором JVM. Преимущество такого подхода состоит в том, что код для JVM может доставляться через Интернет на любой компьютер, имеющий JVM-интерпретатор, и запускаться на этом компьютере. Если бы компилятор создавал двоичные программы, например, для SPARC или Pentium, их нельзя было бы так же легко куда угодно доставлять и где угодно запускать. (Разумеется, Sun могла бы создать компилятор, производящий двоичные файлы для SPARC, а затем распространить SPARC-интерпретатор, но у JVM намного более простая для интерпретации архитектура.) Другим преимуществом использования JVM является то, что при правильной реализации интерпретатора, что не является такой уж простой задачей, полученные J VM-программы могут быть проверены с точки зрения безопасности, а затем выполнены в защищенной среде, не имея возможности похитить данные или нанести любой другой вред.
Экзоядра
Вместо клонирования настоящей машины, как это делается в виртуальных машинах, существует иная стратегия, которая заключается в их разделении, иными словами, в предоставлении каждому пользователю подмножества ресурсов. При этом одна виртуальная машина может получить дисковые блоки от 0 до 1023, другая может получить блоки от 1024 до 2047, и т. д.
Самый нижний уровень, работающий в режиме ядра, — это программа под названием экзоядро (Engler et al., 1995). Его задача состоит в распределении ресурсов между виртуальными машинами и затем в отслеживании попыток их использования, чтобы ни одна из машин не пыталась использовать чужие ресурсы. Каждая виртуальная машина может запускать свою собственную операционную систему, как на VM/370 и на Pentium в режиме виртуальных машин 8086, с тем отличием, что каждая машина ограничена использованием тех ресурсов, которые она запросила и которые были ей предоставлены.
Преимущество схемы экзоядра заключается в том, что она исключает уровень отображения. При других методах работы каждая виртуальная машина считает, что она имеет свой собственный диск с нумерацией блоков от 0 до некоторого максимума. Поэтому монитор виртуальных машин должен вести таблицы преобразования адресов на диске (и всех других ресурсов). При использовании экзоядра необходимость в таком переназначении отпадает. Экзоядру нужно лишь отслеживать, какой виртуальной машине какие ресурсы были переданы. Такой подход имеет еще одно преимущество: он отделяет многозадачность (в экзоядре) от пользовательской операционной системы (в пространстве пользователя) с меньшими затратами, так как для этого ему необходимо всего лишь не допускать вмешательства одной виртуальной машины в работу другой.
Свойства ОС.
1. Эффективность
При распределении ресурсов система должна быть в достаточной степени эффективна. Она не должна сама потреблять слишком много ресурсов и предъявлять больших требований к оборудованию.
2.Надежность и устойчивость
Она должна быть такой же надежной, как аппаратура. Быть в состоянии производить определение и диагностику ошибок, а также восстановление после характерных ошибок, произошедших по вине пользователей. Она должна защищать пользователя от его же ошибок или хотя бы минимизировать вред, который они наносят. Устойчивость — возможность восстановления системы после сбоя, например, послегбоя питания.
3. Гибкость и расширяемость
Гибкость — система должна настраиваться в зависимости от поведения пользователя. Ресурсы должпы увеличиваться или уменьшаться в зависимости от задания пользователя. В процессе эволюции добавляются новые средства, ОС должна быть расширяемой для обеспечения эффективного использования быстро изменяемого аппаратного обеспечения.
4. Переносимость
Переносимость — возможность функционирования ОС для рааличпых архитектур процессоров и внешних устройств.
5. Безопасность
ОС должна защищать приложения от взаимного влияния. Должна минимизировать возможность преднамеренной или случайной порчи данных и программ для всех приложений пользователя и самой ОС. Должна защитить критические ресурсы от несанкционированного доступа.
Необходимыми условиями защищенной ОС являются:
• возможность определения владельца для каждого ресурса1;
возможность определения для владельца прав доступа.
6.Совместимость
Возможность использовать ОС для процессоров с разной архитектурой. Совместимость может быть обеспечена на уровне исходных кодов и двоичных кодов. Совместимость на уровне исходных кодов обеспечена для той части ОС, которая написана на языке Си.
7.Удобство и ясность
Так как ОС предназначена, прежде всего, для работы с пользователем, она должна быть спроектирована с учетом человеческого фактора.
Существующие ОС(ТЕМЫ ДЛЯ РЕФЕРАТОВ!!!!).
Microsoft
- MSX-DOS
- MS-DOS
- Xenix — лицензированная версия Unix; продана SCO в 1990-х
- Microsoft Windows
- Windows 1.0
- Windows 2.0 (для 80286)
- Windows 3.0 — первая версия, имевшая коммерческий успех
- Windows 3.1 — выпущена 18 марта 1992 года
- Windows for Workgroups 3.11
- Windows 9x — версии Windows 4.x, новое семейство, сохранявшее преемственность с Windows 3.x
- Windows 95 (версия Windows 4.00.950)
- Windows 98 (версия Windows 4.10.1998)
- Windows Me (версия Windows 4.90.3000)
- Windows NT — ОС, разрабатываемая в Майкрософт с 1988 года командой во главе с Дэвидом Катлером под рабочим названием OS/2 Version 3.
- Windows NT 3.1 — первая версия Windows NT, выпущена 27 июля 1993
- Windows NT 3.5 (варианты поставки: Workstation — для рабочих станций и Server — для серверов)
- Windows NT 3.51 — отлаженная версия Windows NT 3.5
- Windows NT 4.0 (варианты поставки: Workstation — для рабочих станций и Server — для серверов)
- Windows 2000 (версия Windows NT 5.0, варианты поставки: Professional — для рабочих станций, Server, Advanced Server и Datacenter Server — для серверов)
- Windows XP (версия Windows NT 5.1 — внутренне основана на ядре Windows 2000); варианты поставки: Home, Professional, Tablet PC Edition, Media Center Edition, Embedded
- Windows Server 2003 (версия Windows NT 5.2) — вариант Windows XP для работы на серверах
- Windows Compute Cluster Server 2003 — вариант Windows XP для работы в кластерных системах
- Windows XP Embedded — вариант Windows XP для встраиваемых систем
- Windows Vista (версия Windows NT 6.0)
- Windows Server 2008 (версия Windows NT 6.0) — вариант Windows Vista для работы на серверах
- Windows HPC Server 2008 — замена Windows Compute Cluster Server 2003 для кластерных систем
- Windows Home Server
- Windows Vista for Embedded Systems — вариант Windows Vista для встраиваемых систем
- Windows 7 (версия Windows NT 6.1)
- Windows Server 2008 R2 (версия Windows NT 6.1) — вариант Windows 7 для работы на серверах
- Windows 8 (версия Windows NT 6.2) - Самая новая ОС от Microsoft. Имеются версии на планшетные компьютеры и на персональные компьютеры.
- Windows CE (compact edition — компактная редакция) — Операционная система реального времени для встраиваемых систем, мобильных телефонов, наладонных компьютеров и даже роботов.
- Windows Mobile, Pocket PC — версии Windows CE для мобильных телефонов и планшетных компьютеров.
- Windows Embedded — версии Windows CE для встраиваемых систем, включая роботов.
Смартфоны
- Linux
- Google Android;
- HP webOS;
- Maemo в Nokia 770 Internet Tablet, Nokia N800, N810 и Nokia N900;
- OpenMoko в устройствах Neo 1973 и Neo FreeRunner;
- MontaVista Mobilinux в Motorola A760, E680;
- EZX Linux в Motorola A1200, A1600, E6;
- MOTOMAGX в Motorola ZINE ZN5;
- LiMo Platform;
- Access Linux Platform в Edelweiss;
- MeeGo;
- bada — (ошибочно считается OS Linux) OS, разработанная компанией Samsung[3]
- Symbian OS
- Apple iOS — ОС для Apple iPhone, iPod touch, iPad
- BlackBerry OS
- JavaFX Mobile
- Windows Mobile на базе Windows CE
- Windows Phone 7
Нетбуки, смартбуки, MID
- Linux
- EPOC32 Release 5 в Psion netBook 1999 года;
- Microsoft Windows CE в Psion Teklogix netBook Pro 2003 года, в Elonex Smartbook и др.
- Microsoft Windows CE MID в Toshiba JournE;