The processors in a multiprocessor computer system are grouped into nodes.
The processors can request a lock, but the lock is granted to only one
processor at any given time to provide exclusive processor access to the
resource protected by the lock. When a processor releases the lock, the
lock is made available to another processor at the same node, even though
a processor at a different node may have requested the lock earlier. To
maintain fairness, the lock is forced to another node after granting a
certain number of consecutive requests at a node or after a certain time
period. In one embodiment, a specialized data structure representing a
lock request from a processor at a particular node is placed into a queue.
A later requesting processor can acquire a preemptive position in the
queue by spinning on a data structure already in the queue if the data
structure corresponds to the processor's node. To maintain fairness, the
data structure is limited to a certain number of uses, after which
additional processors are not permitted to spin on it. When the data
structure has no more active spinners, it is dequeued, and the lock is
made available to a processor spinning on the next structure in the queue.
Logic for handling interrupts is included, and the bitfield arrangement of
the data structure is tailored to the locking scheme. Preallocating data
structures for the queue increases performance.
Обработчики в системе компьютера мультипроцессора собраны в узлы. Обработчики могут спросить замок, но замок дарен до только один обработчик на любом, котор дали времени обеспечить исключительный доступ обработчика к ресурсу защищенному замком. Когда обработчик выпускает замок, замок сделан имеющимся к другому обработчику на таком же узле, даже если обработчик на по-разному узле может спросить замок более раньше. Для поддержания fairness, замок принуждается к другому узлу после дарить определенное количество последовательные запросы на узле или после некоторого периода. В одном воплощении, специализированная структура данных представляя запрос замка от обработчика на определенном узле помещена в косу. Более последний спрашивая обработчик может приобрести preemptive положение в косе путем закручивать на структуре данных уже в косе если структура данных соответствует к узлу обработчика. Для поддержания fairness, структура данных ограничена к определенное количество пользам, after which дополнительные обработчики не позволены для того чтобы закрутить на их. Когда структура данных имеет no more активно обтекателей втулки, она dequeued, и замок сделан имеющимся к обработчику закручивая на следующей структуре в косе. Логика для регулировать interrupts включенна, и расположение bitfield структуры данных портняжничано к фиксируя схеме. Preallocating структуры данных для косы увеличивает представление.