Unikernel - Unikernel

Geleneksel bir işletim sistemi yığını ile bir MirageOS unikernel'in karşılaştırılması

Bir Unikernel uzmanlaşmıştır, tek adres alanı kullanılarak oluşturulmuş makine görüntüsü kütüphane işletim sistemleri.[1][2] Bir geliştirici, modüler bir yığından, uygulamalarının çalışması için gereken işletim sistemi yapılarına karşılık gelen minimum kitaplık kümesini seçer. Bu kitaplıklar daha sonra uygulama ve konfigürasyon koduyla derlenir ve doğrudan bir sistem üzerinde çalışan kapalı, sabit amaçlı görüntüler (unikernels) oluşturur. hipervizör veya donanım Linux veya Windows gibi araya giren bir işletim sistemi olmadan.

Bu tür ilk sistemler Ekzokernel ve Nemesis 1990'ların sonunda.

Tasarım

Bir kütüphane işletim sisteminde, koruma sınırları en düşük donanım katmanlarına itilir ve sonuçta:

  1. donanımı çalıştırmak veya ağ protokollerini konuşmak için gerekenler gibi mekanizmaları uygulayan bir dizi kitaplık;
  2. uygulama katmanında erişim denetimi ve izolasyonu uygulayan bir dizi ilke.

Kitaplık işletim sistemi mimarisinin, geleneksel işletim sistemi tasarımlarına kıyasla çeşitli avantajları ve dezavantajları vardır. Avantajlarından biri, yalnızca tek bir adres alanı olduğu için, verileri kullanıcı alanı ve çekirdek alanı arasında taşımak için tekrarlanan ayrıcalık geçişlerine gerek olmamasıdır. Bu nedenle, bir kütüphane işletim sistemi, kullanıcı modu ile çekirdek modu arasında geçiş yapmak zorunda kalmadan donanıma doğrudan erişime izin vererek gelişmiş performans sağlayabilir (geleneksel bir çekirdekte bu geçiş tek bir TRAP talimatından oluşur[3] ve bağlam anahtarı ile aynı değildir[4]). Kullanıcı alanı ve çekirdek alanı arasında veri kopyalama ihtiyacının ortadan kaldırılmasıyla performans kazanımları gerçekleştirilebilir, ancak bu aynı zamanda Sıfır kopya geleneksel işletim sistemlerindeki aygıt sürücüleri.

Bir dezavantaj, ayrım olmadığı için, bir kitaplık işletim sisteminde birden çok uygulamayı yan yana çalıştırmaya çalışmak, ancak güçlü kaynak izolasyonu ile karmaşık hale gelebilmesidir.[5] Ek olarak, kitaplık işletim sisteminin çalıştığı belirli donanımlar için aygıt sürücüleri gereklidir. Donanım hızla değiştiğinden, güncel kalmak için sürücülerin düzenli olarak yeniden yazılması yükü yaratır.

işletim sistemi sanallaştırma emtia donanımındaki bu dezavantajların bazılarının üstesinden gelebilir. Modern hipervizör sanal makinelere CPU zamanı ve güçlü bir şekilde izole edilmiş sanal cihazlar sağlar. Sanal makine olarak çalışan bir kitaplık işletim sistemi, yalnızca bu kararlı sanal donanım aygıtları için sürücüleri uygulamaya ihtiyaç duyar ve gerçek fiziksel donanımı çalıştırmak için hiper yöneticiye güvenebilir. Ancak, geleneksel bir işletim sisteminin hizmetlerini değiştirmek için protokol kitaplıklarına hala ihtiyaç vardır. Bu protokol kitaplıklarını oluşturmak, modern bir kitaplık işletim sistemi uygularken işin büyük kısmının yattığı yerdir.[1] Ek olarak, bir hipervizöre güvenmek, tek kanal ve hiper yönetici arasında geçiş yaparken ve hipervizör sanal cihazlarına ve bu cihazlardan veri aktarırken performans ek yüklerini yeniden başlatabilir.

Dağıtılan kod miktarını azaltarak, tek düğümler zorunlu olarak olası saldırı yüzeyi ve bu nedenle gelişmiş güvenlik özelliklerine sahiptir.[6][7]

Unikernellerin, geleneksel bir işletim sistemi kullanan eşdeğer kod tabanlarının boyutunun yaklaşık% 4'ü kadar olduğu gösterilmiştir.[8]

Yapılarının doğası gereği, cihaz sürücüleri ve uygulama mantığı üzerinden tüm sistem optimizasyonunu gerçekleştirmek ve böylece uzmanlaşmayı geliştirmek mümkündür.[9][10]

Unikernel'lerin, talepler zaman aşımına uğramadan önce gelen isteklere zamanında yanıt vermek için son derece hızlı bir şekilde önyüklendiği düzenli olarak gösterilmiştir.[11][12][13]

Unikernel'ler, hizmet odaklı veya mikro hizmetler yazılım mimarileri.

Yüksek derecede uzmanlaşma, unikernellerin, geleneksel işletim sistemlerinin kullanıldığı genel amaçlı, çok kullanıcılı bilgi işlem için uygun olmadığı anlamına gelir. Ek işlevsellik eklemek veya derlenmiş bir tekerneli değiştirmek genellikle mümkün değildir ve bunun yerine yaklaşım, istenen değişikliklerle yeni bir tek çatı oluşturmak ve dağıtmaktır.

Örnekler

Değişen olgunluk derecelerinde olan tek çatı inşa etmek için bir dizi yeni yaklaşım vardır.

  • ClickOS[10][14] açık kaynak sanallaştırmaya dayalı yüksek performanslı, sanallaştırılmış bir yazılım orta kutu platformudur. Erken performans analizi, ClickOS sanal makinelerinin küçük (5MB) olduğunu, hızlı bir şekilde önyüklendiğini (20 milisaniye kadar kısa bir sürede), az gecikme (45 mikrosaniye) eklediklerini ve aynı anda 100'den fazla çalıştırılabildiğini, aynı zamanda ucuz bir emtia sunucusunda 10 Gb'lik bir boruyu doyururken gösterdiğini gösteriyor.
  • Clive[15] dağıtılmış ve bulut bilişim ortamlarında çalışmak üzere tasarlanmış bir işletim sistemidir. Git programlama dili.
  • Drawbridge, uygulama korumalı alanı için yeni bir sanallaştırma biçiminin araştırma prototipidir. Drawbridge, iki temel teknolojiyi birleştirir: minimum çekirdek API yüzeyine sahip işlem tabanlı bir izolasyon kabı olan bir picoprocess ve bir picoprocess içinde verimli bir şekilde çalışmak üzere aydınlatılmış bir Windows sürümü olan bir kütüphane işletim sistemi.[16]
  • Graphene Library OS[5][17] çok işlemli, sunucu tipi veya kabuk tipi eski uygulamaların güvenliğini sağlamaya odaklanan Linux uyumlu bir kitaplık işletim sistemidir. Graphene, basit boru benzeri akışlar üzerinden koordine edilen süreçler arası soyutlamalar (örneğin sinyaller, mesaj kuyrukları, semaforlar) ile birden çok picoprocesses boyunca çok işlemli bir uygulamayı kapsar. Birden fazla güvenlik ilkesine sahip uygulamalar için, Graphene dinamik olarak güvenli olmayan bir picoprocessi sandbox yapabilir.
  • Haskell Hafif Sanal Makine (HaLVM ) bir limanıdır Glasgow Haskell Derleyici geliştiricilerin doğrudan üzerinde çalışabilen üst düzey, hafif VM'ler yazmasına olanak tanıyan araç paketi Xen hipervizör.
  • HermitCore[18] HPC ve bulut ortamları için ölçeklenebilir ve öngörülebilir bir çalışma zamanı davranışını hedefleyen yeni bir tek kanaldır. HermitCore destekler C, C ++, Fortran, Git, Pthreads, OpenMP ve iRCCE[19] mesaj geçen kütüphane olarak. Çoklu çekirdek yaklaşımını genişleten ve bunu unikernel özellikleriyle birleştiren bir araştırma projesidir. HermitCore doğrudan KVM hiper yönetici ve aynı zamanda yerel olarak x86_64 mimarisinde.
  • HermiTux[20] HermitCore'un bir evrimidir ve unikernels değiştirilmemiş Linux uygulama ikili dosyaları olarak çalışmayı amaçlayan bir araştırma projesidir.
  • Dahil Et bulut hizmetleri için minimal, hizmet odaklı, açık kaynaklı, dahil edilebilir bir kitaplık işletim sistemidir. Sanal donanım üzerinde C ++ kodunu çalıştırmak için tasarlanmıştır.
  • LING[21] temel alan bir unikerneldir Erlang / OTP ve .beam dosyalarını anlar. Geliştiriciler, Erlang'da kod oluşturabilir ve bunu LING unikernelleri olarak dağıtabilir. LING, vektör dosyalarının çoğunu kaldırır, yalnızca üç harici kitaplık kullanır ve OpenSSL kullanmaz.
  • MirageOS[22] çeşitli bulut bilişim ve mobil platformlarda güvenli, yüksek performanslı ağ uygulamaları için tek düğümler oluşturan temiz bir kitaplık işletim sistemidir. Şimdi 100'den fazla MirageOS kütüphanesi var[23] ve daha geniş kapsamda giderek artan sayıda uyumlu kitaplık OCaml ekosistem.
  • OSv Cloudius Systems'ın bulut sanal makineleri için özel olarak tasarlanmış yeni bir işletim sistemidir.[24] Bir saniyeden daha kısa sürede başlatılabilen OSv, sıfırdan tüm hiper yönetici üzerinde tek bir uygulama yürütmek üzere tasarlanmıştır ve bu da üstün performans, hız ve zahmetsiz yönetimle sonuçlanır. OSv değiştirilmeden çalışabilir Linux çalıştırılabilir dosyalar (bazı sınırlamalarla) ve destek C, C ++, JVM, Yakut ve Node.js uygulama yığınları mevcuttur.
  • Rumprun mevcut değiştirilmemiş olarak çalıştırmayı sağlayan bir yazılım yığınıdır. POSIX yazılım bir unikernel olarak. Rumprun birden fazla platformu destekler KOL hipervizörlere donanım, örneğin Xen. Dayanmaktadır NetBSD kıç çekirdeği dosya sistemleri, POSIX sistem çağrı işleyicileri, PCI aygıt sürücüleri, SCSI protokol yığını, virtio ve bir TCP / IP yığını gibi ücretsiz, taşınabilir, bileşenlere ayrılmış, çekirdek kalitesinde sürücüler sağlar.[25]
  • Runtime.js JavaScript sanal makinesi üzerinde çalışan bulut için açık kaynaklı bir kitaplık işletim sistemidir, bir uygulama ile paketlenebilir ve hafif ve değişmez bir sanal makine görüntüsü olarak dağıtılabilir. Runtime.js, V8 Javascript motoru ve şu anda destekliyor QEMU /KVM hipervizör.
  • Nano, QEMU /KVM ve Xen hipervizörler. İsteğe bağlı ELF ikili dosyalarını yükleyebilir ve oluşturucu / orkestratör tarafından uygulanır "OPS".
  • TamaGo diğer bileşenlere veya programlama dillerine doğrudan veya dolaylı bağımlılık olmadan Go unikernel'lerinin oluşturulmasını destekleyen çıplak metal ARM SoC tabanlı kartlarda ipoteksiz Go uygulamalarının derlenmesini ve yürütülmesini sağlayan bir çerçevedir.
  • Unikraft: Unikraft'ın üst düzey hedefi, günümüzde böyle bir unikernel oluşturmanın gerektirdiği zaman alıcı, uzman çalışmasına ihtiyaç duymadan belirli uygulamaları hedefleyen unikerneller oluşturabilmektir. Unikraft'ın ek bir amacı (veya umudu), unikernel geliştirmeyle ilgilenen tüm geliştiricilerin şu anda olduğu gibi farklı kod tabanlarına sahip bağımsız projeler üzerinde çalışmak yerine kitaplıklar sağlayarak katkıda bulunmalarıdır.

Ayrıca bakınız

Referanslar

  1. ^ a b "Unikernels: Sanal Kütüphane İşletim Sisteminin Yükselişi". Alındı 31 Ağustos 2015.
  2. ^ "Unikernel.org". Unikernel.org. Alındı 1 Aralık 2015.
  3. ^ Tanenbaum, Andrew S. (2008). Modern İşletim Sistemleri (3. baskı). Prentice Hall. pp.50 –51. ISBN  978-0-13-600663-3. . . . neredeyse tüm sistem çağrıları, bir kütüphane prosedürü çağırarak C programlarından çağrılır. . . Kütüphane prosedürü. . . kullanıcı modundan çekirdek moduna geçmek ve yürütmeyi başlatmak için bir TRAP komutu yürütür. . .
  4. ^ Bağlam anahtarı # Kullanıcı ve çekirdek modu değiştirme
  5. ^ a b Chia-Che, Tsai; Arora, Kumar-Saurabh; Bandi, Nehal; Jain, Bhushan; Jannen, William; John, Jitin; Kalodner, Harry; Kulkarni, Vrushali; Oliviera, Daniela; Porter, Donald E. (2014). Çok İşlemli Uygulamalar için Kütüphane İşletim Sistemlerinin İşbirliği ve Güvenlik İzolasyonu (PDF). Dokuzuncu Avrupa Bilgisayar Sistemleri Konferansı Bildirileri (EuroSys). s. 1–14. CiteSeerX  10.1.1.589.1837. doi:10.1145/2592798.2592812. ISBN  9781450327046.
  6. ^ "Unikernels İnternet Güvenliğini Neden İyileştirebilir?". Nisan 2015. Alındı 31 Ağustos 2015.
  7. ^ Madhavapeddy, Anıl; Mortier, Richard; Charalampos, Rotsos; Scott, David; Singh, Balraj; Gazagnaire, Thomas; Smith, Steven; Hand, Steven; Crowcroft, Jon (Mart 2013). "Unikernels: Bulut için Kütüphane İşletim Sistemleri" (PDF). SİGPLAN Bildirimleri (ASPLOS 13). 48 (4): 461. doi:10.1145/2499368.2451167.
  8. ^ Kaloper-Meršinjak, David; Mehnert, Hannes; Madhavapeddy, Anıl; Sewell, Peter (2015). "Pek Bozulmamış TLS: Bir Güvenlik Protokolü Spesifikasyonunun ve Uygulamasının Yeniden Yapılandırılmasına İlişkin Dersler". 24. USENIX Güvenlik Sempozyumu Bildirileri (USENIX Security 15).
  9. ^ Madhavapeddy, Anıl; Mortier, Richard; Sohan, Ripduman; Gazagnaire, Thomas; Hand, Steven; Deegan, Tim; McAuley, Derek; Crowcroft, Jon (2010). "LAMP'yi Düşürmek: Bulut için Yazılım Uzmanlığı" (PDF). 2Nd USENIX Bulut Bilişimde Güncel Konular Konferansı Bildirileri.
  10. ^ a b Martins, Joao; Muhammet Ahmet; Raiciu, Costin; Huici Felipe (2013). ClickOS ile Hızlı, Dinamik Ağ İşlemlerini Etkinleştirme (PDF). İkinci ACM SIGCOMM Çalıştayı, Yazılım Tanımlı Ağ Kurmada Güncel Konular Üzerine Bildiriler. s. 67. doi:10.1145/2491185.2491195. ISBN  9781450321785.
  11. ^ "Tam Zamanında Unikernels Çağrısı (v0.2)". Magnus Skjegstad. Alındı 30 Ağustos 2015.
  12. ^ "Zerg". Zerg - istek başına bir örnek gösterimi. Alındı 30 Ağustos 2015.
  13. ^ Madhavapeddy, Anıl; Leonard, Thomas; Skjegstad, Magnus; Gazagnaire, Thomas; Çarşaflar, David; Scott, David; Mortier, Richard; Chaudhry, Amir; Singh, Balraj; Ludlam, Jon; Crowcroft, Jon; Leslie Ian (2015). Jitsu: Unikernellerin Tam Zamanında Çağrılması (PDF). Ağa Bağlı Sistem Tasarımı ve Uygulaması (NSDI) 12. USENIX Konferansı. ISBN  978-1-931971-218.
  14. ^ "ClickOS ve Ağ İşlev Sanallaştırma Sanatı" (PDF). Alındı 31 Ağustos 2015.
  15. ^ "Clive İşletim Sistemi" (PDF). Alındı 31 Ağustos 2015.
  16. ^ "Asma Köprü". Microsoft Araştırma. Alındı 30 Ağustos 2015.
  17. ^ "Graphene library OS". Stony Brook Üniversitesi. Alındı 31 Ocak 2016.
  18. ^ "HermitCore - Aşırı Ölçekli Hesaplama için Bir Unikernel". Alındı 8 Haziran 2016.
  19. ^ "iRCCE: Intel Tek Çipli Bulut Bilgisayarı için RCCE İletişim Kitaplığına Engellemeyen Bir İletişim Uzantısı" (PDF). Alındı 8 Haziran 2016.
  20. ^ Olivier, Pierre; Chiba, Daniel; Lankes, Stefan; Min, Changwoo; Ravindran, Binoy (2019). "İkili uyumlu bir unikernel". 15. ACM SIGPLAN / SIGOPS Uluslararası Sanal Yürütme Ortamları Konferansı Bildirileri - VEE 2019. New York, New York, ABD: ACM Press: 59–73. doi:10.1145/3313808.3313817. ISBN  978-1-4503-6020-3.
  21. ^ "Erlang on Xen: süper elastik bulutların kalbinde". Alındı 31 Ağustos 2015.
  22. ^ "MirageOS: Tip açısından güvenli, modüler sistemler oluşturmak için bir programlama çerçevesi". Alındı 31 Ağustos 2015.
  23. ^ "MirageOS TROVE". Alındı 31 Ağustos 2015.
  24. ^ Kivity, Avi; Costa, Glauber; Enberg, Pekka; Har'El, Nadav; Marti, Don; Zolotarov, Vlad (Haziran 2014). "OSv: İşletim Sistemini Sanal Makineler için Optimize Etme" (PDF). 2014 USENIX Yıllık Teknik Konferansı.
  25. ^ "Kıç Çekirdekler". rumpkernel.org. Alındı 31 Ağustos 2015.

Dış bağlantılar