ホームページ >よくある問題 >オペレーティング システムはアプリケーション プログラムにどのようなインターフェイスを提供しますか?

オペレーティング システムはアプリケーション プログラムにどのようなインターフェイスを提供しますか?

青灯夜游
青灯夜游オリジナル
2022-06-30 18:02:2410763ブラウズ

オペレーティングシステムがアプリケーションプログラムに提供するインターフェースが「システムコール」です。オペレーティング システム インターフェイスには、主にコマンド インターフェイスとプログラム インターフェイスがあり、プログラム インターフェイスはシステム コールとも呼ばれ、一連のシステム コール コマンドで構成され、ユーザー プログラムが使用する一連のシステム コール コマンドを提供します。システムコールは、アプリケーションプログラムとシステムとの間のインターフェースであり、アプリケーションプログラムの要求をカーネルに渡し、対応するカーネル関数を呼び出して必要な処理を完了させ、処理結果をアプリケーションプログラムに返します。

オペレーティング システムはアプリケーション プログラムにどのようなインターフェイスを提供しますか?

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

オペレーティングシステムがアプリケーションプログラムに提供するインターフェースが「システムコール」です。

オペレーティング システム インターフェイスには、主にコマンド インターフェイスとプログラム インターフェイスがあり、このうちプログラム インターフェイスはシステム コールとも呼ばれます。

プログラム インターフェイス (システム コール) は、一連のシステム コール コマンドで構成され、ユーザー プログラムが使用する一連のシステム コール コマンドを提供します。

オペレーティング システムのシステム コール

オペレーティング システム実装によって提供されるすべてのシステム コールのセットは、プログラム インターフェイスまたはアプリケーション プログラミング インターフェイスです。 (アプリケーション プログラミング インターフェイス、API)。アプリケーションプログラムとシステム間のインターフェースです。

オペレーティング システムの主な機能は、ハードウェア リソースを管理し、アプリケーション開発者がアプリケーションの互換性を高めるための良好な環境を提供することであり、この目的を達成するために、カーネルは一連の所定の機能を提供します。これらは、システム コールと呼ばれる一連のインターフェイスを通じてユーザーに表示されます。システムコールはアプリケーションの要求をカーネルに渡し、対応するカーネル関数を呼び出して必要な処理を完了させ、処理結果をアプリケーションプログラムに返します。

現代のオペレーティング システムには通常マルチタスク機能があり、通常はプロセスによって実装されます。オペレーティング システムは各プロセス間の実行を迅速に切り替えるため、すべてが同時に行われているように見えます。同時に、これは多くのセキュリティ上の問題も引き起こします。たとえば、プロセスは、別のプロセスに異常を引き起こしたり、何らかの目的を達成したりするために、プロセスのメモリ空間内のデータを簡単に変更できます。したがって、オペレーティング システムは、各プロセスが次のことを実行できることを保証する必要があります。安全に実行します。この問題の解決策は、プロセッサにベース レジスタと制限レジスタを追加することです。これら 2 つのレジスタの内容は、ハードウェアを使用して、メモリ アクセス命令によってアクセスされるメモリのアドレスを制限します。このようにして、システムがプロセスを切り替えるときに、これら 2 つのレジスタの内容をプロセスに割り当てられたアドレス範囲に書き込むことができるため、マルウェアを回避できます。

ユーザー プログラムが他のメモリ空間にアクセスするためにベース レジスタとリミット レジスタの内容を変更するのを防ぐために、これら 2 つのレジスタには特別な命令を介してアクセスする必要があります。通常、プロセッサには「ユーザーモード」と「カーネルモード」の2つのモードがあり、現在どのモードにあるかを識別するためにタグビットが使用されます。ベース アドレス レジスタの内容の変更などの一部の命令は、カーネル モードでのみ実行できます。ユーザー モードの場合、ハードウェアはこの命令を直接スキップし、次の命令の実行を続行します。

同様に、セキュリティ上の理由から、一部の I/O 操作命令はカーネル モードの実行のみに制限されているため、オペレーティング システムは、特定の場所からのデータの読み取りなどの機能をアプリケーションに提供するインターフェイスを提供する必要があります。ディスク上のインターフェイス、これらのインターフェイスはシステム コールと呼ばれます。

オペレーティング システムがシステム コール要求を受信すると、プロセッサはカーネル モードに入り、I/O 操作などの命令を実行し、ベース アドレス レジスタの内容を変更します。システム コールの内容を処理した後、 、操作 システムはプロセッサをユーザー モードに戻し、ユーザー コードを実行します。

システムコールと通常のコールの違い

システムコールは本質的には手続き呼び出しですが、一般的な手続き呼び出しとは異なる特殊な手続き呼び出しです。ユーザープログラムとプロシージャコールには明確な違いがあります。

  • #実行ステータスが異なります

    実行ステータスが異なります。システムコールの呼び出しプロセスと呼び出されるプロセスは異なる状態で実行されますが、通常のプロシージャコールは通常同じ状態で実行されます。

  • #呼び出し方法が異なります
  • 呼び出し方法が異なります。システム コールは、対応するコマンド ハンドラーに転送される前に、まずソフト割り込みメカニズムを通じてシステム コアに入る必要があります。通常のプロシージャ呼び出しは、呼び出し側プロセスから呼び出されるプロセスに直接転送できます。

    #質問に戻る
  • 質問に戻ります。プリエンプティブ スケジューリングを使用するシステムでは、システム コールが戻ったときに、より優先度の高いタスクの準備ができているかどうか、スケジューリング分析を再分析する必要があります。通常のプロシージャ呼び出しは、呼び出しプロセスに直接戻って実行を継続します。

    さらに関連する知識については、
  • FAQ
列をご覧ください。

以上がオペレーティング システムはアプリケーション プログラムにどのようなインターフェイスを提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。