Откуда берется параллелизм

Откуда берется параллелизм

При работе в пространстве пользователя необходимость синхронизации возникает из того факта, что программы выполняются преемптивно, т.е. могут быть вытеснены другой программой по воле планировщика. Поскольку процесс может быть вытеснен в любой момент и другой процесс может быть запущен планировщиком для выполнения на этом же процессоре, появляется возможность того, что процесс может быть вытеснен независящим от него образом во время выполнения критического участка. Если новый, запланированный на выполнение процесс входит в тот же критический участок (скажем, если оба процесса — потоки одной программы, которые могут обращаться к общей памяти), то может возникнуть состояние конкуренции за ресурс. Аналогичная проблема может возникнуть даже в однопоточной программе при использовании сигналов, так как сигналы приходят асинхронно. Такой тип параллелизма, когда два события происходят не одновременно, а накладываются друг на друга, так вроде они происходят в один момент времени, называется псевдопараллелизмом (pseudo-concurrency).

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

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

• Отложенные прерывания и тасклеты. Ядро может выполнять обработчики softirq и тасклеты практически в любой момент времени и прерывать код, который выполняется в данный момент времени.

• Преемптивность ядра. Так как ядро является вытесняемым, то одно задание, которое работает в режиме ядра, может вытеснить другое задание, тоже работающее в пространстве ядра.

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

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

Важно, что разработчики ядра поняли все причины и подготовились к возможным случаям параллелизма. Если прерывание возникает во время выполнения кода, который работает с некоторым ресурсом, и обработчик прерывания тоже обращается к этому же ресурсу, то это является ошибкой. Аналогично ошибкой является и то, что код ядра вытесняется в тот момент, когда он обращается к совместно используемому ресурсу. Переход в состояние ожидания во время выполнения критического участка в ядре открывает большой простор для состояний конкуренции за ресурсы. И наконец, два процессора никогда не должны одновременно обращаться к совместно используемым данным. Когда ясно, какие данные требуют защиты, то уже нетрудно применить соответствующие блокировки, чтобы обеспечить всем безопасность. Сложнее идентифицировать возможные условия возникновения таких ситуаций и определить, что для предотвращения конкуренции необходима та или иная форма защиты. Давайте еще раз пройдем через этот момент, потому что он очень важен. Применить блокировки в коде для того, чтобы защитить совместно используемые данные, — это не тяжело, особенно если это делается на самых ранних этапах разработки кода. Сложность состоит в том, чтобы найти эти самые совместно используемые данные и эти самые критические участки. Именно поэтому требование аккуратного использования блокировок с самого начала разработки кода — а не когда-нибудь потом — имеет первостепенную важность. Постфактум очень сложно отследить, что необходимо блокировать, и правильно внести изменения в существующий код. Результаты подобной разработки обычно не очень хорошие. Мораль — всегда нужно аккуратно учитывать необходимость применения блокировок с самого начала процесса разработки кода.

Код, который безопасно выполнять параллельно с обработчиком прерывания, называется безопасным при прерываниях (interrupt-safe). Код, который содержит защиту от конкурентного доступа к ресурсам при симметричной многопроцессорной обработке, называется безопасным при SMP-обработке (SMP-safe). Код, который имеет защиту от конкурентного доступа к ресурсам при вытеснении кода ядра, называется безопасным при вытеснения[45] (preempt-safe). Механизмы, которые во всех этих случаях используются для обеспечения синхронизации и защиты от состояний конкуренции, будут рассмотрены в следующей главе.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Откуда берутся дети

Из книги Журнал «Компьютерра» №42 от 15 ноября 2005 года автора Журнал «Компьютерра»

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


Откуда он взялся на нашу голову?

Из книги Железо ПК [Популярный самоучитель] автора Пташинский Владимир

Откуда он взялся на нашу голову? Так что же такое компьютер? Перед большинством современных пользователей он предстает таким, как показано на рис. 1.1. Рис. 1.1. Более или менее современный компьютерНо если бы вы читали эту книгу каких-нибудь тысячу лет назад, то на рисунке


Кафедра Ваннаха: Параллелизм в большом и малом мирах Ваннах Михаил

Из книги Цифровой журнал «Компьютерра» № 13 [24.3.2010 — 30.3.2010] автора Журнал «Компьютерра»

Кафедра Ваннаха: Параллелизм в большом и малом мирах Ваннах Михаил Давным-давно авторы "Золотого теленка" отметили, что "Параллельно большому миру, в котором живут большие люди и большие вещи, существует маленький мир с маленькими людьми и маленькими вещами". К


1.2. Откуда и зачем в блоге реклама

Из книги Блог-маркетинг, или Маркетинг в режиме он-лайн автора Щербакова Ирина Викторовна

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


1.2. Параллелизм

Из книги Фреймы для представления знаний автора Мински Марвин

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


Кафедра Ваннаха: Параллелизм в большом и малом мирах

Из книги Компьютерра PDA 20.03.2010-26.03.2010 автора Журнал «Компьютерра»

Кафедра Ваннаха: Параллелизм в большом и малом мирах Автор: Ваннах МихаилОпубликовано 26 марта 2010 годаДавным-давно авторы "Золотого теленка" отметили, что "Параллельно большому миру, в котором живут большие люди и большие вещи, существует маленький мир с маленькими людьми


Глава 1 TCP/IP: что это такое и откуда взялось

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

Глава 1 TCP/IP: что это такое и откуда взялось 1.1 Введение В конце 60-х гг. Агентство перспективных исследовательских проектов (Advanced Research Project Agency — ARPA) Министерства обороны США (позднее переименованное в DARPA) начало сотрудничать с университетами и другими исследовательскими


Откуда берет начало движущая сила

Из книги Добавьте в корзину. Ключевые принципы повышения конверсии веб-сайтов автора Айзенберг Джеффри

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


Зелёная волна: откуда берутся пробки

Из книги Компьютерра PDA N143 (29.10.2011-04.11.2011) автора Журнал «Компьютерра»

Зелёная волна: откуда берутся пробки Автор: Виктор ИвановскийОпубликовано 01 ноября 2011 годаК сожалению, всезнающий интернет не даёт ответа на простой вопрос: сколько автолюбителей проживают в России? Официальная статистика сообщает, что к началу 2009 года в Российской


Откуда берутся проекты, мама?

Из книги VBA для чайников автора Каммингс Стив

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


Откуда нетбук получает питание?

Из книги Наглядный самоучитель работы на нетбуке автора Сенкевич Г. Е.

Откуда нетбук получает питание? Для работы от электросети и зарядки батареи сначала вставьте штекер блока питания в гнездо на корпусе нетбука (1). Затем включите вилку блока питания в розетку электросети 220 В (2). Отключать блок питания желательно в обратном порядке:


Глава 6 Откуда берется Интернет?

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

Глава 6 Откуда берется Интернет? 6.1. Модемное соединение К Интернету можно подключиться разными способами. Один из наиболее часто используемых — удаленное соединение по коммутируемым сетям общего пользования через модем, выполняющий модуляцию и демодуляцию (отсюда и


Параллелизм

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

Параллелизм Феномен параллелизма при выполнении принципиально последовательного по своей природе компьютерного кода возникает даже раньше, чем он начинает отчетливо требоваться для многозадачных и многопользовательских операционных систем:• Код обработчиков


Глава 7. Параллелизм

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

Глава 7. Параллелизм


Синхронизация и параллелизм

Из книги Разработка ядра Linux автора Лав Роберт

Синхронизация и параллелизм Ядро подвержено состояниям конкуренции за ресурсы (race condition). В отличие от однопоточной пользовательской программы, ряд свойств ядра позволяет осуществлять параллельные обращения к ресурсам общего доступа, и поэтому требуется выполнять


Откуда берется операционная система

Из книги Как приручить компьютер за несколько часов автора Ремнева Ирина

Откуда берется операционная система На вашем компьютере она может появиться несколькими способами.1) Самый простой способ – купить компьютер с установленной операционной системой. Но нам простые пути не нужны, сами с усами. То есть не хуже тех, кто с усами. Тем более что