Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Столлингс ГЛАВА 5 Многопроцессорные вычислен...doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.98 Mб
Скачать

Глава 5

Параллельные вычисления: взаимоисключения и многозадачность

  1. Принципы параллельных вычислений

  2. Взаимоисключения: программный подход

  3. Взаимоисключения: аппаратная поддержка

  4. Семафоры

  5. Мониторы

  6. Передача сообщений

  7. Задача читателей/писателей

  8. Резюме, ключевые термины и контрольные вопросы

  9. Рекомендуемая литература

    1. Задачи

Основные вопросы, на которых сосредотачивается внимание разработчиков операционных систем, связаны с управлением процессами и потоками.

  • Многозадачность: управление множеством процессов в однопроцессорной системе.

  • Многопроцессорность: управление множеством процессов в многопроцессорной системе.

  • Распределенные вычисления: управление множеством процессов, выпол­няемых в распределенной вычислительной системе с множеством компью­теров. Основным примером таких систем являются широко распространен­ные в последнее время кластеры.

Фундаментальной концепцией этой области, да и разработки операционных систем в целом, является концепция параллельных вычислений (concurrency). Параллельность охватывает множество вопросов разработки, включая вопросы обмена информацией между процессами, разделения ресурсов, синхронизацию работы процессов и распределение процессорного времени между различными процессами. Вы увидите, что эти вопросы возникают не только в многопроцес­сорной или распределенной вычислительной среде, но и в случае многозадачных систем на базе одного процессора.

Параллельность проявляется в трех различных контекстах.

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

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

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

В силу важности данного вопроса ему посвящены четыре главы данной книги. В настоящей и следующей главах рассматривается параллельность в кон­тексте многопроцессорности и многозадачности; в главах 13, "Распределенные вычисления, архитектура клиент/сервер и кластеры", и 14, "Управление распределенными процессами", изложены вопросы параллельных вычислений в контексте распределенных вычислений. Хотя оставшаяся часть книги охватыва­ет различные важные темы разработки операционных систем, параллельные вы­числения играют главную роль при рассмотрении этих тем.

Данная глава начинается с введения в концепции параллельных вычисле­ний и параллельного выполнения ряда процессов1. Вы узнаете, что основным требованием поддержки параллельных процессов является возможность обеспечения взаимоисключений, т.е. возможность обеспечить работу только одного процесса с остановкой выполнения всех остальных. В следующем разделе будут рассмотрены различные подходы к обеспечению взаимоисключений. Все они яв­ляются программными решениями и требуют использования технологии, из­вестной как пережидание занятости (busy waiting). Затем мы остановимся на некоторых аппаратных механизмах, способных обеспечить поддержку взаимоис­ключений, а также решениях, которые не используют пережидание занятости и могут поддерживаться операционной системой или компиляторами. Мы рас­смотрим три подхода: семафоры, мониторы и передачу сообщений.

Для иллюстрации концепций и сравнения представленных в этой главе подходов используются две классические задачи. Сперва мы познакомимся с за­дачей производителей/потребителей, а затем — с задачей читателей/писателей.

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