Главная » Просмотр файлов » Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)

Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 11

Файл №1162619 Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)) 11 страницаЭ. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619) страница 112019-09-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 11)

Другой серьезный плюс заключается в том, что модули пользовательскогоуровня могут в принципе размещаться на разных машинах. Так, мы можем уста­новить модуль управления файлами не на той машине, на которой он управляетслужбой каталогов. Другими словами, подход с использованием микроядра от­лично подходит для переноса однопроцессорных операционных систем на рас­пределенные компьютеры.У микроядер имеется два существенных недостатка. Во-первых, они работа­ют иначе, чем существующие операционные системы, а попытки поменять сло­жившееся «статус-кво» всегда встречают активное сопротивление («если этаоперационная система подходила для моего деда — она подойдет и для меня»).Во-вторых, микроядро требует дополнительного обмена, что слегка снижаетпроизводительность.

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

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

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

Идея состоит в том, что все сообщениепроисходит путем работы с данными в специальной совместно используемой об­ласти данных, и все что нам нужно — это защитить данные от одновременногодоступа к ним. Защита осуществляется посредством примитивов синхрониза­ции. Два наиболее важных (и эквивалентных) примитива — это семафоры и мо­ниторы.Семафор {semaphore) может быть представлен в виде целого числа, поддер­живающего две операции: up (увеличить) и down (уменьшить). При уменьшениисначала проверяется, превышает ли значение семафора 0. Если это так, его зна­чение уменьшается и выполнение процесса продолжается. Если же значение се­мафора нулевое, вызывающий процесс блокируется.

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

Похожая ситуация возника­ет при частом использовании печально известной инструкции goto. В качествеальтернативы семафорам многие современные системы, поддерживающие па­раллельное программирование, предоставляют библиотеки для реализации мо­ниторов.Формально монитор {monitor) представляет собой конструкцию языка про­граммирования, такую же, как объект в объектно-ориентированном программи­ровании [200]. Монитор может рассматриваться как модуль, содержащий пере­менные и процедуры. Доступ к переменным можно получить только путемвызова одной из процедур монитора.

В этом смысле монитор очень похож наобъект. Объект также имеет свои защищенные данные, доступ к которым можнополучить только через методы, реализованные в этом объекте. Разница междумониторами и объектами состоит в том, что монитор разрешает выполнение про­цедуры только одному процессу в каждый момент времени. Другими словами,50Глава 1. Введениеесли процедура, содержащаяся в мониторе, выполняется процессом А (мы гово­рим, что А вошел в монитор) и процесс В также вызывает одну из процедур мо­нитора, В будет блокирован до завершения выполнения А (то есть до тех пор, по­ка А не покинет монитор).В качестве примера рассмотрим простой монитор для защиты целой пере­менной (листинг 1.1).

Монитор содержит одну закрытую (private) переменнуюcount, доступ к которой можно получить только через три открытых (public)процедуры — чтения текущего значения, увеличения на единицу и уменьше­ния. Конструкция монитора гарантирует, что любой процесс, который вызываетодну из этих процедур, получит атомарный доступ к внутренним данным мони­тора.Листинг 1.1. Монитор, предохраняющий целое число от параллельного доступаmonitor Counterprivate:int count =public:int valueOvoid incrOvoid decrO}{0:{ return count; }{ count = count + 1;}{ count = count - 1;}Итак, мониторы пригодны для простой защиты совместно используемых дан­ных. Однако для условной блокировки процесса необходимо большее. Напри­мер, предположим, нам нужно заблокировать процесс при вызове операцииуменьшения, если обнаруживается, что значение count равно нулю. Для этой це­ли в мониторах используются условные переменные {condition variables).

Это спе­циальные переменные с двумя доступными операциями: wait (ждать) и signal(сигнализировать). Когда процесс А находится в мониторе и вызывает для ус­ловной переменной, хранящейся в мониторе, операцию wait, процесс А будетзаблокирован и откажется от своего исключительного доступа к монитору. Соот­ветственно, процесс В, ожидавший получения исключительного доступа к мони­тору, сможет продолжить свою работу. В определенный момент времени Вможет разблокировать процесс А вызовом операции signal для условной пере­менной, которого ожидает А.

Чтобы предотвратить наличие двух активных про­цессов внутри монитора, мы доработаем схему так, чтобы процесс, подавшийсигнал, покидал монитор. Теперь мы можем переделать наш предыдущий при­мер. Монитор из листинга 1.2 — это новая реализация обсуждавшегося ранее се­мафора.Листинг 1.2.

Монитор, предохраняющий целое число от параллельного доступаи блокирующий процессmonitor Counter {private:int count = 0;int blockecl_procs = 0;condition unblocked:public:int valueO { return count:}1.4. Концепции программных решений51void incrO {1f (blockecl_procs == 0)count = count + 1;elsesignal( unblocked );void decrO {if (count == 0) {blocked_procs = blocked_procs + 1;wait( unblocked ):blocked_procs = blocked_procs - 1;}elsecount = count - 1:Оборотная сторона мониторов состоит в том, что они являются конструкция­ми языка программирования.

Так, Java поддерживает мониторы, просто разре­шая каждому объекту предохранять себя от параллельного доступа путем исполь­зования в нем инструкции synchronized и операций wait и notify. Библиотечнаяподдержка мониторов обычно реализуется на базе простых семафоров, которыемогут принимать только значения О и 1. Такие семафоры часто называются переменньши-мъютексами (mutex variables), или просто мьютексами. С мьютексамиассоциируются операции lock (блокировать) и unlock (разблокировать).

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

Дополнительную информацию по примитивам синхронизации можнонайти в [17].Мультикомпьютерные операционные системыМультикомпьютерные операционные системы обладают гораздо более разнооб­разной структурой и значительно сложнее, чем мультипроцессорные. Эта разницапроистекает из того факта, что структуры данных, необходимые для управлениясистемными ресурсами, не должны больше отвечать условию легкости совмест­ного использования, поскольку их не нужно помещать в физически общую па­мять.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6489
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее