- 締切済み
OSの中身
素人です OSの構成でBIOS、カーネル、シェルの三つの関係がよくわかりません ネットで調べたら BIOS:データを入出力するプログラム カーネル:ファイルを作ったりするプログラム シェル:実行するアプリケーションを選択するためのプログラム と書いてあったんですけど具体的にアプリケーションを起動したときにどんな順番で何が何の引数を渡しているのかわかりません 詳しい方教えてください
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- tthe_mine
- ベストアンサー率46% (19/41)
>ライブラリとAPIの関係とは全然違うんですか? カーネルが用意した機能を、シェルが定められた方法で使うという点で、ライブラリとAPIの関係と捉えることも出来ます。 が、カーネルにはユーザランドでのライブラリとは決定的に違う点があります。それは No2 の方が書かれている「特権モード」で動いているということです。 「特権モード」というのは CPU が複数持つモードの一つです。各モードによって実行できる命令が制限されます。特権モードは、なんでも出来ちゃうモードのことです。詳しくは参考URLをどうぞ。 カーネルは特権モードで動いているから何でもできちゃうのです。言い方を変えると、特権モードでやりたいことがあって、それに関するプログラムを一箇所にまとめたものがカーネルだということも出来ると思います。 ユーザランドプログラム(例えばシェル)は、そうではないので一部の処理を実行できません。この場合、カーネルに代理実行をお願いすることになります。 では、特権モードでしか実行できない処理とは何でしょうか。 一例をあげれば外部デバイス(ディスク,キーボード,ディスプレイ etc)へのアクセス、全メモリ領域へのアクセスなどは特権モードでしか実行できません。 このあたりに関連する処理は必然的にカーネルのお仕事になります。
- a-saitoh
- ベストアンサー率30% (524/1722)
linuxのシェルは、ユーザモードで動いています。カーネルから見たら、ただのアプリです。 linuxはソースが公開されているので、カーネルだろうがシェルだろうが触り放題ではありますが。。。。
- ralf124c
- ベストアンサー率52% (232/446)
BIOSとシェル・カーネルを同一次元で語るのは誤った認識です。 BIOSというのはハードウェアの制御を割り込みという形で実現するサブルーチン群+ハード構成モニタプログラムと思ってください。当然、初期のIBM-PCのハード構成が基本となりますので、制御可能なハードウェアは基本的なデバイス(キーボード・VIDEO・タイマなど)に限られたものとなります。 カーネルとシェルは、そのまま日本語にすると「貝」です。 カーネルは「核」と訳され。シェルは「殻」となります。 システム(適切な単語ではないとつっこまれそうですが)はこの2つの関係を、貝のようなものの例えで名前がつけられています。 カーネルは、システムそのもののコントロールを行う役目のものなので、ユーザが直接触れることはできません。 そのユーザに利用環境として、コマンド入力などの操作環境を提供し橋渡しするのがシェルとなります。 ユーザが直接目にするのはSHELLでKERNELはその中身という関係です。 ANo.2さんの補足 本来、BIOSは機種アーキテクチャ(CPUなどハード)に依存します。 UNIX系(BSDなど)のシステムは各種のマシンに移植されて、機種依存が少ないことが自慢(?)のOSですが、Linuxに関しては、今でこそ様々な機種に対応しておりますが、もともとはIBM-PC(および互換機)で動作させることを前提に作られました。 そのため、他のUNIXにはない、カーネル自身で機種依存のはずのBIOSを呼び出す機能を標準で持っていました(最近のは中身を見る機会が減ったので知りませんが)。 UNIXはまずOSありきのシステムですが、Linuxはまずハードウェアありきのシステムだったのです。
- a-saitoh
- ベストアンサー率30% (524/1722)
Linux系OSのカテゴリでの質問ですので、こう答えますが: PCのBIOSは起動時にしか働いていません。本来はデバイスドライバの一番下のレベルで動くものですが、その目的でBIOSを使っているのはMS-DOSあたりのOSです。 カーネルとは、OSを構成するプログラムのうち、メモリに常駐して、特権モードで動作しているものをいいます。 シェルは、利用者の入力(コマンド)を受付けて、それにしたがって指定されたプログラムの起動などを行う、プログラムのことを言います。 linux系OSではシェルは 単なる(そういう機能を持った)アプリケーションプログラムに過ぎません。 他のOSだと、シェルがOSのシステムプログラムの一部だったり(CLI)しますが。
補足
ありがとうございます。 カーネルは特権モードで、シェルはユーザモードで動作しているんでしょうか?これはユーザが触れるか触れないかの違いでしょうか?
- noro6677
- ベストアンサー率21% (34/158)
BIOS 根本的なハードウェアの制御。 OSではない。OSよりもっと根本的なところで動いている。 フラッシュROMに書き込まれている。 PC起動時に一番最初に(実行)表示される画面がそう。 カーネル OSの中核 シェル 人間(インターフェース)とカーネルとの橋渡し(システムコール)。 名前の通り貝を想像すればいい。 シェルが貝殻で中身はカーネル。
お礼
BIOSはOSではないんですね。 根本的に勘違いしてました。 ありがとうございました。
補足
ありがとうございます。 >ユーザが直接目にするのはSHELLでKERNELはその中身という関係です。 検討違いだったらすいません。ライブラリとAPIの関係とは全然違うんですか?