русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Алгоритм Деккера.


Дата добавления: 2013-12-23; просмотров: 1207; Нарушение авторских прав


Понятие параллельных и асинхронных процессов

ИЕРАРХИЧЕСКАЯ СТРУКТУРА ОС.

Нижний уровень - аппаратура

- ядро ОС

- системные программы

- уровень пользовательских программ

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

 

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

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

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

2.Для всех остальных процессов не существует возможности вхождения в критические участки.

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

4.Критические участки должны быть запрограммированы и отлажены наиболее тщательно, чтобы не было зацикливания в критическом участке.

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



К программным средствам относится алгоритм Деккера.

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

 

Первая версия.

Program N1;

Procedure процесс1;

Begin

While истина do

Begin

While номерпроцесса=2 do;

Критическийучастокодин;

Номерпроцесса:=2;

Прочиеоператорыодин

End;

End;

Procedure процесс2;

Begin

While истина do

Begin

While номерпроцесса=1 do;

Критическийучастокодва;

Номерпроцесса:=1;

Прочиеоператорыдва

End;

End;

Begin

Номерпроцесса:=1;

Parbegin

Процесс1;

Процесс2;

Parend

End.

 

Parbegin и parend позволяют организовать параллельную работу процессов.

Недостатки первой версии.

1. Процессдва должен ждать, т.к. процессодин должен выполняться первым

2. Процессы должны входить и выходить из своих критических участков строго поочередно.

 

Вторая версия

Program N2;

Procedure процесс1;

Begin

While истина do

Begin

While П2внутри do;

П1внутри:=истина;

Критическийучастокодин;

П1внутри:=ложь;

Прочиеоператорыодин

End;

End;

Procedure процесс2;

Begin

While истина do

Begin

While П1внутри do;

П2внутри:=истина;

Критическийучастокодва;

П2внутри:=ложь;

Прочиеоператорыдва

End;

End;

Begin

П1внутри:=ложь;

П2внутри:=ложь;

Parbegin

Процесс1;

Процесс2;

Parend

End.

Недостаток второй версии.

Т.к. процесс1 и процесс2 – параллельные процессы, то они могут одновременно войти в критические участки.

Алгоритм Деккера.

Procedure процесс1;

Begin

While истина do

Begin

П1хочетвойти:=истина;

While П2хочетвойти do

If избранныйпроцесс=2 then Begin

П1хочетвойти:=ложь;

While избранныйпроцесс=2 do;

П1хочетвойти:=истина

End;

Критическийучастокодин;

Избранныйпроцесс:=2;

П1хочетвойти:=ложь;

Прочиеоператорыодин

End;

End;

Procedure процесс2;

Begin

While истина do

Begin

П2хочетвойти:=истина;

While П1хочетвойти do

If избранныйпроцесс=1 then Begin

П2хочетвойти:=ложь;

While избранныйпроцесс=1 do;

П2хочетвойти:=истина

End;

Критическийучастокдва;

Избранныйпроцесс:=1;

П2хочетвойти:=ложь;

Прочиеоператорыдва

End;

End;

Begin

П1хочетвойти:=ложь;

П2хочетвойти:=ложь;

Ихбранныйпроцесс:=1;

Parbegin

Процесс1;

Процесс2;

Parend

End.



<== предыдущая лекция | следующая лекция ==>
Обработка прерываний | ТУПИКОВЫЕ СИТУАЦИИ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.