【007 基礎知識】なぜドライバーに同時実行性や相互排他制御が必要なのでしょうか?どのように達成するか? 例を挙げる?

1. 同時実行性と相互排他制御が必要なのはなぜですか?

同時実行とは、複数の実行ユニットが同時に並行して実行されることを意味しますが、同時実行ユニットによる共有リソース (ハードウェア リソースおよびソフトウェア グローバル変数、静的変数など) へのアクセスは、競合状態を引き起こしやすくなります。

競合問題を解決する方法は、共有リソースへの排他的アクセスを保証することです

いわゆる相互排他アクセスとは、ある実行ユニットが共有リソースにアクセスするとき、他の実行ユニットはアクセスを禁止されることを意味します。


次に、相互排除アクセスを実現するにはどうすればよいでしょうか?

共有リソースにアクセスするコード領域はクリティカル セクションと呼ばれます。クリティカル セクションは、相互排他メカニズムによって保護する必要があります。割り込みマスキング、アトミック操作、スピン ロック、セマフォはすべて、Linux デバイス ドライバーで使用できる相互排他的なアプローチです。 。
 


3. 例

たとえば、あなたの会社には、社内の全員が使用できるプリンターがあります。Xiao Li と Xiao Wang がこのプリンタを同時に使用したい場合は、両方ともドキュメントを印刷する必要があります。

2 人が同時に印刷する場合、プリンターが処理しないと、Xiao Li の文書が 1 行印刷され、その後に Xiao Wang の文書が印刷されるため、印刷された文書が乱れてしまいます。

複数の人が同時に複数のドキュメントをプリンタに送信する場合、プリンタは一度に 1 つのドキュメントのみを印刷でき、他のドキュメントは印刷が完了した後にのみ印刷できるようにする必要があります。

おすすめ

転載: blog.csdn.net/qq_41709234/article/details/131205796