Paravirtualisierung

This commit is contained in:
WieErWill 2022-03-01 19:22:46 +01:00
parent 2f4137dd74
commit fb9e0e31c7
2 changed files with 33 additions and 50 deletions

Binary file not shown.

View File

@ -2863,72 +2863,55 @@
\end{itemize*} \end{itemize*}
\subsubsection{Paravirtualisierung} \subsubsection{Paravirtualisierung}
Funktionsprinzip Funktionsprinzip
\begin{itemize*} \begin{itemize*}
\item ... unterscheidet sich prinzipiell von Typ-1/2-Hypervisor \item ... unterscheidet sich prinzipiell von Typ-1/2-Hypervisor
\item wesentlich: Quellcode des Gast-Betriebssystems modifiziert \item wesentlich: Quellcode des Gast-Betriebssystems modifiziert
\item sensible Instruktionen: durch Hypervisor-Calls ersetzt \item sensible Instruktionen: durch Hypervisor-Calls ersetzt
\item Folge: Gast-Betriebssystem arbeitet jetzt vollständig wie \item[$\rightarrow$] Gast-Betriebssystem arbeitet vollständig wie Nutzerprogramm, welches Systemaufrufe zum Betriebssystem (hier Hypervisor) ausführt
Nutzerprogramm, welches Systemaufrufe zum Betriebssystem (hier dem
Hypervisor) ausführt
\item dazu:
\begin{itemize*}
\item Hypervisor: muss geeignetes Interface definieren (HV-Calls) \item Hypervisor: muss geeignetes Interface definieren (HV-Calls)
\item[$\rightarrow$] Menge von Prozedur-Aufrufen zur Benutzung durch Gast-Betriebssystem \item[$\rightarrow$] Menge von Prozedur-Aufrufen zur Benutzung durch Gast-Betriebssystem
\item bilden eine HV-API als Schnittstelle für Gast-Betriebssysteme (nicht für Nutzerprogramme!) \item bilden eine HV-API als Schnittstelle für Gast-Betriebssysteme
\end{itemize*}
\item mehr dazu: Xen
\end{itemize*} \end{itemize*}
Verwandtschaft mit Mikrokernel-Architekturen Verwandtschaft mit Mikrokernel-Architekturen
\begin{itemize*} \begin{itemize*}
\item Geht man vom Typ-1-HV noch einen Schritt weiter ... \item entfernt alle sensiblen Instruktionen aus Gast-Betriebssystem...
\item ersetzt durch Hypervisor-Aufrufe, um Systemdienste zu nutzen...
\item hat man praktisch den Hypervisor in Mikrokernel transformiert
\item ... das wird schon gemacht: $L^4$Linux (TU Dresden)
\begin{itemize*} \begin{itemize*}
\item und entfernt alle sensiblen Instruktionen aus Gast-Betriebssystem ... \item Basis: stringente $L^4\mu$ Kernel-Implementierung %(Typ-1-HV-artiger Funktionsumfang)
\item und ersetzt diese durch Hypervisor-Aufrufe, um Systemdienste wie E/A zu benutzen, ...
\item hat man praktisch den Hypervisor in Mikrokernel transformiert.
\end{itemize*}
\item ... und genau das wird auch schon gemacht: $L^4$Linux (TU
Dresden)
\begin{itemize*}
\item Basis: stringente $L^4\mu$ Kernel-Implementierung (Typ-1-HV-artiger Funktionsumfang)
\item Anwendungslaufzeitumgebung: paravirtualisierter Linux-Kernel als Serverprozess \item Anwendungslaufzeitumgebung: paravirtualisierter Linux-Kernel als Serverprozess
\item Ziele: Isolation (Sicherheit, Robustheit), Echtzeitfähigkeit durch direktere HW-Interaktion (vergleichbar Exokernel-Ziel) \item Ziele: Isolation, Echtzeitfähigkeit durch direktere HW-Interaktion %(vergleichbar Exokernel-Ziel)
\end{itemize*} \end{itemize*}
\end{itemize*} \end{itemize*}
Zwischenfazit Virtualisierung \subsubsection{Zwischenfazit Virtualisierung}
Ziele: Adaptivität komplementär zu
\begin{description*}
\item[Wartbarkeit] ökonomischer Betrieb ohne dedizierte Hardware
\item[Sicherheit] von nichtvertrauenswürdigen Anwendungen isoliert
\item[Robustheit] Fehler in VMs beeinträchtigen nicht andere VMs
\end{description*}
\begin{itemize*} Idee: drei gängige Prinzipien
\item Ziele: Adaptivität komplementär zu... \begin{description*}
\begin{itemize*} \item[Typ-1-HV] unmittelbares HW-Multiplexing, trap-and-emulate
\item Wartbarkeit : ökonomischer Betrieb von Cloud-und Legacy-Anwendungen ohne dedizierte Hardware \item[Typ-2-HV] HW-Multiplexing auf Basis eines Host-OS, binarytranslation
\item Sicherheit : sicherheitskritische Anwendungen können vollständig von nichtvertrauenswürdigen Anwendungen (und untereinander) isoliert werden \item[Paravirtualisierung] Typ-1-HV für angepasstes Gast-OS, kein trap-and-emulate nötig $\rightarrow$ HV ähnelt $\mu$Kern
\item Robustheit : Fehler in VMs (= Anwendungsdomänen) können nicht andere VMs beeinträchtigen \end{description*}
\end{itemize*}
\item Idee: drei gängige Prinzipien: Ergebnisse
\begin{itemize*}
\item Typ-1-HV: unmittelbares HW-Multiplexing, trap-and-emulate
\item Typ-2-HV: HW-Multiplexing auf Basis eines Host-OS, binarytranslation
\item Paravirtualisierung: Typ-1-HV für angepasstes Gast-OS, kein trap-and-emulate nötig $\rightarrow$ HV ähnelt $\mu$Kern
\end{itemize*}
\item Ergebnisse:
\begin{itemize*} \begin{itemize*}
\item[\cmark] VMs mit individuell anpassbarer Laufzeitumgebung \item[\cmark] VMs mit individuell anpassbarer Laufzeitumgebung
\item[\cmark] isolierteVMs \item[\cmark] isolierteVMs
\item[\cmark] kontrollierbare VM-Interaktion (untereinander und mit HW) \item[\cmark] kontrollierbare VM-Interaktion (untereinander und mit HW)
\item[\xmark] keine hardwarespezifischen Optimierungen aus VM heraus möglich $\rightarrow$ Performanz, Echtzeitfähigkeit, Sparsamkeit! \item[\xmark] keine hardwarespezifischen Optimierungen aus VM heraus möglich $\rightarrow$ Performanz, Echtzeitfähigkeit, Sparsamkeit
\end{itemize*} \end{itemize*}
\end{itemize*}
\subsection{Container} \subsection{Container}
Ziele: Ziele:
\begin{itemize*} \begin{itemize*}
\item Adaptivität , im Dienste von ... \item Adaptivität , im Dienste von ...
\item ... Wartbarkeit: einfachen Entwicklung, Installation, Rekonfiguration \item ... Wartbarkeit: einfachen Entwicklung, Installation, Rekonfiguration