Unikernel

Vergleich eines traditionellen OS -Stacks und eines Mirageos Unikernel

A Unikernel ist ein spezialisiertes, einzelner Adressraum Maschinenbild konstruiert mit Verwendung Bibliotheksbetriebssysteme.[1] Ein Entwickler wählt aus einem modularen Stapel den minimalen Satz von Bibliotheken aus, die den OS -Konstrukten entsprechen, die für die Ausführung der Anwendung erforderlich sind. Diese Bibliotheken werden dann mit dem Anwendungs- und Konfigurationscode zusammengestellt, um versiegelte, feste Bilder (Unikernel) zu erstellen, die direkt auf a ausgeführt werden Hypervisor oder Hardware- Ohne ein intervenierendes Betriebssystem wie Linux oder Windows.

Die ersten derartigen Systeme waren Exokernel und Nemesis In den späten 1990er Jahren.

Entwurf

In einem Bibliotheksbetriebssystem werden Schutzgrenzen auf die niedrigsten Hardwareschichten gedrängt, was zu:

  1. eine Reihe von Bibliotheken, die Mechanismen implementieren, wie z.
  2. Eine Reihe von Richtlinien, die die Zugriffskontrolle und Isolation in der Anwendungsschicht durchsetzen.

Die OS -Architektur der Bibliothek hat im Vergleich zu herkömmlichen OS -Designs mehrere Vor- und Nachteile. Einer der Vorteile ist, dass da nur ein einzelner Adressraum besteht, es keine wiederholten Berechtigungsübergänge benötigen, um Daten zwischen Benutzerraum und Kernelraum zu verschieben. Daher kann ein Bibliotheks -Betriebssystem eine verbesserte Leistung liefern, indem ein direkter Zugriff auf Hardware ermöglicht wird, ohne dass der Übergang zwischen dem Benutzermodus und dem Kernel -Modus gewechselt werden muss (auf einem herkömmlichen Kernel besteht dieser Übergang aus einer einzelnen Falleanweisung[2] und ist nicht dasselbe wie ein Kontextschalter[3]). Leistungssteigerungen können durch Beseitigung der Notwendigkeit realisiert werden, Daten zwischen Benutzerraum und Kernelraum zu kopieren, obwohl dies auch mit möglich ist Nullkopie Gerätetreiber in herkömmlichen Betriebssystemen.

Ein Nachteil ist, dass es, da keine Trennung vorhanden ist, wenn versucht wird, mehrere Anwendungen in einem Bibliotheks -Betriebssystem nebeneinander auszuführen, jedoch mit starker Ressourcenisolation komplex werden kann.[4] Darüber hinaus sind Gerätetreiber für die spezifische Hardware erforderlich, auf der das Betriebssystem der Bibliothek ausgeführt wird. Da die Hardware schnell verändert, schafft dies die Belastung, die Treiber regelmäßig neu zu schreiben, um auf dem neuesten Stand zu bleiben.

OS Virtualisierung Kann einige dieser Nachteile auf Warenhardware überwinden. Eine moderne Hypervisor Bietet virtuelle Maschinen CPU -Zeit und stark isolierte virtuelle Geräte. Ein als virtueller Maschine ausgeführter Bibliotheks -Betriebssystem muss nur Treiber für diese stabilen virtuellen Hardware -Geräte implementieren und kann davon abhängen, dass der Hypervisor die reale physische Hardware vorantreibt. Protokollbibliotheken werden jedoch weiterhin benötigt, um die Dienste eines herkömmlichen Betriebssystems zu ersetzen. Durch das Erstellen dieser Protokollbibliotheken liegt der Großteil der Arbeit bei der Implementierung eines modernen Bibliotheksbetriebs.[1] Darüber hinaus kann sich das Vertrauen in einen Hypervisor bei der Umstellung zwischen Unikernel und Hypervisor und beim Übergeben von Daten an und von virtuellen Hypervisor -Geräten wieder einführen.

Durch die Reduzierung der Codemenge reduziert Unikernels notwendigerweise die Wahrscheinlichkeit Angriffsfläche und haben daher verbesserte Sicherheitseigenschaften.[5][6]

Ein Beispiel für den auf Unikernel basierten Messaging-Client hat rund 4% der Größe der äquivalenten Codebasen mit Linux.[7]

Aufgrund der Art ihrer Konstruktion ist es möglich, die Optimierung des gesamten Systems über Geräte-Treiber und Anwendungslogik hinweg durchzuführen, wodurch die Spezialisierung verbessert wird.[8][9] Beispielsweise haben Off-the-Shelf-Anwendungen wie Nginx, SQLite und Redis, die über einem Unikernel laufen, eine Leistungsverbesserung von 1,7x-2.7x gezeigt.[10]

Es wurde regelmäßig gezeigt, dass Unikernel extrem schnell startet, um vor der Auszeit des Anfragens auf eingehende Anfragen zu reagieren.[11][12][13]

Unikernels eignen sich zum Erstellen von Systemen, die dem folgen, die dem folgen Service-orientiert oder Microservices Softwarearchitekturen.

Der hohe Maß an Spezialisierung bedeutet, dass Unikernels für die Art von Allzwecke, für das herkömmliche Betriebssysteme verwendet werden, ungeeignet sind. Das Hinzufügen zusätzlicher Funktionen oder Änderungen eines kompilierten Unikernel ist im Allgemeinen nicht möglich, und stattdessen besteht der Ansatz darin, einen neuen Unikernel mit den gewünschten Änderungen zu kompilieren und bereitzustellen.

Siehe auch

Verweise

  1. ^ a b "Unikernels: Aufstieg des Betriebssystems der virtuellen Bibliothek". Abgerufen 31. August 2015.
  2. ^ Tanenbaum, Andrew S. (2008). Modern Operating Systems (3. Aufl.). Prentice Hall. pp.50–51. ISBN 978-0-13-600663-3. . . . Nahezu alle Systemanrufe werden aus C -Programmen aufgerufen, indem sie einen Bibliotheksverfahren aufrufen. . . Die Bibliotheksverfahren. . . Führen Sie einen Trap -Befehl aus, um vom Benutzermodus in den Kernel -Modus zu wechseln und die Ausführung zu starten. . .
  3. ^ Kontextschalter#Benutzer- und Kernel -Modus -Switching
  4. ^ Chia-Che, Tsai; Arora, Kumar-Saurabh; Bandi, Nehal; Jain, Bhushan; Jannen, William; John, Jitin; Kalodner, Harry; Kulkarni, Vrushali; Oliviera, Daniela; Porter, Donald E. (2014). Kooperation und Sicherheits-Isolation von Bibliotheks-Osen für Multi-Process-Anwendungen (PDF). Verfahren der neunten Europäischen Konferenz über Computersysteme (Eurosys). S. 1–14. Citeseerx 10.1.1.589.1837. doi:10.1145/2592798.2592812. ISBN 9781450327046.
  5. ^ "Warum Unikernels die Internetsicherheit verbessern können". April 2015. Abgerufen 31. August 2015.
  6. ^ Madhavapeddy, Anil; Mortier, Richard; Charalampos, Rotos; Scott, David; Singh, Balraj; Gazagnaire, Thomas; Smith, Steven; Hand, Steven; Crowcroft, Jon (März 2013). "Unikernels: Bibliotheksbetriebssysteme für die Cloud" (PDF). Sigplan -Hinweise (ASPLOS 13). 48 (4): 461. doi:10.1145/2499368.2451167.
  7. ^ Kaloper-Meršinjak, David; Mehnert, Hannes; Madhavapeddy, Anil; Sewell, Peter (2015). "Nicht ganz so viel TLS: Lehren zur erneuten Engineering einer Sicherheitsprotokollspezifikation und -implementierung". Verfahren des 24. Usenix Security Symposium (Usenix Security 15).
  8. ^ Madhavapeddy, Anil; Mortier, Richard; Sohan, Ripduman; Gazagnaire, Thomas; Hand, Steven; Deegan, Tim; McAuley, Derek; Crowcroft, Jon (2010). "Die Lampe drehen: Software -Spezialisierung für die Cloud" (PDF). Verfahren der 2. Usenix -Konferenz zu heißen Themen im Cloud Computing.
  9. ^ Martins, Joao; Mohamed Ahmed; Raiciu, Costin; Huici, Felipe (2013). Aktivieren Sie eine schnelle, dynamische Netzwerkverarbeitung mit ClickOs (PDF). Verfahren des zweiten ACM Sigcomm -Workshops zu heißen Themen in Software Defined Networking. p. 67. doi:10.1145/2491185.2491195. ISBN 9781450321785.
  10. ^ Kuenzer, Simon; Bădoiu, Vlad-Andrei; Lefeuvre, Hugo; Santhanam, Sharan; Jung, Alexander; Gewinn, Gaulthier; Soldani, Cyril; Lupu, Costin; Teodorescu, ştefan; Răducanu, Costi; Banu, Cristian (2021-04-21). "Unikraft: Schnell, spezialisierte Unikernels auf einfache Weise". Verfahren der 16. Europäischen Konferenz über Computersysteme. Online -Event Großbritannien: ACM: 376–394. Arxiv:2104.12721. doi:10.1145/3447786.3456248. ISBN 978-1-4503-8334-9.
  11. ^ "Just-in-Time-Beschwörung von Unikernels (v0.2)". Magnus Skjegstad. Abgerufen 30. August 2015.
  12. ^ "Zerg". Zerg - eine Instanz pro Anfrage Demo. Abgerufen 30. August 2015.
  13. ^ Madhavapeddy, Anil; Leonard, Thomas; Skjegstad, Magnus; Gazagnaire, Thomas; Blätter, David; Scott, David; Mortier, Richard; Chaudhry, Amir; Singh, Balraj; Ludlam, Jon; Crowcroft, Jon; Leslie, Ian (2015). Jitsu: Just-in-Time-Beschwörung von Unikernels (PDF). Die 12. Usenix -Konferenz über das Design und die Implementierung von Networked Systems (NSDI). ISBN 978-1-931971-218.

Externe Links