Yönetilen işletim sistemleri muhtemelen bir şekilde mikro çekirdekler gibidir - güvenlik adına performansı feda edersiniz.
Kodu 2 parçaya bölmeyi gerektirdiğinden benzer sorunlar olabilir:
- C / montajcıda yazılmış düşük düzeyli çekirdek
- Yönetilen dilde yazılmış üst düzey çekirdek
Güvenli bir şekilde HL diline girme / bırakma maliyetine bağlı olarak, mikro çekirdekler gibi benzer problemler oluşturabilir - muhtemelen biraz daha hızlı (HL'yi bırakmak tam bağlam anahtarından daha hızlıdır, ancak IIRC, örneğin JNI oldukça pahalıdır).
Diğer uygulamalarda (örneğin C, Java veya .Net) birçok uygulama yazıldığı için kullanıcı uygulamasının da muhtemelen ayrı bağlamlara ihtiyacı olacaktır. Aynı durumlarda uygulamalar CPU'ya bağlı olabilir (derleyiciler, müzik dönüştürücüler vb.) Ve yeterli hızda çalışmak için montajcı optimizasyonuna bile ihtiyaç duyulabilir. Ayrıca - HL dilinde uygulanan MMU koruması, çok daha ince ayarlanmış olsa bile, muhtemelen donanım kadar hızlı olmayacaktır.
Ayrıca HL dili düşük seviyeli işlemlerde yetkin değildir. Yazılım genellikle "iyi" kodlama uygulamasıyla tasarlanırken, sürücülere gerek yoktur. En azından bazı hatalara karşı koruyacaklarını düşünmüyorum çünkü çekirdekler bazen elle yönetim gerektiriyor.
Son olarak böyle bir işletim sisteminin tam VM gerektireceğini düşünmüyorum. İşletim sistemi, her yerde bir kez çalıştır-derle ilkesi ile inşa edilemediğinden HL dilleri (GC & co ile bile) daha iyi bir aday olacaktır.
Örneğin, birdenbire keyfi işaretçileri geçersiz hale getirirsiniz.
İşletim sistemi doğal olarak düşük seviyelidir. Donanıma yalnızca 'rasgele işaretçi' değil, sanal adres yerine fiziksel adres de geçiyorsunuz. Bazı DMA yalnızca ilk 16MiB belleği işleyebilir. Böyle bir işletim sistemi çok basitleştirebilir, ancak adreslerden kurtulamaz.
Ve iyi yazılmışsa, çoğu modern işletim sisteminin sahip olduğu bir ton eski kabuktan kurtulursunuz.
- Bir sürü eski donanım var. Yazılımdan çok daha fazlası. İlk önce gerçek modda başlıyorsunuz, sonra A20 geçidini (sorma) korumalı moda ve uzun moda geçebiliyorsunuz.
- API / ABI uyumluluğu iyidir. Böyle bir işletim sistemi yazdıklarını söyleyin - üzerinde ne çalıştırırsınız? Firefox - hayır (WinAPI kullanarak C ve C ++). Java - JNI kullanmadıkça muhtemelen taşınması veya ikvm yoluyla bazı küçük sorunları olması gerekiyordu. Sanırım MSSQL (ve kesin olarak Oracle, MySQL, Postgresql ...) yönetilen dilde yazılmış değil, bu yüzden sunucu için uygun olmaz.
- Hata uyumluluğu bile "iyi". AFAIK MS, bazı yazılımların akıllı (yanlış okuma) şekilde API kullanmadığını test etmek ve kontrol etmek için çok zaman harcıyor.
free
Windows gerçekten belleği boşaltmaya başladığında işaretçi kullanma sorunu gibi .
Sanırım mikro çekirdeklerle aynı zamanda popülerlik kazanacak.