OSが実行中のプログラムを管理する方法


2

WindowsはマルチタスクOSであるため、何らかの方法でプロセスを切り替える必要があります。しかし、それはどのように行われますか?ウィンドウには、実行中のプログラムに何らかの種類のブレークポイントが含まれていますか?他のプロセスに切り替える必要がありますか?プログラムが実行されると、CPUが制御されるためです。そのため、マルチタスクOSを有効にするには、プログラムにブレーク命令を含める必要があります。私は正しいですか?

回答:


3

いいえ、プログラムはCPUを完全に制御しません。もしそうなら、キーボード、マウス、ハードドライブなど、動作を停止する他のものがあります。

CPUに接続された割り込みラインがあり、デバイスから情報が入ってくると通知します。たとえば、キーを押すと、現在の実行を停止し、割り込みハンドラーを開始する割り込み信号が発生します。

デバイスとして接続されている内部タイマーもあるため、オペレーティングシステムは、特定のレートで割り込み信号を生成するようにタイマーを設定できます。したがって、オペレーティングシステムは、特定の間隔で実行中のプロセスから常に制御を取り戻すことができます。

割り込みを処理するときの通常のプロセスは、割り込みハンドラーが終了した後に制御が実行中のプログラムに戻ることですが、プロセススケジューラーは1つのプロセスの状態を保存し、別のプロセスを復元し、代わりに割り込みハンドラーをそのプロセスに戻すことができます。

スケジューラには、プロセスを切り替える他の機会もあります。たとえば、プログラムがディスクI / Oを実行するシステムコールを行う場合、スケジューラはI / O要求をハードウェアにパススルーさせ、プロセスを待機状態に保存します。ディスクがデータを返す準備ができると、割り込みを送信するため、スケジューラはデータを待機しているプロセスに切り替えることができます。

(かつて私は実際にコンピューターを完全に制御し、すべての割り込みを無効にするプログラムを作成しました。キーボードとマウスの入力用に独自のハンドラーを作成する必要があり、その状態ではディスクI / Oはまったく機能しません。)


1

いいえ。OS(および一般的なスレッド化)は、必要に応じてCPU時間をさまざまなスレッド(およびプロセス)に割り当てるスケジューラーによって管理されます。スケジューラは、CPUを適切なプロセスから引き離すことができます。


1

いいえ、ハードウェア機能を使用して、タイマーまたはその他のイベントで制御をカーネルに戻します。

定期的な間隔でOSに制御を戻すためにアプリケーションが作成される「協調的マルチタスク」を説明しています。アプリケーションがユーザー入力、ネットワーク、またはディスク操作の完了を待機している場合、その要素がありますが、WindowsなどのOSは、同時に何も待たない2つのアプリケーションを実行することもできます。

ハードウェアには割り込みがあり、ブート中にセットアップされたカーネル内の特定のコードを制御します。次に、カーネルは次に何を制御するかを決定します。これがスケジューラーの仕事です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.