2011-02-08 15 views
2

オペレーティングシステムの構築を開始する予定で、どのプログラミング言語をカーネルに選択するかわかりません。私の好きな言語はJavaですが、すべての主要なオペレーティングシステム(Windows、Linux、Mac OS)はCにプログラムされています。さらにJavaには仮想マシンが必要です。 OSをC-based OSよりもJava-based OSよりプログラムするのがずっと難しいですか?これらの言語の長所と短所は何ですか?Java(登録商標)またはC言語でプログラミングされたOS(カーネル)

+16

JavaのようなVMベースの言語がOSを構築するのになぜ役に立たないのかわからないのなら、あなたはあまり遠すぎるとは思わない。 – paulbailey

+1

Freebasicを使用しているオプションがありますが、それは普通の古いASM/Cより難しくなります。非常に小さいASM部分が必要になります。残りのほとんどはC/Pascal/FreeBasicでコーディングすることができます。 – friedkiwi

+1

Javaで記述すると、生のハードウェア上で実行することはできません。また、マシンシミュレータも作成する必要があります。 –

答えて

8

http://wiki.osdev.orgは、この点で非常に便利なサイトです。ツールチェーンの構築方法、使用可能な言語オプション、および優れたサンプルコードがあります。

イヴァン

3

JavaベースのOSよりもCベースのOSよりプログラミングが難しいですか?

ハードウェアレベルのプログラミングをJavaで処理するにはどうしますか?

+8

+1 - ああ、メモリを管理しない言語でメモリマネージャを書くのは皮肉です。 –

+4

*明らかに、* VMは[特別な]指示を行うでしょう;-) VMによってVMが実行されていない限り、... –

+4

@pst:それは亀です。 –

6

オペレーティングシステムを構築しようとする前に、本当にプログラミング言語を学ぶことを謙虚にお勧めします。その後、どの言語で自分自身でカーネルを書くことができるかを知ることができます。

Javaなどのプログラミング言語では、osを作成するために必要な低レベルのルーチンは提供されていません。あなたのOSは、cまたはC++で実装することができます。あなたがブートストラップコード(アセンブラを読んで)のようなプログラミング言語をマスターしていない限り、おそらくもっと簡単なタスクを再考するのは良い考えです。

OSを別のOSのプログラムとして実行することで、OSをエミュレートすることができます。この場合、選択肢の任意の言語を試すことができます。

1

Javaを機械語にコンパイルするコンパイラにアクセスできない場合は、OSカーネルをJavaでプログラミングすることはできません。 Javaには、バイトコードを解釈し、ネイティブ命令(カーネルに依存する)を実行する仮想マシンが必要です。あなたは、単にJavaでできないものをOSにプログラミングするために、ハードウェアと直接対話できなければなりません。あなたの唯一の選択肢は、実際にはアセンブリと組み合わされたCです。

+1

gcjはそれをしています...私はそれについて多くはわかりませんが、最後に私はそれがいくつかの問題を持っていることを確認しました – Spudd86

0

JVMはOSのような能力の非常に多くを提供し、それはJavaで書かれたことができない - ので、いずれかの方法は、あなたがコードの非常に多くを書いて終了するつもりですC(または仮想マシンを必要としないコードを生成できるもの)で動作します。

+1

WeeeeeelllあなたはJavaでJVMを書くことができました...それはJVMを実行する必要がある。またはJavaをマシンコードにコンパイルすることはできますが、まだ実行時のジャンク(ガベージコレクションは大きなものになります)を必要とし、Javaでは本当に難しいコードを書くことが難しくなります行う。 – Spudd86

3

すでにいくつかのJavaベースのOSがあるようです。私はOSプログラミングについてはあまりよく分かりませんが、Erlangen大学のJavaベースのOSであるかなりの広範な文献があります。http://www4.informatik.uni-erlangen.de/Projects/JX/publications.html
おそらくそこにあります助けてくれるものです。

CベースのOSを書くのが最も簡単なはずですが、それについての情報がもっとたくさんあるからです。

関連する問題