LinuxはシングルコアシステムでCPU制御をどのように維持しますか?

LinuxはシングルコアシステムでCPU制御をどのように維持しますか?

存在するLinuxでプロセスを「終了」する方法は?Linux は、メモリをプールに返すことでプロセスを終了すると説明します。

シングルコアマシンで実際にこれを行うにはどうすればよいですか?プロセスを終了するにはCPU時間が必要であり、プロセスが譲歩せずに非常に長い間実行される計算を実行している場合、Linuxはプロセスを終了するのに十分な長さのプロセッサをどのように制御できますか?

ベストアンサー1

カーネルは、通常の操作中にプロセスがシステムコールを呼び出すたびに、割り込みが発生するたびに非常に頻繁に制御権を持ちます。ハードウェアがCPUの注意を必要とする場合、またはCPUがカーネルの注意を必要とすると割り込みが発生し、ハードウェアの特定の部分が定期的に注意(タイマー)を要求するようにプログラムできます。したがって、カーネルは、システムが過度にロックされ、割り込みが発生しなくなったら定期的に呼び出されることを保証できます。

したがって、

プロセスが結果を生成せずに非常に長い間実行される計算を実行する場合

質問ではありません。 Linuxは先制的なマルチタスクオペレーティングシステム、つまり実行中のプログラムの協力なしにマルチタスクを実行できます。

プロセスの終了に関しては、とにかくカーネルが関係しています。プロセスが他のプロセスを終了するには、カーネルを呼び出す必要があるため、カーネルには制御権があります。カーネルがプロセスを終了することを決定した場合(例えばまた、OOM キラーによって制御されたり、プロセスが実行を許可されていない操作 (マップされていないメモリーにアクセスなど) を実行しようとするため、制御されます。

カーネルは次のように構成できます。いいえ制御システムCPU自体のサブセット(廃止予定)isolcpusカーネルパラメータ)または一部のCPU自体でジョブをスケジュールしたくない場合(使用中央処理ユニットロードバランシングは不要で、完全に統合されています。cグループv1そしてcグループv2);ただし、システム内の少なくとも1つのCPUは常にカーネルによって完全に管理されなければなりません。それでは十分です構成済み特定のCPU使用率に応じて生成されるタイマ割り込みの数を減らします。

さらに、シングルCPU(シングルコアなど)システムとマルチCPUシステムの間に大きな違いはありません。カーネル制御に関する限り、同じ問題が両方のシステムに適用されます。各CPUは定期的にカーネルを呼び出す必要があります(もしそれが)。カーネル制御下のマルチタスクに使用されます。

おすすめ記事