1 Einführung 4. 2 Virtualisierung in Echtzeitsystemen 4



Ähnliche Dokumente
Virtualisierung im Echtzeitbereich. Andreas Hollmann FH Landshut EADS Military Air Systems

Calogero Fontana Fachseminar WS09/10. Virtualisierung

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Die Linux Kernel Virtual Machine - Wo steht der Linux Hypervisor? 2. März 2008

VIRTUALISIERUNG IN MIKROKERN BASIERTEN SYSTEMEN

WIE ERHÖHT MAN DIE EFFIZIENZ DES BESTEHENDEN RECHENZENTRUMS UM 75% AK Data Center - eco e.v. 1. Dezember 2009

Lizenzierung von System Center 2012

Virtualisierung in der Automatisierungstechnik

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Virtual Machines. Peter Schmid Hochschule für Technik Zürich Master of Advanced Studies, Informatik

Proseminar Technische Informatik A survey of virtualization technologies

Virtual Machines. Peter Schmid Hochschule für Technik Zürich Master of Advanced Studies, Informatik

I N F O R M A T I O N V I R T U A L I S I E R U N G. Wir schützen Ihre Unternehmenswerte

Projekt für Systemprogrammierung WS 06/07

Version Deutsch

Aktuelle Themen der Informatik: Virtualisierung

Virtuelle Maschinen. von Markus Köbele

4D Server v12 64-bit Version BETA VERSION

Schritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player

Hardware Virtualisierungs Support für PikeOS

Windows 8 Lizenzierung in Szenarien

Systeme 1. Kapitel 10. Virtualisierung

Hyper-V Grundlagen der Virtualisierung

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Virtualisierung Linux-Kurs der Unix-AG

IT-Sachverständigen-Gemeinschaft. Virtualisierungstechnologien aus forensischer Sicht in Kempten,

Tips, Tricks und HOWTOs Virtualisierung für Profis und Einsteiger Serverkonsolidierung, Testumgebung, mobile Demo

Lizenzierung von Windows Server 2012

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 14 und VMware Player

Workshop: Eigenes Image ohne VMware-Programme erstellen

Formular»Fragenkatalog BIM-Server«

EIDAMO Webshop-Lösung - White Paper

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Internet online Update (Internet Explorer)

Brownbag Session Grundlagen Virtualisierung Von VM s und Containern

OLXTeamOutlook 1.5 für Outlook 2003, 2002/XP, 2000 und 97/98

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 11 und VMware Player

Virtual Desktop Infrasstructure - VDI

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

DIE SCHRITTE ZUR KORREKTEN LIZENZIERUNG

Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems

Wie lizenziert man die Virtualisierung von Windows Desktop Betriebssystemen?

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Verwendung des Terminalservers der MUG

LPT1 Anschluss mit PCMCIA Karte

4 Planung von Anwendungsund

Hochschule Darmstadt - Fachbereich Informatik - Fachschaft des Fachbereiches

2008 Linke, Walter IAV4 1

Content Management System mit INTREXX 2002.

disk2vhd Wie sichere ich meine Daten von Windows XP? Vorwort 1 Sichern der Festplatte 2

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

Wenn Sie das T-Online WebBanking das erste Mal nutzen, müssen Sie sich zunächst für den Dienst Mobiles Banking frei schalten lassen.

MMU Virtualisierung. ISE Seminar Thomas Schaefer 1

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Application Layer Active Network

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

Informationen zur Lizenzierung von Windows Server 2008 R2

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

VDI - Die Revolution der Arbeitsplatzbereitstellung. Nicholas Dille,

OSADL begrüßt seine neuen Mitglieder. Pressekonferenz am 22. April Hannover Messe, Robotation Academy

! " # $ " % & Nicki Wruck worldwidewruck

Der PC im PC: Virtualisierung

Primzahlen und RSA-Verschlüsselung

ANYWHERE Zugriff von externen Arbeitsplätzen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Computeria Solothurn

Firewalls für Lexware Info Service konfigurieren

icloud nicht neu, aber doch irgendwie anders

ERPaaS TM. In nur drei Minuten zur individuellen Lösung und maximaler Flexibilität.

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

HBF IT-Systeme. BBU-BSK Übung 2 Stand:

Wifiway auf einer VMware Workstation auf einem Windows Rechner anwenden & VM Workstation installieren

Lizenzierung von Windows Server 2012 R2. Lizenzierung von Windows Server 2012 R2

Guide DynDNS und Portforwarding

Lizenzierung von SharePoint Server 2013

COMPUTER MULTIMEDIA SERVICE

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

EasyProfil unter Windows 7 64-Bit Home Premium (Die Installation der VirtualBox und EasyProfil)

Lizenzierung von SharePoint Server 2013

Technical Note ewon über DSL & VPN mit einander verbinden

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

3 System Center Virtual Machine Manager 2012

Die Online-Meetings bei den Anonymen Alkoholikern. zum Thema. Online - Meetings. Eine neue Form der Selbsthilfe?

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Embedded Linux. Embedded Linux. Daniel Buchheim Seminar "Eingebettete drahtlose Systeme"

Version Deutsch

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Ein mobiler Electronic Program Guide für Android

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

Lizenzen auschecken. Was ist zu tun?

WinVetpro im Betriebsmodus Laptop

Übung - Konfigurieren einer Windows Vista-Firewall

Transkript:

Inhaltsverzeichnis 1 Einführung 4 2 Virtualisierung in Echtzeitsystemen 4 3 Anwendungsfälle 5 3.1 Kommunikation............................. 5 3.2 Medizin................................. 5 3.3 Robotik und Automatisierungstechnik................ 5 4 Ziele verschiedener Virtualisierungsansätze 6 4.1 Konventionelle Virtualisierung..................... 6 4.2 Echtzeitvirtualisierung......................... 6 5 Multicore-Technologie 6 6 Virtualisierung und Echtzeiteigenschaften 7 6.1 Virtualisierung durch Code-Analyse.................. 7 6.2 Virtualisierung mit Hardware-Unterstützung............. 7 6.3 Speicherschutz in der Echtzeitvirtualisierung............. 8 6.4 Emulation................................ 8 6.5 Abweichung der virtuellen Zeit von der realen Zeit......... 8 6.6 Nativer Hardwarezugriff........................ 9 7 Virtualisierungsarchitekturen 9 7.1 Hosted VMM.............................. 9 7.2 Native VMM............................... 10 8 Virtualisierungsansätze für die Echtzeivirtualisierung 11 8.1 Microkernel als Hypervisor....................... 11 8.2 Mikrokernel als Echtzeitbetriebssystem................ 13 8.2.1 OKL4.............................. 13 8.2.2 PikeOS............................. 14 8.3 Nativer Ansatz auf x86 Mehr-Prozessor-Systemen.......... 14 9 Der Real-Time Hypervisor im Detail 16 9.1 Modifikation des Betriebssystems................... 16 9.2 Zuordnung von physikalischen Geräten................ 17 9.3 Speicherverwaltung.......................... 17 9.4 Bootvorgang.............................. 17 10 Enschränkungen bei der Echtzeitvirtualisierung 18 10.1 Gemeinsame Nutzung des Last-Level-Caches............. 18 Inhaltsverzeichnis 1

10.2 Der Chipsatz-Bus als Flaschenhals................... 18 11 Zusammenfassung 18 Literatur 20 Inhaltsverzeichnis 2

1 Einführung Systemvirtualisierung hat sich bereits auf dem Desktop-Rechner und insbesondere im Server-Umfeld etabliert und wird dort in Zukunft eine wichtige Rolle spielen. Auf Servern wird Virtualisierung eingesetzt um die Konsolidierung von physikalischen Systemen voranzutreiben. Eine hohe Anzahl virtueller Systeme kann dabei auf einem einzelnen performanten Multicore-System ausgeführt werden. Dies führt zu einer besseren Auslastung der vorhandenen Hardware, damit sinkt die Anzahl der benötigten physikalischen Systeme, was zu einem geringeren Energiebedarf und zu niedrigeren Betriebskosten führt. Server- und Embedded-Systeme erscheinen auf den ersten Blick wie zwei verschiedene Welten, doch sie haben einige Gemeinsamkeiten. Die steigenden Strompreise führten im Server-Umfeld dazu, dass die Energie-Effizienz zu einem wichtigen Thema wurde. Im Embedded-Bereich spielt dieser Aspekt schon seit jeher eine äußerst wichtige Rolle. Die nächste Gemeinsamkeit ist die Kompaktheit der Systeme. Der in einem Rechenzentrum zur Verfügung stehende Raum ist eine stark begrenzte Ressource, daher wird versucht die Rechnerdichte stetig zu erhöhen. Um möglichst vielseitig einsetzbar zu sein, wird bei der Entwicklung von Embedded-Systemen immer darauf geachtet, dass die Größe des Systems minimiert wird und damit verbunden die Anzahl der benötigten Bauteile. Durch diese Parallelen kann man erkennen, dass es im Embedded-Bereich vielversprechende Einsatzgebiete für die Systemvirtualisierung gibt. Trotz dieser Gemeinsamkeiten gibt es auch eklatante Unterschiede. Embedded- Geräte haben im Gegensatz zu Servern in den häufigsten Fällen fest vorgegebene Reaktions- und Antwortzeiten, die es stets zu erfüllen gilt. Solche Systeme werden deshalb auch als Echtzeitsysteme bezeichnet. 2 Virtualisierung in Echtzeitsystemen Echtzeitsysteme bestehen häufig aus mehreren autonomen Teilsystemen, die über ein Bussystem oder ein Netzwerk verbunden sind und auf denen jeweils eine Instanz eines Echtzeitbetriebssystems z. B. VxWorks läuft. Zusätzlich zu diesen Systemen fallen oft auch noch Rechner an, die zur Steuerung des Echtzeitsystems, zur Visualisierung und zur Aufzeichnung von Messdaten verwendet werden. Da Echtzeitsysteme für derartige Anwendungen nur schlecht bis gar nicht geeignet sind, werden konventionelle Betriebssysteme wie Windows oder Linux für diesen Aufgabenbereich verwendet. Um preiswertere und kompaktere Systeme realisieren zu können wäre es von Vorteil, wenn man mehrere Instanzen des Echtzeitbetriebssystems und zusätzlich eine Instanz eines konventionellen Betriebssystems auf einem einzelnen leis- 1 Einführung 3

tungsfähigen x86 Mehr-Kern-System ausführen könnte. Virtualisierung könnte hierfür ein Schlüssel zum Ziel sein, jedoch nur unter der Voraussetzung, dass das konsolidierte System weiterhin die gegebenen Echtzeitanforderungen erfüllt. 3 Anwendungsfälle Für die Echtzeitvirtualisierung lassen sich zahlreiche Anwendungsbereiche finden. Besonders vielversprechende Einsatzgebiete finden sich in der Robotik, Automatisierung, Kommunikations- und Medizintechnik. 3.1 Kommunikation Bei Kommunikationssystemen (z. B. in der Telefontechnik) ist man auf Echtzeitbetriebsysteme angewiesen, um einen gleichmäßigen und kontinuierlichen Datenfluss zu erreichen. Es fallen jedoch auch Verwaltungs- und Archivierungsaufgaben an, für die ein Echtzeitbetriebssystem nur schlecht geeignet ist. Im Normalfall werden mehrere Systeme benötigt auf denen die einzelnen Applikationen laufen und per Netzwerk miteinander kommunizieren. Durch eine echtzeitfähige Virtualisierungslösung lassen sich die Anwendungen auf einem einzelnen System ausführen. 3.2 Medizin Bildgebende Verfahren (z. B. die Ultraschallaufnahme) aus der Medizintechnik lassen sich in folgende Verarbeitungsschritte einteilen: Datenerfassung, Datenverarbeitung und visuelle Darstellung. Während die Datenerfassung echtzeitkritisch sein kann, ist dies bei der Datenverarbeitung und der Visualisierung nicht immer der Fall. Echtzeitvirtualisierung kann in der Medzintechnik eingesetzt werden, um sich Hardware einsparen zu können, bzw. sich die Implementierung zu erleichtern. Die Trennung der Verarbeitungsschritte in einzelne Module bietet den zusätzlichen Vorteil der getrennten Zertifizierbarkeit. Das bedeutet, dass Änderungen der einzelnen Module keine erneute Zertifizierung des Gesamtsystems nach sich zieht. 3.3 Robotik und Automatisierungstechnik In der Robotik und der Automatisierungstechnik kann die Echtzeitvirtualisierung dazu verwendet werden um das Echtzeibetriebssystem und die Visualisierung der aktuellen Prozesse darstellen zu können. 3 Anwendungsfälle 4

4 Ziele verschiedener Virtualisierungsansätze Obwohl die konventionelle Virtualisierung und die Echtzeitvirtualisierung die Ausführung von mehreren Betriebssystemen auf einem physikalischen Rechner erlauben, unterscheiden sich die beiden Ansätze in einigen Punkten erheblich. Die beiden sich unterscheidenden Ansätze sind für spezielle Anwendungsgebiete entwickelt und bieten so spezielle Vorteile und bestimmte Einschränkungen. 4.1 Konventionelle Virtualisierung Das wichtigste Kriterium einer konventionellen Virtualisierungslösung (z. B. VMware) ist die sichere Isolation der Virtuellen Maschinen. Dies erlaubt es mehrere, möglicherweise nicht vertrauenswürdige, virtuelle Maschinen auf einem gemeinsamen physikalischen Rechner auszuführen. Um eine sichere Isolation zu ermöglichen wird erheblicher Aufwand betrieben und teilweise auch die Funktionalität eingeschränkt. Meist bieten konventionelle Virtualisierungslösungen deswegen keinen direkten Zugriff auf physikalische Hardware und müssen stattdessen emulierte Geräte nutzen. 4.2 Echtzeitvirtualisierung Bei der Echtzeivirtualisierung ist das wichtigste Kriterium das Erreichen von möglichst geringen Reaktionszeiten. Hierbei werden auch Einschränkungen in Sachen sicherer Isolation in Kauf genommen. Es wird z. B. auf die virtuelle Speicherverwaltung verzichtet, da diese zu erhöhten Latenzen führen kann. Virtuellen Maschinen wird direkter Zugriff auf physikalische Geräte ermöglicht und auf emulierte Geräte wird verzichtet, um Latenzzeiten weiter zu minimieren. Da die virtuellen Maschinen nicht sicher voneinander getrennt sind, ist die Ausführung von nicht vertrauenswürdigen Gästen nicht zu empfehlen. Dies ist jedoch auch nicht das Einsatzgebiet der Echtzeitvirtualisierung. 5 Multicore-Technologie Die Multicore-Technologie hat die Verbreitung von Mehr-Prozessor-Systemen im Desktop und Serverbereich stark vorangetrieben. Derzeit verfügt jeder aktuelle Desktop-PC bereits über 2 Prozessorkerne und die Tendenz ist steigend. Es macht derzeit wirtschaftlich kaum noch Sinn eine Single-Core CPU einzusetzen. Dieser Trend setzt sich langsam auch im Embedded und Echtzeitbereich fort. 4 Ziele verschiedener Virtualisierungsansätze 5

Durch die Multicore-Technologie hat sich die Leistungsfähigkeit einer CPU theoretisch vervielfacht, doch in Praxis ist von dieser enormen Leistungssteigerung bei einer einzelnen Anwendung nicht viel zu spüren. Das Problem liegt hierbei bei der Komplexität der parallelen Programmierung und daran, dass sich viele Algorithmen nur schlecht parallelisieren lassen. Mehrere Prozessor-Kerne bieten jedoch die Möglichkeit mehrere Anwendungen echt parallel und nahezu ohne Geschwindigkeitseinbußen laufen zu lassen. Dies ist eine exzellente Voraussetzung um echtzeitfähige Virtualisierungslösungen zu realisieren. 6 Virtualisierung und Echtzeiteigenschaften Bei der Virtualisierung eines Echtzeitbetriebssystems hat die Einhaltung der Antwortzeiten höchste Priorität und es ist darauf zu achten, dass diese auch in einer virtualisierten Umgebung eingehalten werden. Es ist jedoch allgemein bekannt, dass Virtualisierung mit einem gewissen Leistungsverlust verbunden ist. Im Folgenden werden einige Punkte erläutert, die die Echtzeitanforderungen negativ beeinflussen könnten. 6.1 Virtualisierung durch Code-Analyse Nach dem Theorem von Goldberg und Popek [1] ist der x86 Befehlsatz nicht virtualisierbar [2]. Das bedeutet, dass es Befehle im Benutzermodus (Ring 3) gibt, die auf sensitive Ressourcen zugreifen ohne eine Exception auszulösen. Um eine direkte Ausführung des Binärcodes auf einer x86 CPU dennoch zu ermöglichen, ist es unumgänglich die kritischen Befehle gegen nicht kritischen Emulationscode zu ersetzen. Dies zu Bewerkstelligen ist eine komplexe und aufwändige Aufgabe, bei der die Untersuchung des Binärcodes zur Ausführungszeit nötig ist. Dies wird in den Lösungen von VMware und VirtualBox genutzt. Durch Caching-Mechanismen ist das Code-Patching nur beim ersten Durchlauf eines Code-Segments notwendig. Dennoch tritt eine nicht vorhersagbare Verzögerung auf, die bei Echtzeitsystemen nachteilig ist. 6.2 Virtualisierung mit Hardware-Unterstützung Mit der Einführung der Virtualisierungserweiterungen Intel VT-x und AMD-V wurden Mechanismen eingeführt um alle sensitiven Instruktionen abfangen zu können. Damit kann das Theorem von Goldberg und Popek erfüllt werden. Das komplexe Code-Patching ist nun nicht mehr zwingend notwendig und der deutliche 6 Virtualisierung und Echtzeiteigenschaften 6

einfachere Virtualisierungsansatz Trap-and-Emulate konnte nun auf der x86- Architektur genutzt werden. Bei diesem Ansatz wird jeder sensitive Befehl in Hardware abgefangen und führt zu einem Sprung in den Hypervisor, welcher den Befehl anschließend emuliert. Diese Emulation kostet natürlich auch Zeit und ist somit problematisch für die Echtzeitfähigkeit. 6.3 Speicherschutz in der Echtzeitvirtualisierung Auf x86-systemen wird die Memory Management Unit (MMU) von den meisten Betriebssystemen genutzt um den Speicher von Prozessen sicher voneinander abzuschotten. Betreibt man nun ein Betriebssystem innerhalb einer virtuellen Maschine steht eine dedizierte MMU nicht mehr zur Verfügung. Eine vollständige Emulation der MMU wäre jedoch viel zu aufwendig. Es wird daher ein Mischverfahren genutzt. Der Hypervisor erstellt und verwaltet für jeden Prozess eines virtualisierten Betriebssystems eine so genannte Shadow Page Table. In dieser Datenstruktur werden virtuelle Gastadressen direkt auf physikalische Wirtsadressen abgebildet. Die in der CPU integrierte MMU kann direkt auf dieser Shadow Page Table arbeiten und die Adressübersetzung effizient durchführen, vorausgesetzt es tritt kein Page Fault auf. Falls ein solcher dennoch eintritt wird vom Hypervisor die Shadow Page Table in Software modifiziert. Es lässt sich leicht vorstellen, dass diese Verwaltung aufwendig ist und einen deutlichen Mehraufwand bedeutet. Daher wird auf sicheren Speicherschutz oft verzichtet. Paging wirkt sich allgemein nachteilig auf das zeitlich deterministische Verhalten in Echtzeitsystemen aus und wird deshalb selten genutzt. 6.4 Emulation Bei der Systemvirtualisierung wird ein physikalisches System mit all seinen Geräten in Software nachgebildet um anschließend ein Betriebssystem ohne Modifikation und mit den integrierten Treibern ausführen zu können. Viele physikalische Geräte lassen sich nicht ohne weiteres von mehreren virtuellen Maschinen gemeinsam nutzen und müssen deshalb aufwendig emuliert werden. Beispiele hierfür sind Grafikkarten, Chipsatz, Netzwerkkarten, Systemuhren. Der Prozessor und Arbeitsspeicher lassen sich dank Virtualisierung gemeinsam nutzen. 6.5 Abweichung der virtuellen Zeit von der realen Zeit Durch den Scheduler des Hypervisors wird den virtuellen Maschinen die CPU abwechselnd zugeteilt. Das Betriebssystem innerhalb der virtuellen Maschine merkt 6 Virtualisierung und Echtzeiteigenschaften 7

von diesem Vorgang jedoch nichts und geht von einer exklusiven Nutzung der CPU aus. Die CPU Zeit, gemessen in der Anzahl der Taktzyklen, weicht nun von der Realzeit ab. Für ein Echtzeitsystem sind das denkbar schlechte Vorraussetzungen. 6.6 Nativer Hardwarezugriff Direkter Hardwarezugriff wird aufgrund mangelnder technischer Möglichkeiten zur sicheren Isolation in konventionellen Virtualisierungslösungen nicht angeboten. Der direkte Zugriff auf Hardware spielt bei Echtzeitsystemen jedoch eine wichtige Rolle und muss auf jeden Fall gewährleistet sein. Erst durch eine IOMMU wie sie mit Intel VT-d angeboten wird lassen sich sichere DMA-Transfers durchführen. 7 Virtualisierungsarchitekturen Im groben lassen sich zwei verschiedene Architekturen unterscheiden. Die Art der Architektur beeinflusst maßgeblich die Eigenschaften und Einsatzgebiete eines Hypervisors. 7.1 Hosted VMM Eine Hosted VM läuft als Anwendung innerhalb eines Betriebssystems. Der Scheduler des Betriebssystems verwaltet die VM wie jeden anderen Prozess. Daher kann ein nicht echtzeitfähiges Betriebssystem niemals Echtzteiteigenschaften innerhalb einer VM garantieren. Hosted VMs sind im allgemeinen für echtzeitfähige Virtualisierungslösungen nur schlecht geeignet, da das Betriebssystem alle Ressourcen und physikalischen Geräte für sich beansprucht und man diese nicht nativ an die VM weiterreichen kann. 7 Virtualisierungsarchitekturen 8

Abbildung 1: Hosted VMM 7.2 Native VMM Native VMMs laufen ähnlich wie ein Betriebssystem direkt auf der physikalischen Hardware und erlauben so im Vergleich zur Hosted VM deutlich mehr Freiheiten bezüglich der Implementierung. Es besteht also die Möglichkeit eine native VMM so zu implementieren, dass sie die Echtzeiteigenschaften auch innerhalb einer virtuellen Maschine erfüllt ist. Abbildung 2: Native VMM 7 Virtualisierungsarchitekturen 9

8 Virtualisierungsansätze für die Echtzeivirtualisierung Echtzeitbetriebssysteme lassen sich für die unterschiedlichen Zielsysteme anpassen. Der dafür nötige Teil des Quellcodes liegt frei und kann deswegen auch modifiziert werden. Der offenliegende Code ermöglicht es effiziente Schnittstellen zwischen dem Hypervisor und dem Echtzeitbetriebssystem zu schaffen. Anstatt auf emulierte Geräte zuzugreifen wird direkt und sehr effizient über den Speicher kommuniziert. Das Echtzeitbetriebssystem wird speziell angepasst, um auf dem Hypervisor laufen zu können. Man spricht hierbei auch von Paravirtualisierung. 8.1 Microkernel als Hypervisor Ein Microkernel ist ein minimaler Betriebssystemkern. Er verfügt lediglich über eine Speicher- und Prozessverwaltung, sowie Grundfunktionen zur Synchronisation und Kommunikation. Die genannten Funktionen laufen im Kernel-Modus. Jede weitere Funktionalität, z. B. das Dateisystem, Treiber und Protokolle werden ausgelagert und laufen als eigenständige Prozesse im Benutzermodus mit Speicherschutz. Der Microkernel abstrahiert und kontrolliert außerdem die wichtigsten Hardwareressourcen, darunter die CPU, den Speicher und den Interrupt-Kontroller. Über Schnittstellen kann das angepasste Echtzeitbetriebssystem mit dem Microkernel, der als Hypervisor agiert, kommunizieren und so auch Interrupts entgegennehmen. Da ein Interrupt erst über den Hypervisor zum Echtzeitbetriebssystem gelangt entsteht hier eine zusätzliche Latenz. Das Unternehmen VirtualLogix bietet in ihrem Microkernel-Hypervisor VLX [3] die Unterstützung für das Echtzeitbetriebssystem VxWorks. Als zusätzliche Betriebssysteme werden Linux und mit Hilfe der Virtualisierungserweitung VT-x von Intel auch Windows XP unterstützt. 8 Virtualisierungsansätze für die Echtzeivirtualisierung 10

Abbildung 3: Virtual Logix VLX Architektur [3] 8 Virtualisierungsansätze für die Echtzeivirtualisierung 11

Abbildung 4: Virtual Logix VLX Architektur [3] 8.2 Mikrokernel als Echtzeitbetriebssystem Einige Hersteller nutzen einen Mikrokernel nicht einzig und allein als Hypervisor, sondern auch als vollständiges Echtzeitbetriebssystem, auf dem Echtzeitprozesse ausgeführt werden können. Hier entsteht keine zusätzliche Latenz, da der Hypervisor und das Echtzeitbetriebssystem ja identisch sind. Da es sich hier jedoch um eigene Implementierungen eines Echtzeitbetriebssystems handelt, lassen sich vorhandene Echtzeitanwendungen nur mit hohem Aufwand auf die neue Softwareumgebung portieren. 8.2.1 OKL4 Ein Hersteller der diesen Ansatz nutzt ist das Open Kernel Labs mit ihrer echtzeitfähigen L4 Mikrokernel-Implementierung OKL4 [4], auf dem als Gast ein angepasstes Linux (OK Linux) ausgeführt werden kann. OKL4 ist bereits ein eigenständiges Echtzeitbetriebssystem. 8 Virtualisierungsansätze für die Echtzeivirtualisierung 12

Abbildung 5: OKL4 Einsatzbeispiel [4] 8.2.2 PikeOS Die SYSGO AG nutzt in ihrem echtzeitfähigen Mikrokernel PikeOS [5][6], das auch ein komplettes Betriebssystem ist, ebenfalls die L4 Architektur und unterstützt einen angepassten Linux-Kernel als Gast-System. Abbildung 6: PikeOS Architektur [5] 8.3 Nativer Ansatz auf x86 Mehr-Prozessor-Systemen Um ein Betriebssystem auszuführen ist nur ein Bruchteil der auf einem Mehr- Prozessor-System enthaltenen Hardware nötig. Neben der zentralen Ausführungseinheit, der CPU, muss zusätzlich freier Arbeitsspeicher und ein Systemzeitgeber 8 Virtualisierungsansätze für die Echtzeivirtualisierung 13

vorhanden sein. Der in einem System verfügbare Arbeitsspeicher kann problemlos partitioniert werden und in jedem CPU-Kern befindet sich ein programmierbarer Timer (APIC-Timer Advanced Programmable Interrupt Controller). Die Voraussetzungen für die parallele Ausführung mehrerer Betriebssysteme sind somit theoretisch gegeben. Abbildung 7: Systemaufbau eines Multicore-Rechners Betriebssysteme gehen jedoch davon aus, dass ihnen die gesamte Hardware und der komplette physikalische Speicher zur Verfügung steht. Bei vorhandenem Quellcode lässt sich dieses Verhalten jedoch anpassen und ein Betriebssystem lässt sich somit dazu bewegen den Rechner nicht mehr vollständig zu belegen. Um den einzelnen Betriebssystemen, die jeweils auf einem eigenen CPU-Kern laufen, physikalische Geräte (z. B. Netzwerkkarte) zuordnen zu können, wird das APIC-Subsystem verwendet. Die lokalen APIC-Controller, die sich auf den CPU-Kernen befindet, bilden zusammen mit dem zentralen I/O-APIC im Chipsatz ein System, mit dem Interrupts geroutet und auf verschiedene CPU-Kerne verteilt werden können. Somit hat man nun alle Bestandteile zusammen, damit man mehrere Betriebssysteme auf einem Mehr-Prozessor-System ausführen kann. Das besondere bei dieser Lösung ist, dass zur Laufzeit kein Hypervisor benötigt wird. Diesen Ansatz verfolgt die Firma Real-Time Systems mit ihrem Produkt Real-Time Hypervisor [7]. Unterstützt werden derzeit VxWorks, Linux und Windows CE. Mit Hilfe von Intel VT-x wird Windows XP als Gast unterstützt. 8 Virtualisierungsansätze für die Echtzeivirtualisierung 14

Abbildung 8: Partitionierung eines Dual-Core-Rechners 9 Der Real-Time Hypervisor im Detail Der Real-Time Hypervisor verwendet den in Kapitel 8.3 auf Seite 14 vorgestellten Ansatz der Echtzeitvirtualisierung. Bei diesem Ansatz wird auf einen Hypervisor zur Laufzeit verzichtet. Dies erfordert jedoch die Anpassung der Betriebssysteme. 9.1 Modifikation des Betriebssystems Damit mehrere Betriebssysteme auf einem Rechner ausgeführt werden können, müssen diese modifiziert und für die Nutzung der redundant zur Verfügung stehende Hardware angepasst werden. Wie oben schon erwähnt enthält jeder CPU-Kern einen APIC-Timer. Dieser findet normalerweise keine Verwendung als Systemzeitgeber, da er nicht mit einer festen Frequenz, sondern von der Bus-Frequenz abgeleiteten Frequenz läuft. Um den APIC-Timer trotzdem als Systemtimer nutzen zu können, muss er bei jedem Bootvorgang kalibriert werden. Viele Systeme verhalten sich sehr konservativ bezüglich der Nutzung neuer Hardware. Um Interrupt zu den einzelnen Betriebssystemen zustellen zu können, muss statt des betagten Programmable Interrupt Controller (PIC) der APIC verwendet 9 Der Real-Time Hypervisor im Detail 15

werden. Einige Automatismen der Betriebssysteme müssen abgeschaltet werden, damit es möglich wird das System eindeutig zu konfigurieren. Zusätzlich wurden Treiber für eine virtuelle Netzwerkkarte implementiert, um mit anderen Gast- Betriebssystemen kommunizieren zu können. Die interne Kommunikation des virtuellen Netzwerks läuft über Speicherbereiche auf die alle Betriebssysteme gemeinsam zugreifen können. 9.2 Zuordnung von physikalischen Geräten Der Real-Time Hypervisor erlaubt es den einzelnen Gastbetriebssystemen physikalische Geräte exklusiv zuzuordnen. Es gibt jedoch eine deutliche Einschränkung der Flexibilität, da alle Geräte, die an einer Interrupt-Signalleitung hängen, an ein Gast-Betriebssystem zugeteilt werden müssen. Wie die Interrupt- Signalleitung unter den Geräten verteilt werden hängt vom verwendeten Mainboard ab. 9.3 Speicherverwaltung Jedem Betriebssystem wird beim Boot-Vorgang ein bestimmter physikalischer Speicherbereich zugeteilt. Diesen Speicherbereich kann das Betriebssystem nach belieben verwalten. Da jeder CPU-Kern ein vollständiger Prozessor ist und über eine eigene MMU verfügt, kann diese zur Adressübersetzung von virtuellen in physikalische Adressen genutzt werden. Die MMU steht jedoch unter direkter Kontrolle des jeweiligen Gast-Betriebssystems und im Kernel-Adressbereich wird die MMU gar nicht verwendet. Aus diesen Gründen gibt es keinen sicheren Speicherschutz, aber auch keinen Overhead der zu schlechteren Latenzen führen würde. Durch die Nutzung von Intel-VT-x kann für Windows XP sicherer Speicnherschutz realisiert werden. 9.4 Bootvorgang Ein spezieller Bootloader wird genutzt, der das APIC-System konfiguriert und anschließend die Kalibrierung des APIC-Timers durchführt. Im letzten Schritt wird auf jedem Kern ein Betriebssystem gebootet. Ab dieser Stelle laufen die einzelnen Betriebssysteme parallel. 9 Der Real-Time Hypervisor im Detail 16

10 Enschränkungen bei der Echtzeitvirtualisierung Bei der Ausführung eines einzigen Echtzeitbetriebssystems auf einem Rechner ist die gesamte Hardware und alle Ressourcen unter dessen Kontrolle. Führt man nun mehrere Echtzeitbetriebssysteme auf dem gleichen Rechner aus, müssen einige Ressourcen geteilt werden. Bei beschränkten Ressourcen kann dies zu Engpässen und damit zu erhöhten Latenzen führen. 10.1 Gemeinsame Nutzung des Last-Level-Caches Multicore-Prozessoren teilen sich den Last-Level-Cache. Bei der Core-Architektur von Intel teilen sich 2 Kerne den Level-2-Cache und beim AMD Phenom wird der Level-3-Cache von 4 Kernen genutzt. Bei der gemeinsamen Nutzung des Caches durch mehrere Kerne gibt es jedoch keine Mechanismen, die eine faire Nutzung des Caches sicherstellen. Das bedeutet, dass ein einzelner Gast den Großteil des Caches für sich beansprucht und fremde Cache-Zeilen verdrängt. 10.2 Der Chipsatz-Bus als Flaschenhals Der Chipsatz-Bus zwischen der North- und Southbridge kann unter Umständen zum Flaschenhals werden. Je nach benutztem Chipsatz kann ein durch den Festplatten-Kontroller durchgeführter DMA-Transfer den Chipsatz-Bus belegen. Ein Interrupt kann dadurch nur noch verzögert bestätigt werden und würde damit die Latenzzeit erhöhen. Dieser Fall kann auch bei einem einzelnen Betriebssystem auftreten. Der kritische Punkt bei der Echtzeitvirtualisierung ist jedoch, dass jedes von einander unabhängig laufende Gast-Betriebssystem den Bus belegen könnte, ohne das ein anderer Gast etwas dagegen unternehmen kann. 11 Zusammenfassung Echtzeitvirtualisierung bietet zahlreiche Möglichkeiten, um die Architektur von Embedded-Systemen zu verbessern und deren Kosten zu senken. Derzeit werden zahlreiche Produkte für unterschiedliche Anwendungsgebiete angeboten. Einige dieser Lösungen unterstützen etablierte Echtzeitbetriebssysteme. 10 Enschränkungen bei der Echtzeitvirtualisierung 17

Andere stellen dem Anwender eigene Umgebungen zur Verfügung, die es erlauben Echtzeitanwendungen zu erstellen. Die große Anzahl der Lösungen zeigt, dass es einen Markt für Echtzeitvirtualisierung gibt und das wir in Zukunft noch mehr aus diesem Bereich hören werden. 11 Zusammenfassung 18

Abbildungsverzeichnis 1 Hosted VMM.............................. 10 2 Native VMM............................... 10 3 Virtual Logix VLX Architektur [3]................... 12 4 Virtual Logix VLX Architektur [3]................... 13 5 OKL4 Einsatzbeispiel [4]........................ 14 6 PikeOS Architektur [5]......................... 14 7 Systemaufbau eines Multicore-Rechners............... 15 8 Partitionierung eines Dual-Core-Rechners.............. 16 Literatur [1] G. J. Popek and R. P. Goldberg, Formal requirements for virtualizable third generation architectures, in SOSP 73: Proceedings of the fourth ACM symposium on Operating system principles, vol. 7, no. 4. New York, NY, USA: ACM Press, October 1973. [Online]. Available: http: //portal.acm.org/citation.cfm?id=808061 [2] J. S. Robin and C. E. Irvine, Analysis of the intel pentium s ability to support a secure virtual machine monitor, 2000. [Online]. Available: http://www.cs.nps.navy.mil/people/faculty/irvine/publications/ 2000/VMM-usenix00-0611.pdf [3] VirtualLogix, Vlx for network infrastructure supporting intel core microarchitecture. [Online]. Available: http://www.virtuallogix.com/index. php?id=146 [4] G. Heiser, Virtualization for embedded systems. [Online]. Available: http://wiki.ok-labs.com/geteducated [5] R. Kaiser and S. Wagner, The pikeos concept - history and design, p. 8. [Online]. Available: http://www.sysgo.com/news-events/whitepapers/ [6] R. Kaiser, Scheduling virtual machines in real-time embedded systems. [Online]. Available: http://www.sysgo.com/news-events/whitepapers/ [7] R.-T. S. GmbH, Real-time hypervisor - datasheet. [Online]. Available: http://www.real-time-systems.com/docman/doc_download_21.html Abbildungsverzeichnis 19