Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Критическая область и синхронизация




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

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

 

а) b) c) d)

Рис. 5.2. Типы отношения предшествования: a) − последовательное; b) − параллельное; c) − последовательно-параллельное; d)− общий случай (S − начало; F − конец)

Пусть S (a,b) обозначает последовательную связь процесса a) с процессом b), и пусть Р (a,b) обозначает параллельную связь процессов a) и b).Тогда граф развития процесса является правильно вложенным, если он может быть описан функциями S и Р или только композицией этих функций. Это свойство очень похоже на свойство «правильной вложенности» блочной структуры в языках программирования и скобок в выражениях. Первые три графа на рисунке могут быть описаны так:

S (P 1, S (P 2, S (P 3, P 4))),

P (P 1, P (P 2, P (P 3, P 4))),

S (P 1, S (P (P 2, P (S (P 3, P (P 4, P 5)) P 6)), P (P 7, P 8))).

Общий граф предшествования d на рисунке не является правильно вложенным. Покажем это: любое описание, сделанное с помощью функциональной композиции, должно включать на самом внутреннем уровне выражение или в форме S (Pi,Pj) или P (Pi,Pj) для Pi,Pj { Pk/ k= 1 ,…, 8}. Связь P (Pi,Pj) не может появиться, поскольку граф d не содержит ни одного подграфа в этой форме. Все последовательно связанные Pi и Pj имеют, по крайней мере, еще один процесс Pk, который начинается или заканчивается в вершине ij, скажем между Pi и Pj, но ij становится недоступной для дальнейшего использования, если появляется S (Pi,Pj), т.к. тогда связь Pk не может быть описана. Следовательно, S (Pi,Pj) также не может быть использована, и описание правильно вложенного графа невозможно.

Последовательный процесс (иногда называемый «задача») есть работа, производимая последовательным процессором при выполнении программы с ее данными. С логической точки зрения каждый процесс имеет свой собственный процессор и программу. Два различных процесса могут разделять одну и ту же программу или один и тот же процессор. Развитие процесса можно описать как последовательность векторов состояния S 0, S 1,…, Si, где каждый вектор состояния Si содержит указатель на следующую программную команду, которую нужно выполнить, а также значения всех промежуточных и определяемых в программе переменных.

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

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

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

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

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

Рассмотрим два процесса Р 1 и Р 2, увеличивающих асинхронно значение общей переменной Х, представляющей число единиц ресурса:

Р 1:….. Х:≠ Х +1;…,

Р 1:….. Х:= Х +1;….

 

Пусть С 1 и С 2 – центральные процессоры с внутренними регистрами R 1 и R 2 соответственно и разделяемой общей памятью. Если бы Р 1 выполнялся на С 1, а Р 2 – на С 2, то могла бы возникнуть одна из двух последовательностей исполнения процессов во времени:

1) Р 1: R 1= Х; R 1= R 1+1; Х:= R 1; …

Р 2:……..; R 2= Х; R 2= R 2+1; Х:= R 2 …

……….. …………

t 0 à time tn

2) Р 1: R 1:= Х; R 1= R 1+1; Х:= R 1; …

Р 2:……..; R 2: Х; R 2:= R 2+1; Х = R 2 …

Предположим, что Х содержит значение δв момент t 0. В момент tn переменная Х содержала бы δ + 1, если бы исполнение на процессорах С 1 и С 2 следовало бы согласно 1) и содержала бы δ + 2 по 2). Оба значения Х могли быть реализованы также, если бы Р 1 и Р 2 разделяли во времени один процессор с переключением управления между процессами механизма прерывания. Правильность решения заключается в разрешении входить в любой момент времени в некоторую определенную область, называемую «критической» (critical sectionCS), только одному процессу.

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

а) процесс, нормально работающий вне своей CS, не может блокировать другой процесс при вхождении этого (другого) в свою CS;

б) два процесса, готовые войти в свои критические области, не могут откладывать на неопределенно долгий срок решение первенства вхождения (принцип «сверхвежливости»).

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

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

Механизм синхронизации основывается на понятии семафора, которое позволяет рационально осуществлять синхронизацию процессов. Семафором (байтом блокировки) называют целую переменную, сигнализирующую о готовности процесса к использованию критической области.

В 1965 г. Э. Дейкстра (Dijkstra E.W.) предложил механизм синхронизации, позволяющий выполнять над семафором Q следующие операции.

1). Операция Р (Q). Р -операция является операцией с одним аргументом-семафором, которая уменьшает его величину на 1, если Q> 0. Р -операция является неделимой, т.е. определение возможности уменьшения Q и последующее его уменьшение должны рассматриваться как неделимая операция. Р (Q) представляет собой операцию задержки, т.е. если процесс P1 должен выполнить операцию Р(Q) над семафором Q =0, то операция Р (Q) не может завершиться до тех пор, пока какой-то процесс Pj не выполнит над QV операцию. Если некоторые процессы P 1, P 2 ,...,Pk одновременно начинают Р -операцию над Q,то Q изменит свое значение лишь тогда, когда завершится одна из начавшихся Р -операций.

2). Операция V(Q). V -операция является операцией с одним аргументом-семафором, которая увеличивает значение аргумента на 1. V -операция подобно Р -операции является неделимой.

Помимо Р- и V -операций используют и другие операции над семафорами. Такие операции в силу своей неделимости позволяют блокировать или активизировать процессы при освобождении или запросах ресурсов любого типа (памяти, процессоров, устройств ввода-вывода и т.д.).




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 600; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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