Алгоритм Деккера и алгоритм Петерсона и их применение для разрешения проблемы критических интервалов. Решение задачи «О синхронизации стрелков»

Страницы работы

21 страница (Word-файл)

Фрагмент текста работы

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Магнитогорский государственный технический университет им. Г.И. Носова»

Кафедра вычислительной техники и программирования

КУРСОВАЯ РАБОТА

по дисциплине: «Теория вычислительных процессов»

на тему: «Алгоритм Деккера и алгоритм Петерсона и их применение для разрешения проблемы критических интервалов. Решение задачи «О синхронизации стрелков»»

Исполнитель:  , студент 2 курса, группа ЭАВбп-13

Руководитель: , к.т.н., доцент кафедры ВТиП

Работа допущена к защите "_____" _________ 2014г. ______________

         (подпись)                                

Работа защищена "_____" _______ 2014г. с оценкой    ______    _______

(оценка)  (подпись)     

Магнитогорск, 2014

Содержание

ВВЕДЕНИЕ. 3

1.    ПРОЦЕССЫ.. 5

1.1     Основные понятия о процессах. 5

1.2     Взаимодействие процессов. 5

2.    КРИТИЧЕСКИЕ ИНТЕРВАЛЫ.. 6

2.1     Понятие критических интервалов. 6

2.2     Взаимное исключение критических интервалов. 6

2.2.1     Примитив взаимоисключения. 8

3.    АЛГОРИТМ ДЕККЕРА.. 10

4.    АЛГОРИТМ ПЕТЕРСОНА.. 13

5.    ЗАДАЧА «О СИНХРОНИЗАЦИИ СТРЕЛКОВ». 17

5.1     Постановка задачи. 17

5.2     Алгоритм решения задачи. 17

5.3     Программная реализация задачи. 18

ЗАКЛЮЧЕНИЕ. 24

Список использованной литературы.. 25


ВВЕДЕНИЕ

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

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

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

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

2.  В программе недопустимы предположения о скорости или количестве процессоров.

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

4.  Недопустима ситуация, в которой процесс постоянно ждет попадания в критическую секцию.

Первый, кто разработал программное решение проблемы взаимного исключения, которое не требует строгого чередования, был датский математик Деккер. В 1981 году Петерсоном был придуман  более простой алгоритм взаимного исключения и  вариант Деккера стал считаться устаревшим.

1.  ПРОЦЕССЫ

1.1  Основные понятия о процессах

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

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

·  таблицы страниц или сегментов;

·  дескрипторы файлов;

·  заказы на ввод-вывод;

·  регистры.

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

1.2  Взаимодействие процессов.

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

Похожие материалы

Информация о работе