Content deleted Content added
GreenC bot (talk | contribs) Rescued 1 archive link. Wayback Medic 2.5 |
Guy Harris (talk | contribs) Avoid redirect. |
||
(One intermediate revision by the same user not shown) | |||
Line 5:
In most multiprocessor systems, each processor schedules and controls itself, therefore there's no "supervisor" processor,<ref name="Madnickp19"/> and kernel [[data structure]]s are globally shared; sections of code that access those shared data structures are [[critical section]]s. This design choice is made to improve scaling, reliability and modularity.<ref name="Madnickp19"/> Examples of such kernel data structure are [[ready list]] and [[communication channel]]s.
A "conflict" happens when more than one [[CPU|processor]] is trying to access the same resource (a memory portion) at the same time. To prevent [[critical race]]s and [[inconsistency]], only one processor ([[CPU]]) at a given time is allowed to access a particular [[data structure]] (a memory portion), while other CPUs trying to access at the same time are [[Lock (computer science)|locked-out]], waiting in idle status.<ref name="Madnickp19">Madnick 1968, p.19</ref><ref>
Three cases can be distinguished when this idle wait is either necessary, convenient, or not convenient. The idle wait is necessary when the access is to a ready list for a low level [[Scheduling (computing)|scheduling]] operation. The idle wait is not necessary but convenient in the case of a critical section for [[Synchronization (computer science)|synchronization]]/[[Inter-process communication|IPC]] operations, which require less time than a [[context switch]] (executing another [[process (computing)|process]] to avoid idle wait). Idle wait is instead not convenient in case of a kernel critical section for [[device management]], present in [[monolithic kernel]]s only. A [[microkernel]] instead falls on just the first two of the above cases.
Line 26:
* Dependency issues on [[Superscalar]] architectures
* {{Section link|Concurrency control|Concurrency control mechanisms}}
* {{Section link|
* [[Serializability]]
|