web-dev-qa-db-ja.com

システムコールはどのように機能しますか

システムコールはどのように機能しますか?
システムコール中に発生する操作は何ですか?
open , read, write, socketなどのさまざまなシステムコールがあります。それらが一般的にどのように機能するか知りたいですか?

16
Rocoder

つまり、システムコールの仕組みは次のとおりです。

  • まず、ユーザーアプリケーションプログラムがシステムコールの引数を設定します。
  • 引数がすべて設定された後、プログラムは「システムコール」命令を実行します。
  • この命令により、exceptionプロセッサが新しいアドレスにジャンプし、そこでコードの実行を開始するイベントが発生します

  • 新しいアドレスの命令は、ユーザープログラムの状態を保存し、必要なシステムコールを把握し、そのシステムコールを実装するカーネル内の関数を呼び出し、ユーザープログラムの状態を復元し、制御をユーザープログラムに戻します。

open()システムコールを呼び出すユーザーアプリケーションの視覚的な説明:

enter image description here

システムコールインターフェイス(オペレーティングシステムによって使用可能になるシステムコールへのリンクとして機能します)は、OSカーネルで目的のシステムコールを呼び出し、システムコールのステータスと戻り値を返すことに注意してください。 呼び出し元は、システムコールがどのように実装されているか、または実行中に何が行われるかについて何も知る必要はありません
別の例:printf()システムコールを呼び出すwrite()ライブラリ呼び出しを呼び出すCプログラム

enter image description here

詳細な説明については、CH-1のセクション1.5.1およびCH-2のセクション2.3を オペレーティングシステムの概念 からお読みください。

28
haccks