ここから本文です

自作OSでアプリケーションを動かせるようにするには?

changerさん

2020/1/2023:02:41

自作OSでアプリケーションを動かせるようにするには?

例えば、windowsのWinAPI Linuxのシステムコールと全く互換性のない
独自のシステムコールなどを実装した自作OSに
google chromeに導入し動かせるようにするには
どうすればいいのでしょうか?

OSによってシステムコールの内部実装が違うし
C言語の関数とかはそれらを組み合わせて実現させているもの
だから
もとも子もないのかもしれませんが

google chromeがC言語で作られていたとして
さらにそのソースファイルを入手出来たら

自作OSに対応しているコンパイラ作成
すればいちおう動きそうですが
動きますか?

また、実際にそのようなことをする場合
どのような知識が要求されますか?

閲覧数:
63
回答数:
3

違反報告

ベストアンサーに選ばれた回答

編集あり2020/1/2510:57:53

そういうのは「自作」をする段階で考えればいいし、別に「自作」に限った話ではないのだから、それがわからないとすればまだ勉強が足りない、ということでしかなくて。

せっかくいい感じで「根っこ」のほうに向かってた興味が半端に上滑りを始めてる気がするなぁ...
#自分でもいろいろ恥ずかしい過去はあるから責めるつもりではないのだけれど。

わかったつもりになって次々進んじゃってるのかなぁ。

プログラム、書いてます? 既存のOSをそれなりに使ってプログラムを作れるようでないと、OSの「自作」なんてとても無理じゃないか、というのには同意してもらえるかしら。


以下追記

この話の展開で、「内部実装」を言い出すのはます間違っているでしょう。要は、OSがアプリケーションにどういうサービスを提供しているかが重要なことであって、それを実現する方法は問われないはずです。それが抽象化というもの。(ゲンジツとして内部実装を気にしなきゃ仕方ないというケースはあるにしても、まだそういう話をする段階ではない)
同様に、「コンパイラ」を言い出すのもスジ違いでしょう。もちろん、コンパイラはそのOSのお作法に沿ったコードを吐き出さなければ実行が出来ませんが、それと(他のOS向けに作られた)アプリケーションがOSに期待する機能を「自作」OSが提供出来るかどうかは全く別の次元の問題です。


で、なぜアプリケーションがOSの機能を呼び出すのか。なにかの機能についてサービスを受けたいからです。では、互換性がないというのはどういうことか。OSから受けられるサービスが異なるということです。異なる、といってもいろいろな場合があるでしょう。
・あるOSが提供している機能が別のOSではそもそも存在しないとか(CUI専用OSでGUIはないとか)
・似た機能はあるけどちょっと違うとか(各種プロセス間通信なんかでありがち)
・なんらかの制限があるとか(ファイル名規則が11文字以内だったり256文字だったりとか)
・単にCベースでの関数シグニチャが違う程度とか
これら諸々の違いに対して、それぞれ適切に対応する必要があります。


なので、
> 自作OSにgoogle chromeに導入し動かせるようにするにはどうすればいいのでしょうか?
・ChromeがOSに対してどういう要求をしているかを全て把握し
・「自作OS」がその要求に応えられる部分については対応し
・応えられないところはアプリケーションレイヤーに実装する。または機能制限として使用禁止にする
といったところでしょうか。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

あみやさん

2020/1/2108:19:48

ソースファイルが手に入ったところで、全てのライブラリを作り直さない限り動かすことはできません。

やるとしたら、それこそ、仮想マシンを作ってその中でWindowsを動かすか
APIレベルでWindows互換の環境を作って提供するかです。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

2020/1/2102:30:17

一言で云えば、
そのOS上で動作する
仮想Windowsマシンを
実装することだね。

コンパイラーは
OSじゃないよね!

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる