Hvordan Java Virtual Machine kan arbeide på systemet uten virtualisering støtte?

stemmer
3

Hvis maskinvarestøtte er et must for virtualisering, hvordan kan Java Virtual Machines kjøres på maskiner uten støtte for virtualisering? Eller er JVM ikke en virtuell maskin?

Publisert på 30/12/2009 klokken 00:59
kilden bruker
På andre språk...                            


6 svar

stemmer
1

JVM er en virtuell maskin, men det krever ikke noen ekstra støtte fra operativsystemet. I stedet for å virtual instruksjoner for en bestemt CPU den utfører java bytecode.

Svarte 30/12/2009 kl. 01:01
kilden bruker

stemmer
11

En JVM er ikke virtuelt på samme måte som en VirtualBox eller VMWare virtuell maskin. Det er en 'maskin' som implementerer Java bytecode, ikke en virtualisert versjon av selve maskinvaren.

Begrepet-of-art 'virtuell maskin' ble skapt en svært lang tid siden for følgende scenario:

  1. utgjør en datamaskin, som Knuth MIX.
  2. skrive et dataprogram som implementerer gjort opp datamaskinen.
  3. kjøre programmer

Når denne virtuelle maskinen kjører, er det en helt vanlig program, kjører helt i brukermodus. Den trenger ingen spesiell hjelp fra maskinvaren eller operativsystemet til å fungere rimelig bra. Dette gjelder spesielt for JVM, siden Java bytekode ikke håndtere lavt nivå maskinvare I / O eller andre ting som er vanskelig å simulere.

Senere, historisk, (for å velge et spesielt tilfelle), IBM oppfunnet VM / 370. VM / 370 bruker den andre betydningen av ordet 'virtuell maskin'. I sistnevnte betydning, er maskinvaren og operativsystemet samvirker for å tillate en enkelt fysisk maskin til å betjene flere virtuelle forekomster av (mer eller mindre) den samme arkitektur, hvor flere kopier av hele operativsystemet blir skrevet som om de kjører på mer eller mindre nakne maskinvare. Senere ble X86 designet med funksjoner for å forenkle dette.

Så, ja, er enhver virtuell maskin som gjør bruk av noen fysisk maskinvare, med mindre du gjennomføre den med biter av papir gått rundt et bord (tempo John Searle). Men når den virtuelle maskinen bærer ingen likhet til maskinen den kjører på, så er det ikke behov for spesiell hjelp fra operativsystemet og maskinvaren, og ikke behov for noe så komplisert som VM / 370, eller VMware.

Svarte 30/12/2009 kl. 01:02
kilden bruker

stemmer
1

JVM er en virtuell maskin for å kjøre Java, med andre ord den emulerer en maskin som ville være i stand til å kjøre java. Det er en forvirrende valg av navn, men det kommer fra den generelle betydningen av "maskin" ikke fra de mer vanlige Virtual Machine mening.

JVM, som en vanlig VM emulerer utførelsen av instruksjoner, men er Java Instruksjoner i tilfelle av JVM instruksjonene som blir emulert, og i tilfelle av en VM er de Maskinvare Instruksjoner som vil bli utført av et OS som kjører på samme maskinvare.

Svarte 30/12/2009 kl. 01:04
kilden bruker

stemmer
1

Ja JVM gjør tilgang maskinvare, men dette er grunnen til at du installerer en MAC eller Windows JVM siden instruksjonene er oversatt av JVM og handlet på, avhengig av installasjonen av JVM, for eksempel, åpner åpen fil dialog på mac dialogen mac og vinduer JVM åpner dialogboksen vinduer.

Så det ikke blir virtualisert av systemet, men Bytecode blir virtualisert av JVM du har installert. Det er i utgangspunktet som et program som leser noe (bytecode) og gjør noe (tilgang maskinvare, eller andre ting).

Svarte 30/12/2009 kl. 01:10
kilden bruker

stemmer
3

Hvis maskinvarestøtte er et must for virtualisering, ...

La meg stoppe deg der :-)

Det er en forskjell i konseptet mellom JVM (programvare virtualisering) og (for eksempel) en VMWare VM (maskinvareassistert virtualisering).

JVM (og andre programvarebaserte VMMS slik som de som tillater å emulere x86 på Solaris maskinvare - Jeg tror Bochs og muligens DosBox faller inn under denne kategorien) går som alle andre program, ved hjelp av operativsystemet for å få tilgang til maskinvaren eller emulere sin egen maskinvare rent i programvaren.

VMWare, og de andre VMMS optimalisert for hastighet, avhengig av maskinvarestøtte. Med andre ord, de kjører på maskinvaren som om de har full tilgang til maskinvaren, og bare når de prøver å gjøre noe de ikke skal gjør OS fanger som forsøker og fake det.

Det er derfor VMWare går så mye raskere enn bare programvare emulatorer. Det er fordi, for det store flertallet av tiden, det er faktisk kjører på ekte maskinvare.

Svarte 30/12/2009 kl. 01:16
kilden bruker

stemmer
0

Det bør bemerkes at ingenting slår fast at en JVM har ikke (må) ha HW virtualisering tilgang. Det finnes hederlige unntak, men som den svarte plakaten antydet, noen KP eksisterer som kjører Java bytecode innfødt. Kanskje en dag en Java bytecode HAL eller TIMI vil være vanlig å sette JVM i samme klasse som formalisert HW virtualisering?

Svarte 02/01/2010 kl. 18:28
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more