25

これがオペレーティングシステムにどのように適用されるか、また実際のオペレーティングシステムではないものにどのように適用されるかを理解したい. 3つとその本質の違いがわかりません。API は呼び出すことができる関数ですが、シェルとは何ですか? API がある場合、オペレーティング システムのカーネルとは正確には何ですか? オペレーティング システムには変更されないコアがあり、このコアは典型的な OS の基本的なジョブを実行しますが、同じカーネルで GUI やコマンド ラインなどのユーザー インターフェイスが異なる場合があることを理解しています。問題は、これらのものがどのように違うのか混乱していることです。あああああああ!

C の printf や fopen などの関数を API 呼び出しと呼ぶことはできますか?

4

4 に答える 4

33
  • コマンド ライン インターフェイス (CLI) シェルはコマンド インタープリターです。つまり、コマンド ライン (端末) に入力したコマンドを処理するか、シェル スクリプト (コマンドを含むテキスト ファイル) を処理 (バッチ モード) するプログラムです。初期の Unix 時代には、ユーザーが自分のマシンと対話するための独自の方法でした。現在、グラフィカル ユーザー インターフェイス (GUI) は、ほとんどのユーザーにとって好ましいタイプのシェルになりつつあります。

  • カーネルは、アプリケーションが実行されているハードウェア (CPU、RAM、ディスク、ネットワークなど) と接続する低レベルのプログラムです。これはコンピューター上で実行される最低レベルのプログラムですが、仮想化を使用すると、別のオペレーティング システム上で実行される仮想マシン上で複数のカーネルを実行できます。

  • APIは、開発者がライブラリやプログラミング言語を使用してコードを記述するときに使用する必要があるインターフェイスを定義する一般的な用語です。カーネルはライブラリではないため、API はありません。それらにはABIがあり、他のものを超えて、アプリケーションがシステムコールを通じてそれらと対話する方法を定義します。Unix アプリケーション開発者は、標準 C ライブラリ (例: libcglibc) を使用して、ABI 準拠のバイナリを構築します。printf(3)システムコールのラッパーでfopen(3)はなく、(g)libc標準機能です。彼らが最終的に使用する低レベルのシステム コールはwrite(2)、 とopen(2)、おそらくbrk,のようなものmmapです。括弧内の数字は、そのコマンドがどのマニュアルに記載されているかを示す規則です。

Unix マニュアル ページの第 1 巻には、シェルコマンドが含まれています。

2 番目のものには、や などのシステム コールラッパーが含まれています。それらはカーネルへのインターフェースを形成します。writeopen

3 番目のものには、やなどの標準ライブラリ (Unix 標準APIを含む) 関数 (システム コールを除く)が含まれています。これらは特定のシステム コールのラッパーではなく、必要に応じてシステム コールを使用するコードです。fopenprintf

于 2012-08-26T22:29:06.980 に答える
7

シェルは、コマンド ラインによって OS およびカーネルと通信する方法です。シェルは、API も呼び出すことでこれを行います。カーネルは確かに OS の中核であり、メモリ管理、タスク スケジューリング、ファイルシステムのハンドル、I/O 処理などを行います...カーネルが行うすべてのことは、OS が提供する API によって何らかの方法で呼び出すことができます。

printf と fopen は、OS とカーネルによって提供されるシステム コール (API) をラップします。

于 2012-08-26T17:27:21.097 に答える
4

シェル: オペレーティング システムへのコマンド ライン インターフェイスのようなものです。ls、ps、kill などのコマンドを使用して、OS に対して特定の操作を完了するように要求できます。Windows の「cmd」のようなものです。

カーネル: オペレーティング システムのメイン コードです。シェルまたは GUI を介して行うすべての要求 (メモリ割り当て、ファイルを開くなど) は、最終的にカーネルによって実行されます。

はい、あなたが言及した呼び出しは API 呼び出しと見なされます。これらの呼び出しに対する要求もカーネルによって処理されます。Unix で API 呼び出しを見つけるには、以下のリンクにアクセスしてください。 http://www.mkssoftware.com/docs/api_index.asp

これは、UNIX OS の全体像です。

アプリケーション => (シェル + ライブラリ ルーチン) => システム コール => カーネル

最終的なリクエスト ハンドラはカーネルです。どうも!

于 2012-08-26T17:29:21.197 に答える
1

例を考えてみましょう。映画を見ているのはシェル上で、実際にハードウェア上で行われるプロセスはカーネルです。シェルは、ユーザーおよびソフトウェア インターフェイスの OS とほぼ同じように機能し、カーネルは、ソフトウェアとハ​​ードウェアの OS のように機能します。

于 2013-07-10T08:44:13.787 に答える