オペレーティングシステムの構築を開始する予定で、どのプログラミング言語をカーネルに選択するかわかりません。私の好きな言語はJava
ですが、すべての主要なオペレーティングシステム(Windows、Linux、Mac OS)はC
にプログラムされています。さらにJavaには仮想マシンが必要です。 OSをC-based
OSよりもJava-based
OSよりプログラムするのがずっと難しいですか?これらの言語の長所と短所は何ですか?Java(登録商標)またはC言語でプログラミングされたOS(カーネル)
答えて
http://wiki.osdev.orgは、この点で非常に便利なサイトです。ツールチェーンの構築方法、使用可能な言語オプション、および優れたサンプルコードがあります。
イヴァン
JavaベースのOSよりもCベースのOSよりプログラミングが難しいですか?
ハードウェアレベルのプログラミングをJavaで処理するにはどうしますか?
+1 - ああ、メモリを管理しない言語でメモリマネージャを書くのは皮肉です。 –
*明らかに、* VMは[特別な]指示を行うでしょう;-) VMによってVMが実行されていない限り、... –
@pst:それは亀です。 –
オペレーティングシステムを構築しようとする前に、本当にプログラミング言語を学ぶことを謙虚にお勧めします。その後、どの言語で自分自身でカーネルを書くことができるかを知ることができます。
Javaなどのプログラミング言語では、osを作成するために必要な低レベルのルーチンは提供されていません。あなたのOSは、cまたはC++で実装することができます。あなたがブートストラップコード(アセンブラを読んで)とのようなプログラミング言語をマスターしていない限り、おそらくもっと簡単なタスクを再考するのは良い考えです。
OSを別のOSのプログラムとして実行することで、OSをエミュレートすることができます。この場合、選択肢の任意の言語を試すことができます。
Javaを機械語にコンパイルするコンパイラにアクセスできない場合は、OSカーネルをJavaでプログラミングすることはできません。 Javaには、バイトコードを解釈し、ネイティブ命令(カーネルに依存する)を実行する仮想マシンが必要です。あなたは、単にJavaでできないものをOSにプログラミングするために、ハードウェアと直接対話できなければなりません。あなたの唯一の選択肢は、実際にはアセンブリと組み合わされたCです。
gcjはそれをしています...私はそれについて多くはわかりませんが、最後に私はそれがいくつかの問題を持っていることを確認しました – Spudd86
JVMはOSのような能力の非常に多くを提供し、それはJavaで書かれたことができない - ので、いずれかの方法は、あなたがコードの非常に多くを書いて終了するつもりですC(または仮想マシンを必要としないコードを生成できるもの)で動作します。
WeeeeeelllあなたはJavaでJVMを書くことができました...それはJVMを実行する必要がある。またはJavaをマシンコードにコンパイルすることはできますが、まだ実行時のジャンク(ガベージコレクションは大きなものになります)を必要とし、Javaでは本当に難しいコードを書くことが難しくなります行う。 – Spudd86
すでにいくつかのJavaベースのOSがあるようです。私はOSプログラミングについてはあまりよく分かりませんが、Erlangen大学のJavaベースのOSであるかなりの広範な文献があります。http://www4.informatik.uni-erlangen.de/Projects/JX/publications.html
おそらくそこにあります助けてくれるものです。
CベースのOSを書くのが最も簡単なはずですが、それについての情報がもっとたくさんあるからです。
- 1. MySQLで使用するプログラミング言語:JavaまたはC++?
- 2. 論理またはCプログラミング言語
- 3. PhpStormはどのプログラミング言語でプログラミングされましたか?
- 4. エラー:予想される識別子または「(」 - Cプログラミング言語
- 5. プログラミング言語で予約されたキーワード
- 6. Android v4.0 WebViewのDisplay®登録商標シンボル?
- 7. NLPライブラリ、Javaプログラミング言語のための
- 8. Cプログラミング言語のカスケードとネストされたif文
- 9. 関数は、Cプログラミング言語
- 10. C言語でAndroidプログラミング
- 11. ゲームボーイC言語のプログラミングC
- 12. TOSCAはどのプログラミング言語でプログラミングされていますか?
- 13. コンパイルされたコンパイル済みのプログラミング言語は何ですか?
- 14. Sphinx/RestructuredTextで登録商標を上付する方法は?
- 15. Node.jsがC/C++プログラミング言語で書かれたのはなぜですか?
- 16. Javaプログラミング言語のオンラインテスト
- 17. アセンブリーまたはCプログラミング言語に関する意見
- 18. cプログラミング言語 - declare()関数
- 19. プログラミング言語 "C Set 2"
- 20. C言語プログラミングのstrcat()
- 21. VB6またはC#または新しいプログラミング言語にQuickBasicコンバータが必要
- 22. <?>はJavaまたは他のプログラミング言語の意味は何ですか?
- 23. カスタマイズされたweb2py登録
- 24. Androidで書かれたInit.goldfishのプログラミング言語は何ですか?
- 25. Cプログラミング言語の "1ULL"の意味は?
- 26. gccでcプログラミング言語を拡張
- 27. C#でプログラミング言語を作成
- 28. 異なるGPL(汎用プログラミング言語)を使用して実装されたDSL(汎用プログラミング言語)
- 29. IntelliJカスタム言語プラグイン - 言語IDは既に登録されているエラーです
- 30. Pythonは標準化された言語ではありませんか?
JavaのようなVMベースの言語がOSを構築するのになぜ役に立たないのかわからないのなら、あなたはあまり遠すぎるとは思わない。 – paulbailey
Freebasicを使用しているオプションがありますが、それは普通の古いASM/Cより難しくなります。非常に小さいASM部分が必要になります。残りのほとんどはC/Pascal/FreeBasicでコーディングすることができます。 – friedkiwi
Javaで記述すると、生のハードウェア上で実行することはできません。また、マシンシミュレータも作成する必要があります。 –