A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
>ライブラリとAPIの関係とは全然違うんですか?
カーネルが用意した機能を、シェルが定められた方法で使うという点で、ライブラリとAPIの関係と捉えることも出来ます。
が、カーネルにはユーザランドでのライブラリとは決定的に違う点があります。それは No2 の方が書かれている「特権モード」で動いているということです。
「特権モード」というのは CPU が複数持つモードの一つです。各モードによって実行できる命令が制限されます。特権モードは、なんでも出来ちゃうモードのことです。詳しくは参考URLをどうぞ。
カーネルは特権モードで動いているから何でもできちゃうのです。言い方を変えると、特権モードでやりたいことがあって、それに関するプログラムを一箇所にまとめたものがカーネルだということも出来ると思います。
ユーザランドプログラム(例えばシェル)は、そうではないので一部の処理を実行できません。この場合、カーネルに代理実行をお願いすることになります。
では、特権モードでしか実行できない処理とは何でしょうか。
一例をあげれば外部デバイス(ディスク,キーボード,ディスプレイ etc)へのアクセス、全メモリ領域へのアクセスなどは特権モードでしか実行できません。
このあたりに関連する処理は必然的にカーネルのお仕事になります。
参考URL:http://ja.wikipedia.org/wiki/%E7%89%B9%E6%A8%A9% …
No.4
- 回答日時:
linuxのシェルは、ユーザモードで動いています。
カーネルから見たら、ただのアプリです。linuxはソースが公開されているので、カーネルだろうがシェルだろうが触り放題ではありますが。。。。
No.3
- 回答日時:
BIOSとシェル・カーネルを同一次元で語るのは誤った認識です。
BIOSというのはハードウェアの制御を割り込みという形で実現するサブルーチン群+ハード構成モニタプログラムと思ってください。当然、初期のIBM-PCのハード構成が基本となりますので、制御可能なハードウェアは基本的なデバイス(キーボード・VIDEO・タイマなど)に限られたものとなります。
カーネルとシェルは、そのまま日本語にすると「貝」です。
カーネルは「核」と訳され。シェルは「殻」となります。
システム(適切な単語ではないとつっこまれそうですが)はこの2つの関係を、貝のようなものの例えで名前がつけられています。
カーネルは、システムそのもののコントロールを行う役目のものなので、ユーザが直接触れることはできません。
そのユーザに利用環境として、コマンド入力などの操作環境を提供し橋渡しするのがシェルとなります。
ユーザが直接目にするのはSHELLでKERNELはその中身という関係です。
ANo.2さんの補足
本来、BIOSは機種アーキテクチャ(CPUなどハード)に依存します。
UNIX系(BSDなど)のシステムは各種のマシンに移植されて、機種依存が少ないことが自慢(?)のOSですが、Linuxに関しては、今でこそ様々な機種に対応しておりますが、もともとはIBM-PC(および互換機)で動作させることを前提に作られました。 そのため、他のUNIXにはない、カーネル自身で機種依存のはずのBIOSを呼び出す機能を標準で持っていました(最近のは中身を見る機会が減ったので知りませんが)。
UNIXはまずOSありきのシステムですが、Linuxはまずハードウェアありきのシステムだったのです。
この回答への補足
ありがとうございます。
>ユーザが直接目にするのはSHELLでKERNELはその中身という関係です。
検討違いだったらすいません。ライブラリとAPIの関係とは全然違うんですか?
No.2
- 回答日時:
Linux系OSのカテゴリでの質問ですので、こう答えますが:
PCのBIOSは起動時にしか働いていません。本来はデバイスドライバの一番下のレベルで動くものですが、その目的でBIOSを使っているのはMS-DOSあたりのOSです。
カーネルとは、OSを構成するプログラムのうち、メモリに常駐して、特権モードで動作しているものをいいます。
シェルは、利用者の入力(コマンド)を受付けて、それにしたがって指定されたプログラムの起動などを行う、プログラムのことを言います。
linux系OSではシェルは 単なる(そういう機能を持った)アプリケーションプログラムに過ぎません。
他のOSだと、シェルがOSのシステムプログラムの一部だったり(CLI)しますが。
この回答への補足
ありがとうございます。
カーネルは特権モードで、シェルはユーザモードで動作しているんでしょうか?これはユーザが触れるか触れないかの違いでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- BTOパソコン OSの入ったHDDがBIOSには認識されるが起動しない 5 2022/04/15 00:47
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- ドライブ・ストレージ デスクトップパソコンOSについて デスクトップパソコンスペック、Inteli54460 HD4600 3 2023/04/17 01:57
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- 中古パソコン 富士通 ESPRIMO B532/G のBIOSが表示されない 3 2023/01/03 16:42
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、写真のプログラムをどう直せ 2 2022/07/09 21:13
- CPU・メモリ・マザーボード 昨日SSDを増設したら、PCが点かなくなりました。 ※BIOS画面にも行けません。 OSの入ったスト 6 2022/08/15 10:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パフォーマンスモニタの%Proces...
-
Dockerコンテナ(centos7.9)の...
-
ブルースクリーンの原因が「ntk...
-
rdevコマンドについて
-
最近、よくOpenWall という言葉...
-
魔改造版Windows 2000をインス...
-
/dev/nvme0n1p2 clean と表示さ...
-
UNIXからLINUXへのデータ移行に...
-
サーバ構築での、Linuxディスト...
-
SolarisとLinuxの違い
-
macでカーネルのディレクトリは...
-
redhatのlinuxのバージョンアッ...
-
割り込み不可能?なプロセスを...
-
パソコンでゲームをプレイしよ...
-
1枚でも「1枚”組”」なのですか?
-
Windows2000を最新マシンにイン...
-
makeコマンドができない
-
ubuntu 初期化について
-
パッケージが既存のパッケージ...
-
Fedoraのupgradeで、libruby.so...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パフォーマンスモニタの%Proces...
-
最近、よくOpenWall という言葉...
-
/dev/nvme0n1p2 clean と表示さ...
-
ブルースクリーンの原因が「ntk...
-
割り込み不可能?なプロセスを...
-
魔改造版Windows 2000をインス...
-
romfsってなんですか?
-
mac OSは、何のプログラミング...
-
どうしてwindowsはMacと比べ動...
-
カーネルアップグレード後、una...
-
macでカーネルのディレクトリは...
-
『カーネルとの通信中にエラー...
-
UNIXとBSDとLinuxの違いを小学...
-
Linux 32Bitと64Bitのメモリー...
-
Dockerコンテナ(centos7.9)の...
-
エラー”Illegal seek”はどんな...
-
カーネルスタック不足について
-
カーネルバッファとは何でしょうか
-
rdevコマンドについて
-
マザーボード用ドライバ
おすすめ情報