Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Rozdily u OS a programu mezi: Simulace, emulace, virtualizace, prekladova vrstva?

Dobry den,
prosim vas, potreboval bych vedet, jake jsou rozdily v souvislosti s operacnimi systemy a programy mezi pojmy: simulace, emulace (jako napr. DOSBOX), virtualizace (nebo virtualni pocitac jako napr. Oracle VM Virtualbox), prekladova vrstva (nebo Sada API jako napr. WINE)?

Prosim o podrobnejsi rozepsani k jednotlivym pojmum. zajimaji me hlavne technicke rozdily, rozdily funkce, kvality, vykonu, kompatibility aplikaci, uzivatelske rozdily a taky hlavne i rozdily v bezpecnosti a stability (napr. bezpecnost hostitelskeho operacniho systemu a jeho dat pri spusteni zavirovane aplikace v operacnim systemu hosta)?

Dekuji moc.

Předmět Autor Datum
virtualizace je to ze v podstate v obalovom programe (napr. VirtualBox) spustite dalsi system, ten s…
Mlocik97 27.07.2019 02:33
Mlocik97
Nějak mi z toho vybočuje ta simulace. To ostatní má evokovat běh nějakého (operačního) systému, aby…
L-Core 27.07.2019 08:13
L-Core
Problematiku je třeba rozdělit na dvě části: A/ provoz binárně zcela odlišného systému na systému ji…
touchwood 27.07.2019 14:09
touchwood
Dekuji. Ale nejsem si uplne jisty, jestli neco a co s tim ma do cineni binarni kompatibilita a co je…
Luboš123456 08.08.2019 01:31
Luboš123456
jde např. o rozdílné instrukční sady, problém LittleEndian vs. BigEndian apod.
touchwood 08.08.2019 05:53
touchwood
Pod překladovou vrstvu by se možná dal schovat i .NET Jde o runtime, který nainstaluješ na různé sys…
Jan Fiala 08.08.2019 07:45
Jan Fiala
Simulace vcetne "simulace OS" nebo "simulace programu" mi do toho nahodou celkem zapada, i kdyz k te…
Luboš123456 08.08.2019 01:13
Luboš123456
Prašť ako uhoď čo sa týka bezpečnosti. Radšej si vyrob multiboot s bitovými zálohami čistých systém…
Nuda 27.07.2019 08:52
Nuda
Práve naopak, WineHQ aj Virtualizace sú práve hodne beznečné. Vo virtualizovanom PC si môžeš stiahnu…
Mlocik97 27.07.2019 14:13
Mlocik97
Dekuji. Nektere veci jsem vedel uz davno, nektere veci jsou pro me castecne nebo zcela nove, nektery…
Luboš123456 08.08.2019 01:28
Luboš123456
ad virtualizace: ano, víceméně to tak je. Podstata a cíl virtualizace je možnost na jednom fyzickém…
touchwood 08.08.2019 07:20
touchwood
Simulátor: Modeluje systém. Väčšinou je účelom vidieť, ako systém funguje interne. Typicky simulátor…
moose 08.08.2019 08:42
moose
Děkuji, je mi to skoro vše víceméně úplně jasné, ale pořád mi nejsou moc jasné rozdíly mezi emulátor…
Luboš123456 12.08.2019 11:06
Luboš123456
On je totiž pojem emulace docela pružný a jde o to, jak ho konkrétní člověk chápe. Někdy se pod emul…
Wikan 12.08.2019 11:22
Wikan
Dekuji. Jeste me zajima: simulator jen simuluje jev bez skutecneho provedeni nebo jev provadi bez na…
Lubos123456 12.08.2019 12:07
Lubos123456
Obojí.
dsa 12.08.2019 12:41
dsa
koukej na to asi takto: simulátor NESLOUŽÍ k reálnému provozu, ale spíše k tomu, abys dokonale zjist…
touchwood 13.08.2019 07:45
touchwood
Velice vam vsem dekuji za odpovedi, ze jste mi vice osvetlili tema, hodne veci jsem sice vedel, nekt…
Lubos123456 12.08.2019 12:51
Lubos123456
Nejvíc bezpečné bych označil Virtualizace, pokiaľ je dobre izolovaná od hostitelského systému, a pri…
Mlocik97 12.08.2019 12:59
Mlocik97
Logicky - mam mozek - takze kdyz si udelam nejaky prostor na spousteni nebo testovani ruzne skodlive…
Lubos123456 12.08.2019 20:26
Lubos123456
Pokud je ve virtualizaci či emulaci chyba, tak možnost napadení hostitelského systému samozřejmě exi…
Wikan 12.08.2019 21:39
Wikan
Překladová vrstva neposkytuje prakticky žádnou ochranu. U WineHQ bych to ale netvrdil... ten izoluj…
Mlocik97 12.08.2019 22:43
Mlocik97
V tom případě to ale není jenom překladová vrstva.
Wikan 13.08.2019 06:32
Wikan
Podobný dotaz byl před časem v poradně na Živě, taky jsme tam odpovídal, dostal jsem spoustu mínusů… poslední
Yarda 13.08.2019 08:40
Yarda

virtualizace je to ze v podstate v obalovom programe (napr. VirtualBox) spustite dalsi system, ten system je totozny s originalom aky by bezal na ostro (standardne v nom instalujete ISO).
emulace je podobne ako virtualizace, avsak nie je system totozny, len obsahuje vse preto aby v nom bolo mozne spustat sw pre urcity system a poskytoval bezne funkce povodneho systemu, obsahuje len zaklad z povodneho systemu. Je to taka osekana napodobnenina povodneho systemu.
Navise virtualizaciou je virtualizovany system odizolovany od hostitelskeho systemu.
Wine ten len preklada (v real time case, pocas behu programu) systemove volania do API nativneho systemu, tym priamo umoznuje beh Win aplikaci v Linuxe avsak samotny neobsahuje ziadne standardne subory z jadra Windowsu. WineHQ je z pohladu vykonu na tom este lepsie nez virtualizovany system, ktory ma omedzenejsie prostriedky (tolko co mu poskytne hostitelsky system)

Emulace je zvycajne nejpomalsi, virtualizace ale zas zabere nejvic mista na disku.

Nějak mi z toho vybočuje ta simulace. To ostatní má evokovat běh nějakého (operačního) systému, aby v něm bylo možno spustit nějaký program. Ale simulace je již nějaký program, který zkoumá určitý proces, "co by, kdyby", např. simulace průjezdnosti silničního tunelu v dopravní špičce, simulace nemocnice v nějaké PC hře. Neslyšel jsem nikdy o "simulaci OS"; jasně, to o ničem nevypovídá ;-)

Bezpečnost, odolnost proti virům, hostitelského OS bude IMHO(!) nejvyšší u virtualizace. Určitě pomůže, pokud hostovanému OS a programům v něm nepovolíme přístup k souborům hostitelského OS. Dobré je také tzv. pískoviště/sandbox; po provozování různých vylomenin uvnitř pískoviště a následném "zahozením změn" nebude OS zasažen. Viz např. Acronis: Try & Decide či Sandboxie.

Problematiku je třeba rozdělit na dvě části:
A/ provoz binárně zcela odlišného systému na systému jiném:
Simulátor je nástroj, který funguje na úrovni vstup -> výstup, tj. simulátor používáš bez nároků na adekvátní rychlost jednotlivých operací.
Emulátor oproti tomu přidává přesnost i v časovém rozlišení, tj. je o level dál a lze ji použít jako plnohodnotnou náhradu emulovaného systému. Většinou navíc přidává podporu i pro I/O operace (tj. podpora storage, apod.)

B/ provoz binárně vzájemně kompatibilních systémů:
Virtualizace jde ve směru vícenásobného užití jednoho hardware pro více softwarových systémů.
Překladová vrstva funguje ve směru provozování aplikací v rámci jednoho systému, který původně není kompatibilní s aplikacemi pro jiný systém.

Simulace vcetne "simulace OS" nebo "simulace programu" mi do toho nahodou celkem zapada, i kdyz k tematu vlastne je i neni: Simulaci rozumim asi nejvic - videl a pouzival jsem i nektere ruzne "simulatory OS" a "simulatory programu", ale tam se vetsinou jednalo jen o to, ze dotycny program - simulator - vetsinou vlastne jen napadobuje vzhled a nektere nebo vsechno chovani dotycneho simulovaneho OS nebo programu (nekdy vice autenticky nekdy mene autenticky), nekdy obsahuje nebo simuluje par vestavenych programu daneho simulovaneho OS, ale zadne dalsi programy do neho pridat ani spoustet nejdou, protoze simulator nema krome napodobovaneho vzhledu a napodobovaneho chovani simulovaneho OS se simulovanym OS vubec nic spolecneho, ale cely simulator je jen standardni obyc. program pro hostitelsky system.

Dalsi moznost je simulace funkce/procesu/jevu/situace, coz je vec o ktere mluvite - to je opravdu neco uplne jineho.

Rozdily mezi simulaci a tim ostatnim dobre chapu, ale mezi emulaci, virtualizaci a prekladem API moc ne.

Práve naopak, WineHQ aj Virtualizace sú práve hodne beznečné. Vo virtualizovanom PC si môžeš stiahnuť stovky megabajtov malwaru, a hostitelský systém je čistý. Jak už psala L-Core, v sandboxe když sa to odizoluje, tak hostitelský systém to neovplivní vôbec.

Dekuji. Nektere veci jsem vedel uz davno, nektere veci jsou pro me castecne nebo zcela nove, nekterym vecem stale jeste nerozumim.

Takze jestli tomu dobre rozumim:
-virtualizace OS je cely kompletni hostovany operacni system identicky jako by byl nainstalovany a bezel "na cistem zeleze" jen s tim rozdilem, ze je instalovany a bezi v obalovem programu = virtualizatoru, ktery bezi v hostitelskem operacnim systemu - chapu to dobre?
-emulator OS neobsahuje hostovany operacni system, ale pouze poskytuje prostredi a funkce potrebne ke spousteni aplikaci napsanych pro hostovany operacni system a preklada systemova volani - ale to stejne provadi i prekladova vrstva API, ne? Tak jaky je potom rozdil mezi emulatorem a prekladovou vrstvou API? Chapu to dobre?

ad virtualizace: ano, víceméně to tak je. Podstata a cíl virtualizace je možnost na jednom fyzickém HW provozovat vícero kompatibilních virtuálních počítačů.

ad emulátor: o OS bych v tomto případě úplně nehovořil, protože spousta systémů měla OS zadrátovaný v sobě v podobě ROM (Amigy, Atari ST, drtivá většina 8-bitů, herní konzole), stejně tak ale můžeš emulovat např. čistý systém bez OS (např. právě na Amize se takto emulovalo PC nebo Mac). Nicméně u emulace jde v drtivé většině o hardware a to, že emulátor slouží k provozování zcela odlišného hardware a obsahuje tedy i emulátor procesoru (např. x86 -> MC68k nebo obráceně). Případy, kdy se emuluje pouze zbylý HW kromě CPU jsou spíše sporadické, napadá mě např. DOSbox nebo v případě Amigy emulace AtariST nebo Mac 68k). Jinými slovy u emulace jde hlavně o to, že emulátor poskytuje "virtuální hardware," který je funkčně i výkonnostně ekvivalentní svému fyzickému vzoru. A to jej odlišuje od simulátoru, který nemá výkonnostní nároky, ale zato velmi často obsahuje debugovací nástroje.

Simulátor: Modeluje systém. Väčšinou je účelom vidieť, ako systém funguje interne. Typicky simulátory elektrických obvodov.

Emulátor: Nahrádza systém. Interne môže fungovať úplne inak ako pôvodný systém, hlavné je, že sa to navonok správa ako pôvodný systém. Typicky DOSBox, emulátory mobilov, emulátory iných počítačov. Na stackoverflow som našiel peknú definíciu pre rozdiel medzi simulátorom a emulátorom: Ak by ťa letecký simulátor dopravil z bodu A do bodu B, tak by to bol letecký emulátor.

Virtualizácia: Umožňuje izolovaný beh systému priamo v skutočnom systéme. Čiže napr. môžeš spustiť x64 program pre Linux na stroji s x64 Windowsom, ale ARM program na ňom bez emulácie nespustíš. Typicky VirtualBox.

Prekladová vrstva (sada API): Umožňuje spúšťať program určený pre systém A na systéme B s tým, že systémové volania systému A implementuje knižnicou, ktorá ich nahrádza systémovými volaniami systému B. Typicky WINE.

Děkuji, je mi to skoro vše víceméně úplně jasné, ale pořád mi nejsou moc jasné rozdíly mezi emulátor a překladová vrstva, jelikož popisy rozdílů mezi emulátorem a překladovou vrstvou jak od Vás, tak od jiných lidí, jsou velice podobné. Jaké jsou tedy rozdíly mezi emulátorem a překladovou vrstvou?

On je totiž pojem emulace docela pružný a jde o to, jak ho konkrétní člověk chápe. Někdy se pod emulací dá schovat i překladová vrstva, protože i tam emuluje jiné volání API.

Pojem emulace se ale obvykle používá pro vytvoření virtuálního HW - např. emulace Atari 800 na PC.
Virtualizace pro vytvoření virtuálního SW - např. virtualizace jednoho OS na jiném.
Překladová vrstva je jenom prvek mezi dvěma různými API, nic velkého jako virtální HW/SW nevytváří.

Dekuji. Jeste me zajima: simulator jen simuluje jev bez skutecneho provedeni nebo jev provadi bez naroku na adekvatni vykon a odezvu?

Protoze touchwood pise, ze simulator provadi nejakou operaci bez naroku na rychlost a odezvu, zatimco moose pise, ze simulator jen simuluje nejaky jev ktery se realne neprovadi napr. el. obvod nebo letani letadlem. Jak to je? Nebo je to pripad od pripadu?

koukej na to asi takto: simulátor NESLOUŽÍ k reálnému provozu, ale spíše k tomu, abys dokonale zjistil, jak celý systém funguje. Tedy pokud bys použil terminologii automatizace, podstatou simulace je mít pro sadu všech vstupů sadu všech výstupů. Navíc u simulátorů se často zkoumá i stav jednotlivých podsystémů (u počítačů tedy např. hodnoty registrů, stav paměti, apod.) Tj. zkoumáš, co se se systémem děje, jak celý reaguje na vstupy.

Velice vam vsem dekuji za odpovedi, ze jste mi vice osvetlili tema, hodne veci jsem sice vedel, nektere jsem tusil, ale s hodne vecmi jste mi dost pomohli.

Mam jeste 2 otazky:

1.) Jak je to s bezpecnosti - co je nejbezpecnejsi a co nejmene bezpecne? Napr. Kdyz pustim samozrejme neumyslne (na umyslne testy se samozrejme lepe vybavim) nejaky fakt nebezpecny a zakerny virus v simulatoru, emulatoru, virtualizatoru, prekladove vrstve - ve kterem pripade mi virus muze nebo nemuze prolomit ochranu nebo ohrozit, napadnout, zavirovat hostitelsky system?

2.) Jak je to s rychlosti a vykonem? U ceho je nejvyssi rychlost a vykon a u ceho nejnizsi - simulace, emulace, virtualizace, preklad API?

Dekuji.

Nejvíc bezpečné bych označil Virtualizace, pokiaľ je dobre izolovaná od hostitelského systému, a pri každom štarte sa načíta nový stav systému. Ostatne je dodržať aj tu niekoľko pravidiel bezpečnosti, najmä napríklad ak si sťahoval niečo čo by mohlo byť škodné, tak po práci s tým reštartovať virtuálny stroj aby obnovil stav jak bol na začiatku pred stiahnutím škodnej, a až potom môžete tu psát klidne i heslá. Ale ak v jednej inštancii v stejnom "stave systému" spustíte jak škodnú, ktorá by mohla odchytávať trebárs heslá, a vy by ste v tom istom čase to heslo napísali. Tak vtedy to bezpečné nieje. Ešte je možné každý program vložiť do kontajneru v rámci virtuálneho systému (sanbox) jak již zaznelo, vtedy sa netreba starať ani o toto, a v takom prípade je to úplne bezpečné.
Emulátor bych označil za asi najmenej bezpečný (menej než WineHQ, ktorý aspoň izoluje procesy).
Najväčší výkon je u preklad API (WineHQ), nejmenší bych zas označil zrejme emulaci. I když nekteré emulátori dokážu byť výkonnejšie než trebárs virtuálne systémy. U vätšiny to ale tak nieje.

Logicky - mam mozek - takze kdyz si udelam nejaky prostor na spousteni nebo testovani ruzne skodlive haveti pochybneho puvodu, tak v nem logicky nebudu pracovat s osobnimi citlivymi daty jako napr. soukromymi osobnimi soubory, zadavani hesel a prihlasovacich udaju kamkoliv nebo nedej Boze s bankovnimi ucty (ano, i takovi mozkuprosti "experti" existuji), ale na bezpecne a citlive operace pouziju bud jiny virtualni stroj nebo primo hostitelsky system. Ale dekuji za pripomenuti hlavne pro ruzne ctenare tohoto fora, hlavne rady o bezpecnosti se vyplati opalovat a stejne se vzdy najde hodne lidi co nedbaji pokynu a nakazi si system.

Mi jde spis o to, kdyz budu chtit poustet ruzne stazene programy a soubory z netu z pochybneho puvodu (jeden nikdy nevi, kam jsou nektere odkazy interne presmerovany z prochazeneho serveru pres nekolik redirectu nebo jak moc je dany server nebo soubor duveryhodny a bezpecny) ve virtualizatoru a virtualnim kompu, tak jestli viry maji nebo nemaji moznosti prolomit izolaci hostitelskeho a hostovaneho systemu napr. i treba pres nejake mezery virtualizatoru?

A jak je to v pripade emulace s bezpecnosti a izolaci hostitele od hosta pred viry?

A v pripade prekladove vrstvy s bezpecnosti a izolaci hostitele od hosta pred viry?

A jak je to v pripade simulace s bezpecnosti a izolaci hostitele od hosta? Tipuji ze u vetsiny simulaci je bezpecnost vicemene z principu dana vzajemnou nekompatibilitou (PC vs kokpit letadla, PC vs el.obvod, co tam kdo chce chytit za vir) a jinymi omezenimi (PC vs Windows bez naroku na realtime odezvu, PC vs Windows v debugeru), ne nebo je mozne taky nejak nakazit hostitelsky system napr. pri nacteni zavirovaneho souboru, programu, pluginu, ...?

Pokud je ve virtualizaci či emulaci chyba, tak možnost napadení hostitelského systému samozřejmě existuje. Ale to je teorie, v praxi je to extrémně vzácné. A pokud už k tomu dojde, tak jde o cílený útok. Kvůli domácímu uživateli to nikdo dělat nebude.
Překladová vrstva neposkytuje prakticky žádnou ochranu.

Podobný dotaz byl před časem v poradně na Živě, taky jsme tam odpovídal, dostal jsem spoustu mínusů a pak zřejmě někdo tak dotaz smazal celý.
Nevím, co je to simulátor a emulátor teď. V době kdy číslo 8080 byl pojem se simulátor říkalo programu co umožnil, aby program napsaný třeba pro tu 8080 běžel například i na minipočítači (tak se tehdy říkalo počítači co byl velký jen jako dvě šatní skříně a nemuselo se kolem něj chodit v bílých pláštích) ADT. Akorát ten program nemusel běžet stejně rychle jako v zařízení pro které byl napsaný a nebyly k dispozici periferie, které by případně řídil. Jako příklad mne napadá program co simuluje ZX Spectrum na PC a umožňuje pařit staré hry.
Emulátor bylo zařízení, které se připojilo kabelem do patice místo mikroprocesoru do zařízení co se emulátorem testovalo. Funkci vydloubnutého mikroprocesoru převzal mikroprocesor stejného typu v emulátoru, program běžel stejně rychle jako bez emulátoru, periferie byly k dispozici, navíc emulátor umožňoval třeba krokovat program, měnit program a další potřebné funkce co se hodily při vývoji daného zařízení.

Zpět do poradny Odpovědět na původní otázku Nahoru