使用Python创建操作系统是否可行?

42

是否可能使用Python制作一个极简主义的操作系统?
我真的不想涉及低级代码,比如汇编语言,因此我想使用像Perl、Python这样简单的语言。但是怎么实现呢?


2
你希望实现什么目标? - NPE
4
不可能完全没有使用汇编语言或C语言,即使是pycorn也有用于引导代码的汇编语言。同样,中断处理程序也需要使用。 - Charles Duffy
1
我认为Ununium是完全用Python编写的。不过我不太确定这个项目是否还在继续。 - inspectorG4dget
6
IMO Perl 和简单这两个词并不很搭配 :) (注:IMO为“In My Opinion”的缩写,意为“在我看来”) - betabandido
2
可能是重复的问题:在操作系统中可以用Python编写多少内容? - Ignacio Vazquez-Abrams
显示剩余4条评论
4个回答

54
很不幸,Python被归类为非常高级的编程语言。例如,它不能直接访问硬件并执行低级数据结构操作。它完全依赖于某些东西来将硬件抽象出来,而这就是内核。但是,从技术上讲,可以创建一个以Python为中心的操作系统;只需用C和汇编语言编写非常低级别的部分,其余大部分操作系统都可以用Python编写。

本文更详细地讨论了哪些语言适合编写操作系统内核。


11
不错的文章。其中最好的引语是:在许多语言中,除了C语言外,还需要相当数量的汇编和C开发,以便提供支持语言抽象的适当运行时环境。 - C2H5OH
“完全依赖于某些东西来将硬件抽象化,而这个东西就是内核。” 这个陈述有点模糊。在任何编程语言中,对于某些函数,您必须依赖系统调用,例如read()和write()。 - losnihciL
对于许多编程语言来说,使用read()write()是可选的。如果您愿意,可以在支持系统编程的语言中自行实现它们。事实上,在嵌入式开发中这种情况很常见,因为可能根本没有任何支持软件。只有您和硬件。但是,标准Python不支持这样做。 - Dougvj
不要忘记Python可以运行用C编写的共享库(而Cython可以创建C代码)。您可以使用Cython进行更多低级别的操作。 - Brōtsyorfuzthrāx

23

正如Intel BIOS Implementation Test Suite (BITS) 项目所展示的那样,你可以在没有操作系统的情况下运行Python。 脚本指南解释道:

"... 包括Python API来访问硬件平台的各种低级功能,包括ACPI、CPU和芯片组寄存器、PCI和PCI Express。你可以编写脚本来探索和测试平台功能,在32位ring 0中使用Python的全部功能,而不受操作系统的干扰。"

BITS是一种特定于英特尔硬件的BIOS测试平台,并非旨在运行基于自定义Python的操作系统,但这并不意味着您不能尝试它...


15

我已经将Python解释器移植到我的操作系统作为用户空间程序,这是我移植的第一个程序,也是目前唯一的程序;通过这个经验,我可以说在Python中编写许多操作系统功能肯定是可能的;你甚至可以将Python嵌入内核,只需最少限度的支持。

但是,您需要编写汇编和C语言以进行中断、低级内存管理等方面的操作。在我的情况下,我使用Newlib C库构建了一个特别修改过的Python 2.5.2版本;在最小的情况下,您只需为Newlib库提供堆内存管理即可在其上运行Python。

因此,Python解释器并不包含自己的堆实现,并且它依赖于C库,所以您不能立即在裸机上运行它,但是传统意义上编写的操作系统内核的大部分功能也可以用Python编写。

当然,特殊情况是微内核,其中许多功能都是作为服务在用户空间中实现的;这些可以更自然地用任何首选的编程语言实现,包括Python。


10

我建议你找一本好的操作系统设计教材来学习。我相信你不可能找到一本附带Python源代码的书,用C语言编写的书更为常见。也许你能找到一些使用Pascal而非C语言的老旧教材,但两者其实差别不大。

当你学习了足够多的操作系统设计知识并能够自己编写操作系统时,你就会对适合使用哪种编程语言有自己的看法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接