КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Стандарти CORBA
Стандарт CORBA CORBA це стандарт для розподіленого кросплатформного обєктно-орієнтованого програмування. Вище згадувалося про застосування CORBA для підтримки паралелізму, оскільки реалізації стандарту CORBA можна використовувати для розробки мультиагентних систем. Мультиагентні системи пропонують важливі мережеві моделі розподіленого програмування з рівноправними вузлами (peer-to-peer). В мультиагентних системах робота може бути організована паралельно. Це одна із областей, в яких паралельне та розподілене програмування перетинаються. Незважаючи на те що агенти виконуються на різних комп’ютерах, тобто агенти спільно працюють над однією спільною проблемою. Стандарт CORBA забезпечує відкриту, незалежну від виробника архітектуру та інфраструктуру, яку комп’ютерні додатки використовують для спільного використання в мережі. Використовуючи стандартний протокол ІІОР (Internet InterORB Protocol – протокол, який визначає передачу повідомлень між мережевими об’єктами по ТСР/ІР), CORBA- орієнтована програма (створена довільним виробником на довільній мові програмування, яка виконується практично на довільному комп’ютері під керуванням довільної операційної системи в довільній мережі) може взаємодіяти з іншою CORBA- орієнтованою програмою (створеної тим же або іншим виробником на довільній мові програмування, яка виконується практично на довільному комп’ютері під керуванням операційної системи в довільній мережі). В наших лекціях використовується МІСО- реалізацію стандарту CORBA. МІСО – реалізація стандарту CORBA, яка вільно поширюється і повністю відповідає його вимогам.
14. Три рівні паралелізму в комп’ютерній програмі. В наших лекціях ми досліджуємо можливість паралелізму в межах додатку (на відміну паралелізму на рівні операційної системи або апаратних засобів). Не дивлячись на те що паралелізм на рівні операційної системи або апаратних засобі підтримує паралелізм додатку, ми все ж будемо орієнтуватися на сам додаток. Отже, паралелізм можливо забезпечити на рівні: · інструкції; · підпрограми (функції, процедури); · об’єктів; · додатків. Паралелізм на рівні інструкцій Паралелізм на рівні підпрограм ДЗС-структуру програми можемо подати у вигляді ряду функцій, тобто сума робіт, з яких складається розв’язок, поділяється на деяку кількість функцій. Якщо дані функції розподілити за потоками, то кожну функцію в даному випадку можемо виконати на окремому процесорі, і, якщо у вашому розпорядженні буде достатньо процесорів, то всі функції зможуть виконуватися одночасно. Паралелізм на рівні об’єктів ДЗС-структуру програмного рішення можемо розподілити між об’єктами. Кожен об’єкт можна призначити окремому потоку або процесу. Використовуючи стандарт CORBA (Common Object Request Broker Architecture – технологія створення розподілених об’єктних додатків), всі об’єкти можна призначити різним комп’ютерам однієї мережі або різним комп’ютерам різних мереж. Об’єкти, реалізовані в різних потоки або процесах, можуть виконувати свої методи паралельно. Паралелізм на рівні додатків Декілька додатків можуть спільно розв’язувати певну проблему. Не дивлячись на те що певний додаток спочатку призначався для виконання окремої задачі, принципи багаторазового використання коду дозволяють додаткам співпрацювати. В таких випадках два окремих випадки ефективно працюють спільно подібно єдиному розподіленому додатку. Наприклад буфер обміну (Clipboard) не передбачався для роботи ні з яким конкретним додатком, але його успішно використовують багато додатків робочого столу. Про деякі варіанти застосування буфера обміну його творці в процесі розробки і не мріяли. Другий та третій рівні – це основні рівні паралелізму, тому методам їх реалізації і приділяється основна увага в курсі лекцій. Рівня операційної системи та апаратних засобів ми торкнемося тільки втому випадку, коли це буде необхідно в контексті проектування додатку. Отримавши відповідну ДЗС-структуру для проекту, який передбачає паралельні та розподілені програмування, можемо переходити до наступного етапу – розглянемо можливості його реалізації. 15. Проблема зв’язку та синхронізації в паралельному програмуванні. Для координації задач, які виконуються паралельно, необхідно забезпечити зв'язок між ними та синхронізацію їх робіт. При некоректному зв’язку або синхронізації як правило виникають чотири проблеми. Проблема № 1: ²гонкі² даних Якщо декілька задач одночасно спробують деяку загальну область даних, але кінцеве значення даних при цьому буде залежати від того, яка задача звернулася до цієї області першою, виникне ситуація, яку називають станом ² гонок ² (race codition). У випадку, коли декілька задач спробує обновити один і той же ресурс даних, такий стан ²гонок² називають ² гонкою ² даних (data race). Яка задача в нашій програмі підтримки електронного банку першою отримає доступ до залишку на рахунку, визначається результатом роботи планувальника задач операційної системи, станом процесорів, часом очікування та випадковими причинами. В такій ситуації створюється стан ²гонок². Яке значення в цьому випадку повинен повідомити банк в якості реального залишку на рахунку? Отже, незважаючи на те, що ми хотіли би, щоб наша програма дозволяла одночасно опрацьовувати множину операцій по зніманню грошей з рахунку і вкладенню їх на депозит, нам необхідно координувати ці задачі у випадку, якщо виявиться, що операції знімання і вкладення грошей повинні бути застосовані до одного і того ж рахунку. Кожен раз коли задачі використовують ресурс який модифікується, до ресурсного доступу цих задач необхідно застосовувати певні правила та стратегії. Наприклад, в нашій програмі підтримки банківських операцій з рахунками ми могли б завжди виконувати довільні операції по вкладанню грошей до виконання операцій по їх зніманню. Ми могли би встановити правило, у відповідності з яким доступ до рахунку одночасно могла би отримувати тільки одна транзакція. І якщо виявиться, що до одного і того ж рахунку одночасно звертається відразу декілька транзакцій, їх необхідно затримати, організувати їх виконання у відповідності з певними правилами черговості, а потім надавати їм доступ до рахунку по одній (в порядку черговості). Такі правила організації дозволяють реалізувати відповідної синхронізації дій. Проблема № 2: нескінченне відтермінування Таке планування, при якому одна або декілька задач повинні очікувати до тих пір, доки не відбудеться деяка подія або не створяться певні умови, може виявитися доволі не простим. По-перше, очікувана подія або умова повинні вирізнятися регулярністю. По-друге, між задачами необхідно налагодити зв'язок. Якщо одна або декілька задач очікують сеансу зв’язку до свого виконання, то у випадку, якщо очікуваний сеанс зв’язку не відбудеться, відбудеться надто пізно або не повністю, ці задачі можуть так ніколи і не виконатися. І також, якщо очікувана подія або умова, яка (за нашою думкою) повинна відбутися (або наступити), але в дійсності не відбулася (або не наступила), то зупинені нами задачі будуть вічно знаходитися в стані очікування. Якщо ми призупинимо одну або декілька задач до настання події (або умови), яка ніколи не відбудеться, виникне ситуація, що називається нескінченне відтермінування (indefinite postponement). Повертаючись до нашого прикладу електронного банку, приймаємо, що, якщо ми встановимо правила, які вказують всім задачам зняття грошей з рахунку знаходиться в стані очікування до тих пір, доки не будуть виконані всі задачі вкладання грошей на рахунок, то задачі знаття грошей ризикують стати нескінченно відкладеними. Ви виходили з припущення про гарантоване існування задач вкладання грошей на рахунок. Але якщо один із запитів на поповнення рахунків не надійде, то що тоді заставить виконатись задачі зняття грошей? І, навпаки, що, якщо будуть нескінченно надходити запити на поповнення одного і того ж рахунку? Тоді не зможе пройти до рахунку ні один запит на зняття грошей. Така ситуація також може викликати нескінчену відтермінування задач зняття грошей. Нескінчене відтермінування виникає при відсутності задач на вкладання грошей на рахунок або їх постійному надходженні. Необхідно також передбачити ситуацію, коли запити на вкладання грошей надходять коректно, але нам не вдається коректним чином організувати зв'язок між подіями і задачами. Прагнучи скоординувати доступ паралельних задач до деякого загального ресурсу даних, необхідно передбачити всі ситуації, в яких можливе виникнення відтермінування. Проблема № 3: взаємне блокування Взаємне блокування – це ще одна проблема, пов’язана з очікуванням. Для демонстрації взаємного блокування в важитимемо, що в нашій програмі підтримку електронного банку три задачі працюють не з одним, а з двома рахунками. Згадаємо, що задача А отримує запит від задачі В на знімання грошей з рахунку, А від задачі С – запити на вкладання грошей на депозит. Задачі А, В і С можуть виконуватися паралельно. Однак задачі В і С можуть оновлювати одночасно тільки один рахунок. Задача А надає доступ задач В і С до необхідного рахунку за правилом ²першим прийшов – перший пішов². Вважаємо, що задача В має монопольний доступ до рахунку 1, а задача С – монопольний доступ до рахунку – 2. При цьому задачі В для виконання відповідної обробки також необхідний доступ до рахунку 2 і задачі С – доступ до рахунку 1. Задача В утримує рахунок 1, очікуючи, доки задача С не звільнить рахунок 1. Тим самим задачі В і С ризикують попасти в безвихідну ситуацію, яку в даному випадку можемо назвати взаємним блокуванням (deadlock). Ситуація взаємного блокування між задачами В і С схематично подано на рис. 3. Форма взаємного блокування в даному випадку пояснюється наявністю задач, що виконуються паралельно, мають загальний доступ до даних, що використовуються спільно, і які їм дозволено оновлювати. Тут можлива ситуація, коли кожна із задач буде очікувати до тих пір, доки друга не звільнить доступ ло загальних даних (Загальними даними тут є рахунок 1 і рахунок 2). Обидві задачі мають доступ до двох рахунків. Може статися так, що замість отримання доступу однієї задачі до двох рахунків, кожна задача отримає доступ до одного з рахунків. Оскільки задача В не може звільнити рахунок 1, доки не отримає доступу до рахунку 2, а задача С не може звільнити рахунок 2, доки не отримає доступу до рахунку 1, програма обслуговування рахунків електронного банку буде залишатися заблокованою. Зверніть увагу, що задачі В і С можуть ввести в стан нескінченого відтермінування і інші задачі (якщо такі є в системі). Якщо інші задачі очікують доступу до рахунків 1 або 2, а задачі В і С зв’язані взаємним блокуванням. При координації задач, які виконуються паралельно необхідно пам’ятати, що взаємне блокування і нескінченне відтермінування – це самі Проблема № 4: труднощі організації зв’язку Багато поширених паралельних середовищ (наприклад, кластери) в більшості випадків складаються з гетерогенних комп’ютерних мереж. Гетерогенні комп’ютерні мережі – це системи, які складаються з комп’ютерів різних типів, що працюють в загальному випадку під керуванням різних операційних систем і використовуються різні мережеві протоколи. Їх процесори можуть мати різну архітектуру, опрацьовувати слова різної довжини і використовувати різні машинні мови. Окрім різних операційних систем, комп’ютери можуть відрізнятися стратегіями планування і системами пріоритетів. Гірше всього, всі системи можуть розрізнятися параметрами передачі даних. Це робить обробку помилок та виключних ситуацій (виключень) особливо складною. Неоднорідність системи може ускладнюватись і іншими причинами. Наприклад, може виникнути необхідність в організації спільного використання даних програм, написаних на різних мовах, або розроблених з використанням різних моделей ПЗ. Адже загальне системне рішення може бути реалізовано по частинах, написаних на мовах Ада, С++ і Java. Це вносить проблеми міжмовного зв’язку. І навіть, якщо розподілена або паралельна система не є гетерогенною, залишається проблема взаємодії між декількома процесами або потоками. Оскільки кожен процес має власний адресний простір, то для спільного використання змінних, параметрів та значень, які повертаються функціям, необхідно застосувати технологію між процесорної взаємодії (interprocess communication - IPC), або МПВ- технологію. І хоча реалізація МПВ- методів необов’язково є самою складною частиною розробки системи ПЗ, тим не менше вони створюють додатковий рівень проектування, тестування і налагодження в створенні системи.
16. POSIX-специфікація: п’ять базових механізмів. POSIX- специфікація підтримує п’ять базових механізмів, які використовуються для реалізації взаємодії між процесами: · файли з засобами блокування та розблокування; · канали (неіменовані, іменовані і черги FIFO); · загальна пам'ять і повідомлення; · сокети; · семафори. Кожен з цих механізмів має переваги, недоліки, складні питання глухі кути які проектувальники і розробники ПЗ повинні обов’язково враховувати, якщо хочуть створити надійний і ефективний зв'язок між декількома процесами. Організувати взаємодію. між декількома потоками (які інколи називають полегшеними процесами) зазвичай простіше, ніж між процесами, оскільки потоки використовують загальний адресний простір. Це означає, що кожен поті в програмі може легко передавати параметри, приймати значення, які повертаються функціями, і отримувати доступ до глобальних даних. Але якщо взаємодію процесів або потоків не спроектовано відповідним чином, виникають такі проблеми, як взаємне блокування, нескінчені відтермінування та інші ситуації ²гонок² даних. Необхідно зауважити, що подані вище проблеми характерні як для розподіленого, так і для паралельного програмування. Не дивлячись на те що системи з виключно паралельною обробкою відрізняються від систем з виключно розподіленою обробкою, ми зумисне не проводили межі між проблемами координації в розподілених і паралельних системах. Частково це пояснюється деяким перекриттям існуючих проблем, і частково тим, що деякі рішення проблем в одній області часто можемо використати для вирішення в іншій. Але головна причина ²узагальненого² підходу полягає в тому, що в наш час гібридні (паралельно-розподілені) системи стають загальновживаними. Сучасний стан паралельній обробці даних визначають кластери і мережі. Унікальні кластерні конфігурації реалізують з готових продуктів. Такі архітектури містять колекцію комп’ютерів з багатьма процесорами, а одно процесорні системи відходять в минуле. В майбутньому передбачається, чисто розподілені системи будуть вбудовані у вигляді комп’ютерів з декількома процесорами. Це означає, що на практиці проектувальник або розробник ПЗ буде тепер все частіше стикатися з проблемами розподілу та паралелізму. Тому ми розглядаємо всі ці проблеми в одному просторі. В табл. 1. подано комбінації паралельного та розподіленого програмування з різними конфігураціями апаратного забезпечення. В табл.1 зверніть увагу на те, що існують конфігурації, в яких паралелізм досягається за рахунок використання декількох комп’ютерів. В такому випадку ефективніше скористатися бібліотеками PVM. І також існують конфігурації, в яких розподілене програмування може бути реалізоване лише на одному комп’ютері за рахунок розподілу логіки ПЗ на декілька процесів або потоків. Власне факт використання множини процесів або потоків говорить про те, що робота програми являє ²розподілений² характер. Комбінації паралельного і розподіленого програмування, подані в табл.1, показують, що проблеми конфігурації, за звичай характерні розподіленому програмуванню, можуть виникнути в ситуаціях, обумовлених паралельним програмування, і, навпаки, проблеми конфігурації, за звичай пов’язані з паралельним програмуванням, можуть виникати в ситуаціях, обумовлених розподіленим програмуванням.
Незалежно від конфігурації апаратних засобів, які використовуються, існує два базових механізми, що забезпечують взаємодію декількох задач: загальна пам'ять (пам’ять, що поділяється) і засоби передачі повідомлень. Для ефективного використання механізму загальної пам’яті програмісту необхідно передбачити рішення проблеми ²гонки² даних, взаємне блокування і нескінчене відтермінування. Схема передачі повідомлень повинна передбачати виникнення таких проблеми, як повідомлення, що перериваються, спотворені повідомлення, втрата інформації, помилкові повідомлення, надто довгі повідомлення, порушення термінів повідомлення, дочасні повідомлення.
17. Основні архітектури ПЗ для паралельного та розподіленого програмування. 18. UML-діаграми для створення багатопоточних паралельних та розподілених програм. 19. Два види процесів. 20. Блок керування процесами. 21. Анатомія процесу. 22. Стани процесу. 23. Планування процесу, стратегії планування. 24. Встановлення та отримання пріоритету процесу. 25. Перемикання контексту. 26. Відношення між батьківським та дочірніми процесами. 27. Читання та встановлення змінних середовища. 28. Породження процесів. 29. Завершення процесу. 30. Ресурси процесу, типи ресурсів. 31. Асинхронні та синхронні процеси. 32. Розбиття програми на задачі. 33. Визначення потоку. 34. Контекстні вимоги до потоку. 35. Переваги використання потоків. 36. Недоліки використання потоків. 37. Анатомія потоку. 38. Атрибути потоку. 39. Планування потоків. 40. Стани потоків.
Дата добавления: 2015-05-07; Просмотров: 1653; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |