Kommunikation mit Ger¨aten – 1

Transcription

Kommunikation mit Ger¨aten – 1
x86–Open–Source–Virtualisierungstechniken
Thomas Glanzmann
<[email protected]>
März 2006
Zu meiner Person
Thomas Glanzmann
Informatik Student an der Universität Erlangen im 9. Semester
4 jährige Mitarbeit an dem Projekt FAUmachine der Universität Erlangen
z.Z. freiberuflich tätig für die Lufthansa Systems in Kelsterbach
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Überblick
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Virtualisierungstypen
Betriebssystem-Virtualisierung
Virtuelle Maschinen
Para-Virtualisierung
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Betriebssystem-Virtualisierung
Ein Kernel für sämtliche Instanzen
Hohe Wahrscheinlichkeit einer Privilegien Eskalation
Benutzerprozesse werden in Container verwaltet
Relativ hohe Performanz da wenig Mehraufwand
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
BS-Virtualisierung am Beispiel von Virtuozzo
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Virtuelle Maschinen
Komplette Simulation einer Hardware
Hohe Wahrscheinlichkeit einer Privilegien-Eskalation
Hoher Simulations-Mehraufwand
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Virtuelle Maschine am Beispiel VMware WS
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Para-Virtualisierung
Portierung des Gast-BS auf virtualisierungsfreundliche Platform
Starke Isolation
Hohe Performanz (niedriger Mehraufwand)
Vermeidung aufwendiger Simulation
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Para-Virtualisierung am Beispiel von XEN
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Virtualisierungs-Probleme
CPU
MMU / Adressraum
Interrupt / Exception / Systemcall Simulation
IO Durchsatz
Memory Mapped IO (VGA Karte / IOAPIC)
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Modifikationen am Linux Kernel
Direkte Interaktion mit Hardware
Geräte Zugriff – in*/out*, memory mapped
Unterbrechungsbehandlung – sti, cli, iret
MMU – Kontrollregister der CPU
→ priviligierte Instruktionen werden durch Simulatoraufrufe ersetzt
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Adressverschiebung des Gast BS
Host Kernel
Host Kernel
3G
Guest Kernel
2G
User
1G
http://thomas.glanzmann.de/aksys2006.pdf
Guest User
Thomas Glanzmann
Kommunikation mit Geräten – 1
Zugriff über den E/A Bus:
RTC, PIC, IDE, NE2000
in*/out*
Macros/Inline-Funktionen in asm/io.h
→ Umdefinition: Werden zu Simulatoraufrufen
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Kommunikation mit Geräten – 2
Example: unsigned long
init calibrate tsc(void) in time.c:
...
rdtsc(startlow,starthigh);
count = 0;
do {
count++;
} while ((inb(0x61) & 0x20) == 0);
rdtsc(endlow,endhigh);
...
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Kommunikation mit Geräten – 3
...
c02b4cd8:
c02b4cda:
c02b4cdc:
c02b4cde:
c02b4ce0:
c02b4ce1:
c02b4ce3:
c02b4ce5:
c02b4ce7:
...
rdtsc
mov
mov
xor
inc
in
test
je
rdtsc
%eax,%ebx
%edx,%esi
%ecx,%ecx
%ecx
$0x61,%al
$0x20,%al
c02b4ce0 <calibrate_tsc+0x20>
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Kommunikation mit Geräten – 4
unsigned char _v;
asm ("inb %w1, %0"
: "=a" (_v)
: "Nd" (port)
);
unsigned char _v;
-->
-->
-->
http://thomas.glanzmann.de/aksys2006.pdf
asm ("call *0x7ffe000c; inb %w1, %0"
: "=a" (_v)
: "Nd" (port)
);
Thomas Glanzmann
Kommunikation mit Geräten – 5
...
4026f3fc:
4026f3fe:
4026f400:
4026f402:
4026f404:
4026f405:
4026f40b:
4026f40d:
4026f40f:
4026f411:
...
rdtsc
mov
mov
xor
inc
call
in
test
je
rdtsc
%eax,%ebx
%edx,%esi
%ecx,%ecx
%ecx
*0x7ffe000c
$0x61,%al
$0x20,%al
4026f404 <calibrate_tsc+0x44>
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Kommunikation mit Geräten – 6
unsigned char in(unsigned short port) {
if (0x0020 <= port && port <= 0x0021) {
value = umpic_in(0, port - 0x0020);
} else if (0x0060 == port || port == 0x0064) {
value = umkbd_in(port);
} else if (0x0061 <= port && port <= 0x0063) {
value = umppi_inb(port - 0x0061);
} else if { ...
...
}
return value;
}
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Kommunikation mit Geräten – 7
Memory mapped E/A:
mov Instruktion kann nicht verändert werden
VGA controller: linearer Framebuffer ausgewertet über Scanprozess
APIC: Register in den Speicher gemappt, macros SET APIC() und GET APIC()
→ durch Simulatoraufrufe ersetzt
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Interrupts und Exceptions – 1
Umgebung des Programmes sichern
Umgebung für Behandlungsroutine herstellen
Behandlungsroutine aufrufen
Umgebung des Programmes wiederherstellen
Programm weiterlaufen lassen
→ Hardware unterstützt Ausnahmebehandlung
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Interrupt and Exception Handling – 2
UMLinux user space
original kernel
signal
simulator
1
sighandler() {
2
}
...
handler(){
iret
}
http://thomas.glanzmann.de/aksys2006.pdf
3 int3
sighandler() {
4
}
Thomas Glanzmann
Memory Management – 1
MMU wird mit Hilfe von mmap(2) und munmap(2) simuliert
Simulierte Kontrollregister (cr3 – page directory base)
Speicher wird bei Zugriff bereitgestellt
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Memory Management – 2
CR3
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
priv. Instruktions-Behandlung im Userland
in*/out* in Xserver oder Modulen können nicht ersetzt werden
Löst SIGSEGV aus
Simulator simuliert die Funktion
→ langsam, aber funktionierend
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
MMU Simulation
JIT mit SoftMMU Implementation (QEMU)
Vanderpool / Pacifica (Shadow Register)
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Virtualisierungsprodukte
Bochs
VMWare
FAUmachine
QEMU
XEN
...
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Bochs
Interpreter für X86 Architektur
(VGA)Bios
Hoher Mehraufwand
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
QEMU
properitäres Kernel Modul
JIT mit SoftMMU
virtuelle Maschine
API Anpassung
HW Simulator
Bochs BIOS
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
FAUmachine
Kernel Modul
QEMU CPU
ACPI
BIOS
Automatischer Experiment Controller
HW Simulator
Fehlerinjektion
http://www.FAUmachine.org/
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Zukunft
Vanderpool (Intel)
Pacifica (AMD)
Smart NICs
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann
Fragen?
http://thomas.glanzmann.de/aksys2006.pdf
Thomas Glanzmann

Similar documents