Les 11: systeemarchitectuur virtuele machines Geavanceerde computerarchitectuur Lieven Eeckhout Academiejaar 2008-2009 Universiteit Gent
Virtuele machines • • • •
Motivatie Interfaces Virtualisatie: inleiding Types VMs – Proces VMs – Systeem VMs
• Taxonomie 2
Motivatie • Abstractieniveaus (interfaces) vereenvoudigen het ontwerp van complexe systemen – B.v. ISA, bestandsysteem, interface naar besturingssysteem, enz. – Maakt ook mogelijk om zonder problemen een bepaald onderdeel van systeem te vervangen
• Maar ook nadelen: overdraagbaarheid (portability) 3
Interfaces
1
gebruikerstoepassing 2 bibliotheken 3
3
besturingssysteem 5 6
4 drivers
geheugenmanager
scheduler
8
8
8
software
8
uitvoeringshardware
9
10
10
controllers
7
ISA
adresvertaling
bus 11
7
11
12
hardware
controllers 13
I/O en netwerk
14 hoofdgeheugen
4
Belangrijke interfaces • Instructieset-architectuur (ISA) – Interface 7: user ISA – Interface 8: user ISA + system ISA
• Application binary interface (ABI) – Interface 7: user ISA – Interface 3: system call interface
• Application program interface (API) – Interfaces 2 en 7 – Typisch op niveau van hoog-niveau programmeertaal via bibliotheken • API oproep vertalen naar system calls (op ABI-niveau) 5
Wat is een machine? • Afhankelijk van perspectief • Voor een gebruikersproces – Gebruikershardware + besturingssysteem is de ‘machine’ – ABI is de interface
• Voor een besturingssysteem – Hardware is de ‘machine’ – ISA is de interface 6
Virtuele machine • Is een combinatie van echte hardware en virtualisatiesoftware • Voert software op dezelfde manier uit als de machine waarvoor de software ontwikkeld werd • Het doel is (meestal) niet gelijkaardige prestatie maar wel overdraagbaarheid
7
Virtualisatie • Is oplossing voor probleem van overdraagbaarheid • Een systeem wordt ‘gevirtualiseerd’ indien zijn interface afgebeeld wordt op de interface van een echt systeem – Isomorfisme – Een gebruiker van het virtueel systeem beseft niet of hij een virtueel systeem ter beschikking heeft of een echt systeem
• Vele verschillende vormen van virtualisatie 8
Proces VM gebruikersproces
gebruikersproces
virtualisatiesoftware
OS
virtuele machine
hardware
• Virtualisatiesoftware op ABI niveau – Emuleert user ISA en OS system calls 9
Systeem VM gebruikersproces
OS
gebruikersproces
OS
virtualisatiesoftware virtuele machine hardware
• Virtualisatiesoftware op ISA niveau – Ondersteunt OS en zijn gebruikersprocessen 10
Systeem VM (bis) gebruikersproces
OS ISA X virtualisatiesoftware ISA Y hardware
• X en Y kunnen verschillend zijn • Virtualisatiesoftware = virtual machine monitor (VMM)
11
Systeem VMs: toepassingen gebruikersproces ISA Y
VMM beheert de hardware resources gebruikersproces ISA Y
OS ISA Y
virtualisatiesoftware
hardware ISA X
emulatie van ISA Y naar ISA X
gebruikersproces ISA X
OS ISA Y
OS ISA X
virtualisatiesoftware VMM
hardware ISA X 12
Virtuele machines • • • •
Motivatie Interfaces Virtualisatie: inleiding Types VMs – Proces VMs: isomorfisme op ABI-niveau – Systeem VMs: isomorfisme op ISA-niveau
• Taxonomie 13
Proces VMs: voorbeeld 1 • Besturingssysteem – Combinatie van user ISA en OS system calls is een virtuele machine voor applicatie – Laat meerdere gebruikers toe • Iedere gebruiker heeft illusie een volledige machine voor zich alleen te hebben • Via time-sharing • Multi-programmering
14
Proces VMs: voorbeeld 2 • Emulatoren – Applicaties gecompileerd voor bron-ISA X uitvoeren op hardware met doel-ISA Y
IA-32 Windows NT app Windows NT OS Alpha ISA hardware
Voorbeelden: • Digital FX!32 systeem • Aries – PA-RISC apps op IA-64
• Intel IA-32 EL – Execution Layer – IA-32 apps op IA-64 15
Emulatoren • Interpretatie – Instructie in bron-ISA ophalen, decoderen en emuleren – Snelle opstart maar traag in regime
• Binaire vertaling – Blokken van bron-ISA instructies worden eenmalig vertaald naar doel-ISA instructies en bijgehouden in een (software) code cache – Vervolgens worden vertaalde doel-ISA instructies uitgevoerd – Trage opstart maar snel in regime
• Beide kunnen gecombineerd worden – Enkel binaire vertaling voor frequent uitgevoerde stukken code, en emulatie anders
16
Proces VMs: voorbeeld 3 • Binaire optimalisator – Bron-ISA = doel-ISA – Optimalisatie van binair programma • Profilering tijdens uitvoering • Dynamische optimalisatie van frequent uitgevoerde stukken code – Vertaalde code wordt bijgehouden in een (software) code cache
– Zinvol indien originele code niet geoptimaliseerd is • Komt zeer vaak voor in de praktijk
– Voorbeeld: Dynamo van HP 17
Proces VMs: voorbeeld 4 • VMs op niveau van programmeertaal – High-level language VMs (HLL VMs) – Overdraagbaarheid van code van gebruikersapplicaties – Gebruiker vertaalt HLL code naar V-ISA (virtuele ISA) – Virtuele ISA wordt dan dynamisch vertaald naar doel-ISA door een VM 18
HLL omgevingen conventioneel systeem
HLL VM gebaseerd systeem
HLL programma
HLL programma
compiler frontend
compiler overdraagbare code in virtuele ISA (V-ISA)
intermediaire code
distributie compiler backend doel-ISA programma in binaire vorm
V-ISA programma in VM geheugen distributie
loader doel-ISA programma in geheugen
VM loader
VM interpretatiecompiler-optimalisatie doel-ISA programma in geheugen 19
HLL VMs • Software is makkelijker te distribueren – Eenmaal een VM beschikbaar is voor ieder platform
• Voorbeelden – Sun Microsystems Java VM – Microsoft Common Language Infrastructure (CLI) gebruikt in .NET raamwerk – V-ISA bestaat uit bytecodes – Interface met OS gebeurt via standaard bibliotheken
20
Virtuele machines • • • •
Motivatie Interfaces Virtualisatie: inleiding Types VMs – Proces VMs – Systeem VMs
• Taxonomie 21
Systeem VMs: motivatie • In jaren ‘60 en ‘70 – Eén enkel hardware platform moet meerdere OS omgevingen tegelijkertijd kunnen ondersteunen – Reden: kostprijs van een mainframe computersysteem
• Zijn tegenwoordig opnieuw in opmars – De server farms van nu zijn de mainframes van vroeger – Reden: beveiliging wegens geïsoleerde OS omgevingen 22
Systeem VMs (1) • Klassieke benadering: Virtual Machine Monitor – VMM heeft hoogste privilege – VMM beheert de hardware
Windows apps
Linux apps
Windows
Linux VMM IA-32 hardware
23
Systeem VMs (2) Virtualisatie-software bovenop bestaand OS = Hosted VM Windows apps Windows Linux apps
VMware
Linux IA-32 hardware 24
Geheel-systeem VM Verschil met hosted VM is dat de ISAs verschillend zijn Windows apps Windows Mac OS apps
Virtual PC
Mac OS PowerPC hardware 25
Co-designed VMs • Conventionele VMs – Standaard ISA is de interface – Doel is overdraagbaarheid
• Co-designed VMs – Innovatieve ISA als interface • Kan volledig nieuw zijn, of gebaseerd op bestaande ISA met extra instructies
– Doel is betere prestatie, vermogen-efficiëntie, etc. – Er zijn geen applicaties in de doel-ISA • VM software is als het ware deel van de hardware 26
Co-designed VMs • De co-designed VM in geheugengebied dat niet zichtbaar is voor applicatie en OS • B.v. Transmeta Crusoe – IA-32 ISA naar VLIW ISA – Doel is vermogen-efficiëntie
IA-32 applicatie
IA-32 OS
Code Morphing
VLIW ISA hardware
27
VM Taxonomie VM
Proces VM
Zelfde ISA Multiprogramming OS Zelfde-ISA binaire optimalisatie Dynamo
Verschillende ISA
Systeem VM
Zelfde ISA
Verschillende ISA
Dynamische vertaling Intel IA-32 EL
Klassieke systeem VM IBM VM/370
Geheel-systeem VM Virtual PC
HLL VM JVM en CLI
Hosted VM VMware
Co-designed VM Transmeta Crusoë 28
Veelzijdigheid van VMs Java applicatie
Java VM Linux IA-32 VMware
Windows IA-32 Code Morphing
Crusoë VLIW 29