Hypervisor

Bir hiper yönetici veya sanal makine monitörü (VMM), sanal makineleri oluşturan ve çalıştıran bilgisayar yazılımı , bellenim veya donanımdır .  Bir hipervizörün bir veya daha fazla sanal makineyi çalıştırdığı bir bilgisayara ana makine adı verilir ve her sanal makineye konuk makinesi adı verilir.  Hiper yönetici, konuk işletim sistemlerini sanal işletim platformuyla sunar ve konuk işletim sistemlerinin yürütülmesini yönetir.  Çeşitli işletim sistemlerinin birden fazla örneği sanallaştırılmış donanım kaynaklarını paylaşabilir: örneğin, Linux , Windows ve macOS örneklerinin tümü tek bir fiziksel x86 makinede çalışabilir.  Konuk işletim sistemleri aynı çekirdeğe sahip farklı Linux dağıtımları gibi kullanıcı alanında farklılık gösterebilse de, bu, tüm örneklerin (genellikle kapsayıcılar olarak adlandırılır) tek bir çekirdeği paylaşması gereken işletim sistemi düzeyinde sanallaştırma ile çelişir.
Hipervizör terimi, bir işletim sisteminin çekirdeği için geleneksel bir terim olan bir süpervizör çeşididir : hipervizör, süpervizörünün süpervizörüdür, süper güçlü bir değişken olarak kullanılanhiperile - r Super- .  Bu terim 1970 dolaylarındadır; önceki CP/CMS (1967) sisteminde bunun yerine Kontrol Programı terimi kullanılmıştır.

Anabilgisayar kökenleri

Tam sanallaştırma sağlayan ilk hipervizörler, Ocak 1967'de üretime başlayan ve IBM'in CP/CMS işletim sisteminin ilk versiyonu olan test aracı SIMMON ve IBM'in araştırma sistemi CP-40 idi. CP-40, sanallaştırmaya izin veren önemli bir özellik olan Dynamic Address Translation'ı desteklemek için IBM Cambridge Scientific Center'da değiştirilmiş bir S/360-40 üzerinde çalıştı. Bu süreden önce, bilgisayar donanımı yalnızca birden fazla kullanıcı uygulamasının aynı anda çalışmasına izin verecek kadar sanallaştırılmıştı (bkz. CTSS ve IBM M44/44X). CP-40 ile donanımın denetleyici durumu da sanallaştırılarak birden fazla işletim sisteminin aynı anda ayrı sanal makine bağlamlarında çalışmasına izin verildi.
Programcılar yakın zamanda, tam sanallaştırma yapabilen ilk üretim bilgisayarı olan IBM System/360-67 için CP-40'ı (CP-67 olarak) uyguladılar .IBM, bu makineyi ilk kez 1966'da gönderdi; sanal bellek için sayfa çeviri tablosu donanımı ve I/O ve interrupt işlemesi de dahil olmak üzere tüm çekirdek görevlerinin tam olarak sanallaştırılmasını sağlayan diğer teknikleri içeriyordu.(“Resmi” işletim sistemi, kötü niyetli TSS/360'ın tam sanallaştırma kullanmadığına dikkat edin.) Hem CP-40 hem de CP-67, 1967'de üretime başladı. CP/CMS ,IBM müşterilerine 1968'den 1970'lerin başlarına, desteksiz olarak kaynak kod biçiminde ulaşılabilirdi.
CP/CMS, IBM'in ana bilgisayarları için sağlam zaman paylaşımı sistemleri kurma girişiminin bir parçası oldu. Aynı anda birden fazla işletim sistemi çalıştırarak, hiper yönetici sistem sağlamlığını ve dengesini arttırdı: Bir işletim sistemi çökse bile, diğerleri kesintisiz çalışmaya devam ederdi. Aslında, bu bile işletim sistemlerinin beta veya deneysel sürümlerinin —yeni donanımlar için bile olsa— kararlı ana üretim sistemini tehlikeye atmadan ve maliyetli ek geliştirme sistemleri gerektirmeden konuşlandırılıp hata ayıklanmasına izin verdi.
IBM, 1970 yılında System/370 serisini herhangi bir sanallaştırma özelliği olmadan duyurdu, ancak Ağustos 1972 Gelişmiş İşlev duyurusunda sanal bellek desteği ekledi. Takip eden tüm sistemlerinde (zSeries hattı gibi tüm modern IBM anabilgisayarları, 1960'lar dönemi olan IBM S/360 hattıyla geriye dönük uyumluluğu koruyor) sanallaştırma özelliği mevcut. 1972 duyurusu, S/370 için CP/CMS'nin bir yeniden uygulaması olan VM/370'ı da içeriyordu. CP/CMS'den farklı olarak, IBM bu sürüm için destek sağladı (yine de birkaç sürüm için kaynak kod biçiminde dağıtılmış olmasına rağmen).VM, donanım arayüzlerinin sadece bazılarının değil, hepsinin sanallaştırıldığını vurgulayarak Sanal Makine anlamına gelir. Hem VM hem de CP/CMS, üniversiteler, kurumsal kullanıcılar ve zaman paylaşımı sağlayıcılarının yanı sıra IBM dahilinde erken kabul görmüş ve hızlı bir gelişim göstermişlerdir. Kullanıcılar, modern açık kaynaklı projelerde görülen trendleri öngörerek devam eden gelişimde aktif rol oynadılar.Bununla birlikte, bir dizi tartışmalı ve acı savaşta, zaman paylaşımı, IBM'in politik mücadelesiyle toplu işleme için kaybedilmiş ve VM, yıllar boyunca IBM'in "diğer" ana bilgisayar işletim sistemi olarak kaldı ve MVS'yi kaybetti. 2000'den itibaren z/VM ürünü olarak, örneğin zSeries Linux için bir platform olarak popülerlik ve desteğin yeniden dirilişini yaşadı.
Yukarıda belirtildiği gibi, VM kontrol programı, sanal bir makinede kullanılan DIAG ("Diagnose", opcode x'83 ') komutlarını arayarak alan bir hipervizör çağrısı işleyicisi içerir. Bu, dosya sistemi erişiminin ve diğer işlemlerin hızlı yoldan sanallaştırılmamış olarak yürütülmesini sağlar (DIAG, normal programlamada kullanılmayan modele bağlı ayrıcalıklı bir talimattır ve dolayısıyla sanallaştırılmaz). Bu nedenle "ana bilgisayar" işletim sistemine bir sinyal olarak kullanılabilir). CP/CMS sürüm 3.1'de ilk kez uygulandığında, DIAG'ın kullanımı, Sistem/360 Supervisor Call instruction (SVC) benzer olan ancak sistemin SVC'nin sanallaştırılmasını değiştirmeyi veya genişletmeyi gerektirmeyen bir işletim sistemi arayüzü sağladı.
1985 yılında IBM, mantıksal bölümleri (LPAR) yönetmek için PR/SM hipervizörünü tanıttı.

x86 sistemleri

2005'ten itibaren CPU satıcıları, ürünlerine donanım sanallaştırma yardımı eklediler; örneğin: Intel VT-x (Vanderpool kodlu) ve AMD-V (Pacifica kodlu).
Alternatif bir yaklaşım, konuk işletim sisteminin, hipervizörün simüle ettiği makine I/O talimatlarını uygulamak yerine, hipervizöre sistem çağrıları yapmak için değiştirilmesini gerektirir.Buna Xen'de paravirtualization, Parallels Workstation'da "hiper çağrı" ve IBM'in VM'sinde "DIAGNOSE kodu" denir. Hepsi gerçekten aynı şey, altta yatan hiper denetçiye bir sistem çağrısı. Mach ve L4 gibi bazı mikro çekirdekler, konuk işletim sistemlerinin "paravirtualization"'a mümkün olacak şekilde yeterince esnektir.

Gömülü sistemler

Gömülü sistemleri ve belirli gerçek zamanlı işletim sistemi (RTOS) ortamlarını hedef alan gömülü hiper denetleyiciler , sağlamlık, güvenlik ve gerçek zamanlı özellikler dahil olmak üzere masaüstü ve kurumsal sistemlere kıyasla farklı gereksinimlerle tasarlanmıştır.  Pek çok gömülü sistemin, özellikle de pille çalışan mobil sistemlerin kaynak kısıtlı niteliği, küçük bellek boyutu ve düşük ek yük için başka bir gereklilik getirir.  Son olarak, PC dünyasında x86 mimarisinin yaygınlığının aksine, gömülü dünya daha geniş çeşitlilikte mimariler ve daha az standartlaştırılmış ortamlar kullanıyor.  Sanallaştırma desteği, bellek koruması (bir bellek yönetim birimi veya en azından bir bellek koruma birimi şeklinde) ve çoğu mikrodenetleyiciyi dışlayan kullanıcı modu ile ayrıcalıklı mod arasında bir ayrım gerektirir.  Bu hala x86 , MIPS , ARM ve PowerPC'yi orta ila üst seviye gömülü sistemler üzerinde yaygın olarak kullanılan mimariler olarak bırakıyor.
Gömülü sistem üreticileri genellikle işletim sistemlerine yönelik kaynak koduna sahip olduklarından, bu alanda tam sanallaştırmaya daha az ihtiyaç duyarlar.  Bunun yerine, paravirtüelleşmenin performans avantajları, bunu genellikle tercih edilen sanallaştırma teknolojisi yapar.  Yine de, ARM ve MIPS yakın zamanda bir IP seçeneği olarak tam sanallaştırma desteği ekledi ve bunu ARM Cortex-A15 MPCore ve ARMv8 EL2 gibi en son teknolojiye sahip işlemcilerine ve mimari sürümlerine dahil etti.
Sunucu/masaüstündeki sanallaştırma ve gömülü ortamlar arasındaki diğer farklar arasında, sanal makineler arasında kaynakların verimli bir şekilde paylaşılması, yüksek bant genişliği, düşük gecikmeli VM'ler arası iletişim, zamanlamanın ve güç yönetiminin global bir görünümü ve bilgi akışlarının ayrıntılı bir şekilde kontrol edilmesi gerekliliği vardır.

Güvenlik uygulamaları

Hyperjacking olarak bilinen, işletim sisteminin altına hiper yönetici olarak kendilerini yükleyen,  kötü amaçlı yazılım ve rootkitler tarafından hipervizör teknolojisinin kullanılması, kötü amaçlı yazılımın işletim sisteminin herhangi bir işlemini (bir parola giren biri gibi) işlemlerini engelleyebileceği için tespit etmelerini zorlaştırabilir. kötü amaçlı yazılımdan koruma yazılımı mutlaka onu algılar (kötü amaçlı yazılım tüm işletim sisteminin altında çalıştığı için). Konseptin uygulamasının, SubVirt laboratuvarının kök setinde (Microsoft ve University of Michigan araştırmacıları birlikte geliştirilmiştir) ve Blue Pill malware paketinde gerçekleştiği iddia edildi. Bununla birlikte, bu tür iddialar, hiper yönetici tabanlı bir kök setinin varlığını tespit etmenin mümkün olacağını iddia eden diğerleri tarafından tartışılmıştır.
2009 yılında, Microsoft ve Kuzey Carolina Eyalet Üniversitesi'nden araştırmacılar, çekirdek modu kök kitlelerine karşı genel koruma sağlayabilen Hooksafe adlı bir hiper yönetici katmanı anti-rootkit sergilediler.