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

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

Алгоритм Петерсона

Алгоритм Петерсона - раздел Образование, Понятие многослойности ядра Алгоритм Петерсона — Программный Алгоритм Взаимного Исключения Потоков Исполн...

Алгоритм Петерсона — программный алгоритм взаимного исключения потоков исполнения кода, разработанный Г. Петерсоном в 1981 г. Хотя изначально был сформулирован для 2-х поточного случая, алгоритм может быть обобщён для произвольного количества потоков. Алгоритм условно называется программным, так как не основан на использовании специальных команд процессора для запрета прерываний, блокировки шины памяти и т. д., используются только общие переменные памяти и цикл для ожидания входа в критическую секцию исполняемого кода.

Принцип работы

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

Код enterRegion и leaveRegion на языке C++

bool interested[2];

int turn;

 

void enterRegion(int threadId)

{

int other = 1 - threadId; // Идентификатор второго потока

interested[threadId] = true; // Индикатор интереса текущего потока

turn = other; // Флаг очереди исполнения

 

/* Цикл ожидания, мы находимся в этом цикле, если второй процесс выполняет свою

критическую секцию. Когда второй процесс выйдет из критической секции, выполнится

процедура leaveRegion(int threadId), флаг заинтересованности (interested[other])

станет равен false, и цикл закончится. */

while (turn == other && interested[other]);

}

 

void leaveRegion(int threadId)

{

interested[threadId] = false;

}

 

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

 

1) Потоки вызывают enterRegion последовательно

Время Поток 0 Поток 1
t1 int other = 1;  
t2 interested[0] = true;  
t3 turn = 1;  
t4 while (turn == 1 && interested[1]);  
t5 Критическая область кода int other = 0;
t6 interested[1] = true;
t7 turn = 0;
t8 while (turn == 0 && interested[0]);
t9 while (turn == 0 && interested[0]);
t10 interested[0] = false; Критическая область кода
t11  
t12  
t13   interested[1] = false;

 

Поток с номером 0 вызывает enterRegion, задавая этим индикатор своей «заинтересованности», устанавливая флаг очереди так, чтобы уступить очередь исполнения потоку номер 1. Поскольку последний пока еще не «заинтересован» в попадании в критическую область, выполнение сразу же возвращается из enterRegion, и поток 0 входит в нее. Теперь enterRegion вызывается потоком 1, для которого также выполняются описанные выше действия. Но так как поток 0 все еще «заинтересован» (interested[0] == true), выполнение остается в enterRegion — поток 1 в ожидании (в таблице это выражено повторением инструкции для цикла 'while'). Как только поток 0 вызывает leaveRegion и сбрасывает флаг своей «заинтересованности», поток 1 входит в критическую область и в конце сам вызывает leaveRegion.

 

2) Потоки вызывают enterRegion почти одновременно

Время Поток 0 Поток 1
t1 int other = 1;  
t2   int other = 0;
t3   interested[1] = true;
t4 interested[0] = true;  
t5 turn = 1;  
t6   turn = 0;
t7   while (turn == 0 && interested[0]);
t8   while (turn == 0 && interested[0]);
t9 while (turn == 1 && interested[1]);  
t10 Критическая область кода while (turn == 0 && interested[0]);
t11 while (turn == 0 && interested[0]);
t12 while (turn == 0 && interested[0]);
t13 interested[0] = false; Критическая область кода
t14  
t15  
t16   interested[1] = false;

 

Потоки почти одновременно вызывают enterRegion, устанавливая тем самым флаг своей «заинтересованности» и уступая очередь выполнения конкурирующему потоку посредством установки значения переменной turn. Поскольку последним это делает поток 1, ему уже придется ждать в цикле, в то время как поток 0 беспрепятственно входит в критическую область кода. Ожидание потока 1, как и в предыдущей таблице, выражено повторением инструкции while для цикла ожидания. После того, как поток 0 выходит из критической области и сбрасывает флаг своей «заинтересованности», поток 1 продолжает свое исполнение и в конце сам сбрасывает соответствующий флаг вызовом leaveRegion.

 

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

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

Понятие многослойности ядра

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Алгоритм Петерсона

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

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

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

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

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

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

Понятие мультипрограммирования. Мультипрограммирование в системах пакетной обработки.
Мультипрограммирование, или многозадачность (multitasking), — это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ. Эти

Понятие мультипрограммирования. Мультипрограммирование в системах реального времени
Еще одна разновидность мультипрограммирования используется в системах реального времени, предназначенных для управления от компьютера различными техническими объектами (например, станком, спутником

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

Состояния процессов. Состояние потоков
ОС выполняет планирование потоков, принимая во внимание их состояние. В мультипрограммной системе поток может находиться в одном из трех основных состояний: § выполнение — активное состоян

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

Понятие критической секции
Важным понятием синхронизации потоков является понятие «критической секции» программы. Критическая секция — это часть программы, результат выполнения которой может непредсказуемо меняться, если пер

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

Четыре необходимых условия возникновения тупика
Коффман, Элфик и Шошани сформулировали следующие четыре необходимых условия наличия тупика. • Процессы требуют предоставления им права монопольного управления ресурсами, которые им выделяю

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

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

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

Цели и задачи файловой системы
Фа́йловая систе́ма — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фото

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

Физическая организация файловых систем s5 и ufs.
Файловые системы s5 (получившие название от System V, родового имени нескольких версий ОС UNIX, разработанных в Bell Labs компании AT&T) и ufs (UNIX File System) используют очень близкую физиче

Физическая организация файловой системы NTFS
Файловая система NTFS была разработана в качестве основной файловой системы для ОС Windows NT в начале 90-х годов с учетом опыта разработки файловых систем FAT и HPFS (основная файловая система для

Структура тома NTFS
В отличие от разделов FAT и s5/ufs все пространство тома NTFS представляет собой либо файл, либо часть файла. Основой структуры тома NTFS является главная таблица файлов (Master File Table, MFT)

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

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