P1とP2の両方を同時にレディキューに追加することはできません。レディキューにプロセスを追加する場合は、がレディキューにのアクセスを同期させる必要があるため、それらが追加される順番がある必要があります(P1がP2の前に追加されるか、P1がP2の前に追加されます)。キューの破損を避けるためです。単一のコアシステムでは、キューを変更している間に割り込みを無効にすることでこれを行うことができます。マルチコアシステムでは、カーネルの実装に応じて、いくつかのロックの組み合わせと割り込みを無効にすることでこれを行うことができます。
たとえば、単一コアの例として、P1を先取りするタイマー割り込みが発生したとします。タイマー割り込みが受信されると割り込みを無効にします。 P1をキューに追加している間は、P2のために完了した入出力、またはP2の起動などのユーザーのために、P2が使用可能になることはできません。割り込みが無効になっているため、カーネルが勝ったP1をキューに追加して割り込みを有効にするまで、P2に関するあらゆるイベントに煩わされることはありません。同じことがP2にも当てはまります.P2をキューに追加しているときにP1が優先されるようなタイマー割り込みが到着した場合、P2割り込みがキューに追加されるまで、タイマ割り込みは無視されます。
最初にロックを取得した人はいますか? –
@ M.ShawCanあなたは詳細を教えてください – user3256888
一般にコンピューティングでは、同時に何も起こりません。それは本当に近いかもしれませんが、何かが常に前に起こります。 –