• 締切済み

シェルとは

 シェルとは【ユーザと対話する能力を持ち、カーネルに対して操作のお伺いを立てる仲介役のプログラム】と書かれていました。  また、シェルの機能として【コマンドとして入力された名前のプログラムを探し出して起動する。】ということも書かれていました。 そこで疑問を持ちました。前述では仲介役であると述べられてるのに対して、後述での機能ではプログラムを探し出し、起動する.と書かれていてCPUに指示・命令までしてるのか?と不思議に思いました。 下記のように解釈すればいいのでしょうか? プログラム探し出して起動するという命令をCPUに出すのはカーネルであり、あくまでもシェルとはユーザが打ったコマンドをOSが解釈できる形に翻訳してるプログラムにすぎないのですよね? 一般的なシェルの解釈は→仲介役 機能としてのシェルの解釈は→(カーネル+シェル) と考えればよろしいでしょうか?

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

ユーザーの指示を解釈して、ユーザーが起動して欲しいのはこのプログラムファイルだと特定するのはシェルの役目です。 シェルはカーネルに指定したファイルの実行を依頼します。このとき、フルパス名を指定して、ファイルを一意に特定するわけです。 カーネルは依頼されたファイルを実行します。指定されたファイルがディスクのどのあたりに記録されているかを調べてディスクからファイルを読み込むのはカーネルの役目です。 繰り返すと、「探す」の意味が2レベルあり、どのファイルか探すのはシェル、ディスク内の物理格納場所を探すのはカーネルです。

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.2

シェルもまた、プログラムなのですから、機械語命令の塊です。 CPUにはプログラムを探すとか起動するとかいう高度な機能はありません。 たとえば指定されたプログラムを実行する機能は(おそらく)数1000個の機械語命令として書かれていて、OSカーネル内にあります。 もうちょっと基礎的なところから勉強し直すことをお勧めします。 プログラムを探すのも実行するのも、シェルがカーネルに依頼して実現しています。ただ(たいていの)カーネルはファイルを探す機能はないので、シェルが「ファイルの一覧を取る」とか「指定した名前のファイルの有無を調べる」とかいうカーネルの機能を組み合わせて実現しています。 シェルへの入力の解釈はシェルが行っていますよ。

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

CPUに直接命令を出せるのはカーネルだけです。 で、シェルはカーネルにプログラム(厳密にはファイル)を渡すだけの役目です。あくまでもカーネルとのやり取りはプログラムが行います。 ややこしいのがシェル自体もまたプログラムであるという事。シェルをプログラムとして利用する場合はカーネルとのやり取りをシェル自身がプログラムとして行います。

関連するQ&A