Q.
シェルとは何か?
A.
シェルとはシステムコールの為の関数です。
システムコールとはカーネルの外の階層に位置し、カーネルを操作するためのインターフェイスシステムコールの一般的な関数ライブラリはC言語で定義されている。
情報を出力したり、入力したりするのは、コンピュータ全体に関わることなので、システムコールと呼ばれ、シェルに内包されている関数である。
デバイスやファイル、プロセスなどが関与する場合は、カーネルとのやりとりが必要になります。
何故シェルでカーネルを操作するのかというとOSのカーネルを直接操作するのは困難だからだ
実はそれらの標準ライブラリ関数は, 内部でwrite( )やopen( )といったシステムコールを
利用してOSのカーネルとやりとりを行っています. これらは, プログラミング言語における
関数と同じく, 引数を与えたり戻り値を取得したりして利用します. つまり, システムコール(API)は外見上, 関数としてプログラムのなかで扱うわけです.
システムコールを使ったことがない方におさえておいてもらいたいのは,
「システムコールの実体は関数」ということです. システムコールがハードウェアの挙動を隠蔽し, 抽象化する(関数としてブラックボックス化する)ことによって, プログラマはハードウェアの物理特性を意識することなく(すなわち, 通常の関数を利用する感覚で),
デバイスからの入出力処理を行うことが可能となるのです.