Semafor vs Monitor
Semafor paralel proqramlaşdırma mühitlərində birdən çox prosesin eyni vaxtda ümumi resurs və ya kritik bölməyə daxil olmamasını təmin etmək üçün istifadə edilən məlumat strukturudur. Semaforlar ölü kilidlərdən və yarış şəraitindən qaçmaq üçün istifadə olunur. Monitor eyni vaxtda ümumi resursa daxil olan birdən çox prosesin qarşısını almaq üçün istifadə edilən proqramlaşdırma dili konstruksiyasıdır, buna görə də qarşılıqlı istisnalara zəmanət verir. Monitorlar bu tapşırığı yerinə yetirmək üçün şərti dəyişənlərdən istifadə edir.
Semafor nədir?
Semafor kritik bölmələrə qarşılıqlı istisna təmin etmək üçün istifadə edilən məlumat strukturudur. Semaforlar əsasən gözləmə (tarixən P kimi tanınır) və siqnal (tarixdə V kimi tanınır) adlı iki əməliyyatı dəstəkləyir. Gözləmə əməliyyatı semafor açıq olana qədər prosesi bloklayır və siqnal əməliyyatı başqa bir prosesin (ipin) daxil olmasına imkan verir. Hər bir semafor gözləmə proseslərinin növbəsi ilə əlaqələndirilir. Gözləmə əməliyyatı bir iplə çağırıldıqda, semafor açıqdırsa, ip davam edə bilər. Gözləmə əməliyyatı iplə çağırıldıqda semafor bağlanırsa, ip bloklanır və növbədə gözləməli olur. Siqnal əməliyyatı semafor açır və əgər növbədə artıq gözləyən ip varsa, bu proses davam etməyə icazə verilir və növbədə gözləyən iplər yoxdursa, siqnal növbəti iplər üçün yadda saxlanılır. Muteks semaforları və sayma semaforları adlanan iki növ semafor var. Mutex semaforları resursa tək çıxışa imkan verir və semaforların sayılması birdən çox mövzunun resursa daxil olmasına imkan verir (bir neçə vahid mövcuddur).
Monitor nədir?
Monitor paylaşılan məlumatlara girişi idarə etmək üçün istifadə edilən proqramlaşdırma dili konstruksiyasıdır. Monitorlar paylaşılan məlumat strukturlarını, prosedurları (paylaşılan məlumat strukturlarında işləyən) və paralel prosedur çağırışları arasında sinxronizasiyanı əhatə edir. Monitor onun məlumatlarının strukturlaşdırılmamış girişlərlə üzləşmədiyinə əmin olur və treadların (prosedurları vasitəsilə monitorun məlumatlarına daxil olan) qanuni şəkildə qarşılıqlı əlaqədə olmasına zəmanət verir. Monitor müəyyən bir zamanda hər hansı monitor prosedurunu yerinə yetirmək üçün yalnız bir ipə icazə verməklə, qarşılıqlı istisnaya zəmanət verir. Əgər ip artıq monitorda proseduru yerinə yetirərkən başqa bir ip monitorda metodu çağırmağa çalışırsa, ikinci prosedur bloklanır və o, növbədə gözləməli olur. Hoare monitorları və Mesa monitorları adlı iki növ monitor var. Onlar əsasən planlaşdırma semantikasında fərqlənirlər.
Semafor və Monitor arasındakı fərq nədir?
Paralel proqramlaşdırma mühitlərində qarşılıqlı istisnaya nail olmaq üçün həm semaforlar, həm də monitorlar istifadə olunsa da, onlar bu tapşırığa nail olmaq üçün istifadə olunan üsullara görə fərqlənirlər. Monitorlarda qarşılıqlı istisnaya nail olmaq üçün istifadə edilən kod bir yerdədir və daha strukturlaşdırılmışdır, semaforlar üçün kod isə gözləmə və siqnal funksiyası çağırışları kimi paylanır. Həmçinin, semaforları həyata keçirərkən səhv etmək çox asandır, halbuki monitorları tətbiq edərkən səhv etmək şansı çox azdır. Bundan əlavə, monitorlar şərt dəyişənlərindən istifadə edir, semaforlar isə istifadə etmir.