No.3ベストアンサー
- 回答日時:
まず、システムコール という概念について勉強してみると良いかもしれません。
cdをaaaでできるようにするのはカーネルの仕事ではありません。カーネルの仕事は資源を使いたい複数のプログラムの調停と資源の管理です。それに対しての命令はシステムコールという特殊な命令で依頼しますが、x86でLinuxを動かしている場合、特殊なCPU命令とともにcdに相当する命令を示す番号を通知するだけでcdやaaaという文字を送ることはありません。
実際の流れとしては、あなたが、cdとコマンドを打つと、シェルというプログラムがcdを解釈して、それをシステムコールという形でカーネルに伝えます。つまり、cdの代わりにaaaで同じ意味にするには、シェルでcdという文字列からシステムコールに変換しているところを改造して、aaaでそれをできるようにするとよいでしょう。
ちなみに、cdのカーネルでの実装箇所ならここですね。
http://lxr.linux.no/#linux+v3.6.3/fs/open.c#L380
cdに相当するシステムコール(chdir)を呼ぶとここにくるはずです。
Linuxではありませんが、まず、「デーモン君のソースコード探検」あたりで雰囲気を掴むといいかもしれません。それから、もはやかなり古くなっていますが、「Linuxカーネル2.6解読室」にざっと目を通してからカーネルのコードを読むのにとりかかると良いでしょう。
あと、もっとざっくりOSについて学びたいなら「Operating System Concepts」という書籍が有名ですが、自分で読みこなすのも面倒だと思うので、これを参考文献に上げている大学の授業でも覗いてみるとよいでしょう。
では、頑張って。
No.4
- 回答日時:
シェルというのは、大雑把に言うと、ユーザーインターフェイスを提供するプログラムです。
いわゆるLinux用ソフトは、シェルを介さずに、カーネルや
その他のライブラリーなどを呼び出すことで動作します。
対して、人が操作する場合には、そういったLinux用ソフトが起動していなければ
シェルプログラムを介さずに操作することはできません。
シェルには、大別して、sh,bashそれにCOMMAND.COMなどのコマンドシェルと
WindowsやMacOSで使われているようなグラフィカルなシェルがあります。
つまりX Window Systemもグラフィカルシェルです。
言い換えれば、シェルとは、CLI,CUI,GUIのユーザーインターフェイスを提供するプログラムの総称です。
ですから、ユーザーが使うコマンド自体は、カーネルには実装されていません。
MS-DOSでの内部コマンドやバッチファイルはCOMMAND.COMを介して実行されますし
cd,grep,mkdir,dfなどのコマンドを利用できるシェルスクリプトも、シェルの上で実行されます。
MS-DOS(COMMAND.COM)+Windows3.1の考え方をすると
CUI操作のOSの上にGUIが乗っているように思えますが…
UNIX系OSでは、カーネルの上に、CUIシェルとGUIシェルが乗っかるカタチになっています。
現行のWindowsNT系OSでも、GUIの起動に、COMMAND.COMは必須では無いはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
export と set は違うの?
-
シェルスクリプトに関する問題...
-
ubuntuの端末の左にカレントデ...
-
バックスラッシュの意味がわか...
-
Cシェル内でBシェルの様な関数...
-
LANG設定について
-
正規表現とワイルドカード
-
SONYの音楽ソフト「x-アプリ」...
-
Dirコマンドでフォルダ内ファイ...
-
エクセルの表にヘンな枠が・・・
-
SPI非言語の問題 解説お願いします
-
ディスク上のサイズを確認する方法
-
SCコマンドでアクセス拒否
-
batである文字列内に特定の文字...
-
tar.bz2ファイルのインストール...
-
gnome-terminalの使い方教えて...
-
画面の文字をさかのぼってみる...
-
シェルスクリプトでエラーが出ます
-
"パイプが切断されました"の表...
-
-bash: ftp: コマンドが見つか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
export と set は違うの?
-
ubuntuの端末の左にカレントデ...
-
.cshrc ファイルについて
-
Cシェル内でBシェルの様な関数...
-
『存在するかどうか分からない...
-
シェルスクリプトに関する問題...
-
シェル 会話形式でエンターキ...
-
コマンドプロンプトとかで、net...
-
シェルスクリプトで #!/bin/sh ...
-
バックスラッシュの意味がわか...
-
csh (tcsh)での環境変数の長さ...
-
ps -aのセッションリーダとは
-
シェル(ksh)で変数にある文字列...
-
makefile内の$$$$の意味
-
posixでshellを起動したとき`da...
-
Linuxのファイル禁止文字
-
ターミナルが全く入力できない
-
Tabキー補完や↑キーのヒストリ...
-
Cシェルでのファイルからの入...
-
Solarisでデフォルト環境変数の...
おすすめ情報