Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по ТВП. Шишиморов Александр.docx
Скачиваний:
48
Добавлен:
11.02.2015
Размер:
351.68 Кб
Скачать

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

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

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

Курсовая работа

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

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

Исполнитель: Шишиморов А. П., студент 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

ЗАКЛЮЧЕНИЕ 20

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 21

Введение

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

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

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

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

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

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

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

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