Условия взаимного исключения - PullRequest
0 голосов
/ 17 мая 2018

Я читал об условиях взаимного исключения, которые следующие

  1. Никакие два процесса не могут одновременно находиться внутри их критических секций.
  2. Не делается никаких предположений относительно относительной скорости процессов или количества процессоров.
  3. Ни один процесс не должен выходить за пределы своей критической секции, чтобы блокировать другие процессы.
  4. Ни один процесс не должен ждать произвольно долго, чтобы войти в критическую секцию.

Может кто-нибудь объяснить мне значение 2-го пункта?

Ответы [ 3 ]

0 голосов
/ 19 мая 2018

Предположим, вы знаете, что у вас есть один процессор.Предположим также, что в вашем процессоре есть атомарная инструкция BBSC (ветвь на бите установлена ​​и установлена), которая не может быть прервана и которая ветвится, если бит установлен и не ветвится, очищается и устанавливает бит

. Затем вы можете выполнитьВы блокируете, используя такую ​​инструкцию

  BBSS DID_NOT_GET_LOCK, #1,LOCK_LOCATION
  ; Critical Section

  ; . ..  . . . .

 MOV #0, LOCK_LOCATION ; End critical section

DID_NOT_GET_LOCK:

Блокировку становится просто реализовать в такой однопроцессорной системе.

Если вы добавите несколько микропроцессоров в микс,эта система блокировки с треском проваливается.Эта инструкция, которую я описываю, имеет по крайней мере два доступа к памяти:

If (бит установлен);Тест памяти Goto Destination Else Set Bit;Набор памяти

Если у вас несколько процессоров, более чем один процесс мог видеть, что бит очищен одновременно, и может войти в критическую секцию.

0 голосов
/ 22 мая 2018

Для меня это означает, что вы не можете решить, что что-то правильно, потому что это всего лишь небольшое количество инструкций.Процесс может быть прерван, процессор может быть приостановлен, перенесен прерывание или другая задержка, которая высмеивает эти предположения.

Параллельный код должен быть корректным с любым возможным чередованием команд.

0 голосов
/ 18 мая 2018

это означает, что в настоящее время центральный процессор поставляется с многоядерным процессором, поэтому возможно многократное программирование. один процессор может запускать программы для нескольких пользователей одновременно. но когда вы изучаете ОС, то всегда предполагайте, что у ЦП есть только одно ядро, и может выполняться только одна программа. поэтому написано: не делается никаких предположений о множественном числе ядер (ЦП).

...