web-dev-qa-db-ja.com

Pythonを使用してオペレーティングシステムを作成することは可能ですか?

作ることは可能ですか ミニマル Pythonを使用するオペレーティングシステムですか?
Assemblyのような低レベルのコードにはなりたくないので、シンプルな
PerlやPythonのような言語。しかし、どのように?

24
Navweb

残念ながらPythonは 非常に高レベルのプログラミング言語 として分類されます。たとえば、ハードウェアに直接アクセスして低レベルのデータ構造操作を実行するために使用することはできません。ハードウェアを抽象化するものに完全に依存しているのはカーネルですが、技術的には、Pythonを中心としたオペレーティングシステムを作成することができます。つまり、CおよびAssemblyで書かれた非常に低レベルのもののみ残りのオペレーティングシステムのほとんどはPythonで記述されています。

この記事 では、オペレーティングシステムカーネルの記述に適した言語について詳しく説明します。

35
Dougvj

The Intel BIOS Implementation Test Suite(BITS)Project に示されているように、OSなしでPythonを実行できます。=-。 スクリプトガイド 説明します:

"... include Python APIは、ACPI、CPUおよびチップセットレジスタ、PCI、PCI Expressなど、ハードウェアプラットフォームのさまざまな低レベル機能にアクセスします。スクリプトを作成できます。 Pythonの32ビットリング0で、OSを邪魔せずに、フルパワーを使用して、プラットフォームの機能を調査およびテストします。 "

ここで、BITSはIntelハードウェアに固有のBIOSテストプラットフォームであり、カスタムのPythonベースのOSを実行するものではありませんが、やってみない...

11
gens

私はユーザースペースプログラムとしてオペレーティングシステムで実行するインタープリターを移植しましたPythonこれは最初のプログラムであり、これまでのところ唯一の移植でした。この経験から、私はそれを言うでしょうPythonで多くのオペレーティングシステム機能を書くことは確かに可能です;かなり最小限の機能サポートでカーネルにPythonを埋め込むことさえできます。

ただし、割り込み、低レベルのメモリ管理などのために、アセンブリとCを記述する必要があります。私の場合、特別に修正したPython 2.5.2 Newlib Cライブラリに対して作成しました。最小限の場合、Newlibライブラリのヒープメモリ管理を提供する必要があります。 、そしてその上でPythonを実行できます。

したがって、Pythonインタープリターには独自のヒープ実装が含まれておらず、Cライブラリに依存しているため、すぐにベアメタルで実行することはできませんが、オペレーティングシステムカーネルの多くは従来から記述されているように、Pythonで記述することもできます。

もちろん、特殊なケースはマイクロカーネルです。ここでは、多くの機能がサービスとしてユーザー空間にあります。これらは、任意のプログラミング言語でより自然に実装できます。Pythonが含まれます。

8
Antti Haapala

オペレーティングシステムの設計に関する優れた教科書を見つけて、調査することをお勧めします。 Pythonソースコード。違います。)

実際にオペレーティングシステムを記述できるようにオペレーティングシステムの設計を十分に勉強したら、どの言語が適切かについて独自の意見を持つことができます。

7
steveha