0

私はコンピューター アーキテクチャとデザインの初心者です。私の質問は高レベルのプログラムでした。命令セットは CPU で次々と実行されます。これらの命令を実行するときに、オペレーティング システムの命令がオーバーヘッドとして含まれますか? 例: 2 GHz プロセッサの場合、2*10^9 クロック サイクルで実行できる 2*10^9 命令があります。その場合、オペレーティング システムは常に 1 秒あたり約 1*10^9 命令を実行します。このオーバーヘッドは常に存在し、別の 1*10^9 命令のみが、他のカスタム スケジュール プログラムの実行に自由に使用できますか?

これは、オペレーティング システムが常に実行する命令をできる限り少なくして、実行する他のプログラムをより多く収容できるようにする必要があるということですか?

4

2 に答える 2

1

マーティン氏の応答を少し拡張するために:(これは非常に単純化されていることに注意してください)OSの仕事は、I / O割り込みの処理や複数のタスクのスケジュール設定など、プログラム自体が実行したくないものを処理することです。マシンを共有します。1つのアプリケーションプログラムを実行しているマシンの完璧な世界では、ディスクファイルから次のレコードを読み取る(階層化された「サービス」を呼び出して把握する)など、OSが何かを実行する必要があるまで、プログラムはCPUを制御します。どのディスク、どのファイル、どのレコード、どのバイトを記録し、どのトラックのどのディスクブロックをディスクコントローラから要求するかを計算します。典型的な「実際の」マシンには、画面を更新し、時計を読み取る一連のバックグラウンドタスクも実行されています。 、新着メールのチェック、パッチのダウンロードなど。ここで優先順位が決まります。一部のタスクは優先度が低くなります。これは、Windowsのシステムトレイアイコンを更新して新着メール通知を受け取るなど、タスクがいつ実行されるかを気にしないためです。他のタスクは高い優先度で実行されますが、画面上でマウスをたどり、ポインターから手に変更するなど、非常に短いものです。通常のタスクでは、OSサービスが必要になる前に数百の命令しか実行せず、実行中にスリープ状態になることに注意してください。大規模なアプリケーションには数十万の「命令」が含まれる場合がありますが、ボタンのプッシュやキーボード入力から別のマシンでのデータベース検索からの応答まで、他の何かを待つために30時間の時間を費やします。円周率を小数点以下100万桁まで計算するなど、CPUを集中的に使用するアプリケーションは、プロセッサの99.9%を長期間消費する可能性があります。ただし、OSは、他に何かを行う必要があるかどうかを確認するために、定期的に割り込みをかけます。DOS(1980年代)の時代には、プログラムは実際にwho CPUをしばらく使用する可能性がありましたが、画面に何かを読み書きまたは入力する必要がある場合は、プログラムがそうでない限り、BIOSとしてそれを行う必要がありました。それらの基本的な操作を実行するために書かれています。これの一部は、画面を直接変更し、OSをバイパスして、キーボードまたはマウスのデバイスバッファーから直接読み取るために必要な特定の操作を実行することにより、コンピューターゲームがどのように応答するかです。うまくいけば、私はあなたをもっと混乱させていません... プログラムがそれらの基本的な操作を実行するように作成されていない限り。これの一部は、画面を直接変更し、OSをバイパスして、キーボードまたはマウスのデバイスバッファーから直接読み取るために必要な特定の操作を実行することにより、コンピューターゲームがどのように応答するかです。うまくいけば、私はあなたをもっと混乱させていません... プログラムがそれらの基本的な操作を実行するように作成されていない限り。これの一部は、画面を直接変更し、OSをバイパスして、キーボードまたはマウスのデバイスバッファーから直接読み取るために必要な特定の操作を実行することにより、コンピューターゲームがどのように応答するかです。うまくいけば、私はあなたをもっと混乱させていません...

于 2010-12-10T21:37:10.047 に答える
1

制限内で、両方の質問に「はい」。

まず、OS が 1e9 命令/秒を使用している場合、1e9 命令/秒しか残っていません。

第二に、はい、それをできるだけ減らしたいと思います。それは「オーバーヘッド」と呼ばれます。

「限界」とは、OS があなたのために良いことをしてくれるということです。たとえば、OS を使用して複数のプログラムを同時に実行し、それらの間でプロセッサを共有できるミルティタスキングについて考えてみましょう。一方では、関連するオーバーヘッドがあります。一方、それがないと、プログラムを実行できないときにマシンを長時間アイドル状態のままにするか、自分でマルチタスクをシミュレートする必要があります。これには、少なくとも OS と同じ数の命令が必要になります。

于 2010-12-10T21:10:34.350 に答える