Re[36]: 32/64/AnyCPU - что за @$^%$?
От: tranzit  
Дата: 02.11.16 13:45
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>

S>Виртуальная машина исполняет некоторый машинно-независимый код (например, байт-код, шитый код, p-код) или машинный код реального процессора. Помимо процессора, ВМ может эмулировать работу как отдельных компонентов аппаратного обеспечения, так и целого реального компьютера (включая BIOS, оперативную память, жёсткий диск и другие периферийные устройства). В последнем случае в ВМ, как и на реальный компьютер, можно устанавливать операционные системы (например, Windows можно запускать в виртуальной машине под Linux или наоборот). На одном компьютере может функционировать несколько виртуальных машин (это может использоваться для имитации нескольких серверов на одном реальном сервере с целью оптимизации использования ресурсов сервера).



На вики с произошел перегруз термина "виртуальная машина".
То что писал раннее прочтите внимательно.
S>[g]Помимо процессора, ВМ может эмулировать работу как отдельных компонентов аппаратного обеспечения, так и целого реального компьютера
S>[/g]
там же четко написали что помимо виртуальной машины есть ЭМУЛЯТОР.
Роль Эмулятора заключается в замене реальной СТРУКТУРЫ (процессор, видео, периферия) на программную или электронную
Я не могу точно привести данные кто и когда применял эмуляцию. Но уже когда стали проектировать процессор 8086
стали создавать эмуляторы. Для чего делали Эти эмуляторы.
Прочтите внимательно
Когда начинают производство нового процессора то заказчики или координаты групп создают спецификацию этого
процессора в том числе и на команды.
Далее это спецификация поступает на отдел электронщиков и отдел программистов.
Конечно каждый из отделов особенно электронщики вносит некоторые изменения
Но самое главное программисты начинают создавать эмулятор этого процессора, этот эмулятор нужен
для того чтоб программисты могли уже писать OS и программы для не существующей системы.
И к моменту выпуска процессора уже будет готова все программное обеспечение.
Но эмулятором может быть не только программа но и электроника программируемая например ПЛМ-
программируемая логическая матрица

У многих тут обсуждающих нет полного понимания терминалогий

Частенько в качестве эмуляторов выступают программы которые могут эмулировать какие либо процессоры,
тогда можно установить на эти эмулируемы процессоры все программы которые для него написаны
но кроме процессора этот эмулятор может подключать эмуляторы внешних устройств.
но бывают ситуации когда программа эмулирует устройство например. Например CISCO предлогает
эмуляторы маршрутизаторов для учебных заведений. Это позволяет проводит обучение не имея реального
оборудования который может стоить до 200000$ и даже более.
Есть емулятор и берете бинарный образ OS CISCO и запускаете — получаете маршрутизатор (но виртуальный)



Когда вы запускаете виртуальную машину надо понимать что есть разные виртуальные машины
Все подробности расписывать нет смысла прочтете в инете но основные моменты отмечу
1 Две OS запускается паралельно через гипервизор он переключает процессор
между разными OS. Как понимаете процессор имее 4 уровня защиты (или контекста исполнения)
обычно Linux ядро и модули работают на зищищенном уровне 3 а пользовательские на уровне 4
также работают и другие OS
но первые два уровня свободны поэтому можно запустить гипервизор каторый будет переключать
OS-ы

2 вид. когда внутри OS созадется среда т.е. специальная программа которая будет предлогать
по внешнему виду пвседо среду на сомом деле использует все библиотеки основной OS и в том числе
оборудование через обычные системные вызовы.

3 вид. Когда программа создает виртуальную среду в том числе и биос и аппаратную среду и исполнение
происходит в контексте основной OS.
При этом программы выполняются на процессоре как есть, а доступ к оборудованю идет через запросы
из гостевой ос в ОСНОВНУЮ, но так как гостевая эмулирeет периферию то идет захват запросов(на оборудование)
гостевой ОС и виртуальная машина преобразует и делает бращение к ОСНОВНОЙ ОС.

Как видим в реальности все они являются эмуляторами но эмуляторами разного уровня

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

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

3 вариат является виртуальной машиной + эмулятором т.к. эмулирует периферию процессора(внешниие устройства).



к ТЕРМИНАМ язык программирования, интерпретатор, компилятор, среда исполнения, байт код, виртуальная машина
надо добавить
трансляцию, песочницу, дебагеры, КОНТЕЙНЕРЫ.


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

Замечу что в браузере для javascript работает не виртуальная машина а контейнер.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.