• ベストアンサー

OSカーネル作成について

OSカーネル(C言語で作成)をPCに初めて実装する(コンパイル&実行?)にはどのようにするのですか? OS搭載前のPCにはコンパイラなどのようなツールは無いと思うのですが... もしかしてDOSを使うんですか?  誰か知っている方教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

quenistaさんが既に書いている通りですね。 場合によっては、開発マシン上にエミュレータがあって、 それである程度デバッグできる場合もあります。 VxWorksもそうですね。 あとは、ケースによりますが、quenistaさんが書いているとおり、ROM化まで開発マシン上で行いROMをターゲットに持っていく場合、 開発マシンに最低限の機能を持ったROMを入れて、実行するプログラムを開発マシンからシリアルなり,イーサネットなり経由でダウンロードしてする場合があります。 って、もともと組み込み機器の場合でなく, PCの場合が知りたいのかな(^^;; まあ同じことで,マシンが同じでもOSは別な物を使ってクロス開発になります。 たとえば、MS-DOSでもWindowsでもLinuxでもいいですが、クロスコンパイラ作って実行ファイルを作り, それを実行させるだけです。

その他の回答 (1)

  • quenista
  • ベストアンサー率28% (122/425)
回答No.1

>もしかしてDOSを使うんですか? DOSも立派なOSですね。(^_^) 普通、ターゲット等のOSを開発する場合は、クロスコンパイラと呼ばれる物を等を使って行います。 要は、別の物で開発して、実行形式の物をターゲットに流し込んでますよ。 これは、組み込み機器も同様です。 例えば、携帯電話やワープロ専用機等(他にも山程有ります。)は内部にOSを持っていますが、これらの上でその機器用のソフトを開発する事は無いです。 別のPC等で開発した結果をROM化等を行い、そのハードウェアに搭載しているだけです。

studentx
質問者

お礼

成程、そういえばVxWorks開発環境であるTornadoも確かクロスコンパイラでしたっけ? 疑問が徐々に解けつつ有りますどうも有り難う御座いました。  

関連するQ&A

  • シェルとカーネルの概念とプログラムの処理の流れ

    興味本位で「プログラミング」について、調べ学んでる内にひとつの壁にぶつかりましたので質問させていただきます。 質問内容は「シェルとカーネル。そしてアプリケーション」になります。 素人ながら現在持っている論理を下記に列挙します。誤認識などあれば指摘いただければ幸いであります。 狭義での論争は、避けたいので、広義として理解頂ければと思います。(狭義や曖昧な点においてもある程度学習済み) 1. プログラミング言語には、低級・高級言語があり、ハードよりのC言語(影響下のC++, Objective-C)で作られたプログラムの実行速度は速い。 2. プログラム処理系には、インタプリタ・コンパイラがあり、一般ユーザーが使用するアプリケーションのほとんど(.exeなど)がコンパイラアプリケーション。 3. JavaなどVM環境下動作するアプリケーションは、中間言語で実行される。 4. OSには中核であるカーネルがあり、カーネルは人工言語(コンピューター言語)を機械語に訳し、各リソース(CPU・RAMなど)に処理を実行させる。 5. カーネルはシェルに覆われており、実際のユーザー側の処理のリクエストは、シェルを介して行われる。 6. シェルには大別して、CLI(CUI)とGUIがあり、CLIシェルはプロンプトが表示されるコマンドラインインタプリタ。 7. GUIシェルは、OSがオペレーションの意から、OSの各種機能(Windows System, エクスプローラー等)。※ 私は理解を容易する為にOSそのものをシェルと捉えてます。 長くなりましたが、上記を踏まえた上での質問が下記になります。 Q. iTunes, Word, などの各種アプリケーションの各種操作(処理、実行)というのは、コンピューター言語でシェルを介し機械語でカーネルまで橋渡しされるのでしょうか? なぜこのような質問になるかといいますと... プログラミング言語は機械語にコンパイルして、はじめてコンピューターに理解してもらえる事は百も承知です。 プログラミング言語で制作されたアプリケーションの処理や実行は当然、コンパイル済みの機械語で行うものと認識しております。(ここでは中間言語は除く) ここで冒頭に述べた壁に当たりました。洒落ではなく、私の中で「殻」もとい「壁化」してしまったシェルの存在です。 現在、持ち合わせてる論理から考察すると、機械語で実行された処理をシェルを介す意味がどこにあるのか?それとも介さずカーネルにそのまま引き渡してるのか? 私が間違っており、そもそも制作されたアプリケーションの処理や実行は、コンピューター言語であり、それをシェルを介しカーネルという流れがあるのならば、コンパイラの存在意義が分かりません。 本来はもっと自分が思ってる事を言語化出来ればいいのですが、これが現時点で精一杯です。

  • コンパイラについて

    C言語で書かれたアプリケーションを利用するにはCのコンパイラが必要ですよね。ということはどんなOSにもCなりJAVAなりのコンパイラが搭載されているのでしょうか?だとしたらなぜ自分で書いたプログラムをコンパイルするときにOSが利用しているコンパイラを使えないのでしょうか?

  • C言語でのコンパイラの作成方法

    C言語初心者のため、稚拙な文章になる可能性があることを最初にお詫びします。 現在Microsoft社のMicrosoft Visual C++ 6.0を用いてCドライブのルートにある「temp.c」というソースファイルをコンパイルするアプリケーションを作ろうと思っているのですが、ネット上で「C言語 コンパイラ 作成」等と検索しても、既にコンパイラがあることを前提としたホームページしか見つけることができず、肝心のコンパイラをどのように作ったらよいのかということが載ったホームページが見つかりません。 というわけで、今回はコンパイラをどのように作ったらよいのかというヒントだけでもいいので教えて頂けないかと思い投稿させて頂きました。 ちなみに「temp.c」はそこまで複雑なソースではなく、DOS上のアプリで、リソースやアイコンなどは用いないものです。 そもそも「コンパイラを作る」ということ自体が愚かな行為なのかと思ったりもします。 私が所持しているBcpadやMicrosoft Visual C++ 6.0に付属している既存のコンパイラを利用するということも考えたのですが、BcpadやMicrosoft Visual C++ 6.0の本体以外からコンパイラをどのように利用していいのかもわかりません。 どうぞ忌憚の無い意見をよろしくお願いします。 ちなみにOSはXPのSP3です。

  • CとFortranのコードを併用する方法

    昔からあったと思いますが、最近CとFortranを併用することを考えています。片方の言語で関数とかサブルーチンを作っておいてコンパイルしてオブジェクトをだけを作成し、もう片方の言語でそれを呼び出してコンパイル時にリンクして使用するという風に考えています。コンパイラの組み合わせが何でもいいとは思えないのですが、どのようにするものでしょうか。あるいはコンパイラ以外のツールが必要だとか。コンパイラは両言語ともGNU, intelなど提供元をそろえる必要があるとか、そういうことになるのでしょうか。よろしくお願いします。

  • Borland C++ Builderで簡単なC言語プログラムの作成・実行

    Borland C++ Builderで簡単なCのプログラムを作り実行させるにはどうしたらよいですか? DOS窓上でコンパイルするのではなく、Borland C++ Builderのメニューから行いたいのです。 一応、「ファイル→新規作成→その他→Cファイル」でCのファイルは作成できるのですが、このファイルを「プロジェクト→ユニットのコンパイル」でコンパイルすることができません。 Formオブジェクト(?)を作成しておくとコンパイルできます。 Formは特に必要ないので、FormなしでCのファイルだけをコンパイルしたいのです。 DOS窓でのコンパイル・実行はできます。 事情があってBorland C++ Builderを使わなくてはなりませんので、他のIDEはこの際全く解決になりません。 よろしくお願いします。

  • Linuxカーネルは誰が動かしているのでしょうか。

    Linuxカーネルは、ほとんどC言語で書かれているということですが、そのプログラムは誰が(どういった仕組み)で動かしているのでしょうか。 自分で作ったプログラムならOSの上で動くのは、なんとなくイメージできるのですが…。 どなたか、初心者にも分かる言葉で教えて頂けないでしょうか。宜しくお願い致します。

  • カーネルの再構築について(初心者)

    現在カーネルの研究をしていて、インストールしたカーネル(現在のカーネル)を自分なりに書き換えてコンパイルし、前のカーネルとの比較をするというものなのですが、現在のカーネルをバックアップする方法から書き換えたカーネルを組み込む方法等全く分かりません。 どなたか知っている方、教えて頂けませんか?

  • リアルタイムOS(RTOS)の割り込み処理について

    RTOSではないOSの割り込み処理とRTOSの割り込み処理とでは,作成するプログラムは違うのでしょうか? 例えば,Linux PCでロボット制御のためのC言語プログラム(プログラムAとします)を作成して実行したところ,リアルタイム性が良くなかったため,リアルタイムカーネルをインストールしたとします.そうするとプログラムAを何も書き換えずにそのまま実行するとRTOSの割り込み処理がおこなわれるのでしょうか?それとも,プログラムAをRTOSの割り込み処理をするためのプログラムに書き換えないといけないというものでしょうか?(RTOS専用の割り込み処理のための関数などがあるのでしょうか?) よろしくお願いいたします.

  • C言語をコンパイルしたいのですが、無料のコンパイル環境はありますか?

    学校で、C言語習いました。 課題で出されたレポートの動作確認をしたいのですが、コンパイル環境がありません。 学校に行けばコンパイルできるのですが、エラーが出たら持ち帰り家で考える→再度学校で実行→以下続く をしていたら時間がかかってしょうがありません。 フリーのコンパイル環境はあるのでしょうか? あれば入手方法を教えてください。(PC環境はWindowsXPです。) もちろん、違法入手ではなくて安全なものを探しています。 ない場合は、どのくらいの値段で売っているものなのでしょうか? 検索してよく見かけるのは、『Borland C++Compiler 5.5 』なのですが、Windows2000(!?)までしか対応しておらず、現在はサイトが停止(!?よくわからないのですが、DL不可)していたので入手できませんでした。 入手方法を知りたいのはもちろんなのですが、Cファイルを作成して実行する方法など、短くても簡単でもよいので合わせて使い方を教えていただければ嬉しいです。 あと、素人質問で申し訳ないのですが、C言語のコンパイラでC++やその他の言語のコンパイルはできますか?(その逆もできますか?)

  • 昔C言語で作成したAPが64ビット版OSで不動作

    以前C6とWindowsSDKで作成したソフトがWindows7 64ビットOS上で動きません。 XPモードでは動作します。 Windows7 64ビットOS上で動かしたいのですが、32ビット又は64ビットのコンパイラでコンパイルし直せば動くと思うのですが、なんせ昔の事なので最近の情報がよく解りません。 どなたかコンパイラの種類、SDKキット、LINKの種類等開発環境をどうすれば良いのか丁寧に教えて戴きたいのですがよろしくお願いします。