рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Семафоры, мьютексы. Использование семафоров для синхронизации процессов

Семафоры, мьютексы. Использование семафоров для синхронизации процессов - раздел Образование, Экзаменационные вопросы по курсу Операционные системы Обобщением Блокирующих Переменных Являются Так Называемые Семафоры Дийкстры....

Обобщением блокирующих переменных являются так называемые семафоры Дийкстры.

Вместо двоичных переменных Дийкстра (Dijkstra) предложил использовать переменные, которые могут принимать целые неотрицательные значения.

Такие переменные, используемые для синхронизации вычислительных процессов, получили название семафоров.

Для работы с семафорами вводятся два примитива, традиционно обозначаемых Р и V.

Пусть переменная S представляет собой семафор.

Тогда действия V(S) и P(S) определяются следующим образом.

V(S): переменная S увеличивается на 1 единым действием.(Выборка, наращивание и запоминание не могут быть прерваны).

К переменной S нет доступа другим потокам во время выполнения этой операции.

P(S): уменьшение S на 1, если это возможно. Если S=0 и невозможно уменьшить S, оставаясь в области целых неотрицательных значений, то в этом случае поток, вызывающий операцию Р, ждет, пока это уменьшение станет возможным.

Успешная проверка и уменьшение также являются неделимой операцией.

Операция Р заключает в себе потенциальную возможность перехода потока, который ее выполняет, в состояние ожидания, в то время как операция V может при некоторых обстоятельствах активизировать другой поток, приостановленный операцией Р.

В частном случае, когда семафор S может принимать только значения 0 и 1, он превращается в блокирующую переменную, которую по этой причине часто называют двоичным семафором (мьютексом).

Рассмотрим использование семафоров на классическом примере взаимодействия двух выполняющихся в режиме мультипрограммирования потоков, один из которых пишет данные в буферный пул, а другой считывает их из буферного пула.

Пусть буферный пул состоит из N буферов, каждый из которых может содержать одну запись.

В общем случае поток-писатель и поток-читатель могут иметь различные скорости и обращаться к буферному пулу с переменой интенсивностью

В один период скорость записи может превышать скорость чтения, в другой — наоборот.

Для правильной совместной работы поток-писатель должен приостанавливаться, когда все буферы оказываются занятыми, и активизироваться при освобождении хотя бы одного буфера.

Напротив, поток-читатель должен приостанавливаться, когда все буферы пусты, и активизироваться при появлении хотя бы одной записи.

Введем два семафора: е — число пустых буферов, и f — число заполненных буферов, причем в исходном состоянии е =N, a
f =0. Тогда работа потоков с общим буферным пулом может быть описана следующим образом (рис.).

 

Рис. Использование семафоров для синхронизации потоков

Поток-писатель прежде всего выполняет операцию Р(е), с помощью которой он проверяет, имеются ли в буферном пуле незаполненные буферы.

В соответствии с семантикой операции Р, если семафор е равен 0 (то есть свободных буферов в данный момент нет), то поток-писатель переходит в состояние ожидания.

Если же значением е является положительное число, то он уменьшает число свободных буферов, записывает данные в очередной свободный буфер

после этого наращивает число занятых буферов операцией V(f).

Поток-читатель действует аналогичным образом, с той разницей, что он начинает работу с проверки наличия заполненных буферов, а после чтения данных наращивает количество свободных буферов.

В данном случае предпочтительнее использовать семафоры вместо блокирующих переменных.

Действительно, критическим ресурсом здесь является буферный пул, который может быть представлен как набор идентичных ресурсов — отдельных буферов, а значит, с буферным пулом могут работать сразу несколько потоков, и именно столько, сколько буферов в нем содержится.

Использование двоичной переменной не позволяет организовать доступ к критическому ресурсу более чем одному потоку. Семафор же решает задачу синхронизации более гибко, допуская к разделяемому пулу ресурсов заданное количество потоков. Так, в нашем примере с буферным пулом могут работать максимум N потоков, часть из которых может быть «писателями», а часть — «читателями».

Таким образом, семафоры позволяют эффективно решать задачу синхронизации Доступа к ресурсным пулам, таким, например, как набор идентичных в функциональном назначении внешних устройств (модемов, принтеров, портов), или набор областей памяти одинаковой величины, или информационных структур.

Во всех этих и подобных им случаях с помощью семафоров можно организовать доступ к разделяемым ресурсам сразу нескольких потоков.

Проиллюстрируем еще одну проблему синхронизации — взаимные блокировки, называемые также дедлоками (deadlocks), клинчами (clinch), или тупиками.

Пусть двум потокам, принадлежащим разным процессам и выполняющимся в режиме мультипрограммирования, для выполнения их работы нужно два ресурса, например диск и последовательный порт.

На рис. а показаны фрагменты соответствующих программ. Поток А запрашивает сначала порт; а затем диск, а поток В запрашивает устройства в обратном порядке

Предположим, что после того, как ОС назначила порт потоку А и установила связанную с этим ресурсом блокирующую переменную, поток А был прерван

Управление получил поток В, который сначала выполнил запрос на получение СОМ- порта, затем при выполнении следующей команды был заблокирован, так как диск оказался уже занятым потоком А. Управление снова получил поток А, который в соответствии со своей программой сделал попытку занять порт и был заблокирован, поскольку порт уже выделен потоку В. В таком положении потоки А и В могут находиться сколь угодно долго.

В зависимости от Соотношения скоростей потоков они могут либо взаимно блокировать друг друга (рис. б), либо образовывать очереди к разделяемым ресурсам (рис. в), либо совершенно независимо использовать разделяемые ресурсы (рис. г).

 

В рассмотренных примерах тупик был образован двумя потоками, но взаимно блокировать друг друга может и большее число потоков.

Невозможность потоков завершить начатую работу из-за возникновения взаимных блокировок снижает производительность вычислительной системы. Поэтому проблеме предотвращения тупиков уделяется большое внимание. На тот случай, когда взаимная блокировка все же возникает, система должна предоставить администратору-оператору средства, с помощью которых он смог бы распознать тупик, отличить его от обычной блокировки из-за временной недоступности ресурсов. И наконец, если тупик диагностирован, то нужны средства для снятия взаимных блокировок и восстановления нормального вычислительного процесса

Тупики могут быть предотвращены на стадии написания программ, то есть программы должны быть написаны таким образом, чтобы тупик не мог возникнуть при любом соотношении взаимных скоростей потоков

 

Другой, более гибкий подход к предотвращению тупиков заключается в том, что ОС каждый раз при запуске задач анализирует их потребности в ресурсах и определяет, может ли в данной мультипрограммной смеси возникнуть тупик. Если да, то запуск новой задачи временно откладывается. ОС может также использовать определенные правила при назначении ресурсов потокам, например, ресурсы могут выделяться операционной системой в определенной последовательности, общей для всех потоков.

В тех же случаях, когда тупиковую ситуацию не удалось предотвратить, важно быстро и точно ее распознать, поскольку блокированные потоки не выполняют никакой полезной работы. Если тупиковая ситуация образована множеством потоков, занимающих массу ресурсов, распознавание тупика является нетривиальной задачей. Существуют формальные, программно-реализованные методы распознавания тупиков, основанные на ведении таблиц распределения ресурсов и таблиц запросов к занятым ресурсам. Анализ этих таблиц позволяет обнаружить взаимные блокировки.

Если же тупиковая ситуация возникла, то не обязательно снимать с выполнения все заблокированные потоки. Можно снять только часть из них, освободив ресурсы, ожидаемые остальными потоками, можно вернуть некоторые потоки в область подкачки, можно совершить -«откат» некоторых потоков до так называемой контрольной точки, в которой запоминается вся информация, необходимая для восстановления выполнения программы с данного места. Контрольные точки расставляются в программе в тех местах, после которых возможно возникновение тупика.

Механизмы синхронизации, основанные на использовании глобальных переменных процесса, обладают существенным недостатком — они не подходят для синхронизации потоков разных процессов.

В таких случаях операционная система должна предоставлять потокам системные объекты синхронизации, которые были бы видны для всех потоков, даже если они принадлежат разным процессам и работают в разных адресных пространствах.

Примерами таких синхронизирующих объектов ОС являются системные семафоры, мьютексы, события, таймеры и другие — их набор зависит от конкретной ОС, которая создает эти объекты по запросам процессов.

Чтобы процессы могли разделять синхронизирующие объекты, в разных ОС используются разные методы

– Конец работы –

Эта тема принадлежит разделу:

Экзаменационные вопросы по курсу Операционные системы

Общая характеристика понятий сложность система модель... Существующие предметные области и явления сложны В силу этого реальный наблюдатель может видеть только отдельные...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Семафоры, мьютексы. Использование семафоров для синхронизации процессов

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Исследование объекта как системы, признаки сложности системы
Объектом познания является часть реального мира, которая выделяется и воспринимается как единое целое в течение длительного времени. Объект может быть материальным или абстрактным, естеств

Факторные подсистемы сложных систем, принципы системного подхода.
Сложные системы можно подразделить на следующие факторные подсистемы: 1) решающую, которая принимает глобальные решения во взаимодействии с внешней средой и распределяет локальные задания

Архитектура процессора с точки зрения программиста
Для программиста любой процессор состоит из набора регистров памяти различного назначения, которые определенным образом связаны между собой и обрабатываются в соответствии с некоторой системой прав

Основные этапы эволюции вычислительных систем
Существуют различные классификации ВС. Наиболее часто они классифицируются по элементной базе. В соответствии с этой классификацией в эволюции ВС выделяются 4 этапа: 1. Первый период (1945

ОС в иерархической структуре программного и аппаратного обеспечения компьютера (внешняя среда ОС)
Иерархическая структура программно-аппаратных средств компьютера: Существует большое разнообразие ОС,

Организация эффективного использования ресурсов компьютера. Облегчение процессов эксплуатации аппаратных и программных средств вычислительной системы
К числу основных ресурсов современных ОС можно отнести процессоры, ОЗУ, таймеры, наборы данных, диски, накопители на магнитных лентах, принтеры, сетевые устройства и т.д. Ресурсы должны быть распре

Возможности развития ОС, требования к ОС, средства аппаратной поддержки ОС
Необходимость развития обусловлена следующими причинами: ¾ обновление и возникновение новых видов аппаратного обеспечения ¾ появление новых сервисов (для удовлетворе

Основные принципы разработки архитектуры ОС
Архитектура – это базовая организация системы, воплощенная в ее компонентах, их отношениях между собой и с окружением, а также принципы, определяющие проектирование и развитие системы [IEE[1471] .

Монолитная архитектура ОС
В монолитной архитектуре ОС уже присутствует некая структурированность, которая определяется набором процедур. Здесь каждая процедура имеет хорошо определенный интерфейс и может вызвать лю

Многоуровневая архитектура ОС
Многоуровневая архитектура появилась в ответ на ограничения монолитной архитектуры в плане расширяемости, переносимости и совместимости. Основная ее идея состоит в следующем: 1. П

Понятие процесса, состояния процесса, модель процесса
Процесс является фундаментальным понятием, отражающим функционирование ОС. По своей сути это динамический объект, над которым ОС выполняет определенные действия. Рассмотрим модели процессо

Планирование процессов. Уровни планирования
Процессы – деятельность ОС. Одной из составляющих процессов являются ресурсы. Они ограничены. Поскольку процессов много, необходимо организовать координацию их использования. Кроме того, процессы –

Критерии планирования и требования к алгоритмам
Понятно, что могут существовать различные алгоритмы планирования. И хотелось бы, чтобы они были универсальны, но реально этого не происходит. Чаще всего тот или иной алгоритм подходит к определенно

Параметры планирования
При планирование ОС опирается на два класса параметров объекта. Первый класс отражает статистические параметры, второй – динамические. Статистические параметры не изменяются в ходе функционирования

Вытесняющее и невытесняющее планирование
Процесс планирования осуществляется частью ОС, называемой планировщиком. Он может принимать решения о выборе для исполнения нового процесса из числа находящихся в состоянии готовность в следующих 4

Алгоритм планирования процессов First-Come, First-Served (FCFS)
Реально существует множество разнообразных алгоритмов планирования. Каждый из них эффективен для определенного класса задач. Существуют алгоритмы, которые можно применять на различных уров

Алгоритм планирования процессов Round Robin (RR)
Отмеченные недостатки устраняются в следующем алгоритме: Round Robin (RR). В целом он похож на предыдущий алгоритм, но дополнительно вводится механизм вытесняющего планирования.

Алгоритм планирования процессов Shortest-Job-First (невытесняющий)
При рассмотрении алгоритмов FCFS и RR мы видели, насколько существенным для них является порядок расположения процессов в очереди процессов, готовых к исполнению. Если короткие задачи расположены в

Алгоритм планирования процессов Shortest-Job-First (вытесняющий)
При вытесняющем SJF-планировании учитывается появление новых процессов в очереди готовых к исполнению (из числа вновь родившихся или разблокированных) во время работы выбранного процесса.

Многоуровневые очереди в планировании процессов (без обратной связи и с обратной связью)
(Multilevel Queue) Для систем, в которых процессы могут быть легко рассортированы по

Потоки. Мультипрограммирование на уровне потоков
Чтобы поддерживать мультипрограммирование (многозадачность), ОС должна определить и оформить для себя те внутренние единицы работы, между которыми будет разделяться процессор и другие ресурсы компь

Общие характеристики связи между процессами
* направление связи. Связь бывает однонаправленная (симплексная) и двунаправленная (полудуплексная для поочередной передачи информации и дуплексная с возможностью одновременной передачи да

Организация физической памяти компьютера
Со времен создания ЭВМ фон Неймана основная память в компьютерной системе организована как линейное (одномерное) адресное пространство, состоящее из последова­тельности слов, а позже байтов. Аналог

Функции ОС по управлению памятью
Под памятью (memory) в данном случае подразумевается оперативная (основная) память компьютера. В однопрограммных операционных системах основная память раз­деляется на две части. Одна часть - для оп

Виртуальная память
Объем оперативной памяти существенно сказывается на характере протекания вы- числительного процесса, так как он ограничивает число одновременно выполняющихся программ, т. е. урове

Методы структуризации виртуального адресного пространства
Большинство систем виртуальной памяти используют технику, называемую страничной организацией памяти. Любой процесс, реализуемый в компьютере, может обратиться к множеству адресов в памяти. Адреса м

Страничная организация виртуальной памяти
При страничной организации виртуальное адресное пространство каждого про­цесса делится на части одинакового, фиксированного для данной системы размера, на­зываемые виртуальными страницами (Virtual

Сегментация виртуальной памяти
При страничной организации виртуальное адресное пространство делится на равные части механически без учета смыслового значения данных. Для многих задач наличие двух и более отдельных виртуальных ад

Программная поддержка механизмов виртуальной памяти
52. Общая характеристика устройств ввода – вывода Внешние устройства, выполняющие операции ввода-вывода, можно разделить на три группы: · устройства, работающие с

Назначение и задачи подсистемы ввода-вывода
Обмен данными между пользователями, приложениями и периферийными уст­ройствами компьютера выполняет специальная подсистема ОС - подсистема ввода-вы­вода. Собственно для выполнения этой задачи и был

Драйверы устройств ввода вывода
Первоначально термин «драйвер» применялся в достаточно узком смысле; под драйвером понимается программный модуль, который: · входит в состав ядра ОС, работая в привилегированном режиме;

Многослойная модель подсистемы ввода-вывода
При большом разнообразии устройств ввода-вывода, обладающих существенно различными характеристиками, иерархическая структура подсистемы ввода-вывода по­зволяет соблюсти баланс между двумя противоре

Архитектура файловой системы
Классическая схема организации программного обеспечения файловой системы представлена на рис.  

Логическая организация файлов
Логический ввод-вывод предоставляет приложениям и пользователям доступ к записям. Метод доступа Наиболее близкий пользователю уровень файловой системы. Он обеспечивает стандартный

Каталоговые системы
Связующим звеном между системой управления файлами и набором файлов слу­жит файловый каталог. Простейшая форма системы каталогов состоит в том, что имеет­ся один каталог, в котором содержатся все ф

Физическая организация файловой системы
Информационная структура магнитных дисков Представление пользователей о файловой системе как об иерархически организо­ванном множестве информационных блоков имеет мало общего с порядком хр

S – номер сектора
На каждой стороне каждой пластины размечены тонкие концентрические кольца ­дорожки (tracks), на которых хранятся данные. Нумерация дорожек начинается с 0 от внешнего края к

Физическая организация и адресация файла
Физическая организация выделяет способ размещения файлов на диске и учет соответствия блоков диска файлам. Основными критериями эффективности физиче­ской организации файлов являются:

Физическая организация FAT
Для обеспечения доступа приложений к файлам операционная система с файловой системой FAT использует следующие структуры: · загрузочные сектора главного и дополнительных разде

Основные этапы развития операционных систем корпорации Microsoft.
Операционные системы корпорации Microsoft для настольных и переносныхкомпьютеров можно разделить на три семейства: MS DOS, Consumer Windows (Windows95/98/Me) и Professional (Windows NT/2000/2003/.

Общая характеристика структуры ОС Windows 2000,основные изменения в ней по сравнению с ОС Windows NT.
Операционная система 2000 состоит из двух основных частей: самой операционной системы, работающей в режиме ядра, и подсистем окружения, работающих в режиме пользователя. Ядро является

Основные функции, выполняемые уровнем HAL ОС Windows 2000.
Над уровнем HAL располагается уровень, содержащий ядро ОС, а также драйверы устройств. Существуют четыре вида драйверов: (1) аппаратных средств, (2) файловой­системы, (3) фильтров и (4) сетевых уст

Общая характеристика исполняющей подсистемы ОС Windows 2000.
Над ядром и драйверами устройств располагается исполняющая система. Она написана на языке С, не зависит от архитектуры машины и может быть перенесена на новые машины относительно просто. Исп

Основные особенности файловой системы NTFS 5 по сравнению с предыдущими файловыми системами Microsoft.
Файловая система NTFS была полностью разработана заново и достаточно сложна. Каждый том NTFS (т. е. дисковый раздел) содержит файлы, каталоги, битовые массивы и другие структуры данных. Каждый том

Средства достижения безопасности в ОС Windows 2000
ОС Windows NT была разработана так, чтобы соответствовать уровню С2 требований безопасности Министерства обороны США (DoD 5200.28 - STD) [37]. Этот стандарт требует наличия у операционных систем оп

Основные принципы работы шифрующей файловой системы в ОС Windows 2000
Файловая система NTFS поддерживает прозрачное сжатие файлов. Файл может быть создан в сжатом режиме. Это значит, что файловая система NTFS будет автоматически пытаться сжать блоки этого файла при з

Набор API для Win 32.
Этот набор интерфейсов прикладного программирования позволяет выполнять шифрование файлов, дешифрование и восстановление зашифрованных файлов, а также их импорт и экспорт (без предварительного деши

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги