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

1. Понятие операционной среды. Совместимость и множественные прикладные среды. Виды совместимости. Способы реализации прикладных программных сред. Подсистемы среды Windows 2000.

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

Задача

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

1. Совместимость – возможность операционной системы выполнять приложения, разработанные для других операционных систем.

Виды совместимости:

1. На двоичном уровне (уровень исполняемой программы).

2. На уровне исходных текстов (уровень исходного модуля).

Вид совместимости определяется:

1. Архитектурой центрального процессора.

2. Интерфейсом прикладного программирования (API).

3. Внутренней структурой исполняемого файла.

4. Наличием соответствующих компиляторов и библиотек.

Способы достижения совместимости:

1. Эмуляция двоичного кода.

2. Трансляция библиотек.

3. Создание множественных прикладных сред различной архитектуры

В Windows 2000 существует работающий в пользовательском режиме системный интерфейс NT DLL.DLL, взаимодействующий с разными подсистемами Win32, POSIX, OS2 и интегральными подсистемами (напр. службы сервера). Подсистемы могут взаимодействовать друг с другом, а также непосредственно с соответствующими программными приложениями.

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

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

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

Задача. Если на 3 процесса приходится 4 единицы ресурса, то при их полном использовании какой-то процесс использует 2 единицы ресурса. Когда он выполнится, он освободит эти 2 единицы ресурса и их могут занять другие процессы. Получается, что в каждый момент времени как минимум 1 процесс будет выполняться, освобождая после себя ресурсы для других, и таким образом взаимоблокировка не создастся


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: