Рубрики
Uncategorized

Семафоры и подсчет семафоров | Операционная система — M03 P05

Это многочисленная серия статьи в блоге, и в этой серии я собираюсь объяснить вам концепции … с меткой Linux, DevOps, начинающих, Codenewbie.

Операционная система | 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

🚀 Другие ссылки

GitHub , Хакерранк

Операционная система | M03 (серия 8 деталей)

Оригинал: «https://dev.to/rahulmishra05/semaphores-and-counting-semaphores-operating-system-m03-p05-3fbo»