Jarayon sinxronizatsiyasi qanday ishlaydi?
Masalan, A jarayoni xotira joyidagi ma'lumotlarni o'zgartirganda,
boshqa B
jarayoni bir xil xotira joyidan ma'lumotlarni o'qishga harakat qilmoqda. Ikkinchi
jarayon tomonidan o'qilgan ma'lumotlarning xato bo'lish ehtimoli katta.
Sinxronizatsiya apparati
Ba'zida muhim bo'lim muammolari qo'shimcha qurilmalar tomonidan hal
qilinadi. Ba'zi operatsion tizimlar qulflash funktsiyasini taklif qiladi, bu erda Jarayon
muhim bo'limga kirishda qulfni oladi va undan chiqib
ketgandan keyin qulfni
chiqaradi. Shunday qilib, boshqa jarayon muhim bo'limga kirishga urinayotganda, u
qulflanganligi sababli kira olmaydi. Buni faqat qulfni sotib olish orqali bepul bo'lsa
amalga oshirishi mumkin. Mutex qulflari Sinxronizatsiya apparati hamma uchun
amalga oshiriladigan oddiy usul emas, shuning uchun Mutex Locks deb nomlangan
qat'iy dasturiy ta'minot usuli ham joriy qilingan. Ushbu yondashuvda kodning kirish
qismida muhim bo'lim ichida ishlatiladigan muhim manbalar bo'yicha LOCK
olinadi. Chiqish qismida qulf qo'yiladi.
Semafor Qarori
Semafor - bu shunchaki salbiy bo'lmagan va ish zarrachalari o'rtasida
taqsimlanadigan o'zgaruvchidir. Bu muhim bo'lim muammosining yana bir
algoritmi yoki echimi. Bu semaforda kutib turgan signal beruvchi mexanizm va ip,
uni boshqa ip bilan signal berish mumkin. Bu jarayonni
sinxronlashtirish uchun
ikkita atom operatsiyasidan foydalanadi: 1) kutish va 2) signal.
Misol
KUTISH (S):
esa (S <= 0);
S = S - 1;
SIGNAL (S):
S = S + 1;
Jarayonni sinxronizatsiya qilish - bu jarayonlarning bajarilishini bir-biridan ikkala
jarayon bir xil umumiy ma'lumotlar va manbalarga kirish huquqiga ega
bo'lmaydigan tarzda muvofiqlashtirish vazifasidir.
Muhim qismning to'rtta elementi 1) Kirish qismi 2) Muhim bo'lim 3) Chiqish qismi
4) Eslatish bo'limi
Muhim bo'lim - bu ma'lum bir vaqtda signal jarayoni orqali kirish mumkin bo'lgan
kod segmenti.
Muhim bo'lim tomonidan bajarilishi kerak bo'lgan uchta qoidalar quyidagilardir: 1)
O'zaro chiqarib tashlash 2) Jarayon echimi 3) Cheklovni kutish
O'zaro istisno - bu umumiy resursga kirishni boshqarish uchun ishlatiladigan ikkilik
semaforning maxsus turi.
Jarayon echimi hech kim muhim bo'limda bo'lmaganida
va kimdir xohlaganida
ishlatiladi.
Bog'langan kutish echimi, jarayon o'zining muhim qismiga kirish uchun so'rov
yuborganidan so'ng, ularning tanqidiy qismiga qancha boshqa jarayonlarning kirish
chegarasi mavjud.
Petersonning echimi bo'limning muhim muammolarini hal qilishda keng
qo'llaniladi.
Muhim bo'lim muammolari, shuningdek, apparatni sinxronizatsiya qilish yo'li bilan
hal qilinadi
Sinxronizatsiya apparati hamma uchun amalga
oshiriladigan oddiy usul emas,
shuning uchun Mutex Locks deb nomlanuvchi qat'iy dasturiy ta'minot usuli ham
joriy qilingan.
Semafor - bu muhim bo'lim muammosining yana bir algoritmi yoki echimi.
Jarayonni sinxronlashtirishda Dekker algoritmi
Old shart - Jarayonlarni sinxronlashtirish, Inter Interaction Communication
Bunday o'zaro istisno, cheklangan kutish va taraqqiyotni olish uchun bir nechta
algoritmlar amalga oshirildi, ulardan biri Dekker algoritmi. Algoritmni tushunish
uchun avval muhim bo'lim muammosining echimini tushunaylik.
Jarayon odatda quyidagicha ifodalanadi:
do {
//entry section
critical section
//exit section
remainder section
} while (TRUE);
Muhim bo'lim muammosini hal qilish quyidagi uchta shartni ta'minlashi kerak:
O'zaro istisno
Taraqqiyot
Cheklangan kutish
Barcha omillarni ta'minlash uchun echimlardan biri bu Petersonning echimi.
Yana biri Dekkerning Qarori. Dekkerning algoritmi muhim bo'lim muammosining
birinchi ishonchli va to'g'ri echimi edi. Bu ikkita oqimga aloqa uchun faqat umumiy
xotiradan foydalanib, mojarolarsiz bitta foydalaniladigan resursni bo'lishishga
imkon beradi. Bu sodda burilish algoritmining qat'iy
almashinuvidan qochadi va
ixtiro qilingan birinchi o'zaro chiqarib tashlash algoritmlaridan biri edi. Dekker-ning
echimining ko'plab versiyalari mavjud bo'lsa-da, oxirgi yoki 5-versiyasi yuqoridagi
shartlarning barchasini qondiradigan va ularning barchasida eng samarali
hisoblanadi. Izoh - Dekkerning Qarori, bu erda aytib o'tilganidek,
faqat ikkita
jarayon o'rtasida o'zaro istisno qilishni ta'minlaydi, massivlar va o'zgaruvchilarni
to'g'ri ishlatish bilan ikkitadan ortiq jarayonga kengaytirilishi mumkin. Algoritm -
Bu mantiqiy qiymatlar qatorini va butun son o'zgaruvchisini talab qiladi:
var flag: array [0..1] of boolean;
turn: 0..1;
repeat
flag[i] := true;
while flag[j] do
if turn = j then
begin
flag[i] := false;
while turn = j do no-op;
flag[i] := true;
end;
critical section
turn := j;
flag[i] := false;
remainder section
until false
Do'stlaringiz bilan baham: