プログラミング言語で実装されていない場合、「システムコール」とはどういう意味ですか?

プログラミング言語で実装されていない場合、「システムコール」とはどういう意味ですか?

「システムコール」という用語を理解したいと思います。私は、ユーザー空間アプリケーションからカーネルサービスを取得するために使用されるシステムコールに精通しています。

明確にする必要があるのは、「システムコール」と「システムコールのC実装」の違いです。

私を混乱させる文章があります。

Unixファミリーシステムでは、このAPIは通常、呼び出すシステムコールと同じ名前で命名されるシステムコールのラッパー関数を提供するglibcなどのCライブラリ(libc)実装の一部です。

「彼らが呼び出すシステムコール」とは何ですか?彼らはどこから来たの?私のコードに直接含めることはできますか?

一般的な意味では、「システムコール」は単なるPOSIX定義のインタフェースではありませんが、実際に実装を見るにはCソースコードをチェックし、実際のユーザー空間でカーネル通信がどのように機能するかを確認できますか?

背景注意:私はすべてのc関数が最終的に/dev

ベストアンサー1

システムコールそれ自体コンセプトです。これは、プロセスがカーネルに実行を要求できることを示します。

これらのシステムコールは、UNIXシリーズシステムのカーネルで実装されています。この実装(Cで書かれており、その程度はasmで書かれています)は、実際にシステムで作業を行います。

その後、プロセスは、インターフェイスを使用してシステムコールを実行するようにシステムに要求します。このインタフェースは POSIX によって指定されます。これはC標準ライブラリの関数セットです。実際には、いくつかのチェックを実行し、カーネルでシステム固有の機能を呼び出して、システムコールを実行するために何をすべきかを知らせるラッパーです。秘密は、インターフェースである関数がシステム呼び出し自体と同じ名前を持ち、しばしば「システム呼び出し」と呼ばれることです。

システム固有のメカニズムにより、システムコールを実行するカーネルの関数を直接呼び出すことができます。問題は、コードを完全に移植できないようにすることです。

したがって、システムコールは次のようになります。

  • ユーザープロセスにサービスを提供するためにカーネルが実行する一連のタスクである概念
  • カーネルからこのサービスを取得するには、コードでC標準ライブラリ関数を使用する必要があります。

おすすめ記事