12.1 ПРОБЛЕМЫ, СВЯЗАННЫЕ С МНОГОПРОЦЕССОРНЫМИ СИСТЕМАМИ
12.1 ПРОБЛЕМЫ, СВЯЗАННЫЕ С МНОГОПРОЦЕССОРНЫМИ СИСТЕМАМИ
В главе 2 мы говорили о том, что защита целостности структур данных ядра системы UNIX обеспечивается двумя способами: ядро не может выгрузить один процесс и переключиться на контекст другого, если работа производится в режиме ядра, кроме того, если при выполнении критического участка программы обработчик возникающих прерываний может повредить структуры данных ядра, все возникающие прерывания тщательно маскируются. В многопроцессорной системе, однако, если два и более процессов выполняются одновременно в режиме ядра на разных процессорах, нарушение целостности ядра может произойти даже несмотря на принятие защитных мер, с другой стороны, в однопроцессорной системе вполне достаточных.
struct queue {} *bp, *bp1;
bp1-›forp = bp-›forp;
bp1-›backp = bp;
bp-›forp=bp1;
/* рассмотрите возможность переключения контекста в этом месте */
bp1-›forp-›backp =b p1;
Рисунок 12.2. Включение буфера в список с двойными указателями
В качестве примера рассмотрим фрагмент программы из главы 2 (Рисунок 12.2), в котором новая структура данных (указатель bp1) помещается в список после существующей структуры (указатель bp). Предположим, что этот фрагмент выполняется одновременно двумя процессами на разных ЦП, причем процессор A пытается поместить вслед за структурой bp структуру bpA, а процессор B структуру bpB. По поводу сопоставления быстродействия процессоров не приходится делать никаких предположений: возможен даже наихудший случай, когда процессор B исполняет 4 команды языка Си, прежде чем процессор A исполнит одну. Пусть, например, выполнение программы процессором A приостанавливается в связи с обработкой прерывания. В результате, даже несмотря на блокировку остальных прерываний, целостность данных будет поставлена под угрозу (в главе 2 этот момент уже пояснялся).
Ядро обязано удостовериться в том, что такого рода нарушение не сможет произойти. Если вопрос об опасности возникновения нарушения целостности оставить открытым, как бы редко подобные нарушения ни случались, ядро утратит свою неуязвимость и его поведение станет непредсказуемым. Избежать этого можно тремя способами:
1. Исполнять все критические операции на одном процессоре, опираясь на стандартные методы сохранения целостности данных в однопроцессорной системе;
2. Регламентировать доступ к критическим участкам программы, используя элементы блокирования ресурсов;
3. Устранить конкуренцию за использование структур данных путем соответствующей переделки алгоритмов.
Первые два способа здесь мы рассмотрим подробнее, третьему способу будет посвящено отдельное упражнение.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Структуры данных, связанные с файловыми системами
Структуры данных, связанные с файловыми системами В дополнение к фундаментальным объектам подсистемы VFS, ядро использует и другие стандартные структуры данных для управления данными, связанными с файловыми системами. Первый объект используется для описания
1.7.4 Связанные документы
1.7.4 Связанные документы Серия RFC не содержит спецификаций протоколов и была опубликована как отдельный набор документов For Your Information (FYI — К вашему сведению). Например: RFC 1325 Answers to commonly asked "new Internet user" questions (Ответы на наиболее распространенные вопросы новых пользователей
Онлайновые службы, предоставляемые поисковыми системами
Онлайновые службы, предоставляемые поисковыми системами Поисковые системы давно вышли за пределы просто поисковых инструментов и стали «воротами» в Интернет, позволяющими узнавать всевозможные новости: погоду, курсы валют и тому подобное, – а также решать множество
Связанные документы
Связанные документы В последних версиях Windows появилось понятие сопоставленных файлов. Например, если вы собираетесь переместить или удалить html-документ, то будут также перемещены или удалены и сопоставленные с этим документом файлы, которые содержаться в папке
Проблемы, связанные с глобальными объектами
Проблемы, связанные с глобальными объектами При разработке больших проектов, часто возникает необходимость обращаться из одного модуля программы к объектам, существующим в другом модуле. Такие объекты, как правило, существуют в единичных экземплярах, поэтому наиболее
4.4. Проблемы, связанные с использованием отсечения
4.4. Проблемы, связанные с использованием отсечения Мы уже убедились в том, что иногда необходимо учитывать стратегию, используемую в Прологе для поиска в базе данных, и что порядок записи утверждений в программе на Прологе влияет на результат доказательства
Связанные файлы
Связанные файлы В связи с тем что в профессиональной графике файлы изображений могут достигать большого размера – действительно большого, десятки и сотни мегабайт, – многие программы макетирования и верстки не включают файлы изображений в документ. Так поступает и
6.4. Проблемы, связанные с блокировками
6.4. Проблемы, связанные с блокировками В этом разделе мы рассмотрим только внутренние блокировки, используемые сервером MySQL при совместной работе нескольких потоков с одними и теми же данными, и не коснемся внешних блокировок, обеспечивающих координацию работы сервера
ГЛАВА 10. Совместная работа с другими автоматизированными системами
ГЛАВА 10. Совместная работа с другими автоматизированными системами Внедрение прикладного решения «1С: Предприятие 8.0. Управление производственным предприятием», как правило, происходит не на пустом месте. На современном предприятии используется множество других
48 Связанные объекты
48 Связанные объекты Что делает тот или иной предмет легким для понимания? Что делает тот или иной предмет простым в использовании? Что превращает совокупность объектов — не отдельных, а представленных в определенном контексте — в набор рабочих инструментов? Возьмем
У15.5 Связанные стеки
У15.5 Связанные стеки Основываясь на классах STACK и LINKED_LIST, постройте класс LINKED_STACK, описывающий реализацию стека как связного
Интеграция с системами более сильной аутентификации
Интеграция с системами более сильной аутентификации Как только организация начинает осознавать необходимость сильной аутентификации, она переходит к использованию биометрии и смарт-карт. Обычно большая часть работы по интеграции с биометрическими устройствами
Интеграция с существующими системами
Интеграция с существующими системами Поскольку любая организация использует существующую ИТ-инфраструктуру, часто возникают проблемы интеграции PKI с уже действующими системами. Обычно предполагается, что PKI будет обслуживать только системы на базе персональных