Виртуелна машина
Извршење програма |
---|
Опште теме |
Специфична дужина трајања |
|
Виртуелна машина (ВМ) представља симулацију машине, која се обично разликује од циљне машине (на којој се симулација обавља). Виртуелне машине могу бити засноване на спецификацијама хипотетичког рачунара или могу да емулирају архитектуру рачунара и функције „стварног“ компјутера.
Дефиниције
[уреди | уреди извор]Виртуелна машина (ВМ) је софтверска имплементација машине (нпр. рачунара) која извршава програм као „права“ машина. На основу њихове употребе и степена сличности са стварном машином, виртуелне машине се деле на два главна типа:
- Виртуелна машина за симулирање система, која обезбеђује комплетну системску платформу која подржава извршавање целог оперативног система (ОС)[1]. Оне обично емулирају постојеће архитектуре, а најчешће се праве ради обезбеђивања платформе за извршавање програма када „прави“ хардвер није доступан (нпр. извршавање софтвера на превазиђеним платформама), или када је, у циљу ефикаснијег искоришћења рачунарских ресурса (највише по питању потрошње енергије и/или контроле трошкова) потребно имати више инстанци виртуелних машина.
- Виртуелна машина за симулирање процеса (и језика) је осмишљена тако да извршава један програм, што значи да подржава само један процес. Такве виртуелне машине се обично праве за један или више одређених програмских језика, са циљем да, између осталог, обезбеде преносивост и флексибилност. Главна одлика овог типа је да је софтвер који се на виртуелној машини извршава ограничен ресурсима и апстракцијама које виртуелна машина обезбеђује, тј. не може да пређе оквире свог виртуелног окружења.
Виртуелну машину су првобитно дефинисали Попек и Голдберг као „ефикасан изоловани дупликат стварне машине“. Садашња употреба укључује и машине које не одговарају неком постојећем хардверу.[2]
Виртуелне машине за симулирање система
[уреди | уреди извор]Главне предности овог типа су:
- више оперативних система може истовремено постојати на истом рачунару, а да притом буду прилично изоловани једни од других
- виртуелна машина може да обезбеди скуп инструкција архитектуре који се нешто разликује од оног на стварној машини
- снабдевање апликацијама, одржавање, висока доступност и опоравак од катастрофе[3]
Главне мане овог типа су:
- виртуелна машина је мање ефикасна од стварне машине када индиректно приступа хардверу
- када се више виртуелних машина конкурентно извршава на истом физичком „домаћину“, свака виртуелна машина може имати променљиве и нестабилне перформансе (у смислу брзине извршавања, не резултата), што прилично зависи од оптерећења који сваки ВМ намеће систему, осим ако се користе одређене технике за привремену међусобну изолацију виртуелних машина.
Оперативне системе који се извршавају на виртуелној машини називамо гостујућим оперативним системима. Гостујући оперативни системи не морају бити компатибилни са хардвером, што омогућава покретање различитих оперативних система на истом рачунару (нпр. Microsoft Windowsа и Линукса, или старијих верзија оперативних система ради подржавања софтвера који још није прилагођен новијим верзијама).
Овај тип виртуелних машина се може користити и за оперативне системе који су још у фази развоја.
Виртуелне машине за симулирање процеса
[уреди | уреди извор]На овом типу виртуелних машина се пуштају „обичне“ апликације унутар „домаћинског“ оперативног система, и они подржавају само један процес. Он настаје при покретању процеса, а уништава се при изласку из њега. Сврха виртуелних машина за симулирање процеса је обезбеђивање програмског окружења које не зависи од платформе.
Овај тип виртуелних машина обезбеђује висок ниво апстракције - на нивоу програмских језика високог нивоа. Они се имплементирају коришћењем интерпретатора; перформансе упоредиве са компајлираним програмским језицима се постижу употребом јит (енг. just in time) компилације.
Виртуелне машине за симулирање процеса се веома користе за програмски језик Јава, који је имплементиран коришћењем Јава виртуелне машине. Други пример је . НЕТ Фрејмворк, који ради на виртуелној машини која се зове ЦЛР (енг. Common Language Runtime)
Референце
[уреди | уреди извор]- ^ „Virtual Machines: Virtualization vs. Emulation”. Архивирано из оригинала 15. 07. 2014. г. Приступљено 11. 3. 2011.
- ^ Smith, James; Nair, Ravi (2005). „The Architecture of Virtual Machines”. Computer. IEEE Computer Society. 38 (5): 32—38. doi:10.1109/MC.2005.173.
- ^ „Virtualizing Business Critical Enterprise Applications”. Архивирано из оригинала 17. 08. 2013. г. Приступљено 13. 01. 2013.
Литература
[уреди | уреди извор]- Smith, James E.; Nair, Ravi (2005). Virtual Machines: Versatile Platforms For Systems And Processes. Morgan Kaufmann. ISBN 978-1-55860-910-5.
- Craig, Iain D. (2006). Virtual Machines. Springer Science Business Media. ISBN 978-1-85233-969-2.