システムコール 【system call】 スーパーバイザコール / supervisor call / SVC
概要
システムコール(system call)とは、コンピュータ上で実行中のプログラムが、オペレーティングシステム(OS)のカーネルの特権的な機能を呼び出す仕組み。また、そのための命令や関数などのインターフェース仕様(API)。「サービスコール」(service call)「カーネルコール」(kernel call)と呼ぶシステムもある。現代的なコンピュータやOSの設計では、システムの安定性と安全性を確保するため、一部の処理や操作はOSの中核部分であるカーネルが特権的に実行し、一般のプログラムからは直接実行することができないようになっている。
例えば、ハードウェアへの直接的なアクセスや、仮想メモリの管理、割り込み設定の変更などはCPUの特権命令を用いて処理され、スーパーバイザモードと呼ばれる特権的な動作モードで稼働しているOSカーネルしか実行できない。
アプリケーションソフトなど利用者が直接操作するプログラムの多くは一般的な動作モードであるユーザーモードで実行されるため、特権命令を実行するにはシステムコールによりカーネルに処理を依頼する必要がある。この手続きは内部割り込み(ソフトウェア割り込み)を発生させる形で実装されることが多いため「SVC割り込み」とも呼ばれる。
カーネルは依頼に従って命令を実行するが、プログラムが特権命令を直に実行する場合と異なり、不正な操作や誤った操作でシステムが危険に曝されないよう一定の制限やチェックを行う。
(2019.7.18更新)