❤恋するコンピュータサイエンス❤

コンピュータサイエンス、3DCGをもっと楽しく、もっと本質的に!c言語、c++の記事中心です

シェルとは何か?

Q.

シェルとは何か?

 

A.

シェルとはシステムコールの為の関数です。

 

システムコールとはカーネルの外の階層に位置し、カーネルを操作するためのインターフェイスシステムコールの一般的な関数ライブラリはC言語で定義されている。

情報を出力したり、入力したりするのは、コンピュータ全体に関わることなので、システムコールと呼ばれ、シェルに内包されている関数である。

バイスやファイル、プロセスなどが関与する場合は、カーネルとのやりとりが必要になります。

何故シェルでカーネルを操作するのかというとOSのカーネルを直接操作するのは困難だからだ
実はそれらの標準ライブラリ関数は, 内部でwrite( )やopen( )といったシステムコール
利用してOSのカーネルとやりとりを行っています. これらは, プログラミング言語における
関数と同じく, 引数を与えたり戻り値を取得したりして利用します. つまり, システムコールAPI)は外見上, 関数としてプログラムのなかで扱うわけです. 
システムコールを使ったことがない方におさえておいてもらいたいのは,
システムコールの実体は関数」ということです. システムコールがハードウェアの挙動を隠蔽し, 抽象化する(関数としてブラックボックス化する)ことによって, プログラマはハードウェアの物理特性を意識することなく(すなわち, 通常の関数を利用する感覚で),
バイスからの入出力処理を行うことが可能となるのです.