Проблемы синхронизации в многопроцессорных архитектурах
Проблемы синхронизации в многопроцессорных архитектурах являются более сложными и сильно отличаются от проблем, возникающих при использовании одного процессора.
Также может иметь смысл заглянуть на сайт fortedelman.ru, ведь именно там можно узнать много нового на тему http://www.fortedelman.ru/. Тема настройщик пианино в Москве может показаться на первый взгляд незначительной и даже не тематичной. Но стоит посетить сайт fortedelman.ru, и тема настройщик пианино в Москве начинает проявлять себя с неожиданной стороны и вызывает всё больший интерес. Дело в том, что тема настройщик пианино в Москве очень подробно представлена на сайте fortedelman.ru. Трудно найти более детальное освещение темы настройщик пианино в Москве чем это сделано на сайте fortedelman.ru. Спасибо сайту fortedelman.ru за такое доскональное преподнесение темы настройщик пианино в Москве.
Привлекается большое количество новых решений, таких как механизмы сна-пробуждения, условия, события, объекты защиты чтения-записи и семафоры. Все эти элементы во многом схожи. К примеру, по возможности следует применять семафоры совместно перед условиями и наоборот.
Многие из представленных решений не ограничены многопроцессорными системами и могут быть применены при синхронизации на однопроцессорных архитектурах и распределенных системах со слабой связью. Многие многопроцессорные системы UNIX основаны на существующих однопроцессорных вариантах ОС, поэтому для них решение об использовании тех или иных элементов синхронизации сильно зависит от соглашений при переносе на новую платформу.
Система Mach и другие, базирующиеся на ней, не зависят от этих соглашений, поэтому разработчики могли выбирать элементы синхронизации на свое усмотрение.
1. Многие системы поддерживают неделимую функцию, которая выполняет перестановку значения регистра в значение, хранимое в памяти. Как эта функция может быть использована для реализации неделимой операции тестирования и установки?
2. Каким образом можно реализовать неделимую операцию тестирования и установки на машине, поддерживающую связанную загрузку и сохранение по условию?
3. Представьте, что соперничество при попытке обладания критическим участком кода, защищенным семафором, приводит к конвоированию семафора. Если такой участок поделить на две части, каждая из которых будет защищена отдельным семафором, уменьшит ли это вероятность возникновения конвоя?
4. Одним из методов предупреждения возникновения конвоирования является замена семафоров другим механизмом блокировки. Может ли это привести к увеличению степени риска устаревания нитей?
5. Чем отличается счетчик ссылок от совместного объекта блокировки?
6. Создайте объект блокировки ресурса на основе простого объекта mutex и условной переменной, в которой проверке подвергается состояние флага locked (см. раздел 7.7.3).
7. Нужно ли удерживать простой объект блокировки, защищающий условие, при сбросе флага (в примере, описанном в предыдущем упражнении)? В работе [15] описывается операция waitlockQ, использование которой может улучшить алгоритм.
8. Каким образом условные переменные могут предупреждать возникновение проблемы потери сигнала пробуждения нити?
9. Создайте элемент event (событие), возвращающий ожидающим нитям значение статуса при совершении события.
10. Представьте объект, к которому часто происходит доступ для чтения и записи. В каких ситуациях целесообразнее защитить его простым объектом mutex, а в каких использовать блокировку чтения-записи?
11. Имеет ли возможность объект защиты чтения-записи блокировать нити? Создайте объект защиты чтения записи, который заставляет нити переходить в режим занятого ожидания при невозможности получить ресурс.
12. Опишите ситуацию, в которой вероятность возникновения взаимоблокировки уменьшается при повышении степени грануляции.
13. Опишите ситуацию, в которой вероятность возникновения взаимоблокировки уменьшается при понижении степени грануляции.
14. Необходимо ли защищать каждый ресурс или переменную ядра многопроцессорной системы объектом блокировки перед доступом к ним? Подсчитайте количество различных типов ситуаций, при которых нить может иметь доступ или изменять объект без его блокировки.
15. Программы управления (monitors) — это конструкции, поддерживаемые языками программирования, использующиеся для взаимного исключения участка кода. При каких ситуациях применение этих механизмов является наиболее естественным?
16. Создайте функции upgrade() и downgrade() для реализации объектов защиты чтения-записи, представленных в разделе 7.8.2.
Опубликовал katy
July 06 2015 18:10:10 ·
0 Комментариев ·
2549 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.