托管操作系统可能某种程度上类似于微内核-您以安全为名牺牲了性能。
可能存在类似的问题,因为它需要将代码分为两部分:
- 用C /汇编语言编写的低级内核
- 用托管语言编写的更高级别的内核
根据安全地输入/离开HL语言的成本,它可能会产生与微内核类似的问题-可能会更快(离开HL的速度要比全上下文切换要快,但是IIRC(例如JNI)会非常昂贵)。
用户应用程序可能还需要单独的上下文,因为许多应用程序是在其他平台(例如C,Java或.Net)上编写的。在相同的情况下,应用程序可能受CPU限制(编译器,音乐转换器等),甚至需要汇编程序优化才能以足够的速度执行。此外-以HL语言实现的MMU保护可能不会像硬件那样快,即使它可能需要进行更精细的调整。
HL语言也不擅长底层操作。尽管通常使用“良好”编码实践来设计软件,但并不需要这样做。我不认为它们至少可以防止某些错误,因为内核有时需要手动处理内存。
最后,我认为这样的操作系统不需要完整的VM。由于无法使用原则上的“一次编译运行”构建操作系统,因此,HL语言(甚至使用GC&co。)将是更好的选择。
例如,您突然使任意指针过时了。
操作系统本质上是低级的。您不仅要传递给硬件“任意指针”,而且还要传递物理地址,然后传递给虚拟地址。某些DMA只能处理前16MiB的内存。尽管这样的OS可以简化很多,但它不会摆脱地址。
如果编写得当,您将摆脱大多数现代OS当前拥有的大量遗留问题。
- 有很多旧式硬件。然后是软件。您首先要在实模式下启动,然后启用A20门(不问)跳到保护模式,然后跳到长模式。
- API / ABI兼容性很好。假设他们已经编写了这样的操作系统-您将在其上运行什么?Firefox-不行(使用WinAPI的C和C ++)。Java-可能需要通过ikvm进行移植或有一些小问题-除非它无法使用JNI。我猜MSSQL(当然可以肯定是Oracle,MySQL,Postgresql ...)不是用托管语言编写的,因此它不适用于服务器。
- 甚至Bug兼容性也是“好”。AFAIK MS花费大量时间只是测试和检查某些软件是否没有以智能(读取错误)的方式使用API。就像
free
Windows实际开始释放内存时在其后使用指针的问题一样。
我想它将与微内核同时流行。