質問: 自作OSでアプリケーションを動かせるようにするには?
回答: そういうのは「自作」をする段階で考えればいいし、別に「自作」に限った話ではないのだから、それがわからないとすればまだ勉強が足りない、ということでしかなくて。 せっかくいい感じで「根っこ」のほうに向かってた興味が半端に上滑りを始めてる気がするなぁ... #自分でもいろいろ恥ずかしい過去はあるから責めるつもりではないのだけれど。 わかったつもりになって次々進んじゃってるのかなぁ。 プログラム、書いてます? 既存のOSをそれなりに使ってプログラムを作れるようでないと、OSの「自作」なんてとても無理じゃないか、というのには同意してもらえるかしら。 以下追記 この話の展開で、「内部実装」を言い出すのはます間違っているでしょう。要は、OSがアプリケーションにどういうサービスを提供しているかが重要なことであって、それを実現する方法は問われないはずです。それが抽象化というもの。(ゲンジツとして内部実装を気にしなきゃ仕方ないというケースはあるにしても、まだそういう話をする段階ではない) 同様に、「コンパイラ」を言い出すのもスジ違いでしょう。もちろん、コンパイラはそのOSのお作法に沿ったコードを吐き出さなければ実行が出来ませんが、それと(他のOS向けに作られた)アプリケーションがOSに期待する機能を「自作」OSが提供出来るかどうかは全く別の次元の問題です。 で、なぜアプリケーションがOSの機能を呼び出すのか。なにかの機能についてサービスを受けたいからです。では、互換性がないというのはどういうことか。OSから受けられるサービスが異なるということです。異なる、といってもいろいろな場合があるでしょう。 ・あるOSが提供している機能が別のOSではそもそも存在しないとか(CUI専用OSでGUIはないとか) ・似た機能はあるけどちょっと違うとか(各種プロセス間通信なんかでありがち) ・なんらかの制限があるとか(ファイル名規則が11文字以内だったり256文字だったりとか) ・単にCベースでの関数シグニチャが違う程度とか これら諸々の違いに対して、それぞれ適切に対応する必要があります。 なので、 > 自作OSにgoogle chromeに導入し動かせるようにするにはどうすればいいのでしょうか? ・ChromeがOSに対してどういう要求をしているかを全て把握し ・「自作OS」がその要求に応えられる部分については対応し ・応えられないところはアプリケーションレイヤーに実装する。または機能制限として使用禁止にする といったところでしょうか。