• ベストアンサー
  • 暇なときにでも

シェルとカーネルについて。

UNIX等ではシェルとカーネルの概念は有名ですが、Windowsにもシェルとカーネルの概念があると聞きましたが、具体的にはどの機能(?)がシェルに当たるのでしょうか? UNIXとかならシェルはコマンドラインの命令をカーネルに伝える、というのでなんとなく分かるのですが、Windowsでは基本的にはGUIで操作するのでどこがシェルなのかな?と疑問に思います。 (コマンドプロンプトで実行する際はWindowsでのシェルの役割が何となく認識できますが) どなたか分かる方、ご意見・ご回答お願いします。 (乱文ですいません)

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数1522
  • ありがとう数4

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

  • ベストアンサー
  • 回答No.3

シェルはUIを提供します(これはOKですね?)。しかし、UIを提供するものすべてがシェルではありません。 UIを提供するプログラムには、大きく分けて 1. ユーザを識別するためのUIを提供するもの。(ログオン操作) 2. 1.が識別したユーザに対して最初のUIを提供するもの。(シェル) 3. 2.によって起動されるもの。(アプリケーション) 4. 1.によらず(ユーザを識別せずに)起動されるもの。(デーモン、サービス等のシステムプログラムでUIを持つもの) の4種類があります。 シェルの定義としてただ単に「最初にUIを提供するプログラム」と書くと1.になってしまうので、1.を除外するために「最初に『ユーザごとの』UIを提供するプログラム」という限定を付けました。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お返事どうもありがとうございます。 今回のご説明でやっと理解できました。 なるほど、ログオン操作はWindows NT系ではwinlogon.exeというものが提供し、各ユーザがログインした後にシェルの役割が始まるのですね。 ちなみにまたまた追加質問で申し訳ないのですが、普通にWindowsを起動している状態でコマンドプロンプトを起動した場合は、シェルを二重(エクスプローラとコマンドプロンプト)で開いていると言うことになるんでしょうか?

関連する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, などの各種アプリケーションの各種操作(処理、実行)というのは、コンピューター言語でシェルを介し機械語でカーネルまで橋渡しされるのでしょうか? なぜこのような質問になるかといいますと... プログラミング言語は機械語にコンパイルして、はじめてコンピューターに理解してもらえる事は百も承知です。 プログラミング言語で制作されたアプリケーションの処理や実行は当然、コンパイル済みの機械語で行うものと認識しております。(ここでは中間言語は除く) ここで冒頭に述べた壁に当たりました。洒落ではなく、私の中で「殻」もとい「壁化」してしまったシェルの存在です。 現在、持ち合わせてる論理から考察すると、機械語で実行された処理をシェルを介す意味がどこにあるのか?それとも介さずカーネルにそのまま引き渡してるのか? 私が間違っており、そもそも制作されたアプリケーションの処理や実行は、コンピューター言語であり、それをシェルを介しカーネルという流れがあるのならば、コンパイラの存在意義が分かりません。 本来はもっと自分が思ってる事を言語化出来ればいいのですが、これが現時点で精一杯です。

  • PERLとシェルについて

    コマンドプロンプトで入力されたPERLコマンドはシェルのプログラムによってカーネルに引き渡されてカーネルがPERLのプログラムにそのコマンドを実行させて、その結果をカーネル→シェルへと引き渡されてコマンドプロンプトに表示されるのでしょうか?

  • シェルとは

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

その他の回答 (3)

  • 回答No.4

そのような理解でよろしいかと思います。 UNIX系で「シェル」と呼ばれるものにsh, csh, bash等いろいろあり複数同時にも利用できるように、Windows系でもexplorer.exeとcmd.exeがあり同時に利用することもできるということになります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お返事どうもありがとうございます。 >UNIX系で「シェル」と呼ばれるものにsh, csh, bash等いろいろあり複数同時にも利用できるように、Windows系でもexplorer.exeとcmd.exeがあり同時に利用することもできるということになります。 なるほど、確かにこう言われれば分かりやすいですね。 今回は本当に勉強になりました。 分かりやすい説明どうもありがとうございました。

  • 回答No.2

GUIか否かによらず、最初に「ユーザごとのUI」を提供するプログラムがシェルです。「ユーザごとの」という限定を付けたのは、「ログオン操作」というUIを「シェル」の範疇から除外するためです。UNIX系ではgetty等、Windows NT系ではwinlogon.exe等が「ログオン操作」のUIを提供します。 Windows 95以降のWindowsの標準シェルはエクスプローラ(explorer.exe)です。Windows 3.xではプログラムマネージャ(progman.exe)。 Windows XPを使っている場合、ブートメニューで「セーフモードとコマンドプロンプト」を選択すると、コマンドプロンプト(cmd.exe)がシェルになります。またMicrosoftが提供する標準telnetサーバを使用する場合もコマンドプロンプトがシェルになります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お返事どうもありがとうございます。 >「ユーザごとの」という限定を付けたのは、「ログオン操作」というUIを「シェル」の範疇から除外するためです。 すいませんが、この意味がよく分からないので出来たらもう少しわかりやすい説明お願いします・・・ (理解力無くてすいません・・・)

  • 回答No.1

エクスプローラがシェルに相当します。 違うものも開発されていますね。

参考URL:
http://kkstudio.hp.infoseek.co.jp/ls_top.html,

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お返事どうもありがとうございます。 エクスプローラと聞いた時は検索の方のエクスプローラの意味かと思ってしまいました。 ちなみに紹介URL肝心の3,4がリンクが貼ってなくて少し残念でした。まあトラブルがあってもいけないのであまりシェルは気軽に変えない方がいいかもしれませんが。

関連するQ&A

  • Linuxのシェル(sh,bash等)について

    Linux上でコマンドを実行するとき、その窓口となるものが、シェル(sh,bash)という認識です。 つまり、 (1)CUI環境でLinuxを操作する上で、シェル以外でコマンドを実行する事はありうるのか? (2)Windowsのコマンドプロンプトも一種のシェルと言えるか 以上、2点についてお教え頂きたいです。 宜しくお願いします。

  • カーネルとハードウェアの関係について

    Windowsはマイクロカーネルが基本的に使用されているとの事ですが、一部のUNIXやLinuxはモノリシックカーネルが使用されていると聞きます。 (違っていたらすいません) モノリシックカーネルはカーネルに対する依存度が高いとの事ですが、PCにモノリシックカーネル使用のOSをインストール後ハード的な部分(CPUやマザーボード等)を代えると起動しなくなるのでしょうか? またマイクロカーネルはハード的な部分を代えても問題ないのでしょうか?

  • windowsでの遠隔実行

    パソコン「A」でモデル作成作業した後、データを送って、 解析演算だけを別のパソコン「B」で実行させるときに、 WINDOWS(XP)でも、UNIXのrloginのように、パソコンAを パソコンBの端末としてコマンド実行を遠隔操作するような 方法がありますか? 実行するのは、コマンドプロンプトからバッチファイル名の 打ち込みでの演算だけす。GUI等は不要です。

    • 締切済み
    • CAE
  • unixのシェルを自動で、キックしたい

    現在のUNIXのデイリーバッチジョブの起動を、できる範囲で自動化したいのですが、 UNIX初心者の為、どうしたら良いのか、全く判りません。 《現在の流れ》 (1)windows のoutlookメールで、バッチジョブの依頼を受ける。(リクエスト項目は、対象日付と対象時間) (2)telnetでunixサーバにログインして、対象の業務のシェルの日付をパラメータで渡して、 手動でシェルをキックをする。 (3)cronで完了メールと実行ログの送出をする。 unixは、HP-UX11.0で、kシェルを使用しています。 上記のような事は、どうしたら実現できるのでしょうか?。 また、wshで、メールの解析をして、バッチジョブ依頼メールから、リクエスト項目を抽出し、 unix シェルの自動起動をする。などという事は、可能なのでしょうか?。 どなたか、詳しい方、お教え願い下さい。 よろしくお願い致します。 同じような運用の仕方をされている方、もしくはお判りの方、ぜひお教えください。

  • UNIXっぽくCUIでPerlをWindowsで

    ちょっとすごいタイトルになってしまいましたが、 今読んでいる書籍が、UNIXのコマンドラインを使用してのPerlの解説がされている本なので、 それをWindowsでも同じようにコマンドを打っていくだけで体感できないかと思っているのですが、 無理でしょうか? コマンドプロンプトを使って、perlの処理をあれこれと試すことはできますでしょうか? Win32 GNUというシェルがウィンドウズにも存在するとのことですが、これをいれればperlをコマンドラインで実現できるのでしょうか? そもそもCUIじゃないと、 #!/usr/local/bin/perl -w というエラーチェックのwを記述しても意味がない気がするのですが、どうなのでしょう。 アドバイスお願いします。

    • ベストアンサー
    • CGI
  • [teraterm] waitコマンドで停止しない。

    お世話になっております。 現在teratermのマクロを作成しているのですが、waitコマンドがうまく動いてくれない箇所があります。 どなたか解決策をご教授いただけないでしょうか。 【質問】 UNIX上にてシェルを実行後、コマンドプロンプトが戻ってきた時点で"echo $?"にてシェルのリターンコードを確認するマクロを作成しています。しかし、シェルの終了に時間がかかるためか、コマンドプロンプトが戻ってくるのを確認せずに"echo $?"を実行してしまっています。 【プログラム(該当箇所)】 timeout=20 sendln 'シェルの実行' wait ']$ ' sendln 'echo $?' wait '0' 【コンソール上】 ]$ シェルの実行 echo $? シェルの実行結果 ]$ 以上、よろしくお願いいたします。

  • OSの教材の正解がわかりません。

    JSTのオーぺレーティングシステムコースのレッスン2. OSの関係する各種の接点をやっています。 それの自己診断テスト2がわかりません。 問2.ユーザとコンピュータのインタフェースに関して、正しいものをすべて選びなさい。 1.UNIX系のOSではプログラムの実行は常にコマンドを使う必要があるので、GUIを利用できない。 2.対話型のコンピュータ利用では、プロンプティング文字が出てくるが、これは、次の入力を促している。 3.GUIとはディスプレイとマウスを使用するユーザインタフェース全般をさす。 4.GUIのアイコンはプログラムの内容を図や絵にして理解しやすくしており、機能を呼び出したりプログラムを開始することができる。 5.UNIX系で利用されるコマンドはカーネルの持つ機能である。 私は 1,2,3,4が正しいと思いました。 ですが不正解でした。 解説を読んだのですが何が違うのかよくわかりません。 解説 UNIX系のOSでは、ユーザは端末からコマンドを入れて操作するのが基本である。この方法は文字をベースとするインタフェースなので、CUIと呼ばれている。文字をベースにする不便さを改善するために、また、複数の作業を効率高く行えるようにするために、ウインドウシステムが開発された。古くはX-WindowなどでありGUIの一つである。その後、複数のGUIがデスクトップ環境として開発されている。 プロンプティングは次の入力を促すメッセージである。 GUIではビットマップディスプレイと位置を示すマウスやトラックボールのようなポインティングデバイスが通常使用される。そして、ディスプレイにはアイコンを表示して理解しやすい利用法を提供するのが一般的である。 コマンドは一種のアプリケーションプログラムであり、UNIXではシェルと呼ばれている。シェルは、その処理においてカーネルコールを利用することで処理を進め、ユーザの要求を果たす。 私の答えの何が違うのか教えてください。 よろしくお願いします。

  • Windowsサーバーの遠隔操作について

    Windowsサーバーを業務上、遠隔操作する事ってありますか? その場合、どのようなエミュレイタを使用しますか? unixやlinuxサーバーは直接コンソールを叩く以外にエミュレイタでPCから操作する事も多いですが、Windowsサーバーは直接サーバーを操作する事が殆どの気がします。 これはunixやlinuxがgui、cui双方でそれなりの操作が出来るのに対し、Windowsサーバーはguiでないと操作できない事が多いからだと思われます。 エミュレイタはcui操作を行うのが殆どです。 要はWindowsに対応したguiエミュレイタがあるかどうか、 それが使用に耐えれる機能と価格なのか、 って事になるかと思いますが、この辺どうなのでしょうか?

  • FedoraCore5

    宜しくお願い致します。 linuxについては全くの初心者です。 FedoraCore5をインストールしました。 GUIでも使えるのかぁと思いGNOMEデスクトップ環境を選択しております。 いざ、いろいろなホームページを参考に使おうと思ったのですが、GUI環境でなくコマンドラインのようなものでの説明が大半でした。 Windowsのようにコマンドプロンプトを出すようにGNOMEでコマンドラインを入力できる画面にできるのでしょうか? また、立ち上げ時にGNOMEを立ち上げないで直接コマンドラインを入れる画面にもっていけるのでしょうか?

  • Visual StudioのGUIとコマンドラインによるコンパイル

    Visual Studio .NET2003を使ってます. 普段GUIでビルドしているのですが, それをコマンドプロンプトからclとlinkコマンドでやろうと思いました. プロジェクトのプロパティの 「C/C++」と「リンク」それぞれの「コマンドライン」というところで確認できるオプションを それぞれそのままclとlinkの後ろにコピペして実行しました. (clの方はソースファイルも最後に追加して.) ところが,出来上がったDLLの挙動が, GUIでビルドした場合と違っています. (JNIでJavaから呼び出しているのですが, コマンドプロンプトから実行した方は呼び出すときにエラーを出します.) GUIでやろうがコマンドラインからやろうが 同じ挙動になると思っていたのですが, 必ずしもそうではないのでしょうか. 用意した環境の不備など何かの見落としによりありえるのでしょうか. アドバイス頂ける方いらっしゃいましたら,お願い致します.