是否可以使用 Python 创建操作系统? [关闭]

Posted

技术标签:

【中文标题】是否可以使用 Python 创建操作系统? [关闭]【英文标题】:Is it possible to create an operating system using Python? [closed] 【发布时间】:2012-06-09 21:48:05 【问题描述】:

是否可以使用 Python 制作简约操作系统? 我真的不想进入汇编之类的低级代码,所以我想使用一个简单的 Perl 或 Python 等语言。但是怎么做呢?

【问题讨论】:

你希望达到什么目标? somewhere 中没有使用汇编或C ——甚至pycorn 也有用于引导代码的汇编。中断处理程序也是如此。 我认为Ununium 完全是用python 编写的。不过,不太确定该项目是否仍然存在 IMO Perl 和 simple 是两个不能很好搭配的词 :) How much of an operating system could be written in, say, Python?的可能重复 【参考方案1】:

不幸的是,Python 被归类为very high level programming language。例如,它不能用于直接访问硬件和执行低级数据结构操作。它完全依赖于某种东西来从中抽象出硬件,那就是内核。但是,从技术上讲,创建一个以 Python 为中心的操作系统是可行的,即;只有非常底层的东西是用 C 和汇编语言编写的,而操作系统的其余大部分都是用 Python 编写的。

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

【讨论】:

好文章。最好的引述是:在 C 以外的许多语言中,需要大量的汇编和 C 开发才能提供支持语言抽象的适当运行时环境。 “它完全依赖于某种东西来从中抽象出硬件,那就是内核。”。这种说法含糊不清。在任何编程语言中,对于某些函数,您必须依赖系统调用,例如 read() 和 write()。 @iosnihciL 对于许多编程语言,使用read()write() 是可选的。如果您愿意,如果语言支持系统编程,您可以简单地自己实现它们。事实上,这种事情在可能根本没有任何支持软件的嵌入式开发中很常见。只有你和硬件。使用标准 Python 无法做到这一点。【参考方案2】:

您当然可以在没有操作系统的情况下运行 Python,如 The Intel BIOS Implementation Test Suite (BITS) Project 所示。 scripting guide 解释:

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

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

【讨论】:

【参考方案3】:

我已经移植了 Python 解释器作为用户空间程序在我的操作系统中运行,它是我移植的第一个程序——也是迄今为止唯一一个程序;从这个经验来看,我认为用 Python 编写很多操作系统功能肯定是可能的;当然,您甚至可以将 Python 嵌入内核,而只需极少的功能支持。

但是,您需要为中断、低级内存管理等编写汇编和 C。就我而言,我针对Newlib C 库构建了一个经过特殊修改的Python 2.5.2;在最小的情况下,您只需要为 Newlib 库提供堆内存管理,并且可以在其上运行 Python。

因此,Python 解释器不包含其自己的堆实现,并且它确实依赖于 C 库,因此您不能立即在裸机上运行它,但按照惯例编写的更多操作系统内核可以也可以用 Python 编写。

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

【讨论】:

【参考方案4】:

我建议你找一本关于操作系统设计的好教科书,然后学习。我很确定你不会找到这样一本包含 Python 源代码的书。 C 的可能性更大。 (您可能会发现一本使用 Pascal 而不是 C 的旧教科书,但实际上并没有那么不同。)

一旦你对操作系统设计的研究足以真正能够编写操作系统,你就会知道足够多的知识来对哪些语言适合。

【讨论】:

以上是关于是否可以使用 Python 创建操作系统? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

是否可以运行我的 python 脚本来更改 android 上的墙纸? [关闭]

1-python库之-serial串口操作

是否有类似于 Blender 节点编辑器的 Python 可重用组件? [关闭]

关于python语言使用redis时,连接是否需要关闭的问题

如何向客户/老板/个人推销 Python [关闭]

从 Python 中解析 Python 代码? [关闭]