"Neden" kısmını ele alalım.
Modern bir işletim sisteminin nedenlerinden biri, birden fazla programın (işlemin) aynı anda bir sistemde çalışmasına izin vermektir. Bunu güvenli bir şekilde yapmak istiyorsanız, aşağıdakilerin gerçekleşmesi gerekir:
Muhtemelen (özel ihtiyaçlarınız yoksa) sistemdeki RAM'i sabit bir şekilde bölmek istemezsiniz - örneğin işlem başına 256 MB sabit - 2GB sistemde 8 işlemle sınırlandırır. Her bir işlemin hafızayı “sorabilmesini” ve işlem tamamlandığında geri vermesini istersiniz.
Ayrıca, G / Ç aygıtlarını aygıtlar arasında sabit bir şekilde bölmek istemezsiniz. Genelde, bellek gibi paylaşılan bir kaynak olması veya en azından yalnızca belirli zamanlarda belirli işlemlere geçici olarak özel olması gibi donanımın bir kısmının veya tamamının olmasını istersiniz. Bu, tüm işlemlerin G / Ç'yi kendi başlarına yapmayı denememelerini, G / Ç'yi zamanlamak ve koordine etmek için bir şeyden geçmelerini gerektirir. Zamanlama, çoğu G / Ç CPU'dan çok daha yavaş olduğu için önemlidir, bu nedenle CPU'nun, tek çekirdekli bir sistemde bile G / Ç beklerken diğer işlemler için çalışmasını sağlayabilirsiniz.
Yukarıdaki hakkı yapmak için, birkaç CPU donanım özelliğinden yararlanılması gerekir. Bunlardan biri MMU, diğeri korumalı mod. İki işletim sistemi iki veya daha fazla işletim sistemini çalıştırmak için bu donanım özelliklerini işbirliği içinde paylaşabilir mi?
Elbette, ancak donanımda bir işletim sisteminin diğer işletim sisteminin belleğinin her tarafında durmasını engelleyecek hiçbir şey yok. CPU çekirdek modundaysa (sadece bir çekirdek modu vardır), herhangi bir kod her şeyi yapabilir. Bir işletim sistemindeki kodun diğer işletim sisteminin kodunu veya verilerini çalıştırması% 100 mümkündür. Ve işletim sistemlerinin geçmişte güvenlik açıkları olduğunu ve gelecekte daha fazlasına sahip olacağını biliyoruz. Bu yüzden güvenlik için çok kötü.
Şimdi, bunun üzerine başka bir "katman" koyarsanız ve birden fazla işletim sistemi için donanım desteğine ihtiyacınız varsa, sorun olmaz mıydı? Donanım sanallaştırma özelliklerinin yaptığı tam olarak budur, birden fazla çalışan işletim sistemi arasına bir donanım engeli koyarlar ve bunlar için hipervizör adı verilen üst düzey bir "arayüz" vardır. Sadece bir hipervizör olabilir. Ve evet, herhangi bir işletim sistemi altında çalışan süreçler G / Ç yapmak için üç katmandan geçmelidir (işlem - yerel çekirdek - hiper yönetici)