这是一个非常多的理论问题,但是......
有多少操作系统可以用Python,Ruby,Perl或Lisp,Haskell等语言编写?
似乎很多像init.d这样的东西可以用脚本语言来完成.其中一个防火墙设备操作系统(m0n0wall)使用PHP进行系统配置(包括启动时).有人可能会说"emacs是一个操作系统,主要是用Lisp编写的".
当然有些东西必须是assembly/C,但有多少可能是常规的.py/rb/.pl/.el/.hk文件..?它可能没有最好的性能,但到目前为止,它将是迄今为止最容易修改的操作系统......
从技术上讲,如果你编写一个编译器就可以了.操作系统已经用Java(JNode),.NET(MOSA,Singularity,SharpOS,Cosmos),Haskell(HOUSE),Python(Unununium)等完成.
编辑:我看到很多人都在谈论最低级别是一个无法完成的领域; 这不是真的.
没有理由不能扩展X语言的编译器来处理任何低级操作并将其暴露给语言.所有功能都可以通过任何语言实现,只需选择合适的工具即可.有时这是Python,有时这是C,有时这是汇编.
看看像Cosmos和SharpOS这样的项目,看看纯粹的高级OS Done Right(TM).
我很惊讶没人提到Java硬件.它应该是我们通过创建更高级别的处理器来进一步推动硬件发展的灵感.
还有一个我刚刚发现的名为" Pycorn "的项目.
如果有一个Python字节码处理器,那么用100%Python制作一个快速操作系统是可行的.处理器可以实现整个CPython字节码,或者与Python语言兼容的任何东西(但不是C模块!).处理器必须处理引用计数,类和对象.对于dicts的原生哈希将非常有用,Python目前在软件中需要的所有复杂数据结构操作都应该完全用硬件完成.没有指针的概念,我认为这是构建这样一个处理器的主要动机,因为它不可能粉碎堆栈.
一切都是对象!内核本身会调用内存对象上的方法,尽管你不需要触及它,因为硬件无论如何都会处理分配和垃圾收集.中断处理程序可以简单地设置为python方法.MSR,高速缓存,调试寄存器和I/O端口是对象.
有一个关于在FPGA上实现的Python一个有趣的讨论在这里.
另一方面,(关于非Python处理器上的Python O/S)声称你不能进行内联汇编Pythonic,从抽象中发出汇编非常简单,例如:
asm = MetaASM() asm.r1 = 1234 asm.r2 = r1 + 5 asm.io.out(r1)
您可以在必要时切换到架构特定的程序集以满足性能需求或体系结构特定的操作/注册
asm = ASM("IA-32") asm.xor(asm.eax, asm.eax) asm.cr0 = asm.eax asm.invtlb asm.fs.0x00123456 = asm.eax asm.al = 123 asm.dword.ptr.eax = 1234 # mov dword ptr [eax], 1234 asm.push(asm.eax)
CorePy对此主题感兴趣.