Операционная система | M03 (серия 8 деталей)
Это многочисленная серия статьи в блоге, и в этой серии я собираюсь объяснить вам концепции операционной системы. Эта серия статьи разделена на несколько модулей, и это третий модуль, который состоит из 10 статей.
В этой статье мы обсудим семафоры в операционной системе и увидим, как считает семафоры тип семафорных работ.
Семафоры
- Это метод/инструмент, который используется для предотвращения состояния гонки.
- Когда мы пытаемся запустить несколько кооперативных процессов в одиночное время, может возникнуть состояние гонки.
- Состояние гонки может вызвать потерю данных, тупика и т. Д.
- Семфор — это целочисленная переменная, которая используется в взаимном порядке исключительно различными параллельными кооперативными процессами для достижения синхронизации.
PCB: Блок управления процессом, храните всю информацию, связанную с таким процессом, как обработанная, список открытых файлов, приоритет и т. Д.
Код раздела входа
Down(Semaphore S) { Svalue = Svalue - 1 if(Svalue < 0) { put process (PCB)m suspend list, sleep(), } else return ; }
ВЫХОДНЫЙ СПЕЦИЙ КОД
Up(Semaphore S) { Svalue = Svalue + 1 if(Svalue <= 0>) { select a process from suspend list and wake up(); } }
- S : S — целое число, и это значение семафора, которое варьируется от (-infinity к + бесконечности) , как это считается семафором.
- Если Svalue —
0
тогда ни один другой процесс не может ввести критический раздел, весь процесс, который хочет ввести критический раздел в то время, будет заблокирован/сон. - Если подкладка в отрицательном порядке, то это (Критический раздел) не может принять какой -либо другой процесс.
- Таким образом, при критическом разделе «Выход процесса» они выполняют код раздела выхода, который, как вы можете видеть, увеличить значение SSVALE.
- В разделе «Кодекс выхода» Wake Up () означает, что процесс снова может попытаться перейти в критическом разделе, теперь он не находится в состоянии сна/блока или критический раздел.
- Если Svalue —
0
Тогда нет процесса в состоянии блока/сна, означает, что процесс не был приостановлен. - Если Svalue —
10
, тогда10
Процессы могут успешно ввести критический раздел. - Если процесс вступает в критический раздел, он считается успешной работой и если процесс не входит в критический раздел, он называется неудачной работой.
Вопрос: Пусть S
Мы выполняем 6 P
операция и 4 V
операции. Каково текущее значение S
?
Отвечать:
Дано,
S
, P
, V
После выступления 6 P
операции
S —
После выступления 4 V
операции
S +
Поэтому текущее значение
Вопрос: Пусть S
, мы выполняем 5 P
Операция, 3 V
Операция, 1 P
операция в последовательности. Каково текущее значение S
?
Отвечать:
Дано,
S
, P1
, V
, П2
После выполнения P1
мы получили
S —
После выполнения V
мы получили
S +
После выполнения P2
мы получили
S —
Поэтому текущее значение
Так что это было все о семафорах и подсчете семафоров. Надеюсь, вам понравилось и узнал что -то новое из этого.
Если у вас есть какие -либо сомнения, вопрос, звонки, связанные с этой темой, или просто хотите поделиться со мной чем -то, пожалуйста, не стесняйтесь обращаться ко мне.
📱 Свяжитесь со мной
Twitter , LinkedIn , Телеграмма , Instagram В
📧 Напишите почту
rahulmishra102000@gmail.com
🚀 Другие ссылки
Операционная система | M03 (серия 8 деталей)
Оригинал: «https://dev.to/rahulmishra05/semaphores-and-counting-semaphores-operating-system-m03-p05-3fbo»