OSのシステムコール(Operating System): とは何か、種類と例
システムコールとは何ですか Operaティンシステム?
A システムコール プロセスとオペレーティング システム間のインターフェイスを提供するメカニズムです。これは、コンピュータ プログラムが OS のカーネルにサービスを要求するプログラム方式です。
システム コールは、API (アプリケーション プログラミング インターフェイス) を介してオペレーティング システムのサービスをユーザー プログラムに提供します。システム コールは、カーネル システムの唯一のエントリ ポイントです。
システムコール例
たとえば、あるファイルからデータを読み取るプログラム コードを作成する必要がある場合、そのデータを別のファイルにコピーします。 プログラムに必要な最初の情報は、入力ファイルと出力ファイルの XNUMX つのファイルの名前です。
対話型システムでは、この種のプログラムの実行には OS によるいくつかのシステムコールが必要です。
- 最初の呼び出しは、画面にプロンプトメッセージを書き込むことです
- 次に、XNUMX つのファイルを定義する文字をキーボードから読み取ります。
システムコールはどのように機能するのでしょうか?
OS でのシステム コールの手順は次のとおりです。
上のシステム コールの例の図からわかるように。
ステップ1) システムコールによって中断されるまでユーザーモードで実行される処理。
ステップ2) 以降、システムコールはカーネルモードで優先的に実行される。
ステップ3) システムコールの実行が終了すると、制御はユーザーモードに戻ります。
ステップ4) ユーザープロセスの実行が再開されました カーネルモード.
なぜOSにシステムコールが必要なのでしょうか?
OS でシステム コールが必要となる状況は次のとおりです。
- ファイルの読み取りと書き込みにはシステムコールが必要です。
- ファイル システムがファイルを作成または削除したい場合は、システム コールが必要です。
- システム コールは、新しいプロセスの作成と管理に使用されます。
- ネットワーク接続には、パケットを送受信するためのシステム コールが必要です。
- スキャナー、プリンターなどのハードウェア デバイスにアクセスするには、システム コールが必要です。
システムコールの種類
OS のシステム コールには次の XNUMX 種類があります。
- プロセス制御
- ファイル管理
- デバイス管理
- 情報のメンテナンス
- 通信部
プロセス制御
このシステムコールは、プロセスの作成、プロセスの終了などのタスクを実行します。
機能:
- 終了と中止
- ロードして実行する
- プロセスの作成とプロセスの終了
- 待って Signal イベント
- メモリの割り当てと解放
ファイル管理
ファイル管理システム呼び出しは、ファイルの作成、読み取り、書き込みなどのファイル操作ジョブを処理します。
機能:
- ファイルを作成する
- ファイルを削除する
- ファイルを開いたり閉じたりする
- 読み取り、書き込み、位置変更
- ファイル属性の取得と設定
デバイス管理
デバイス管理は、デバイス バッファーからの読み取り、デバイス バッファーへの書き込みなどのデバイス操作を実行します。
機能:
- デバイスをリクエストして解放する
- デバイスを論理的に接続/切断する
- デバイス属性の取得と設定
情報のメンテナンス
情報と、OS とユーザー プログラム間の情報の転送を処理します。
機能:
- 時刻と日付を取得または設定する
- プロセスとデバイスの属性を取得する
コミュニケーション
これらのタイプのシステム コールは、プロセス間通信に特に使用されます。
機能:
- 通信接続の作成、削除
- メッセージの送信、受信
- OS がステータス情報を転送できるようにする
- リモートデバイスの接続または切断
システムコールのパラメータを渡すためのルール
システム コールにパラメーターを渡すための一般的な共通ルールを次に示します。
- パラメータは、オペレーティング システムによってスタックにプッシュされるか、スタックからポップされる必要があります。
- パラメータはレジスタで渡すことができます。
- レジスタよりも多くのパラメータがある場合は、ブロックに格納し、ブロック アドレスをパラメータとしてレジスタに渡す必要があります。
OSで使用される重要なシステムコール
待つ()
一部のシステムでは、プロセスは、別のプロセスが実行を完了するまで待つ必要があります。 このタイプの状況は、親プロセスが子プロセスを作成し、その子プロセスが実行されるまで親プロセスの実行が中断されたままになる場合に発生します。
親プロセスの一時停止は、wait() システム コールによって自動的に行われます。 子プロセスが実行を終了すると、制御は親プロセスに戻ります。
フォーク()
プロセスはこのシステム コールを使用して、自分自身のコピーであるプロセスを作成します。 このシステムの助けを借りて、親プロセスを呼び出すと子プロセスが作成され、子プロセスが実行されるまで親プロセスの実行は一時停止されます。
exec()
このシステム コールは、すでに実行中のプロセスのコンテキストで実行可能ファイルが古い実行可能ファイルを置き換えるときに実行されます。 ただし、新しいプロセスは構築されないため、元のプロセス識別子は残りますが、スタック、データ、ヘッド、データなどが新しいプロセスに置き換えられます。
殺す()
kill() システム コールは、プロセスの終了を促す終了信号をプロセスに送信するために OS によって使用されます。 ただし、kill システムコールは必ずしもプロセスを強制終了することを意味するわけではなく、さまざまな意味を持ちます。
出口()
exit() システムコールは、プログラムの実行を終了するために使用されます。 特にマルチスレッド環境では、この呼び出しはスレッドの実行が完了したことを定義します。 OS は、exit() システム コールの使用後にプロセスによって使用されたリソースを再利用します。
まとめ
カテゴリー | Windows | Unixの |
---|---|---|
プロセス制御 | CreateProcess() 終了プロセス() WaitForSingleObject() |
フォーク() 出口() 待つ() |
デバイスの操作 | SetConsoleMode() ReadConsole() WriteConsole() |
loctl() 読んだ() 書く() |
ファイル操作 | CreateFile() ReadFile() WriteFile() クローズハンドル() |
開ける() 読んだ() 書く() 近い!) |
情報の保守 | GetCurrentProcessID() SetTimer() 睡眠() |
getpid() 警報() 睡眠() |
コミュニケーション | CreatePipe() CreateFileMapping() MapViewOfFile() |
パイプ() shm_open() mmap() |
保護 | SetFileSecurity() セキュリティの初期化Descriptまたは() セキュリティの設定Descriptまたはグループ () |
Chmod() umask() チョーン() |