Авторы

  • Sherzodjon Ro‘zaliyev
    Farg‘ona davlat universiteti, Axborot texnologiyalari kafedrasi mudiri
  • Gulrux Qo‘chqorova
    Farg‘ona davlat universiteti, Fizika-matematika fakulteti, “Axborot tizimlari va texnologiyalari” yo‘nalishi talabasi

DOI:

https://doi.org/10.71337/inlibrary.uz.zdif.84948

Ключевые слова:

sinxronlashtirish jarayonlar semafoor monitor xabarlar almashinuvi kritik bo‘lak operatsion tizim resurslar boshqaruvi dasturlash ko‘pjarayonli muhit.

Аннотация

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.


background image

134

JARAYONLARNING BIRGALIKDA ISHLASHINI MUVOFIQLASHTIRISH

(SINXRONLASHTIRISH) ALGORITMLARI: SEMAFOOR, MONITOR VA

XABARLAR

Ro‘zaliyev Sherzodjon Avazjonovich

Farg‘ona davlat universiteti, Axborot texnologiyalari kafedrasi mudiri

sherzodjonruzaliyev@gmail.com

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.


background image

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


background image

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;


background image

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,


background image

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

https://docs.python.org/3/

8.

Oracle Java Documentation –

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.

MPI Standard Documentation –

https://www.mpi-forum.org

Библиографические ссылки

Silberschatz, A., Galvin, P. B., Gagne, G. (2018). Operating System Concepts (10th ed.). Wiley.

Tanenbaum, A. S., Bos, H. (2015). Modern Operating Systems (4th ed.). Pearson.

Stallings, W. (2018). Operating Systems: Internals and Design Principles (9th ed.). Pearson Education.

Andrews, G. R. (1991). Concurrent Programming: Principles and Practice. Addison-Wesley.

Уильямс, Р. (2014). Программирование на Java для начинающих. Диалектика.

Курдюмов, А. В. (2020). Операционные системы. Теория и практика. Санкт-Петербург: Питер.

Python Software Foundation. Python 3.12 documentation – https://docs.python.org/3/

Oracle Java Documentation – https://docs.oracle.com/javase/

О‘zbekiston Respublikasi oliy ta’lim muassasalari uchun “Operatsion tizimlar” fani bo‘yicha o‘quv qo‘llanmalar va darsliklar. (2021). Toshkent: O‘zbekiston nashriyoti.

MPI Standard Documentation – https://www.mpi-forum.org