Разделы презентаций


Системные механизмы. Синхронизация процессов

Содержание

Уровни средств обработки запросов (данных)

Слайды и текст этой презентации

Слайд 1Лек9. Системные механизмы. Синхронизация процессов.

Лек9. Системные механизмы. Синхронизация процессов.

Слайд 2Уровни средств обработки запросов (данных)

Уровни средств обработки запросов (данных)

Слайд 3 Ор.ЭВМиС Лекция № 7. Устройство центрального управления.
Назначение, состав и

принципы работы центрального управления. Методы реализации устройств управления ВМ. Влияние

структуры центрального управления на пропускную способность процессора. Средства управления системой. Динамическое преобразование адресов.
Центральное управление (ЦУ) обеспечивает:
∙       управление потоком команд ЭВМ;
∙       управление потоком микрокоманд;
∙       управление потоком фаз синхронизации.
 
Уровню (3) управления потоком команд ЭВМ ( детализация ЭВМ на уровне устройств) принадлежат процессы обработки команд, т. е. функции по управлению прохождением команд, реализуемые в процессоре ЭВМ.
Уровню (4) управления потоком микрокоманд ( регистровый уровень детализации ЭВМ ) соответствует средства микропрограммного управления обработкой данных в ЭВМ т. е. ОВП на уровне микрокоманд.
Уровень (5) управления потоком фаз синхронизации ( поэлементный уровень детализации ЭВМ ) соответствует средствам управления синхронизацией процессов реализации микрокоманд.
 

Ор.ЭВМиС  Лекция № 7. Устройство центрального управления. Назначение, состав и принципы работы центрального управления. Методы

Слайд 4 Основанием разработки структурной Схема организации УДИ является универсальная модель

процессов взаимодействия: личности; средств обучения; предмета обучения

Основанием разработки структурной Схема организации УДИ является универсальная модель процессов взаимодействия: личности; средств обучения; предмета обучения

Слайд 5
Работать в коллективе и команде, эффективно общаться с

коллегами, руководством, потребителями.

Работать в коллективе и команде, эффективно общаться с коллегами, руководством, потребителями.

Слайд 8Главная синхронизация - Всегда держите Единого в поле зрения, и

ничто не принесёт вам вреда
Мудрость

— это видение Единого везде. Это всеохватывающее единство — Тотальность — и есть Истина. Найдите это единство и постоянно держите его в поле зрения. Если все ваши действия будут основаны на Едином, они станут священными и чистыми. Если вы совершаете все действия во имя Единого, вы будете освящены и наполнены мудростью.
Главная синхронизация - Всегда держите Единого в поле зрения,  и ничто не принесёт вам вреда

Слайд 9Общие принципы синхронизации процессов.
Блинной

Общие принципы синхронизации процессов.Блинной

Слайд 10Состязания

Состязания

Слайд 11На процедуру извлечения процесса на обслуживание из очереди готовых

процессов.

На процедуру  извлечения процесса на обслуживание из очереди готовых процессов.

Слайд 12
Приведенный алгоритм хорошо работает с одним процессором, но в системах

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

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

Слайд 13
Пусть два процессора обслуживают каждый свой процесс и

эти процессы, примерно, в одно и то же время блокируются

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

Слайд 14
Для разрешения описанной выше проблемы следует ввести синхронизацию

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

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

Слайд 15
Перед обращением к очереди готовых процессов каждый

процессор должен проверить состояние специального «бита блокировки». Если этот

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

Слайд 16
Эта ситуация называется программной блокировкой процессора. То же самое может

случиться не только со вторым, но и с третьим, и

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

Эта ситуация называется программной блокировкой процессора. То же самое может случиться не только со вторым, но и

Слайд 17
Реализация критических секций с использованием блокирующих переменных

Реализация критических секций с использованием блокирующих переменных

Слайд 18
Команда ПРОВЕРИТЬ И УСТАНОВИТЬ (TEST-AND-SET)
Перед обращением к ресурсу

процесс должен выполнить следующие шаги:
1. Проверить значение байта блокировки (0

или 1).
2. Установить байт блокировки в 1.
3. Если первоначальное значение байта блокировки было равно 1, вернуться к шагу 1.
После завершения использования ресурса процесс должен установить байт блокировки в 0.
Команда ПРОВЕРИТЬ И УСТАНОВИТЬ (TEST-AND-SET) Перед обращением к ресурсу процесс должен выполнить следующие шаги:1. Проверить значение

Слайд 19Механизмы ОЖИДАНИЕ и ОПОВЕЩЕНИЕ.
ЗАНЯТЬ (Х):
1. Проверить значение

байта блокировки (0 или 1).
2. Установить байт блокировки в 1.
3.

Если первоначальное значение байта блокировки было
равно 1, выполнить функцию ОЖИДАНИЕ (Х).
ОСВОБОДИТЬ (Х):
1. Установить байт блокировки в 0.
2. Выполнить функцию ОПОВЕЩЕНИЕ (Х).

Механизмы ОЖИДАНИЕ и ОПОВЕЩЕНИЕ.    ЗАНЯТЬ (Х):1. Проверить значение байта блокировки (0 или 1).2. Установить

Слайд 20
Реализация взаимного исключения с использованием системных функций входа в критическую

секцию и выхода из нее

Реализация взаимного исключения с использованием системных функций входа в критическую секцию и выхода из нее

Слайд 21
Операции Р и V над считающими

семафорами.
Р (S):
1. Уменьшить значение S на 1

(S: = S - 1).
2. Если S меньше 0, выполнить ОЖИДАНИЕ (S).
V(S):
1. Увеличить значение S на 1 (S:=S+ 1).
2. Если S больше либо равно 0, выполнить ОПОВЕЩЕНИЕ (S).

Читателю следует еще раз убедиться, что синхронизация действительно реализуется. Полезным методом изучения взаимодействия семафоров является рассмотрение последовательности событий, как это показано на рис. 11 для случая п = 2.
Операции Р и V над считающими семафорами.   Р (S):1. Уменьшить значение

Слайд 22Пример
Рассмотрим использование семафоров на классическом примере взаимодействия двух выполняющихся в

режиме мультипрограммирования потоков, один из которых пишет данные в буферный

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

Слайд 23
Введем два семафора: е — число пустых буферов, и f

— число заполненных буферов, причем в исходном состоянии е =N,

a  f =0. Тогда работа потоков с общим буферным пулом может быть описана следующим образом (рис. 4.20).
Поток-писатель прежде всего выполняет операцию Р(е), с помощью которой он проверяет, имеются ли в буферном пуле незаполненные буферы. В соответствии с семантикой операции Р, если семафор е равен 0 (то есть свободных буферов в данный момент нет), то поток-писатель переходит в состояние ожидания. Если же значением е является положительное число, то он уменьшает число свободных буферов, записывает данные в очередной свободный буфер и после этого наращивает число занятых буферов операцией V(f). Поток-читатель действует аналогичным образом, с той разницей, что он начинает работу с проверки наличия заполненных буферов, а после чтения данных наращивает количество свободных буферов.
Введем два семафора: е — число пустых буферов, и f — число заполненных буферов, причем в исходном

Слайд 24Использование семафоров для синхронизации потоков (Рис.4.20)

Использование семафоров для синхронизации потоков     (Рис.4.20)

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

критическим ресурсом здесь является буферный пул, который может быть представлен

как набор идентичных ресурсов — отдельных буферов, а значит, с буферным пулом могут работать сразу несколько потоков, и именно столько, сколько буферов в нем содержится. Использование двоичной переменной не позволяет организовать доступ к критическому ресурсу более чем одному потоку. Семафор же решает задачу синхронизации более гибко, допуская к разделяемому пулу ресурсов заданное количество потоков. Так, в нашем примере с буферным пулом могут работать максимум N потоков, часть из которых может быть «писателями», а часть — «читателями».
Таким образом, семафоры позволяют эффективно решать задачу синхронизации Доступа к ресурсным пулам, таким, например, как набор идентичных в функциональном назначении внешних устройств (модемов, принтеров, портов), или набор областей памяти одинаковой величины, или информационных структур. Во всех этих и подобных им случаях с помощью семафоров можно организовать доступ к разделяемым ресурсам сразу нескольких потоков.
В данном случае предпочтительнее использовать семафоры вместо блокирующих переменных. Действительно, критическим ресурсом здесь является буферный пул, который

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

может быть решена путем непосредственного обмена сообщениями между процессами. Для

этого используются операции ПОСЛАТЬ (Pr, М) и ПРИНЯТЬ (Рs, M), где Pr , и Ps - идентификаторы процессов, а М - сообщение (некая строка символов).
Клинчи.
Существуют следующие способы борьбы с клинчами:
1. Предварительное распределение всех совместно используемых
ресурсов.
2. Контроль над распределением:
а) регулируемое распределение;
б) стандартная последовательность распределения.
3. Обнаружение и восстановление.

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

Слайд 27
В рассмотренных примерах тупик был образован двумя потоками, но взаимно

блокировать друг друга может и большее число потоков. На рис.

2.23 показано такое распределение ресурсов Ri между несколькими потоками Tj, которое привело к возникновению взаимных блокировок. Стрелки обозначают потребность потока в ресурсах. Сплошная стрелка означает, что соответствующий ресурс был выделен потоку, а пунктирная стрелка соединяет поток с тем ресурсом, который необходим, но не может быть пока выделен, поскольку занят другим потоком. Например, потоку Т1 для выполнения работы необходимы ресурсы R1 и R2, из которых выделен только один — R1, а ресурс R2 удерживается потоком Т2. Ни один из четырех показанных на рисунке потоков не может продолжить свою работу, так как не имеет всех необходимых для этого ресурсов.
В рассмотренных примерах тупик был образован двумя потоками, но взаимно блокировать друг друга может и большее число

Слайд 28
Невозможность потоков завершить начатую работу из-за возникновения взаимных блокировок снижает

производительность вычислительной системы. Поэтому проблеме предотвращения тупиков уделяется большое внимание.

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

Слайд 29
Рис. 4.23. Взаимная блокировка нескольких потоков

Рис. 4.23. Взаимная блокировка нескольких потоков

Слайд 30Синхронизация в Windows 2000.

Пример

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

Слайд 31Синхронизация ядра
Механизм, применяемый ядром для взаимоисключения в многопроцессорных системах,

называется спин-блокировкой (spinlock). Спин-блокировка — это блокирующий примитив, сопоставленный с

какой-либо глобальной структурой данных вроде очереди DPC (рис. 3-18).
Во многих архитектурах спин-блокировка реализуется аппаратно поддерживаемой командой test-and-set, которая проверяет значение переменной блокировки и устанавливает блокировку, выполняя всего одну атомарную команду.
Всем спин-блокировкам режима ядра в Windows 2000 назначен IRQL, всегда соответствующий уровню «DPC/dispatch» или выше. Поэтому, когда поток пытается установить спин-блокировку, все действия на этом или более низком уровне IRQL на данном процессоре прекращаются.

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

Слайд 33
Спин-блокировки ядра накладывают ограничения на использующий их код. Как уже

отмечалось, их IRQL всегда равен «DPC/dispatch», поэтому установивший спин-блокировку код

может привести к краху системы, если попытается заставить планировщик выполнить операцию диспетчеризации или вызовет ошибку страницы.
В Windows 2000 появился особый тип спин-блокировки — с очередью (queued spinlock), применяемый только ядром и недоступный другим компонентам исполнительной системы или драйверам устройств. Тот факт, что спин-блокировка с очередью устанавливает флаги, а не гло­бальные блокировки, имеет два следствия. Во-первых, уменьшается интенсивный трафик, связанный с межпроцессорной синхронизацией. Во-вторых, вместо случайного выбора процессора из группы ожидающих спин-блокировку, реализуется четкий порядок спин-блокировки по типу FIFO («первым вошел, первым вышел»). Такой порядок позволяет достичь более согласованной работы процессоров, использующих одну и ту же блокировку.

Спин-блокировки ядра накладывают ограничения на использующий их код. Как уже отмечалось, их IRQL всегда равен «DPC/dispatch», поэтому

Слайд 34Синхронизация в исполнительной системе
Поскольку спин-блокировка означает

фактическую остановку процессора, она применяется только при двух условиях:

- требуется непродолжительное обращение к защищенным ресурсам без сложного взаимодействия с другим кодом;
- код критической секции нельзя выгрузить в страничный файл, он не ссылается на данные в подкачиваемой памяти, не вызывает внешние процедуры (включая системные сервисы) и не генерирует прерывания или исключения.
Ядро предоставляет исполнительной системе дополнительные механизмы синхронизации в форме объектов, в совокупности известных как объекты диспетчера ядра. Синхронизирующие объекты, видимые из пользовательского режима, берут свое начало именно от этих объектов диспетчера ядра. Каждый синхронизирующий объект, видимый из пользовательского режима, инкапсулирует минимум один объект диспетчера ядра.
Синхронизация в исполнительной системе   Поскольку спин-блокировка означает фактическую остановку процессора, она применяется только при двух

Слайд 35
Еще один тип синхронизирующих объектов исполнительной системы назван (без

особой на то причины) ресурсами исполнительной системы (executive resources). Ресурсы

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

Еще один тип синхронизирующих объектов исполнительной системы назван (без особой на то причины) ресурсами исполнительной системы

Слайд 362.3. Ожидание на объектах диспетчера ядра

2.3. Ожидание на объектах диспетчера ядра

Слайд 37Ожидание на объектах диспетчера ядра
Взаимосвязь синхронизации с

диспетчеризацией потоков иллюстрирует следующий пример с использованием объекта «событие».

1. Поток

пользовательского режима ждет на описателе объекта «событие» (т. е. ждет перехода этого объекта в свободное состояние).
2. Ядро изменяет состояние потока с «готов» на «ожидает» и добавляет его в список потоков, ждущих объект «событие».
3. Другой поток устанавливает объект «событие».
4. Ядро просматривает список потоков, ожидающих этот объект. Если условия ожидания какого-либо потока выполнены, ядро переводит его из со­стояния «ожидает» в состояние «готов». Если это поток с динамическим приоритетом, ядро может повысить его приоритет для выполнения.
Ожидание на объектах диспетчера ядра   Взаимосвязь синхронизации с диспетчеризацией потоков иллюстрирует следующий пример с использованием

Слайд 38
5. Поскольку новый поток теперь готов к выполнению,

происходит перерас­пределение процессорного времени. Если при этом диспетчер обнаружит, что

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

5. Поскольку новый поток теперь готов к выполнению, происходит перерас­пределение процессорного времени. Если при этом

Слайд 39Переход синхронизирующих объектов в свободное состояние.

Переход синхронизирующих объектов в свободное состояние.

Слайд 40
Когда объект переводится в свободное состояние, ожидающие его потоки обычно

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

3-20, некоторые объекты диспетчера ядра и системные события ведут себя иначе.
Например, объект «событие уведомления» — в Win32 API он называется событием со сбросом вручную (manual reset event) — используется для уве­домления о каком-либо событии. Когда этот объект переводится в свободное состояние, все потоки, ожидающие его, освобождаются. Исключением явля­ется тот поток, который ждет сразу несколько объектов: он может продолжать ожидание, пока не освободятся дополнительные объекты.
Когда объект переводится в свободное состояние, ожидающие его потоки обычно немедленно выходят из ждущего состояния. Однако, как

Слайд 42 Структуры данных
Учет ожидающих потоков и их объектов ожидания базируется

на двух ключевых структурах данных: заголовках диспетчера (dispatcher headers) и

блоках ожидания (wait blocks).
Заголовок диспетчера содержит тип объекта, информацию о состоянии (занят/свободен) и список потоков, ожидающих этот объект. У каждого ждущего потока есть список блоков ожидания, где перечислены ожидаемые потоком объекты, а у каждого объекта диспетчера ядра — список блоков ожидания, где перечислены ожидающие его потоки. Этот список ведется так, что при освобождении объекта диспетчера ядро может быстро определить, кто ожидает данный объект.
В блоке ожидания имеются указатели на объект ожидания, ожидающий поток и на следующий
Структуры данныхУчет ожидающих потоков и их объектов ожидания базируется на двух ключевых структурах данных: заголовках диспетчера

Слайд 44
На рис. 3-21 показана связь объектов диспетчера ядра с блоками

ожидания потоков. В данном примере поток 1 ждет объект В,

а поток 2 — объекты А и В.
Если объект А освободится, поток 2 не сможет возобновить свое выполнение, так как ядро обнаружит, что он ждет и другой объект. С другой стороны, при освобождении объекта В ядро сразу же подготовит поток 1 к выполнению, поскольку он не ждет никакие другие объекты.
На рис. 3-21 показана связь объектов диспетчера ядра с блоками ожидания потоков. В данном примере поток 1

Слайд 45

Образование — это то, что остается после

того, когда забываешь все, чему учили в школе.

Энштейн
Образование — это то, что остается после того, когда забываешь все, чему учили в

Слайд 46

Воспитание имеет приоритет над образованием.

Создает человека воспитание.

Антуан де Сент-Экзюпери
Воспитание имеет приоритет над образованием.  Создает человека воспитание.

Слайд 47

«...самым важным в обучении мы признаем надлежащее воспитание».

«Никто не становится хорошим человеком случайно».

Платон
«...самым важным в обучении мы признаем надлежащее воспитание».  «Никто не становится хорошим человеком случайно».

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика