Шта је Семафор?
Семафор је једноставно променљива која није негативна и дели се између нити. Семафор је сигнални механизам, а нит која чека на семафору може бити сигнализирана другом нити. Користи две атомске операције, 1) чекање и 2) сигнал за синхронизацију процеса.
Семафор омогућава или онемогућава приступ ресурсу, што зависи од начина на који је постављен.
У овом водичу за оперативни систем (ОС) научићете:
- Карактеристично за семафор
- Шта је Семафор?
- Врсте семафора
- Пример Семафора
- Операције чекања и сигнала у семафорима
- Бројање семафора наспрам бинарног семафора
- Разлика између Семапхора и Мутека
- Предности семафора
- Недостатак семафора
Карактеристично за семафор
Овде су карактеристичне за семафор:
- То је механизам који се може користити за обезбеђивање синхронизације задатака.
- То је механизам за синхронизацију на ниском нивоу.
- Семафор ће увек имати негативну целобројну вредност.
- Семафор се може имплементирати помоћу тест операција и прекида, који би се требали извршити помоћу дескриптора датотека.
Врсте семафора
Две уобичајене врсте семафора су
- Бројање семафора
- Бинарни семафори.
Бројање семафора
Ова врста Семафора користи бројач који помаже да се задатак набави или ослободи много пута. Ако је почетно бројање = 0, семафор за бројање треба створити у недоступном стању.
Међутим, ако је бројање> 0, семафор се креира у доступном стању, а број токена који има једнак је броју.
Бинарни семафори
Бинарни семафори су прилично слични бројању семафора, али њихова вредност је ограничена на 0 и 1. У овој врсти семафора, операција чекања ради само ако је семафор = 1, а операција сигнала успева када је семафор = 0. Лако је примени него бројање семафора.
Пример Семафора
Следећи програм је корак по корак имплементација, која укључује употребу и декларацију семафора.
Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;
Операције чекања и сигнала у семафорима
Обе ове операције користе се за спровођење синхронизације процеса. Циљ ове операције семафора је да се постигне међусобно искључење.
Сачекајте операцију
Ова врста операције семафора помаже вам да контролишете улазак задатка у критични одељак. Међутим, ако је вредност чекања позитивна, тада се вредност аргумента чекања Кс смањује. У случају негативне или нулте вредности, не извршава се ниједна операција. Такође се назива и П (С) операција.
Након смањења вредности семафора, која постаје негативна, команда се задржава док се не испуне потребни услови.
Copy CodeP(S){while (S<=0);S--;}
Сигнална операција
Овај тип Семапхоре операције користи се за контролу изласка из задатка из критичног одељка. Помаже у повећању вредности аргумента за 1, што се означава као В (С).
Copy CodeP(S){while (S>=0);S++;}
Бројање семафора наспрам бинарног семафора
Ево неколико главних разлика између бројања и бинарног семафора:
Бројање Семафора | Бинарни семафор |
Нема међусобног искључивања | Узајамно искључивање |
Било која целобројна вредност | Вредност само 0 и 1 |
Више слотова | Само један утор |
Обезбедите скуп Процеса | Има механизам узајамног искључивања. |
Разлика између Семапхора и Мутека
Параметри | Семафор | Мутек |
Механизам | То је врста сигналног механизма. | То је механизам за закључавање. |
Тип података | Семафор је целобројна променљива. | Мутек је само објекат. |
Модификација | Операције чекања и сигнала могу изменити семафор. | Измењује га само поступак који може затражити или објавити ресурс. |
Управљање ресурсима | Ако ниједан ресурс није бесплатан, тада је за процес потребан ресурс који треба да изврши операцију чекања. Требало би сачекати док број семафора не буде већи од 0. | Ако је закључан, поступак мора да сачека. Процес треба држати у реду. Овоме треба приступити само када је мутек откључан. |
Навој | Можете имати више програмских нити. | У мутеку можете имати више програмских нити, али не истовремено. |
Власништво | Вредност се може променити било којим поступком пуштања или прибављања ресурса. | Закључавање објекта се ослобађа само процесом, који је закључавање на њему добио. |
Врсте | Типови семафора броје семафор и бинарни семафор и | Мутек нема подтипове. |
Операција | Вредност семафора се мења помоћу операција ваит () и сигнал (). | Мутек објекат је закључан или откључан. |
Попуњеност ресурса | Заузима се ако се користе сви ресурси, а поступак који захтева ресурс врши операцију ваит () и блокира се док број семафора не постане> 1. | У случају да је објекат већ закључан, процес који захтева ресурсе чека и систем га ставља у ред пре него што се закључавање пусти. |
Предности семафора
Ево предности / предности коришћења Семапхоре-а:
- Омогућава више нитима да приступе критичном одељку
- Семафори су независни од машине.
- Семафори су примењени у машински независном коду микроједра.
- Они не дозвољавају да више процеса уђе у критични одељак.
- Како је у семафору заузето чекање, никада се не губи процесно време и ресурси.
- Они су независни од машине, што би требало покренути у машински неовисном коду микроједра.
- Омогућују флексибилно управљање ресурсима.
Недостатак семафора
Ево слабости / недостатака семафора
- Једно од највећих ограничења семафора је инверзија приоритета.
- Оперативни систем мора пратити све позиве на чекање и сигнализирати семафор.
- Њихова употреба се никада не спроводи, али је само по договору.
- Да би се избегла застоја у семафору, операције чекања и сигнала морају се извршити у правилном редоследу.
- Програмирање семафора је сложено, па постоје шансе да се не постигне међусобно искључивање.
- Такође није практична метода за широку употребу, јер њихова употреба доводи до губитка модуларности.
- Семафор је склонији грешкама програмера.
- То може проузроковати застој или кршење међусобног искључивања због грешке програмера.
Резиме:
- Семафор је дефинисан као променљива која је негативна и дели се између нити.
- То је механизам који се може користити за обезбеђивање синхронизације задатака.
- Бројање семафора користи бројање које помаже да се задатак набави или ослободи много пута.
- Бинарни семафори су прилично слични бројању семафора, али њихова вредност је ограничена на 0 и 1.
- Операција чекања помаже вам да контролишете улазак задатка у критични одељак
- Операција сигналног семафора користи се за контролу изласка из задатка из критичног одељка
- Бројање Семафора нема међусобног искључивања, док Бинарни Семафор има међусобно искључивање
- Семафор значи сигнални механизам, док је Мутек механизам закључавања
- Семафор омогућава више нитима да приступе критичном одељку
- Једно од највећих ограничења семафора је инверзија приоритета.