Введение в распределенные



Download 3,3 Mb.
bet68/74
Sana13.07.2022
Hajmi3,3 Mb.
#785639
1   ...   64   65   66   67   68   69   70   71   ...   74
Bog'liq
Косяков ТАТ книга

Листинг 4.2. Функция работы с маркером.
void AssignPrivilege() {
/* Функция работы с маркером */

if (Holder == self && !Using && !Q.empty()) {


/* Выборка первого элемента из очереди Q */ Holder = Q.front();


Q.pop();
Asked = false;

/* Если первый элемент self, процесс входит в КС */


/* иначе передает маркер процессу c ID в Holder */ if (Holder == self) {
Using = true;
/* вход в КС */
}
else {
/* отправка TOKEN процессу c ID в Holder */
}
}
}
Листинг 4.3. Функция отправки запроса на получение маркера.
void MakeRequest() {
/* Функция отправки запроса на получение маркера */

if (Holder != self && !Asked && !Q.empty()) {


/* отправка REQUEST процессу c ID в Holder */ Asked = true;
}
}
Функция работы с маркером. Отправлять маркер другому
процессу или использовать его для входа в КС может только процесс, для которого одновременно выполняются следующие условия: (1) Holder = self,

  1. Using = false, (3) очередь Q не пуста.

Если значение self не является первым элементом в очереди Q, то процесс, владеющий маркером, пересылает его соседнему процессу, идентификатор которого находится во главе очереди Q. При этом он удаляет этот элемент из Q, т.к. передача маркера по соответствующему запросу становится выполненной, и обновляет значение своей переменной Holder таким образом, чтобы оно указывало на нового обладателя маркера. Ситуация, когда в очереди Q процесса, владеющего маркером, первым элементом является self, возможна, например, когда этот процесс только что получил сообщение TOKEN от своего соседа. В этом случае он получает право войти в КС, удалив при этом первый элемент со значением self из начала очереди, и присвоив переменной Using значение true. Переменная Asked устанавливается в значение false, т.к. при передаче маркера процесс может не отправлять сообщение REQUEST процессу, на который указывает новое значение его переменной Holder.

Download 3,3 Mb.

Do'stlaringiz bilan baham:
1   ...   64   65   66   67   68   69   70   71   ...   74




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish