ホームページ  >  記事  >  運用・保守  >  Linuxのクリティカルセクションとは何ですか

Linuxのクリティカルセクションとは何ですか

藏色散人
藏色散人オリジナル
2023-04-18 10:27:202353ブラウズ

Linux クリティカル セクションは、クリティカル リソースにアクセスする各プロセスのプログラムを指します。クリティカル リソースは、一度に 1 つのプロセスのみが使用できる共有リソースであり、クリティカル セクションに入ることができるのは 1 つのプロセスだけです。他のプロセスが入るため、一度に入るのは禁止です。

Linuxのクリティカルセクションとは何ですか

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

1. クリティカル セクションとは何ですか?

回答: クリティカル リソースにアクセスする各プロセスのプログラムは、クリティカル セクションと呼ばれます (クリティカル リソースは、一度に 1 つのプロセスのみが使用できる共有リソースです)。クリティカルセクションに入ることができるのは一度に 1 つのプロセスのみであり、入った後は他のプロセスが入ることはできません。

2. クリティカル セクションに入るプロセスのスケジューリング原則は次のとおりです:

① アイドル状態のクリティカル セクションへの入場を要求しているプロセスが複数ある場合、一度に入ることができるプロセスは 1 つだけです。 ②クリティカルセクションには常に複数のプロセスが存在することはできません。プロセスが独自のクリティカル セクションに入った場合、クリティカル セクションに入ろうとしている他のすべてのプロセスは待機する必要があります。 ③クリティカル セクションに入ったプロセスは、他のプロセスが時間内にクリティカル セクションに入ることができるように、制限時間内に終了する必要があります。 ④ プロセスが自身のクリティカルセクションに入ることができない場合、プロセスの「ビジー待機」現象を避けるために CPU を放棄する必要があります。

ミューテックス オブジェクトは最も単純なカーネル オブジェクトであり、特定のリソースへの相互排他的アクセスを簡単に実現するために使用できます。カーネル オブジェクトなのでシグナルを生成することができ、実際にプログラム内で相互排他を実現するために使用されます。

私の記憶が正しければ、クリティカル セクションはカーネル オブジェクトではなく、システムによって提供されるデータ構造です。プログラム内でこの型の変数を宣言し、それを使用して相互排他的アクセスを実現できます。リソース。クリティカルなリソースにアクセスしたい場合は、まずクリティカルセクションをロックし(クリティカルセクションがアイドル状態でない場合は待機し)、リソースを使い切った後、クリティカルセクションを解放します。

通常、これらはスレッド間の同期に使用され、通常は同じ意味で使用できます。

複雑な相互排除を実装したい場合は、セマフォ カーネル オブジェクトなどの他のメソッドを使用する必要があります。クリティカル セクション オブジェクトはプロセスにまたがることができず、スレッド間の共有データ領域の同期オブジェクトです。ミューテックス オブジェクトはプロセス間の共有データ領域の同期オブジェクトとして使用できます。

推奨学習: 「Linux ビデオ チュートリアル

以上がLinuxのクリティカルセクションとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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