134
JARAYONLARNING BIRGALIKDA ISHLASHINI MUVOFIQLASHTIRISH
(SINXRONLASHTIRISH) ALGORITMLARI: SEMAFOOR, MONITOR VA
XABARLAR
Ro‘zaliyev Sherzodjon Avazjonovich
Farg‘ona davlat universiteti, Axborot texnologiyalari kafedrasi mudiri
Qo‘chqorova Gulrux Odiljonovna
Farg‘ona davlat universiteti, Fizika-matematika fakulteti, “Axborot tizimlari va
texnologiyalari” yo‘nalishi talabasi
odiljonovnagulrux@gmail.com
https://doi.org/10.5281/zenodo.15342362
Annotatsiya:
Mazkur maqolada operatsion tizimlar kontekstida bir nechta
jarayonlarning o‘zaro uyg‘un va xavfsiz ishlashini ta’minlovchi asosiy sinxronlashtirish
algoritmlari yoritilgan. Xususan, semafoor, monitor va xabarlar almashinuvi kabi
konsepsiyalar tahlil qilinib, ularning nazariy asoslari, ishlash prinsiplari, afzalliklari va amaliy
qo‘llanilish holatlari bayon etiladi. Har bir mexanizmning rolini tushuntirish orqali ularning
dasturiy tizimlar samaradorligiga qanday ta’sir ko‘rsatishi ochib berilgan. Shuningdek, ushbu
algoritmlarning zamonaviy dasturlash tillarida qo‘llanishiga misollar orqali yondashilgan.
Ushbu maqola operatsion tizimlar, dasturlash va axborot xavfsizligi bilan shug‘ullanuvchi
tadqiqotchilar hamda talabalarga mo‘ljallangan.
Kalit so‘zlar:
sinxronlashtirish, jarayonlar, semafoor, monitor, xabarlar almashinuvi,
kritik bo‘lak, operatsion tizim, resurslar boshqaruvi, dasturlash, ko‘pjarayonli muhit.
Аннотация:
В данной статье рассматриваются основные алгоритмы
синхронизации, обеспечивающие безопасную и согласованную работу нескольких
процессов в контексте операционных систем. Особое внимание уделяется таким
концепциям, как семафор, монитор и обмен сообщениями. Описаны теоретические
основы, принципы работы, преимущества и практические случаи применения каждого
метода. Также раскрывается влияние этих механизмов на эффективность
программных систем и приводятся примеры их использования в современных языках
программирования. Статья предназначена для студентов, исследователей и
специалистов в области операционных систем, программирования и информационной
безопасности.
Ключевые слова:
синхронизация, процессы, семафор, монитор, обмен
сообщениями, критическая секция, операционная система, управление ресурсами,
многозадачность.
Abstract:
This article explores key synchronization algorithms that ensure safe and
coordinated execution of multiple processes within the context of operating systems. Special
attention is given to concepts such as semaphore, monitor, and message passing. The article
provides a comprehensive overview of the theoretical background, working principles,
advantages, and practical applications of each mechanism. It also examines how these
techniques influence the efficiency of software systems, accompanied by examples in modern
programming languages. This work is intended for students, researchers, and professionals in
operating systems, programming, and information security.
Keywords:
synchronization, processes, semaphore, monitor, message passing, critical
section, operating system, resource management, multitasking.
135
KIRISH
Bugungi kunda axborot texnologiyalari mislsiz tezlikda rivojlanayotgan bir davrda,
kompyuter tizimlarida
ko‘pjarayonli (multitasking)
muhitlar keng qo‘llanilmoqda. Bunday
muhitlarda bir vaqtning o‘zida bir nechta dasturiy jarayonlar bajarilishi zarur bo‘lib, ular
o‘zaro umumiy resurslarga murojaat qiladi. Bu holat
resurslar uchun raqobat
,
kritik
bo‘laklarga kirishdagi to‘qnashuvlar
,
bloklanish (deadlock)
va
yarimtayyor holatlar
(race condition)
kabi muammolarga olib keladi. Ushbu muammolarni samarali hal etish esa
jarayonlar o‘rtasida aniq va ishonchli
sinxronlashtirish mexanizmlarini
talab qiladi.
Operatsion tizimlarda sinxronlashtirish — bu bir nechta jarayonlarning bir-biriga
to‘sqinlik qilmasdan, uyg‘unlikda ishlashini ta’minlashga qaratilgan algoritmlar to‘plamidir.
Bu mexanizmlar orqali umumiy resurslar (masalan, fayllar, xotira, printer) navbat bilan, faqat
kerakli vaqtda bitta jarayon tomonidan boshqariladi.
Mazkur mavzu doirasida
semafoorlar
,
monitorlar
va
xabarlar almashinuvi
kabi
asosiy mexanizmlar muhokama qilinadi. Har biri o‘zining yondashuvi, afzalliklari va
qo‘llanilish sohasi bilan ajralib turadi. Ayniqsa, ko‘p yadroli va taqsimlangan (distributed)
tizimlarda bu texnologiyalarning to‘g‘ri qo‘llanilishi butun tizim barqarorligi va
samaradorligini ta’minlab beradi.
Ushbu kirish qismida sinxronlashtirishning dolzarbligi va uning axborot tizimlari
samaradorligidagi o‘rni asoslab beriladi. Quyidagi boblarda esa semafoor, monitor va xabarlar
kabi sinxronlashtirish mexanizmlarining nazariy asoslari va amaliy jihatlari chuqur
o‘rganiladi.
ASOSIY QISM
Kompyuter tizimlarida bir vaqtning o‘zida bir nechta jarayonlar bajarilishi
jarayonlarning resurslar bilan to‘qnash kelishiga olib keladi. Ayniqsa, umumiy
foydalaniladigan xotira, fayllar, printerlar kabi resurslar ustida bir necha jarayon bir paytda
ishlashga uringanda, ma’lumotlarning yo‘qolishi, noto‘g‘ri natijalar yoki bloklanish holatlari
yuzaga keladi. Bu kabi vaziyatlarda jarayonlar o‘rtasida uyg‘unlikni ta’minlash, ya’ni
sinxronlashtirish muhim ahamiyat kasb etadi.
Sinxronlashtirishning eng qadimiy va keng tarqalgan vositalaridan biri bu — semafoor
hisoblanadi. Semafoorlar dasturiy jihatdan oddiy bo‘lib, resursga kirishni boshqarishda
ishonchli vosita hisoblanadi. Semafoor qiymati butun son orqali ifodalanadi va u asosiy ikkita
amaliyotni — kutish (wait) va signal berish (signal) funksiyalarini bajaradi. Kutish funksiyasi
orqali jarayon semafoor qiymatini tekshiradi, agar qiymat musbat bo‘lsa, u kirish huquqini
oladi, aks holda kutish holatida qoladi. Signal funksiyasi esa kutayotgan jarayonlarga navbatni
beradi yoki semafoor qiymatini oshiradi. Semafoorlar oddiy mantiqiy qulf vazifasini bajarib,
bir vaqtning o‘zida faqat bitta jarayonning kritik bo‘lakda ishlashini ta’minlaydi. Shu bilan
birga, semafoorlar noto‘g‘ri ishlatilsa, bloklanish yoki doimiy kutish kabi muammolarga olib
kelishi mumkin.
Yuqori darajadagi sinxronlashtirish vositasi sifatida monitorlar esa dasturchilar uchun
ko‘proq qulaylik yaratadi. Monitorlar obyektga yo‘naltirilgan dasturlash tillarida keng
qo‘llaniladi va resurslarga kirishning avtomatik boshqarilishini ta’minlaydi. Monitorlar ichki
metodlari orqali resurslar holatini kuzatadi va jarayonlarning muvofiqlashtirilgan kirishini
kafolatlaydi. Java, C#, Python kabi tillarda synchronized, lock, yoki with kabi kalit so‘zlar
orqali monitor xususiyatlari taqdim etiladi. Monitor yordamida sinxronlashtirishda dasturchi
136
kamroq xatoga yo‘l qo‘yadi, chunki kirish-chiqishlar avtomatik tarzda nazorat qilinadi.
Yana bir samarali usul bu — xabarlar almashinuvi orqali sinxronlashtirishdir. Bu usul
ayniqsa umumiy xotiraga ega bo‘lmagan, taqsimlangan tizimlarda keng qo‘llaniladi. Jarayonlar
o‘zaro bevosita aloqaga kirishmasdan, faqat xabarlar yuborish va qabul qilish orqali
muloqotda bo‘ladi. Bunday yondashuv tizimni mustaqil bloklarga ajratib, har bir blokning
alohida ishlashiga imkon yaratadi. Xabarlar almashinuvi senkron va asenkron shaklda amalga
oshiriladi. Senkron usulda jarayonlar bir vaqtning o‘zida muloqotda bo‘lishi kerak, asenkron
usulda esa yuboruvchi xabarni jo‘natadi va boshqa ish bilan shug‘ullanishda davom etadi. Bu
yondashuv ayniqsa mikroxizmatlar arxitekturasi va tarmoq asosida qurilgan tizimlarda
dolzarb hisoblanadi.
Har bir sinxronlashtirish mexanizmining o‘z afzalliklari va cheklovlari mavjud.
Semafoorlar minimal resurslar bilan yuqori nazoratni ta’minlasa, monitorlar qulaylik va
xavfsizlikni oshiradi, xabarlar almashinuvi esa tizimlararo mustaqillik va tarqoq boshqaruvni
ta’minlaydi. Mazkur mexanizmlarning to‘g‘ri tanlanishi tizim samaradorligiga bevosita ta’sir
qiladi, shuningdek, dasturiy ta’minotning ishonchliligini oshiradi.
Zamonaviy dasturiy ta’minotlarda bir vaqtning o‘zida ko‘plab jarayonlarning
muvofiqlashtirilgan holda ishlashi, ayniqsa ko‘p foydalanuvchili muhitlarda, muhim ahamiyat
kasb etadi. Masalan, onlayn bank tizimi yoki do‘kon saytida bir nechta foydalanuvchi bir
vaqtning o‘zida buyurtma berayotgan bo‘lsa, har bir foydalanuvchining so‘rovi serverda o‘ziga
xos jarayon sifatida bajariladi. Bu jarayonlar bir vaqtda ma’lumotlar bazasiga murojaat qilsa,
noto‘g‘ri yozuvlar, ma’lumotlar yo‘qolishi yoki tizim xatoliklariga olib kelishi mumkin. Bunday
holatlarda sinxronlashtirish zaruriyati yuzaga keladi.
Semafoorlar – bu dastur darajasida yaratilgan qulfga o‘xshash mexanizm bo‘lib, asosan
kritik bo‘lakka kirishni boshqaradi. Oddiy hayotiy misol keltirsak: bitta hammomli uyda bir
nechta odam bor deb tasavvur qilaylik. Agar kimdir hammomda bo‘lsa, boshqalar kutishiga
to‘g‘ri keladi. Bu yerda hammom resurs bo‘lib, unga bir vaqtning o‘zida faqat bitta odam
kirishi mumkin. Shunga o‘xshash tarzda, dasturda ham bir vaqtda faqat bitta jarayonga ruxsat
beriladi.
Masalan, C# yoki Python dasturida quyidagicha kod yozilishi mumkin (psevdokod):
Pythonda
import threading
mutex = threading.Semaphore(1)
def ishchi_jarayon():
mutex.acquire()
print("Jarayon kritik bo‘lakka kirdi")
# Resurs bilan ishlash
mutex.release()
Monitorlar esa yuqori darajadagi abstraktsiya taqdim etadi. Ular semafoorlar ustida
qurilgan bo‘lishi mumkin, ammo dasturchiga qulay interfeys yaratadi. Monitorlarda barcha
funksiyalar sinxronlashtirilgan bo‘lib, foydalanuvchi o‘zi qo‘lda kutish yoki signal berish
funksiyalarini yozishi shart emas. Masalan, Java dasturlash tilida synchronized kalit so‘zi
yordamida monitor funksiyasi avtomatik tarzda chaqiriladi:
Javada
public class Hisoblagich {
private int qiymat = 0;
137
public synchronized void orttirish() {
qiymat++;
}
public synchronized int olish() {
return qiymat;
}
}
Bu yerda synchronized so‘zi orqali bir vaqtning o‘zida faqat bitta jarayon orttirish() yoki
olish() funksiyasidan foydalanishi mumkin. Bu yondashuv yirik tizimlarda, masalan, moliyaviy
operatsiyalar, to‘lov tizimlari yoki foydalanuvchi hisoblarini yuritish modullarida keng
qo‘llaniladi.
Xabarlar almashinuvi esa boshqa jarayonlar bilan to‘g‘ridan-to‘g‘ri xotirani
bo‘lishmasdan, ma’lumotlarni yuborish va qabul qilish orqali aloqa o‘rnatishga asoslanadi.
Taqsimlangan tizimlarda, ya’ni bir nechta kompyuterlar o‘zaro tarmoq orqali bog‘langan
holatlarda xabarlar almashinuvi ayni muddao bo‘ladi. Masalan, server va mijoz o‘rtasidagi
muloqotda, server foydalanuvchidan so‘rov qabul qiladi va unga tegishli javobni yuboradi. Har
bir xabar bu yerda aloqa vositasi sifatida xizmat qiladi.
MPI (Message Passing Interface) yoki Python'dagi multiprocessing moduli orqali bu kabi
xabarlar almashinuvi kodda aks ettiriladi:
pythonda
from multiprocessing import Process, Queue
def yuboruvchi(q):
q.put ("Salom, qabul qil!")
def qabul_qiluvchi(q):
print ("Xabar:", q.get ())
q = Queue ()
p1 = Process (target=yuboruvchi, args=(q,))
p2 = Process (target=qabul_qiluvchi, args=(q,))
p1.start()
p2.start()
p1.join()
p2.join()
Bu misolda ikki alohida jarayon navbat bilan xabar yuboradi va qabul qiladi.
Shuningdek, IoT tizimlari, masofaviy monitoring, sun’iy yo‘ldosh aloqalari yoki real vaqtda ish
yurituvchi tizimlar xabarlar almashinuvi asosida quriladi.
Ushbu uchta mexanizmning har biri ma’lum holatlar uchun mos keladi. Semafoorlar
resursga qulf o‘rnatish uchun qulay, monitorlar esa murakkab ob’ektlar ustida ishlov berishda
foydali. Xabarlar almashinuvi esa xotirasi umumiy bo‘lmagan tizimlarda ajralmas vositadir.
XULOSA
Kompyuter tizimlarida bir nechta jarayonlarning bir vaqtning o‘zida ishlashi samarali
boshqaruv va muvofiqlashtirishni talab etadi. Bunday muhitda sinxronlashtirish algoritmlari,
xususan
semafoor
,
monitor
va
xabarlar almashinuvi
, jarayonlar o‘rtasidagi
to‘qnashuvlarning oldini olishda muhim rol o‘ynaydi. Har bir usul o‘zining yondashuvi,
138
qo‘llanish sohasi va samaradorligi bilan ajralib turadi.
Semafoorlar past darajadagi nazoratni amalga oshirib, kritik bo‘laklarga navbat bilan
kirishni ta’minlaydi. Ular oddiy tizimlar va resursga bitta kirish nuqtasi mavjud bo‘lgan
holatlarda ayniqsa foydalidir. Monitorlar esa yuqori darajadagi abstraktsiyani ta’minlab,
dasturchilar uchun qulay sinxronlashtirish mexanizmi hisoblanadi. Obyektga yo‘naltirilgan
dasturlashda monitorlardan foydalanish orqali tizim xavfsizligini oshirish, xatoliklarni
kamaytirish mumkin. Xabarlar almashinuvi esa taqsimlangan tizimlarda, ya’ni umumiy
xotirasi bo‘lmagan qurilmalar o‘rtasida ma’lumot almashinuvini tashkil qilishda ajralmas
vositaga aylangan.
Tahlil shuni ko‘rsatadiki, sinxronlashtirish vositalarining to‘g‘ri tanlanishi va o‘rinli
qo‘llanilishi nafaqat tizimning barqarorligini ta’minlaydi, balki umumiy samaradorlik va
foydalanuvchi tajribasini ham yaxshilaydi. Har bir dasturchi yoki tizim arxitektori ushbu
mexanizmlarning nazariy asoslarini chuqur o‘zlashtirishi va real tizimlarda ularni amaliy
qo‘llay olishi zamonaviy dasturiy ta’minot sifatining kafolati bo‘lib xizmat qiladi.
References:
Используемая литература:
Foydalanilgan adabiyotlar:
1.
Silberschatz, A., Galvin, P. B., Gagne, G. (2018).
Operating System Concepts
(10th ed.).
Wiley.
2.
Tanenbaum, A. S., Bos, H. (2015).
Modern Operating Systems
(4th ed.). Pearson.
3.
Stallings, W. (2018).
Operating Systems: Internals and Design Principles
(9th ed.). Pearson
Education.
4.
Andrews, G. R. (1991).
Concurrent Programming: Principles and Practice
. Addison-
Wesley.
5.
Уильямс, Р. (2014).
Программирование на Java для начинающих
. Диалектика.
6.
Курдюмов, А. В. (2020).
Операционные системы. Теория и практика
. Санкт-
Петербург: Питер.
7.
Python Software Foundation. Python 3.12 documentation –
8.
https://docs.oracle.com/javase/
9.
О‘zbekiston Respublikasi oliy ta’lim muassasalari uchun “Operatsion tizimlar” fani
bo‘yicha o‘quv qo‘llanmalar va darsliklar. (2021). Toshkent: O‘zbekiston nashriyoti.
10.