Главная » Просмотр файлов » Спец часть (часть 2) (3 поток) (2015) (by Кибитова)

Спец часть (часть 2) (3 поток) (2015) (by Кибитова) (1161602), страница 6

Файл №1161602 Спец часть (часть 2) (3 поток) (2015) (by Кибитова) (Ответы на спец часть) 6 страницаСпец часть (часть 2) (3 поток) (2015) (by Кибитова) (1161602) страница 62019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Механизм передачи сообщенийоснованоснован надвухreceive(принятьдвухфункциональныхфункциональныхпримитивах:примитивах: sendsend(отправитьсообщение)двухфункциональныхпримитивах:send (отправить(отправить сообщение)сообщение) иии receivereceive (принять(принятьсообщение).Данныеоперацииможноразделитьпотремхарактеристикам:модельсообщение).Данныеоперацииможноразделитьпотремхарактеристикам:сообщение). Данные операции можно разделить по трем характеристикам: модельмодельсинхронизации,адресациясинхронизации,адресацияи ииформатформатсообщения.

синхронизации,адресацияформатсообщения.сообщения.Синхронизация.могутбытьСинхронизация. ОперацииОперациипосылки/приемасообщенийСинхронизация.Операции посылки/приемапосылки/приема сообщенийсообщений могутмогут бытьбытьблокирующимии инеблокирующими.блокирующимии неблокирующими.неблокирующими.РассмотримРассмотримразличныекомбинации.блокирующимиРассмотримразличныеразличныекомбинации.комбинации.Блокирующийsend:процесс-отправительбудетзаблокированБлокирующийsend:процесс-отправительбудетзаблокировандотехпор,покаБлокирующий send: процесс-отправитель будет заблокирован додо техтех пор,пор,покапокапосланноеимсообщениенебудетполучено.посланноеимсообщениенебудетполучено.посланное им сообщение не будет получено.Блокирующийreceive:receive:процесс-получательпроцесс-получательбудетзаблокированБлокирующийдотехпор,покаБлокирующийreceive:процесс-получательбудетбудетзаблокированзаблокировандодотехтехпор,пор,покапоканененебудетполученосоответствующеесообщение.сообщение.будетполученосоответствующеебудетполученосоответствующеесообщение.Соответственно, неблокирующиеоперации,операции, как следуетследует из названия,происходятСоответственно,Соответственно,неблокирующиенеблокирующие операции,каккак следует изиз названия,названия, происходятпроисходятбезблокировок.безбезблокировок.блокировок.Итак, комбинируяразличныеразличные операции sendsend и receive, мыполучаем 44 различныхИтак,Итак,комбинируякомбинируя различныеоперацииоперации sendииreceive,receive,мымы получаемполучаем 4 различныхразличныхмоделисинхронизации.моделисинхронизации.моделисинхронизации.

Адресация может быть прямой или124 косвенной. При прямой адресации124указывается конкретный адрес получателя 124и/или отправителя (например, когдаполучатель ожидает сообщения от конкретного отправителя, игнорируя сообщениядругих отправителей).В случае косвенной адресации не указывается адрес конкретного получателя приотправке или адрес конкретного отправителя при получении; сообщение «бросается» внекоторый общий пул, в котором могут быть реализованы различные стратегии доступа(FIFO, LIFO и т.д.).

Этим пулом может выступать очередь сообщений (FIFO) илипочтовый ящик, в котором может быть реализована любая модель доступа. Бытовымпримером косвенной адресации может служить модель обслуживающей системы(сотруднику ателье всё равно, чей пиджак он чистит).Итак, повторимся, что механизм передачи сообщений совмещает два средства:средство передачи информации и средство синхронизации. Этот аппарат являетсябазовым средством организации взаимодействия процессов в многопроцессорныхсистемах с распределенной памятью. Механизм передачи сообщений реализуется на базе интерфейсов передачисообщений MPI.

На основе этих интерфейсов строятся почти все кластерные системы (т.е.системы с распределенной памятью), а также MPI может работать и в системах с общейпамятью.2.4.3 Классические задачи синхронизации процессовсообщенийНа основе чтоэтихмеханизминтерфейсовстроятсяпочти все совмещаеткластерные двасистемы(т.е.Итак,MPI.повторимся,передачисообщенийсредства:системысраспределеннойпамятью),атакжеMPIможетработатьивсистемахсобщейсредство передачи информации и средство синхронизации.

Этот аппарат являетсяпамятью.базовым средством организации взаимодействия процессов в многопроцессорныхсистемах с распределенной памятью.2.4.3Классическиезадачи синхронизациипроцессовМеханизмпередачи сообщенийреализуется набазе интерфейсов передачи#defineN5/*количествофилософов*/сообщений MPI. На основе этих интерфейсов строятся почти все кластерные системы (т.е.Классическиезадачи i)синхронизациипроцессовотражаютvoidPhilosopher(int/* i – номерфилософаот 0 до разные4 */ моделисистемы с распределенной памятью), а также MPI может работать и в системах с общейвзаимодействияи демонстрируют использование механизма семафоров для организации{памятью.while(TRUE)такоговзаимодействия.{Обедающиефилософы (Рис. 94).

Пусть существует круглый стол, за которым2.4.3 Классическиезадачи синхронизациипроцессовThink();/*философ*/ и покушать. Кушают они спагетти,сидит группа философов:они пришли думаетпообщатьсяTakeFork(i);/* взятиевилки*/ Для приема пищи оникотороеКлассическиенаходитсяв общейстоящейлевойв процессовцентрестола.задачи миске,синхронизацииотражаютразныемоделиTakeFork((i+1)%N);/*взятиеправойвилкирасполагаются*/пользуютсядвумявилками:одна в использованиелевой руке, другая— в правой.Вилкивзаимодействияидемонстрируютмеханизмасемафоровдляорганизациифилософест */ Каждый из философов некоторое времяпоодноймеждуEat();/*каждыми двумяфилософами.такоговзаимодействия.PutFork(i);/*освобождениелевойвилкивилки*/ на стол и опятьразмышляет,затем беретдве вилкии ест спагетти,затем кладётОбедающиефилософысуществуеткруглыйстол,за которымPutFork((i+ (Рис.1) %94).N);Пусть/* освобождениеправойвилки*/размышляет,ифилософов:так далее.

Каждыйиз нихведет себяи независимоот других.Философысидит группаонипришлипообщатьсяпокушать.Кушаютониспагетти,}должнысовместноимеющиесявилкистола.(ресурсы).Задача пищисостоитонивкотороенаходится использоватьв общей миске,стоящейу внихцентреДля приема}организациидоступак вилкам.пользуются двумявилками:одна в левой руке, другая — в правой. Вилки располагаютсяtake_fork(i)описываетфилософапоиззахватувилки:некотороеон ждет, покапо Функцияодной междукаждымидвумя поведениефилософами.Каждыйфилософоввремяуказанная вилкаосвободится,и забираетее.размышляет,затемнеберетдве вилкии ест спагетти,затем кладёт вилки на стол и опятьОднаковышеобозначенноерешениеможетсебяпривестик тупиковойситуации.Чторазмышляет,и такдалее. Каждый изних ведетнезависимоот других.Философыпроизойдет,есливсефилософызахотятестьводноитожевремя?Каждыйизнихдолжны совместно использовать имеющиеся у них вилки (ресурсы).

Задача состоит вполучит доступк своейлевой вилке и будет находиться в состоянии ожидания второйорганизациидоступак вилкам.вилки до бесконечности, т.е. возникнет ситуация тупика. Другим решением может бытьалгоритм, который обеспечивает доступ к вилкам только четырем из пяти философов. Вэтом случае всегда среди четырех философов по крайней мере один будет иметь доступ кдвум вилкам. Данное решение не имеет тупиковой ситуации. Алгоритм решения можетбыть представлен следующим образом.#define5 Обещающие/* количествофилософов */Рис.N94.философы.#define LEFT (i-1)%N /* номер левого соседа для i-го философа */#defineRIGHT (i+1)%N/*номер левогоi-го философа*/ кИтак, даннаязадача иллюстрируетмодель соседадоступа дляравноправныхпроцессов/* состоянияфилософов:общемуресурсу, и ставитсявопрос, как организовать корректную работу такой системы.«думает»,Рассмотрим простейшее решение данной задачи, использующее семафоры.

Когда«голоден»,один из философов хочет есть, он берет вилку слева от себя, если она в наличии, а затемРис. 94. Обещающие философы.«кушает»— вилкусправаот себя. Закончив есть, он возвращает обе вилки на свои места. Данный*/алгоритмможетбытьследующим способом.Итак, THINKINGданная представлензадача#define0 иллюстрирует модель доступа равноправных процессов кобщемуресурсу,и ставитсявопрос, как организовать корректную работу такой системы.#defineHUNGRY1125задачи, использующее семафоры.

КогдаРассмотримпростейшеерешение данной#define EATING 2 один из философов хочет есть, он берет вилку слева от себя, если она в наличии, а затемопределяемтип ЗакончивСЕМАФОРесть,*/ он возвращает обе вилки на свои места. Данный— /*вилкусправа от себя.typedefintsemaphore;алгоритм может быть представлен следующим способом./*массив состояний каждого из философов,инициализированный нулями125*/int state[N];/* семафор для доступа в критическую секцию */semaphore mutex = 1;/*массив семафоров по одному на каждого из философов,инициализированный нулями*/semaphore s[N];/* Процесс-философ (i = 0..N) */void Philosopher(int i) 126{ {{{while(TRUE)while(TRUE)while(TRUE)while(TRUE){ {{{ Think();Think();Think();Think();философберётвилкиблокируется/*/*философберётобеобевилкиилиилиблокируется*/ *//*философберётобевилкиилиблокируется*//*философберётобевилкиилиблокируется*/TakeForks(i);TakeForks(i);TakeForks(i);TakeForks(i);Eat();Eat();Eat();Eat();PutForks(i);PutForks(i);PutForks(i);PutForks(i);} }}}}}}} /*/*получениевилок*/ */получениевилок/*вилок/* получениеполучениевилок*/voidTakeForks(inti) */voidTakeForks(inti)voidTakeForks(inti){ {void TakeForks(int i){{ /*/*входв критическуюсекцию*/ */входв критическуюсекцию/*входвкритическуюсекциюdown(&mutex);/* вход в критическую секцию */*/down(&mutex);down(&mutex);state[i]= HUNGRY;down(&mutex);state[i]= HUNGRY;state[i]Test(i);state[i] == HUNGRY;HUNGRY;Test(i);/*Test(i);выходизкритическойсекции*/ */Test(i);/*выход из критическойсекции/*выходизкритическойсекцииup(&mutex);/* выход из критической секции */*/up(&mutex);down(&s[i]);up(&mutex);up(&mutex);down(&s[i]);}}down(&s[i]);down(&s[i]);}} /* освобождение вилок *//* освобождение вилок */voidPutForks(inti)/*вилок/* освобождениеосвобождениевилок*/voidPutForks(inti) */{ void PutForks(int i)i){void PutForks(intвход в критическую секцию */{{ /*/*входвкритическуюсекцию */down(&mutex);/*входвкритическуюсекцию/*входвкритическуюсекцию */*/down(&mutex);state[i] = THINKING;down(&mutex);down(&mutex);state[i] = THINKING;Test(LEFT);state[i]state[i] == THINKING;THINKING;Test(LEFT);Test(RIGHT);Test(LEFT);Test(LEFT);/*Test(RIGHT);выход из критической секции */Test(RIGHT);Test(RIGHT);/*выход из критической секции */up(&mutex);/*выход/*выход изиз критическойкритической секциисекции */*/} up(&mutex);up(&mutex);/*}up(&mutex);функция проверки возможности получения вилок –}/*} функциясостояниепроверки соседейвозможностиполученияпроверяетсяданногофилософавилок*/ –/*возможностиполучениявилок––/* функцияфункция проверкипроверкивозможностиполучениявилок*/проверяетсясостояниесоседей данногофилософаvoidTest(inti)проверяетсясостояниесоседейданногофилософа*/проверяетсясоседей данного философа */Test(intсостояниеi){ voidvoidTest(inti)voidTest(inti){ if(state[i] == HUNGRY &&{{state[LEFT]EATINGif(state[i]== !=HUNGRY&& &&if(state[i]==HUNGRY&&state[RIGHT]!=EATING)if(state[i]==HUNGRY&&state[LEFT] != EATING&&state[LEFT]!=EATING&&{state[LEFT] !=&&state[RIGHT]!= EATINGEATING)state[RIGHT]!== EATING;state[RIGHT]!= EATING)EATING){ state[i]{{ up(&s[i]);state[i] = EATING;state[i]}state[i] == EATING;EATING;up(&s[i]);up(&s[i]);}up(&s[i]);}}} }}} В этом решении каждый философ живет по аналогичному циклическомураспорядку:размышляетнекотороезатем живетберет вилки,кушает, кладетвилки.В этомрешениикаждыйвремя,философпо аналогичномуциклическомуРассмотримполучениявилок философ(TakeForks).Опускаетсясемафорmutex,циклическомукоторыйВВ процедуруэтомрешениикаждыйживетпоаналогичномуэтомрешениикаждыйфилософживетпо вилки,аналогичномуциклическомураспорядку:размышляетнекотороевремя, затембереткушает,кладетвилки.используетсядлясинхронизациивходавкритическуюсекцию.Внутрикритическойраспорядку:размышляетнекотороевремя,затемберетвилки,кушает,кладетвилки.распорядку: процедуруразмышляетнекотороевремя,затем беретвилки,семафоркушает,mutex,кладеткоторыйвилки.Рассмотримполучениявилок(TakeForks).Опускаетсясекциименяемсостояниефилософа(помечаемегосостояниемHUNGRY).ЗатемРассмотримпроцедуруполучениявилок(TakeForks).Опускаетсясемафорmutex,которыйРассмотрим процедуруполучения вилокОпускаетсясемафоркоторыйиспользуетсядля синхронизациивхода (TakeForks).в критическуюсекцию.Внутриmutex,критическойпредпринимаетсяпопытканачать есть(вызываетсяфункцияTest).

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

Тип файла
PDF-файл
Размер
8,18 Mb
Высшее учебное заведение

Список файлов ответов (шпаргалок)

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