システムコールの説明、アクセス制御の説明の違いと接続

ソースプログラムでオペレーティングシステムサービスの要件がある場合、コンパイラは「visit命令」を配置し、ソースプログラムから変換されたターゲットプログラムにいくつかのパラメータを設定します。ターゲットプログラムが実行されると、中央プロセッサが「訪問制御命令」を取得すると、割り込みイベントが生成され、割り込みデバイスが中央プロセッサを管理状態に変換し、オペレーティングシステムが割り込みイベントを処理できるようにします。オペレーティングシステムは、アクセス制御命令のパラメーターを分析し、対応する「システムコール」サブルーチンがユーザーにサービスを提供できるようにします。第二に、訪問制御命令は、心の状態で使用される命令です。

       ユーザープログラムは現在の状態でしか実行できず、特権付き命令は使用できないことがわかっています。したがって、そのような質問があります。ユーザープログラムがペリフェラルを起動したい場合、または現在の状態では実行できないジョブを完了したい場合はどうすればよいですか。この問題を解決するには、3つの条件があります。

  (1)プロセッサがターゲット状態から管理状態入り、オペレーティングシステムに代わって完了する作業をサブミットできるようにするための命令が必要です

  (2)制御状態では、オペレーティングシステムはユーザープログラムの要求を完了します。

  (3)作業終了後、オペレーティングシステムはユーザープログラムに戻ることができます。つまり、管理状態から元の状態に戻ることができます。

   この問題を解決するには、訪問管理の指示が必要です。アクセス制御命令自体は特権命令ではなく、その基本的な機能は、プログラムに「自発的アクセス」メソッドを持たせて、アクセス制御を中断させることです。

  私が見つけた資料もいくつかあります。アクセス制御命令は2つの部分で構成されています:命令コードとアクセス制御割り込み番号、つまり  SVC n、式(1)ここで、SVC(スーパーバイザーコール)は、それがアクセス制御命令であることを示す命令コードです; nは値が整数であるアクセス制御割り込み番号は、具体的にはどのような種類のアクセス要求かを示します。割り込みが発生すると、ハードウェア端末デバイスは、アクセス制御割り込み番号nを古いプログラムステータスワードの割り込みコードフィールドに送信します。アクセス制御割り込み制御プログラムは、システムスタックから取り出され、対応するサービスプログラムに転送されます。で。(ここで少し注意が必要です。システムコールプログラムは、訪問割り込み番号に基づいて決定されます)。

  実際の使用では、ユーザープログラムとオペレーティングシステムは、互いにパラメーターと戻り値を渡す必要があります。したがって、ユーザーアクセス制御命令の一般的な形式は、準備パラメーター、SVC n、戻り値の式(2)です。特定のハウスキーピング要件に従って、パラメーターと戻り値はレジスターまたはメモリーを介して渡すことができます。後者の場合、オペレーティングシステムはプロセススペースにアクセスできる必要があります。

  式(2)は一般にシステムコール命令と呼ばれ、アクセス制御命令の他に、準備パラメータと戻り値を持っている。使用しやすいように、一般に、高級言語でのプロシージャコールと同様の形式で記述されています。つまり、戻り値=システムコール名(パラメーター1、パラメーター2、...、パラメーターn)方程式(3)。もちろん、コンパイラーは式(3)を(2)の形に変換します。その中で、システムコール名は式(1)に対応し、異なるシステムコール名は異なる整数nに対応します。一部の書籍では、式(3)はマクロ命令または式(2)を表す一般化された命令とも呼ばれます。

おすすめ

転載: www.cnblogs.com/cy13blogs/p/12711152.html