- •Операционные системы распределенных информационных систем (распределенные ос). План
- •1. Ос однопроцессорных эвм.
- •Место ос среди по
- •История ос.
- •1940-Е и 1950-е
- •2. Параллельные и распределенные системы
- •Достоинства распределенных систем
- •Для чего компьютеры объединяют в сети
- •3. Виды операционных систем (сетевые ос, распределенные ос, ос мультипроцессоров).
- •4. Принципы построения распределенных ос
- •5. Распределенные операционные системы
- •6. Архитектура распределенной системы
- •7. Распределенная организация операционной системы
- •8. Проекты для создания распределенных операционных систем
- •8.1. Метакомпьютинг
- •9. Взаимосвязь понятий сетевой и распределенной операционных систем
- •10. Варианты реализации распределенных операционных систем
- •11. Процессы и нити
- •Взаимодействие процессов
- •Взаимное исключение критических интервалов в однопроцессорной эвм.
- •12. Планирование процессоров
11. Процессы и нити
Процесс - это выполнение программы.
Компоненты процесса - выполняющаяся программа, ее данные, ее ресурсы (например, память), и состояние выполнения.
Традиционно, процесс имеет собственное адресное пространство и его состояние характеризуется следующей информацией:
таблицы страниц (или сегментов);
дескрипторы файлов;
заказы на ввод-вывод;
регистры;
и т.п.
Большой объем этой информации делает дорогими операции создания процессов, их переключение.
Потребность в легковесных процессах, нитях (threads) возникла еще на однопроцессорных ЭВМ (физические процессы или их моделирование, совмещение обменов и счета), но для использования достоинств многопроцессорных ЭВМ с общей памятью они просто необходимы.
Процессы могут быть независимыми, которые не требуют какой-либо синхронизации и обмена информацией (но могут конкурировать за ресурсы), либо взаимодействующими.
Взаимодействие процессов
Если приложение реализовано в виде множества процессов (или нитей), то эти процессы (нити) могут взаимодействовать двумя основными способами:
посредством разделения памяти (оперативной или внешней)
посредством передачи сообщений
При взаимодействии через общую память процессы должны синхронизовать свое выполнение.
Различают два вида синхронизации:
1) взаимное исключение критических интервалов
2) координация процессов.
Решение проблемы взаимного исключения критических интервалов должно удовлетворять требованиям:
в любой момент времени только один процесс может находиться внутри критического интервала;
если ни один процесс не находится в критическом интервале, то любой процесс, желающий войти в критический интервал, должен получить разрешение без какой либо задержки;
ни один процесс не должен бесконечно долго ждать разрешения на вход в критический интервал (если ни один процесс не будет находиться внутри критического интервала бесконечно долго);
не должно существовать никаких предположений о скоростях процессоров.
Взаимное исключение критических интервалов в однопроцессорной эвм.
1. Блокировка внешних прерываний (может нарушаться управление внешними устройствами, возможны внутренние прерывания при работе с виртуальной памятью).
2. Блокировка переключения на другие процессы (MONO, MULTI).
12. Планирование процессоров
Планирование процессоров очень сильно влияет на производительность мультипроцессорной системы.
Можно выделить следующие главные причины деградации производительности:
Накладные расходы на переключение процессора. Они определяются не только переключениями контекстов процессов, но и (при переключении на процессы другого приложения) перемещениями страниц виртуальной памяти, а также порчей кэша (информация в кэше другому приложению не нужна и будет заменена).
Переключение на другой процесс в тот момент, когда текущий процесс выполнял критическую секцию, а другие процессы активно ожидают входа в критическую секцию. В этом случае потери будут велики (хотя вероятность прерывания выполнения коротких критических секций мала).
Применяются следующие стратегии борьбы с деградацией производительности:
Совместное планирование, при котором все процессы одного приложения (неблокированные) одновременно выбираются на процессоры и одновременно снимаются с них (для сокращения переключений контекста).
Планирование, при котором находящиеся в критической секции процессы не прерываются, а активно ожидающие входа в критическую секцию процессы не выбираются до тех пор, пока вход в секцию не освободится.
Процессы планируются на те процессоры, на которых они выполнялись в момент их снятия (для борьбы с порчей кэша). При этом может нарушаться балансировка загрузки процессоров.
Планирование с учетом "советов" программы (во время ее выполнения).
Выводы
Эффективным способом повышения производительности и надежности вычислительной техники является объединение отдельных автономных ВМ в многомашинные вычислительные системы.
Различают два класса многомашинных вычислительных систем: ММВС сосредоточенного типа и ММВС распределенного типа (которые обычно называют распределенными вычислительными системами или вычислительными сетями).
Существенным отличием ММВС от автономных (одно- или многопроцессорных) ВМ является то, что каждая машина, входящая в состав ММВС, имеет свою собственную оперативную память. Вследствие такого архитектурного построения механизмы организации межпроцессной взаимосвязи в ММВС и в автономных ВМ принципиально различны. В автономных машинах базой для взаимодействия процессов служит общая разделяемая память. В ММВС при отсутствии какой бы то ни было разделяемой памяти основой межпроцессного взаимодействия служит обмен физическими пакетами данных (так называемыми сообщениями) посредством некоторой коммуникационной среды.
В наиболее простом варианте системные средства обеспечения связи могут быть сведены к двум основным системным вызовам (примитивам):
один – для отправки сообщения,
другой – для получения сообщения.
Системные вызовы могут быть:
блокирующими (синхронными)
или неблокирующими (асинхронными).
В более сложной форме передача сообщений скрыта от пользователя под видом вызова удаленной процедуры RPC.
Идея вызова удаленных процедур состоит в расширении механизма передачи управления и данных внутри программы, выполняющейся на одной ВМ, на передачу управления и данных через коммуникационные каналы, связывающие разные ВМ.
Операционные системы вычислительных сетей обычно называют сетевыми ОС.
В вычислительных сетях есть узкоспециализированные правила, описывающие типы и форматы сообщений, которые могут посылаться в этих сетях, а также регламентирующие ответы на эти сообщения. Набор таких правил, с помощью которых машины взаимодействуют в сети, называется протоколом. Понятие протокола является фундаментальным понятием сетевых ОС, позволяющим определить и описать конкретные функции тех програмных частей операционных систем, которые отвечают за взаимодействие удаленных процессов.
Сетевые средства связи обычно строятся по многослойному (многоуровневому) принципу. Каждый уровень такой многослойной иерархии может взаимодействовать непосредственно только со своими вертикальными соседями, руководствуясь вертикальными протоколами, которые принято называть интерфейсами.
Самым нижним уровнем в многослойных сетевых иерархиях является уровень, на котором реализуется реальная физическая связь между двумя узлами сети на основе горизонтального протокола физического взаимодействия. Все одинаковые уровни, лежащие выше физического, виртуально обмениваются данными посредством соответствующих горизонтальных протоколов.
Всю совокупность вертикальных и горизонтальных протоколов, достаточную для организации взаимодействия удаленных процессов в вычислительных сетях, принято называть семейством протоколов или стеком протоколов. Сети, построенные на основе разных стеков протоколов, могут быть объединены между собой с использованием вычислительных устройств, осуществляющих трансляцию из одного стека протоколов в другой.
Наиболее совершенным и перспективным классом ОС являются так называемые распределенные операционные системы. Распределенная система создает для пользователя полную иллюзию того, что он работает в обычной автономной системе.
В распределенных ОС к лежащей в основе системы вычислительной сети должна быть добавлена некая общая модель, которая способна превратить множество слабосвязанных ВМ в однородную «конструкцию», базирующуюся на единой концепции.
Одним из наиболее эффективных способов построения распределенных ОС является установка специального промежуточного уровня программного обеспечения поверх сетевой операционной системы. Этот уровень предоставляет однородный уровень для взаимодействующих с ним приложений. Среди различных типов промежуточного программного обеспечения следует выделить документное, файловое, объектное и координационное. Примерами промежуточного программного обеспечения служат такие системы, как WWW, AFS, CORBA, Linda, Jini.
