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

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

青灯夜游
青灯夜游オリジナル
2020-07-23 14:31:1119700ブラウズ

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

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

システム コールは、オペレーティング システムがプログラマに提供する唯一のインターフェイスです。

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

現代のオペレーティング システムには通常、プロセスによって実装されるマルチタスク機能があります。オペレーティング システムは各プロセス間の実行を迅速に切り替えるため、すべてが同時に行われているように見えます。

同時に、これは多くのセキュリティ上の問題ももたらします。たとえば、プロセスは、別のプロセスを異常な状態にしたり、何らかの目的を達成するために、プロセスのメモリ空間内のデータを簡単に変更することができます。オペレーティング システムは、各プロセスが安全に実行できることを保証する必要があります。この問題の解決策は、プロセッサにベース レジスタと制限レジスタを追加することです。

これら 2 つのレジスタの内容は、ハードウェアを使用して、メモリ アクセス命令によってアクセスされるメモリのアドレスを制限します。このようにして、システムがプロセスを切り替えるときに、これら 2 つのレジスタの内容をプロセスに割り当てられたアドレス範囲に書き込むことができるため、マルウェアを回避できます。

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

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

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

関連知識の詳細については、PHP 中国語 Web サイト をご覧ください。

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

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