Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Митряев лекции / РИС гр.446зс 2015 / РИС Л.13. 20.11.15 гр.445 Распределённые ОС.docx
Скачиваний:
254
Добавлен:
25.03.2016
Размер:
141.21 Кб
Скачать

11. Процессы и нити

Процесс - это выполнение программы.

Компоненты процесса - выполняющаяся программа, ее данные, ее ресурсы (например, память), и состояние выполнения.

Традиционно, процесс имеет собственное адресное пространство и его состояние характеризуется следующей информацией:

  • таблицы страниц (или сегментов);

  • дескрипторы файлов;

  • заказы на ввод-вывод;

  • регистры;

  • и т.п.

Большой объем этой информации делает дорогими операции создания процессов, их переключение.

Потребность в легковесных процессах, нитях (threads) возникла еще на однопроцессорных ЭВМ (физические процессы или их моделирование, совмещение обменов и счета), но для использования достоинств многопроцессорных ЭВМ с общей памятью они просто необходимы.

Процессы могут быть независимыми, которые не требуют какой-либо синхронизации и обмена информацией (но могут конкурировать за ресурсы), либо взаимодействующими.

Взаимодействие процессов

Если приложение реализовано в виде множества процессов (или нитей), то эти процессы (нити) могут взаимодействовать двумя основными способами:

  • посредством разделения памяти (оперативной или внешней)

  • посредством передачи сообщений

При взаимодействии через общую память процессы должны синхронизовать свое выполнение.

Различают два вида синхронизации:

1) взаимное исключение критических интервалов

2) координация процессов.

Решение проблемы взаимного исключения критических интервалов должно удовлетворять требованиям:

  • в любой момент времени только один процесс может находиться внутри критического интервала;

  • если ни один процесс не находится в критическом интервале, то любой процесс, желающий войти в критический интервал, должен получить разрешение без какой либо задержки;

  • ни один процесс не должен бесконечно долго ждать разрешения на вход в критический интервал (если ни один процесс не будет находиться внутри критического интервала бесконечно долго);

  • не должно существовать никаких предположений о скоростях процессоров.

Взаимное исключение критических интервалов в однопроцессорной эвм.

1. Блокировка внешних прерываний (может нарушаться управление внешними устройствами, возможны внутренние прерывания при работе с виртуальной памятью).

2. Блокировка переключения на другие процессы (MONO, MULTI).

12. Планирование процессоров

Планирование процессоров очень сильно влияет на производительность мультипроцессорной системы.

Можно выделить следующие главные причины деградации производительности:

  1. Накладные расходы на переключение процессора. Они определяются не только переключениями контекстов процессов, но и (при переключении на процессы другого приложения) перемещениями страниц виртуальной памяти, а также порчей кэша (информация в кэше другому приложению не нужна и будет заменена).

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

Применяются следующие стратегии борьбы с деградацией производительности:

  1. Совместное планирование, при котором все процессы одного приложения (неблокированные) одновременно выбираются на процессоры и одновременно снимаются с них (для сокращения переключений контекста).

  2. Планирование, при котором находящиеся в критической секции процессы не прерываются, а активно ожидающие входа в критическую секцию процессы не выбираются до тех пор, пока вход в секцию не освободится.

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

  4. Планирование с учетом "советов" программы (во время ее выполнения).

Выводы

Эффективным способом повышения производительности и надежности вычислительной техники является объединение отдельных автономных ВМ в многомашинные вычислительные системы.

Различают два класса многомашинных вычислительных систем: ММВС сосредоточенного типа и ММВС распределенного типа (которые обычно называют распределенными вычислительными системами или вычислительными сетями).

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

В наиболее простом варианте системные средства обеспечения связи могут быть сведены к двум основным системным вызовам (примитивам):

  • один – для отправки сообщения,

  • другой – для получения сообщения.

Системные вызовы могут быть:

  • блокирующими (синхронными)

  • или неблокирующими (асинхронными).

В более сложной форме передача сообщений скрыта от пользовате­ля под видом вызова удаленной процедуры RPC.

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

Операционные системы вычислительных сетей обычно называют сетевыми ОС.

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

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

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

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

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

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

Одним из наиболее эффективных способов построения распределенных ОС является установка специального промежуточного уровня программного обеспечения поверх сетевой операционной сис­темы. Этот уровень предоставляет однородный уровень для взаимодействующих с ним приложений. Среди различных типов про­межуточного программного обеспечения следует выделить документное, файловое, объектное и координационное. Примерами промежуточного программного обеспече­ния служат такие системы, как WWW, AFS, CORBA, Linda, Jini.