Эмуляторы операционных систем. Виртуализация, эмуляция, Контейнеризация ,симуляция

Лекция



Привет, мой друг, тебе интересно узнать все про эмуляторы операционных систем, тогда с вдохновением прочти до конца. Для того чтобы лучше понимать что такое эмуляторы операционных систем, эмулятор операционной системы, виртуальная машина, виртуальные машины, виртуализация, контейнеризация, эмуляция, симуляция, эмулятор, симулятор, docker, wsl, паравиртуализация , wine , настоятельно рекомендую прочитать все из категории Операционные системы и системное программировние.

виртуализация , эмуляция , симуляция и контейнеризация : ОТЛИЧИТЕЛЬНЫЕ ХАРАКТЕРИСТИКИ

эмулятор операционной системы (computer Science) - функционирующее в некоторой целевой операционной системе и аппаратной платформе программное и/или аппаратное средство, предназначенное для исполнения программ, изготовленных в другой операционной системе или работающих на отличном от целевого аппаратном обеспечении, но позволяющее осуществлять те же самые операции в целевой среде, что и в имитируемой системе.

У процессов эмуляции и виртуализации очень много общего, но также присутствуют и заметные эксплуатационные различия.

Если клиенту необходимо работать с более старой операционной системой внутри современной технической архитектуры, он выберет исключительно вариант с эмуляцией.

В тоже время, все виртуализованные системы функционируют в независимости от используемого базового оснащения.

КАКАЯ МЕЖДУ НИМИ РАЗНИЦА?

Суть эмуляции заключается в том, что одна система технически может имитировать другую.

Пример – если структура ПО работает в системе А, но не в системе В, мы создаем внутри системы В эмуляцию работы системы А. Вследствие этого, ПО спокойно работает на эмуляцию системы А.

Данный пример можно перенести и на виртуализацию, которая, помимо системы А. разделена еще на 2 выделенных сервера (В и С).

Оба сервера являются независимыми техническими контейнерами, обладающими персонализированным доступом к программным ресурсам – ОЗУ, ЦП и хранилищам памяти – их можно свободно перезагрузить независимо друг от друга. Их «поведение» всецело идентично поведению настоящего программного оборудования.

Каждая технология имеет свои преимущества и недостатки.

1 Архитектурные различия контейнеров и виртуальных машин

На рисунке ниже представлено визуальное представление архитектурного различия между виртуальными машинами и контейнерами:

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Рисунок 1. В виртуализации компьютеров гипервизор или монитор виртуальных машин (VMM) обеспечивают изоляцию между каждой гостевой ОС. В контейнерах операционная система хоста обеспечивает изоляцию между каждым контейнером.

Разница в архитектуре предлагает следующие ключевые предложения для ИТ-персонала и предприятий:

  • Непрерывная интеграция, развертывание и тестирование. В организациях, управляемых DevOps, организации могут использовать контейнеры для упрощения процессов в конвейере CI / CD. Контейнеры работают как единая инфраструктурная среда, поэтому разработчикам не нужно выполнять сложные задачи конфигурации для каждого спринта SDLC, поскольку рабочие нагрузки переносятся через физические ресурсы.
  • Переносимость рабочих нагрузок. Рабочие нагрузки ИТ могут переключаться между различными экземплярами инфраструктуры и виртуальными средами без значительных изменений конфигурации или переделки кода приложения.
  • Качество и соответствие программного обеспечения. Прозрачное сотрудничество между разработчиками и персоналом по тестированию при предоставлении рабочих частей приложения приводит к повышению качества программного обеспечения, ускорению циклов разработки и улучшению соответствия.
  • Оптимизация затрат: контейнеры максимизируют использование ресурсов в собственных изолированных виртуальных средах. Это позволяет организациям точно планировать пропускную способность и потребление инфраструктуры.
  • infrastructure agnostic: Контейнеры сделать агностик компоненты приложения инфраструктуры, что позволяет организациям перемещать рабочие нагрузки между серверами голых металлическими в виртуализированные среды для облачной инфраструктуры в ответ на изменяющиеся потребности бизнеса.

Для организаций, ориентированных на DevOps, которые сосредоточены на более быстрых и непрерывных циклах выпуска распределенных функций приложений на основе микросервисов, контейнеризация будет по-прежнему привлекать инвестиции, особенно в тех областях, где не удалось обеспечить виртуализацию.

2 ЭМУЛЯЦИЯ

Применительно к вышеописанному примеру, эмуляция выступает особым «заполнителем» для аппаратного обеспечения – создание особой технической среды, которая функционирует в аппаратном порядке.

Эмуляция может иметь особый эффект при таких пользовательских сценариях:

  • Старт операционной системы, изначально предназначенной для другого системного оборудования (запуск консольной игры на ПК, работа с Windows на Mac OS );
  • Старт устаревшей версии ПО после того как сопоставимое с нею оборудование устареет.

Также процессы эмуляции полезны при создании некоторого ПО для нескольких систем одновременно. Процесс написания программного кода может выполняться на одной машине, а процесс эмуляции на нескольких операционных системах (все функционирует одновременно и без явных сбоев).

3 ВИРТУАЛИЗАЦИЯ и паравиртуализация

Виртуализация — предоставление набора вычислительных ресурсов или их логического объединения, абстрагированное от аппаратной реализации, и обеспечивающее при этом логическую изоляцию друг от друга вычислительных процессов, выполняемых на одном физическом ресурсе.

Примером использования виртуализации является возможность запуска нескольких операционных систем на одном компьютере: при том каждый из экземпляров таких гостевых операционных систем работает со своим набором логических ресурсов (процессорных, оперативной памяти, устройств хранения), предоставлением которых из общего пула, доступного на уровне оборудования, управляет хостовая операционная система — гипервизор. Также могут быть подвергнуты виртуализации сети передачи данных, сети хранения данных, платформенное и прикладное программное обеспечение (эмуляция).

Паравиртуализация (англ. Paravirtualization) — техника виртуализации, при которой гостевые операционные системы подготавливаются для исполнения в виртуализированной среде, для чего их ядро незначительно модифицируется. Операционная система взаимодействует с программой гипервизора, который предоставляет ей гостевой API, вместо использования напрямую таких ресурсов, как таблица страниц памяти. Код, касающийся виртуализации, локализуется непосредственно в операционную систему. Паравиртуализация таким образом требует, чтобы гостевая операционная система была изменена для гипервизора, и это является недостатком метода, так как подобное изменение возможно лишь в случае, если гостевые ОС имеют открытые исходные коды, которые можно модифицировать согласно лицензии. Но зато паравиртуализация предлагает производительность почти как у реальной не виртуализированной системы. Как и при полной виртуализации, одновременно могут поддерживаться многочисленные различные операционные системы. Метод паравиртуализации позволяет добиться более высокой производительности, чем метод динамической трансляции.

В компьютерных науках полная виртуализация — это технология, используемая для предоставления определенной виртуальной среды, которая обеспечивает полное симулирование базового оборудования. Любое программное обеспечение, которое может работать на базовом оборудовании может быть запущено в виртуальной среде, как правило любая операционная система должна выполняться без проблем в виртуальной среде, при условии, что она работает на базовом оборудовании. Другие типы платформенной виртуализации позволяют выполняться в виртуальной среде только некоторому или модифицированному программному обеспечению.

Пример полной виртуализации реализован в управляющей программе IBM CP/CMS ОС. Она впервые продемонстрирована в исследовательской системе IBM CP-40 в 1967-м году, затем она предоставлялась с открытым исходным кодом в CP/CMS 1967—1972 гг и была внедрена в линейку VM с 1972 до настоящего времени. Каждому пользователю CP/CMS была предоставлена имитация автономного компьютера. Каждая такая виртуальная машина имела все возможности базовой машины, и для своих пользователей виртуальная машина была ничем неотличима от реальной. Эта имитация была полной и основывалась на принципе оперативных инструкций к оборудованию. Таким образом она включает такие элементы как: набор инструкций, оперативную память, прерывания, исключения и устройства доступа. В результате получили систему, которая могла мультиплексировать много пользователей.

Полная виртуализация возможна исключительно при условии правильной комбинации оборудования и программного обеспечения. Например, она была невозможной ни в серии IBM System/360, за исключением IBM System/360-67, ни в ранних IBM System/370, пока IBM не добавила оборудование виртуальной памяти в своих System/370 в 1972 г.

Аналогичная ситуация и с платформой х86: полная виртуализация была возможна не в полной мере, до добавления технологий AMD-V и Intel VT(эти технологии ниже будут рассмотрены более подробно в пункте «Аппаратная виртуализация»). Много продуктов виртуализации для платформы x86 подошли вплотную и заявляли о полной виртуализации еще до реализации AMD-V и Intel-VT. Примеры включают такие решения как: ADEOS, Mac-на-Linux, Parallels Desktop для Mac, Parallels Workstation, VMware Workstation, VMware Server (бывший GSX Server), VirtualBox, Win4BSD и Win4Lin Pro.

VMware, например, использует технологию, называемую «бинарной трансляцией», для автоматического изменения ПО для x86 «на лету», для замены инструкций безопасными для виртуальной машины последовательностями инструкций. Эта технология предоставляет видимость полной виртуализации.

Ключевой задачей полной виртуализации является перехват и симуляция привилегированных операций, таких как инструкции ввода-вывода. Эффект выполнения каждого процесса, запущенного в определенной виртуальной машине, должен быть сохранен только в пределах этой виртуальной машины — нельзя допустить, чтобы виртуальные процессы изменяли состояние других виртуальных машин, управляющей программы или оборудования. Некоторые машинные команды могут быть выполнены непосредственно на оборудовании, поскольку их результаты целиком содержатся в элементах, управляемых управляющей программой, таких как память и арифметические регистры. Но другие инструкции, нельзя разрешать выполнять напрямую, — они должны быть перехвачены и симулированы. Это инструкции к доступу или изменению статической информации, которая находится за пределами виртуальной машины.

Полная виртуализация была успешно опробована для:

  • совместного использования компьютера несколькими пользователями;
  • изоляции пользователей друг от друга (и от управляющей программы);
  • эмуляции нового оборудования для обеспечения лучшей надежности, безопасности и производительности.

Цель изменения интерфейса заключается в сокращении доли времени выполнения гостя, отведенного на выполнение операций, которые являются существенно более трудными для запуска в виртуальной среде по сравнению с не-виртуальной средой. Паравиртуализация предоставляет специально установленные обработчики прерываний, чтобы позволить гостю (гостям) и хосту принимать и опознавать эти задачи, которые иначе были бы выполнены в виртуальном домене (где производительность меньше). Таким образом, успешная паравиртуализированная платформа может позволить монитору виртуальных машин (VMM) быть проще (путем перевода выполнения критически важных задач, с виртуального домена к хосту домена) и/или уменьшить общие потери производительности машинного выполнения внутри виртуального гостя.

Впервые термин виртуализациявозник в проекте Denali, а после того, как это слово применили исследователи из компьютерной лаборатории Кембриджского университета в проекте Xen, оно окончательно утвердилось в терминологии. Приставка «пара-» в слове термине ничего не обозначает, просто авторам данной идеи понадобился новый термин.

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

К наиболее явным преимуществам такого способа взаимодействия с программными компонентами можно отнести:

  • Отменная системная совместимость с использующейся сейчас архитектурой процессора х86;
  • Функции демонстрации работы физического устройства как для выделенной части аппаратного и программного обеспечения;
  • Автономность на любой стадии использования.

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


У виртуализации есть несколько измерений, которые условно можно назвать «Тип» и «Способ виртуализации».
Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Рисунок 2 Типы и способы виртуализации


Типы виртуализации

Виртуализация серверов

  • Обычно под виртуализацией подразумевается размещение нескольких виртуальных серверов в рамках одного физического

  • Но может еще быть объединение нескольких физических серверов в один логический для решения определенной задачи
  • Распределенность + виртуализация = GRID системы

Виртуализация ресурсов

Ресурсы — это оперативная память, жесткие диски, процессоры. Они также могут быть нарезаны и розданы по частям разным пользователям.

Виртуализация приложений

Виртуализация приложений — это то, что мы уже знаем как PaaS и SaaS


Способы виртуализации

Полная виртуализация и паравиртуализация

Основные методы виртуализации — это полная виртуализация и паравиртуализация. Схема обоих методов очень похожа. Есть гипервизор и виртуальные машины с гостевыми OS. При полной виртуализации в гостевую OS не вносятся никакие изменения. При паравиртуализации устанавливаются оптимизированные образы для определенного гипервизора. Это позволяет максимально использовать аппаратные ресурсы и не требует никаких изменений от приложений. Примером системы, реализующей полную виртуализацию, является VMware, пример паравиртуализации — Xen и KVM.

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Рисунок 3 Виртуализация с использованием гипервизора


Еще выделяют несколько способов виртуализации:

Виртуализация уровня операционной системы


Особенностью является, что гостевая OS может быть только одна. Примером виртуализации на уровне OS является Linux-VServer:

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Рисунок 4 Виртуализация без использования гипервизора

Эмуляция оборудования


При этом способе виртуализации VM полностью эмулирует работу определенного оборудования. С одной стороны, это дает возможность, например, на одном процессоре эмулировать другой тип процессора. С другой стороны, понятно, что при этом будет замедление работы в десятки раз. Пример эмулятора — это Bochs.

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Рисунок 5 Виртуализация оборудования

Эмуляция библиотек OS


И для полноты картины добавлю эмуляцию библиотек. Это способ, при котором эмулируется не вся OS, а только часть. Например, Wine в Linux — эмуляция библиотек для Windows-приложений.

Получается, что мы можем виртуализировать разные системы разными методами. Т.е. видим, что существующими способами и типами виртуализации можно решить множество задач. Возникает логичный вопрос, когда же имеет смысл разворачивать облачную платформу?

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Рисунок 6 Эиуляция библиотек операционной системы


Облачные платформы располагаются над набором виртуальных машин, полностью изолируют приложение как от железа, так и от структуры виртуальной среды. Облачные платформы используются для автоматичеcкого и ручного scale in / scale out, запуска / остановки / конфигурирования VM и приложений. Когда имеет смысл оставаться в виртуализации, а когда оставаться в облаке? Концепция следующая: когда всего много — облако, мало — виртуализация:

  • Для задач с большим числом виртуальных серверов — лучше облако, для задач с 10-20 виртуалками можно не разворачивать облачную платформу.
  • Если требуется постоянно менять конфигурацию ресурсов — облако.
  • Много пользователей, данных, клиентов — облако.

4 Сравнение возможностей вируальных машин

Далее мы и поговорим о виртуальных машинах и операционных эмуляторах, которые могут сослужить хорошую службу при выполнении тестирования, а также остановимся на их базовых преимуществах и недостатках.

4.1 VMWARE

VMWare Workstation – очень популярная и удобная в использовании виртуальная машина, использующаяся на профессиональной основе.

Преимущества продукта:

  1. Есть некоммерческая версия под названием VMWare Workstation Player, которую можно использовать для ознакомительных целей;
  2. Простой и интуитивно понятный графический интерфейс;
  3. Установка новой ОС существенным образом упрощена, по сравнению с установкой традиционной версии программного обеспечения на ПК;
  4. Программа позволяет делать скриншоты операционки, с помощью которых можно восстанавливать предыдущее состояние системы;
  5. Отменная техническая надежность и стабильность работы;
  6. Быстрая работа и хорошая производительность;
  7. Функция установки пароля на используемые виртуальные машины;
  8. Стабильная поддержка 3D графики.

Недостатки:

  1. VMWare Workstation Player – платный продукт для коммерческих целей;
  2. VMWare Workstation Pro – можно использовать только после оформления подписки;
  3. Отдельные компоненты программы функционируют с разными операционными системами.

4.2 VIRTUAL BOX

Весьма распространенная виртуальная машина с приличным набором полезного технического функционала.

Преимущества:

  1. Virtual Box – позволяет взаимодействовать с большим перечнем операционных систем, как для целей непосредственной установки Virtual Box, так и для установки «гостевых» продуктов;
  2. Можно сделать скриншоты операционной системы, позволяющие восстановить предыдущее состояние системы;
  3. В Интернете распространяется на бесплатной основе вместе с открытым программным кодом, а также в дополнении с лицензией GPLv2;

Недостатки:

  1. Продукт не можно считать максимально продуктивным в сравнении с иными, платными аналогами;
  2. Постоянно встречаются ошибки, различные баги, крэши и летальные зависания;
  3. Минимальная техническая поддержка 3D графики;
  4. Очень сложный графический интерфейс, по сравнению с платными программами и компонентами.

4.3 HYPER-V

Данный продукт изначально позиционировался как прямая замена компонентам Microsoft Visual PC.

Преимущества:

  1. Доставляется вместе с большим количеством вариаций систем Windows 10;
  2. Поддерживает процесс установки гостевых операционных систем, а также все старые версии операционной системы Windows;
  3. Есть функция установки гостевых операционных систем Linux и FreeBSD.

Недостатки:

  1. Нет возможности запустить из более ранних и «древних» версий операционной системы Windows;
  2. Не получится установить продукт под Mac OS;
  3. Не очень удобный и интуитивно понятный графический интерфейс, если сравнивать эту программу с компонентами Virtual Box и VMWare.

4.4 BOOT CAMP

Специализированный продукт исключительно для компьютеров Mac, с помощью которой можно выполнить установку Windows.

Преимущество:

  • Предоставляется вместе с приобретенным Mac компьютером.

Недостатки:

  • Запускать Windows можно исключительно на правах гостевой операционной системы;
  • Иногда работает нестабильно с некоторыми системными компонентами, такими как сенсоры движения и прочее;
  • Могут возникать операционные ошибки с редактированием размера используемого раздела.

4.5 PARALLELS DESKTOP

Особая виртуальная машина, которая применяется на компьютерах Mac для взаимодействия с операционными компонентами Windows.

Преимущества:

  • Пользователь запросто может использовать ранее созданные данные и компоненты от продукта Boot Camp;
  • Существует поддержка для различных гостевых операционных систем, таких как Linux, Windows, разные версии Mac OS и прочее;

Недостатки:

  • Работает исключительно с Mac OS;
  • Продукт является платным, но есть 14-дневная бесплатная версия для ознакомления.

4.6 NOX

Специализированный эмулятор под операционную систему Android.

Преимущества продукта:

  • Относительно «бесплатная» программа;
  • Продукт Nox очень «легкий» и технически «быстрый»;
  • Специализированный маппинг клавиш под жесты Android;
  • Детализировано конфигурируется.

Недостатки:

  • Необходима установка прочих приложений и компонентов;
  • Можно использовать исключительно для работы с Андроид системой.

4.7 BLUESTACKS

Современный эмулятор операционный системы Андроид.

Преимущества:

  • Относительно «бесплатный» продукт, в котором есть ознакомительная версия на пробный период;
  • Большое разнообразие параметров для тонкой настройки;
  • Легкая установка приложений;
  • Функции для взаимодействия на вкладках с возможностью быстрого переключения.

Недостатки:

  • Заточен под работу только с гостевым Андроид;
  • Много рекламы и сторонних приложений;
  • «Кушает» много оперативной памяти, а значит, запросто может заставить тормозить относительно не мощный или слабый компьютер.

4.8 APPETIZE.IO

Интернет-эмулятор под операционные системы Android и iOS.

Преимущества:

  • Есть бесплатная версия (100 минут за 1 месяц и один активный юзер);
  • Большой ассортимент приложений и систем для воспроизведения эмуляции под самые востребованные устройства и технические компоненты.

Недостатки:

  • Больше половины из предоставленного функционала доступна только в платной версии продукта.

4.9 ANDY OS

Специализированный эмулятор для операционной системы Андроид.

Преимущества:

  • Находится в свободном доступе в Интернете;
  • Очень простой в использовании. Об этом говорит сайт https://intellect.icu . Отличается наличием интуитивно понятного функционала;
  • Опции регулировки размера экрана;
  • Параметры быстрой синхронизации с современными мобильными устройствами.

Недостатки:

  • Можно использовать только для работы с продуктами под Андроид;
  • Не все 3D игры поддерживаются в корректной форме;
  • Возникают периодические зависания;
  • Постоянное появление рекламных вставок;
  • Некоторые версии содержат официально не заявленные функции и параметры, позволяющие распространению вредоносных компонентов.

Конечно, этот список не можно считать завершенными. Выше были перечисленные исключительно наиболее ходовые продукты и их базовые характеристики, из которых при желании можно выбрать что-то стоящее.

5 Контейнеризация

5.1 Основные понятия


В последнее время все больше используются системы контейнеризации, такие как Docker или Kubernetes. Они позволяют автоматически разворачивать подготовленные образы OS в основном для целей автоматического тестирования и для систем CI. Контейнеры очень похожи на виртуальные машины, но для них не требуется гипервизор, а только соответствующий движок:

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Рисунок 6 Контейнерезация

Контейнеризация (виртуализация на уровне операционной системы, контейнерная виртуализация, зонная виртуализация) — метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя вместо одного. Эти экземпляры (обычно называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны отдельному экземпляру операционной системы. Для систем на базе Unix эта технология похожа на улучшенную реализацию механизма chroot. Ядро обеспечивает полную изолированность контейнеров, поэтому программы из разных контейнеров не могут воздействовать друг на друга.

В отличие от аппаратной виртуализации, при которой эмулируется аппаратное окружение и может быть запущен широкий спектр гостевых операционных систем, в контейнере может быть запущен экземпляр операционной системы только с тем же ядром, что и у хостовой операционной системы (все контейнеры узла используют общее ядро). При этом при контейнеризации отсутствуют дополнительные ресурсные накладные расходы на эмуляцию виртуального оборудования и запуск полноценного экземпляра операционной системы, характерные при аппаратной виртуализации.

Существуют реализации, ориентированные на создание практически полноценных экземпляров операционных систем (Solaris Containers, контейнеры Virtuozzo, OpenVZ), так и варианты, фокусирующиеся на изоляции отдельных сервисов с минимальным операционным окружением (jail, Docker).

Таблица 1 Сравнение реализаций контениризации

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Все равно, у виртуальных машин и эмуляторов есть свои сильные и слабые стороны, что не позволяет поставить знак равенства между ними и традиционными способами тестирования функциональности и работоспособности разрабатываемого программного обеспечения.

5.2 Контейнеризация с использованием Docker

Начнем с того, для чего же нам нужен Docker:

  1. изолированный запуск приложений в контейнерах
  2. упрощение разработки, тестирования и деплоя приложений
  3. отсутствие необходимости конфигурировать среду для запуска — она поставляется вместе с приложением — в контейнере
  4. упрощает масштабируемость приложений и управление их работой с помощью систем оркестрации контейнеров.

Предыстрория Docker


Для изоляции процессов, запущенных на одном хосте, запуска приложений, предназначенных для разных платформ, можно использовать виртуальные машины. Виртуальные машины делят между собой физические ресурсы хоста:

  • процессор,
  • память,
  • дисковое пространство,
  • сетевые интерфейсы.


Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

На каждой ВМ устанавливаем нужную ОС и запускаем приложения. Недостатком такого подхода является то, что значительная часть ресурсов хоста расходуется не на полезную нагрузку(работа приложений), а на работу нескольких ОС.

Контейнеры Docker


Альтернативным подходом к изоляции приложений являются контейнеры. Само понятие контейнеров не ново и давно известно в Linux. Идея состоит в том, чтобы в рамках одной ОС выделить изолированную область и запускать в ней приложение. В этом случае говорим о виртуализации на уровне ОС. В отличие от ВМ контейнеры изолированно используют свой кусочек ОС:

  • файловая система
  • дерево процессов
  • сетевые интерфейсы
  • и др.


Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Т.о. приложение, запущенное в контейнере думает, что оно одно во всей ОС. Изоляция достигается за счет использования таких Linux-механизмов, как namespaces и control groups. Если говорить просто, то namespaces обеспечивают изоляцию в рамках ОС, а control groups устанавливают лимиты на потребление контейнером ресурсов хоста, чтобы сбалансировать распределение ресурсов между запущенными контейнерами.

Т.о. контейнеры сами по себе не являются чем-то новым, просто проект Docker, во-первых, скрыл сложные механизмы namespaces, control groups, а во-вторых, он окружен экосистемой, обеспечивающей удобное использование контейнеров на всех стадиях разработки ПО.

Образы Docker


Образ в первом приближении можно рассматривать как набор файлов. В состав образа входит все необходимое для запуска и работы приложения на голой машине с докером: ОС, среда выполнения и приложение, готовое к развертыванию.

Но при таком рассмотрении возникает вопрос: если мы хотим использовать несколько образов на одном хосте, то будет нерационально как с точки зрения загрузки, так и с точки зрения хранения, чтобы каждый образ тащил все необходимое для своей работы, ведь большинство файлов будут повторяться, а различаться — только запускаемое приложение и, возможно, среда выполнения. Избежать дублирования файлов позволяет структура образа.

Образ состоит из слоев, каждый из которых представляет собой неизменяемую файловую систему, а по-простому набор файлов и директорий. Образ в целом представляет собой объединенную файловую систему (Union File System), которую можно рассматривать как результат слияния файловых систем слоев. Объединенная файловая система умеет обрабатывать конфликты, например, когда в разных слоях присутствуют файлы и директории с одинаковыми именами. Каждый следующий слой добавляет или удаляет какие то файлы из предыдущих слоев. В данном контексте «удаляет» можно рассматривать как «затеняет», т.е. файл в нижележащем слое остается, но его не будет видно в объединенной файловой системе.
Можно провести аналогию с Git: слои — это как отдельные коммиты, а образ в целом — результат выполнения операции squash. Как мы увидим дальше, на этом параллели с Git не заканчиваются. Существуют различные реализации объединенной файловой системы, одна из них — AUFS.

Для примера рассмотрим образ произвольного .NET приложения MyApplication: первым слоем является ядро Linux, далее следуют слои ОС, среды исполнения и уже самого приложения.

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Слои являются read only и, если в слое MyApplication нужно изменить файл, находящийся в слое dotnet, то файл сначала копируется в нужный слой, а потом в нем изменяется, оставаясь в исходном слое в первозданном виде.

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Неизменяемость слоев позволяет использовать их всеми образами на хосте. Допустим MyApplication — это веб-приложение, которое использует БД и взаимодействует также с NodeJS сервером.

Эмуляторы операционных систем. Виртуализация,  эмуляция, Контейнеризация ,симуляция

Совместное использование проявляется также и при скачивании образа. Первым загружается манифест,

продолжение следует...

Продолжение:


Часть 1 Эмуляторы операционных систем. Виртуализация, эмуляция, Контейнеризация ,симуляция
Часть 2 5.3 LXC (англ. Linux Containers) - Эмуляторы операционных систем. Виртуализация,
Часть 3 Недостатки Wine - Эмуляторы операционных систем. Виртуализация, эмуляция, Контейнеризация ,симуляция

См.также

  • CP / CMS
  • Аппаратная виртуализация
  • Гиперджекинг
  • Гипервизор
  • Виртуализация ввода-вывода
  • LPAR
  • Виртуализация на уровне операционной системы
  • Паравиртуализация
  • Виртуализация платформы
  • Требования Попека и Голдберга к виртуализации
  • PR / SM
  • Виртуальная машина

Я хотел бы услышать твое мнение про эмуляторы операционных систем Надеюсь, что теперь ты понял что такое эмуляторы операционных систем, эмулятор операционной системы, виртуальная машина, виртуальные машины, виртуализация, контейнеризация, эмуляция, симуляция, эмулятор, симулятор, docker, wsl, паравиртуализация , wine и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционные системы и системное программировние

создано: 2014-09-30
обновлено: 2024-11-13
228



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей
avatar
18.7.2020 9:53

В чем разница между эмуляцией и симуляцией?

avatar
18.7.2020 9:53

Вы хотите дублировать поведение старого калькулятора HP, есть два варианта:

Вы пишете новую программу, которая рисует дисплей и клавиши калькулятора, и когда пользователь нажимает на клавиши, ваши программы делают то же, что и старый калькулятор. Это симулятор

Вы получаете дамп прошивки калькулятора, затем пишете программу, которая загружает прошивку и интерпретирует ее так же, как микропроцессор в калькуляторе. Это эмулятор

Simulator пытается дублировать поведение устройства. Эмулятор пытается дублировать внутреннюю работу устройства.


Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционные системы и системное программировние

Термины: Операционные системы и системное программировние