システムコール

システムコールとは、プログラムオペレーティングシステムに対して行う要求です。これにより、アプリケーションはオペレーティングシステムのAPIにある関数やコマンドにアクセスできます。

システムコールは、ハードウェアデバイスとの通信やファイルの読み書きなど、システムレベルの操作を実行します。システムコールを使うことで、開発者は関数を最初から作成する代わりに、オペレーティングシステム(OS)がサポートする、あらかじめ作成された関数を利用できます。これにより、開発が簡単になり、アプリの安定性が向上し、異なるバージョンのOS間でアプリをより「移植しやすく」できます。

システムコールの仕組み

アプリケーションは、ユーザー空間と呼ばれるメモリ内の領域で実行されます。システムコールは、カーネル空間で動作するオペレーティングシステムのカーネルにアクセスします。アプリケーションがシステムコールを行うときは、まずカーネルに許可を求める必要があります。これは割り込み要求によって行われる場合があります。割り込み要求が発生すると、現在のプロセスが一時停止し、制御がカーネルに移ります。

要求が許可されると、カーネルはファイルの作成や削除など、その要求を処理します。操作が完了すると、カーネルは出力をアプリケーションに渡します。アプリケーションは、メモリ内のカーネル空間からユーザー空間へデータを転送します。アプリケーションは、カーネルからの出力を入力として受け取ります。プログラムのソースコードでは、これはパラメーターの値や、関数内の戻り値である場合があります。入力を受け取ると、アプリケーションはプロセスを再開します。

システム日時の取得などの基本的なシステムコールには、数ナノ秒かかることがあります。ネットワークデバイスとの通信の確立など、より高度なシステムコールには数秒かかる場合があります。ボトルネックを防ぐため、ほとんどのオペレーティングシステムは、システムコールごとに個別のカーネルスレッドを開始します。最新のオペレーティングシステムはマルチスレッドに対応しており、複数のシステムコールを同時に処理できます。

更新日 April 27, 2019 著者: Per C.

quiz知識をテストする

SDS stands for Software-Designed ____?

A
Software
0%
B
Systems
0%
C
Storage
0%
D
Security
0%
Correct! Incorrect!     View the SDS definition.
More Quizzes →

Tech Terms コンピューター辞書

このページのシステムコールの定義は、TechTerms.comの著者が執筆したオリジナルの定義です。このページを参照または引用する場合は、定義の直下にある緑色の引用バーをご利用ください。

私たちの目標は、コンピューター用語をわかりやすく説明することです。すべての定義において正確さとわかりやすさを追求しています。フィードバックや新しい技術用語の提案がある場合は、お問い合わせください

Tech Terms ニュースレター

毎日または毎週のニュースレターで技術知識を高めましょう!今すぐ購読して、新しい用語やクイズをメールでお受け取りください。

無料のTechTermsニュースレターに登録する

メールの受信頻度を選択してください

各メールのリンクから、いつでも登録解除または頻度変更ができます。 ご質問はこちらからお問い合わせください。

注意:ニュースレターは英語で配信されます。