Операционные системы

  • 30 марта 2012 г.
  • 4929 Слова
|Министерство образования и науки Российской Федерации |
|ФГБОУ ВПО «Московский государственный открытый университет имени В.С. Черномырдина» |
|Чебоксарский политехнический институт (филиал)|
|Кафедра Информационных технологий и программирования |
|КОНТРОЛЬНАЯ РАБОТА №1 |
|по дисциплине Операционныесистемы |
|вариант 55 |
| |
|Чебоксары- 2012 |

Часть 1. Реализация механизма синхронизации типа “семафоры”

Для повышения производительности вычислительных систем и облегчения задачи программистов существуют специальные механизмы синхронизации более высокого уровня - семафоры, мониторы исообщения.
Одним из первых механизмов, предложенных для синхронизации поведения процессов, стали семафоры, концепцию которых описал Дейкстра (Dijkstra) в 1965 году.
Семафор представляет собой целую переменную, принимающую неотрицательные значения, доступ любого процесса к которой, за исключением момента ее инициализации, может осуществляться только через две атомарные операции: P (от датского слова proberen– проверять) и V (от verhogen – увеличивать). Классическое определение этих операций выглядит следующим образом:

P(S): пока S == 0 процесс блокируется;


S = S – 1;


V(S): S = S + 1;

Эта запись означает следующее: при выполнении операции P над семафором S сначала проверяется его значение. Если оно больше 0, то из S вычитается 1. Если оно меньше или равно 0, топроцесс блокируется до тех пор, пока S не станет больше 0, после чего из S вычитается 1. При выполнении операции V над семафором S к его значению просто прибавляется 1. В момент создания семафор может быть инициализирован любым неотрицательным значением.
Подобные переменные-семафоры могут с успехом применяться для решения различных задач организации взаимодействия процессов. В ряде языковпрограммирования они были непосредственно введены в синтаксис языка, в других случаях реализуются с помощью специальных системных вызовов.

Синхронизация с использованием семафоров

Семафоры позволяют обеспечить доступ к ресурсу для заранее определенного, ограниченного приложением количества задач. Все остальные задачи, пытающиеся получить доступ сверх установленного лимита, будут переведеныпри этом в состояние ожидания до тех пор, пока какая либо задача, получившая доступ к ресурсу раньше, не освободит ресурс, связанный с данным семафором.
Примером области применения семафоров может послужить программное обеспечение какого-либо аппаратного устройства, с которым может работать только ограниченное количество задач. Все остальные задачи, пытающиеся получить доступ к этому устройству,должны быть переведены в состояние ожидания и пребывать в нем до тех пор, пока не завершит свою работу одна из задач, уже получившая доступ к устройству.
Ресурс, доступ к которому управляется семафором, может быть не только физическим устройством, но и чисто логическим.
Например. Возьмем книгу, в которой приводятся исходные тексты приложения MultiMDI. В этом...
tracking img