Параллельное программирование многопоточных систем с разделяемой памятью
Цена 12.66 USD
Предлагаемая книга не является заменой существующим учебникам по традиционному параллельному программированию и ориентирована больше на практический подход — как собственно в программировании, так и в требуемых математических основах, которым в книге уделяется значительное внимание. Обсуждаются вопросы основ аппаратного и программного обеспечения, связанных с работой параллельных программ на разделяемой памяти, методики организации корректного выполнения параллельных программ с точки зрения высоко- и низкоуровневых примитивов синхронизации аппаратной платформы. Вводятся формальные понятия, необходимые для математического описания проблем; рассматривается математическая задача о консенсусе в системах со сбоями. На конкретных примерах проводится обзор методов и подходов (неблокирующие алгоритмы, алгоритмы с быстрым и медленным путями исполнений и др.), рассматриваются практические алгоритмы из таких систем, как ядро ОС Linux. Представлены методики доказательства корректности неблокирующих алгоритмов и использования конечных автоматов для их описания. Также приводятся разработанные автором методики статического анализа исходного кода программ на наличие условий неразрешенных гонок, обусловленных аппаратными особенностями современных вычислительных систем, учитывающих наличие трансляции исходного кода с языков высокого уровня в инструкции целевой аппаратной платформы. Книга подразумевает наличие базовых знаний языков программирования и основам устройства современных компьютеров. Акцент в практическом изложении делается на наиболее распространенную архитектуру Intel х 86 в ее последних реализациях и специфических возможностях для организации корректного исполнения параллельных программ (хотя большинство обсуждаемых тем напрямую относится и к другим микропроцессорным архитектурам — таким как ARM, MIPS и т.д.). Для студентов вузов, обучающихся по соответствующим специальностям и направлениям подготовки, а также для всех желающих более глубоко ознакомиться с основами программного и аппаратного обеспечения, непосредственно влияющими на выбор алгоритмов при разработке параллельных программ, работающих на разделяемой памяти (например, при многопоточном программировании).