1 / 86

Лекція 13. Процеси розподiлених систем

Лекція 13. Процеси розподiлених систем. Діденко Дмитро Георгійович Старший викладач кафедри ММСА ННК «ІПСА» Національний технічний університет України «Київський політехнічний інститут» м. Київ, Україна. Питання заняття. Потоки виконання . Процеси клiєнтiв. Процеси серверiв.

Download Presentation

Лекція 13. Процеси розподiлених систем

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Лекція 13. Процеси розподiлених систем Діденко Дмитро Георгійович Старший викладач кафедри ММСА ННК «ІПСА» Національний технічний університет України «Київський політехнічний інститут» м. Київ, Україна

  2. Питання заняття • Потоки виконання. • Процеси клiєнтiв. • Процеси серверiв. • Перенесення коду. • Програмнi агенти. Процеси розподiлених систем

  3. 1. Потоки виконання (threads) Потоки виконання (threads) являють собою бiльш тонке розподiлення пiд час оброблення даних, нiж процеси оброблення даних. Процес часто визначається програмою, яка виконується одним iз вiртуальних процесорiв ОС. Вiдслiдковуються процеси за допомогою таблиць процесiв (process table), якi мiстять записи даних (значення регiстрiв, процесора, карти пам'ятi тощо). Пiд час формування процесу ОС має створити абсолютно незалежний адресний простiр. Процеси розподiлених систем

  4. 1.1.Перемикання процесора Перемикання процесора мiж двома процесами - досить складна операцiя, оскiльки потребує збереження контексту процесора (регiстрiв, вказiвникiв тощо). Пiдтримання багатьох процесiв часто потребує пiдкачування (swapping) процесiв в операцiйному запам'ятовувальному пристрої (ОЗП) з диска. Потоки також реалiзуються бiльш простими програмами порiвняно з процесами. Процеси розподiлених систем

  5. 1.2.Багатопотоковi процеси За контекстом потокiв можна виокремити особливостi реалiзацiї потокiв для розподiлених i нерозподiлених систем. Багатопотоковi реалiзацiї в них мають рiзнi особливостi. У нерозподiлених системах багатопотоковi процеси не блокуються за наявностi блокувальних системних викликiв потокiв. Багатопотокову структуру часто застосовують для побудови великих додаткiв, що характерно, наприклад, для середовища UNIX. Процеси розподiлених систем

  6. 1.3.Мiжпроцесорна взаємодiя Мiжпроцесорна взаємодiя через механiзм мiжпроцесорних комунiкацiй IPC (Inter Process Communication) передбачає наявнiсть каналiв (iменованих), черги повiдомлень i сегментiв пам'ятi сумiсного використання. Процеси розподiлених систем

  7. 1.4. Схема перемикання контекстiв пiд час виконання IPC S1 - перемикання з простору користувача в простiр ядра; S2 - перемикання контексту з процесу А на процес В; S3 - перемикання з простору ядра ОС у простiр користувача. Процеси розподiлених систем

  8. 1.5.Перемикання контекстів Перемикання S1 потребує змiни карти пам'ятi у блоцi керування пам'яттю MMU (Memory Management Unit), а також скидання асоцiативного буфера сторiнок TLB (Translation Lookaside Buffer). У ядрi вiдбувається перемикання S2, за яким може бути активiзовано перемикання S3, що знову змiнює карти пам'ятi MMU i TLB. Процеси розподiлених систем

  9. 1.6.Потоки виконання Потоки виконання зазвичай мають вигляд пакетiв з вiдповiдними можливостями створення i знищення потокiв та роботи зi змiнними синхронiзацiї (м'ютекси, умовнi змiннi). Пакети реалiзуються з використанням бiблiотек для роботи з потоками в режимi користувача або iз застосуванням ядра, яке керує потоками. Процеси розподiлених систем

  10. 1.7.Застосування бібліотек Застосовувати бiблiотеки простiше й дешевше. Процедури бiблiотек виконуються в адресному просторi користувача iз застосуванням стекiв. Перемикання потокiв стосуються лише регiстрiв процесора i немає потреби змiнювати карту пам'ятi, контролювати завантаження процесора тощо. Недолiками є блокування процесу за блокувального системного виклику. Цей недолiк можна подолати реалiзацiєю потокiв виконання у ядрi ОС. Це потребує системних викликiв для виконання операцiй з потоками (створення, знищення, синхронiзацiя тощо), що зводить нанiвець переваги. Процеси розподiлених систем

  11. 1.8. Схема виконання полегшених процесiв рiвня ядра i потокiв рiвня користувача Процеси розподiлених систем

  12. 1.9.Відношення процесів і полегшених процесів На один процес може бути кiлька полегшених процесiв. Система надає пакет потокiв для асинхронного виконання на користувацькому рiвнi додатками операцiй зi створення i знищення потокiв виконання. Процеси розподiлених систем

  13. 1.10.Синхронізація Полегшений процес отримує власний стек i вказiвник на пошук потоку. Таблиця потокiв виконання використовується полегшеними процесами сумiсно, а її захист вiд одночасного доступу реалiзується за допомогою м'ютексiв, створених у просторi користувача, тобто синхронiзацiя не потребує втручання ядра. Процеси розподiлених систем

  14. 1.11.Прицес виконання Процес виконання блокувального системного виклику переходить до режиму ядра, а ОС може прийняти рiшення про перехiд на iнший полегшений процес, не повiдомляючи додатку. Найбiльш полегшенi процеси можуть бути пристосованi для роботи в мультипроцесорному середовищi, що забезпечує паралельнiсть їх виконання. Процеси розподiлених систем

  15. 1.12.Недоліки полегшених процесів Недолiком використання полегшених процесiв є потреба їх створення. Альтернативою є пiдхiд активiзацiї планувальника (scheduler activations), за яким функцiї планувальника передаються в пакет потокiв пiд час блокування ядра. Процеси розподiлених систем

  16. 1.13.Особливості блокування Важливою властивiстю потокiв у розподiлених системах є зручна реалiзацiя блокувальних системних викликiв без блокування всього процесу на час виконання потоку. Це дозволяє подати взаємодiї як одночасне пiдтримання значної кiлькостi логiчних з'єднань. Як приклад можна навести багатопотоковi процеси клiєнта i серверiв. Процеси розподiлених систем

  17. 1.14.Приклад багатопотоковий Web-браузер Зокрема, клiєнт як багатопотоковий Web-браузер спочатку отримує основний HTML-файл, а далi активiзує потоки виконання, якi вiдповiдають за довантаження iнших частин сторiнки. Кожний потiк виконує окремi з'єднання iз сервером i отримує данi, зокрема iз застосуванням блокувальних системних викликiв. Процеси розподiлених систем

  18. 1.15.Репліковані сервери Додатковою перевагою багатопотоковостi є можливiсть використовувати реплiкованi сервери, що забезпечує паралельнiсть передавання даних. Реплiкованi сервери розмiщенi в одному й тому ж мiсцi i мають однакове iм'я. Iз надходженням запиту на Web-сторiнку запит передається одному iз серверiв, наприклад, iз застосуванням алгоритму циклiчного обслуговування або iншого алгоритму вирiвнювання навантаження. Процеси розподiлених систем

  19. 1.16.Багатопотоковість сервера Багатопотоковiсть серверiв дозволяє спростити код сервера i розроблення серверiв для органiзацiї паралельного виконання кiлькох додаткiв. Наприклад, файловий сервер перiодично блокується очiкуванням диску пiд час оброблення отриманого запиту i повернення вiдповiдi. Процеси розподiлених систем

  20. 1.17. Багатопотоковий сервер за схемою «диспетчер-робочий потiк» Процеси розподiлених систем

  21. 1.20.Багатопотоковий сервер за схемою «диспетчер-робочий потiк» Нехай файловий сервер перiодично блокується очiкуванням диску. «Потiк-диспетчер» зчитує вхiднi запити на файловi операцiї, вибирає робочий потiк, який перебуває у станi очiкування, блокує його i передає йому запит. Цей потiк виконує блокувальне зчитування з локальної файлової системи, що призводить до його призупинення до моменту зчитування з диску. На час призупинення потоку диспетчер може передати керування iншому робочому потоку виконання. Процеси розподiлених систем

  22. 1.21.Відсутність потоків Якщо немає потокiв виконання, файловий сервер змушений був би чекати завершення дискових операцiй до оброблення наступного запиту, тобто багатопотокове виконання збiльшує продуктивнiсть оброблення за рахунок бiльш повного завантаження процесора машини. Процеси розподiлених систем

  23. 1.22.Сервер як скінчений автомат Можливе також застосування сервера як великого скiнченного автомата. Запит, що надiйшов, перевiряє єдиний потiк виконання. Вiн може звернутись до кешу або до диска. Однак замiсть блокування потiк виконання записує стан потокового запиту в таблицю i переходить до очiкування та отримання нового повiдомлення. Це повiдомлення може бути як вiдповiддю, так i результатом вiдповiдi на запит. Процеси розподiлених систем

  24. 1.23.Особливості роботи потоків Таким чином, потоки дозволяють зберегти iдею послiдовностi процесiв (зокрема, пiд час RPC роботи з диском) i паралельнiсть роботи, що пiдвищує продуктивнiсть роботи системи. Процеси розподiлених систем

  25. 2. Процеси клiєнтiв Одне з основних завдань клiєнта - забезпечити iнтерфейс мiж користувачем i вiддаленим сервером. Поширеним є застосування графiчних iнтерфейсiв, серед яких важливе мiсце займає система X Windows. Система включає Х-ядро (X-kernel), яке мiстить потрiбнi для керування термiналом драйвери, i має базову органiзацiю. Iнтерфейс нижнього рiвня, який надає Х-ядро, є доступним додаткам завдяки бiблiотецi X-lib. Система має два типи програм: звичайнi додатки i менеджери вiкон. Процеси розподiлених систем

  26. 2.1. Органiзацiя системи X Windows Процеси розподiлених систем

  27. 2.2.Робота з вікнами Додатки викликають через Xlib створення на екранi вiкна для введення i виведення. Система забезпечує для активних вiкон пересилання всiх повiдомлень вiд «мишки» i клавiатури додатком. Додаток менеджера вiкон обмежує використання вiкон звичайними додатками (наприклад, обмеження на перекривання вiкон, колiр). Процеси розподiлених систем

  28. 2.3.Розташування X-ядра X-ядро i додатки можуть бути розташованi на рiзних машинах. За допомогою X-протоколу i комунiкацiйного протоколу мережi екземпляри Xlib можуть обмiнюватись даними i подiями, що забезпечує створення рiзноманiтних варiантiв архiтектури «клiєнт-сервер». У найпростiших випадках ядро мiститься в однiй машинi, а код додатка - в iншiй, яку називають X-термiналом (x-terminal). Процеси розподiлених систем

  29. 2.4.Інтеграція у складеному документі Iнтерфейс користувача дозволяє iнтегрувати рiзнi документи у складений документ (compound document) з приховуванням додаткiв якi керують цими документами. Процеси розподiлених систем

  30. 2.5.Засоби локального оброблення i комунiкацiї Клiєнтське програмне забезпечення охоплює також засоби локального оброблення i комунiкацiї, зокрема додатки «клiєнт-сервер» (Наприклад, лiчильники купюр, зчитувачi кодiв, автовiдповiдачi тощо). Процеси розподiлених систем

  31. 2.6.Прозорiсть розподiлення Прозорiсть розподiлення досягається застосуванням заглушок клiєнта, якi дозволяють приховати реальну взаємодiю й архiтектуру системи. Є три способи реалiзацiї прозоростi: розмiщення, перенесення i перемiщення. Так, наприклад, клiєнт може приховувати вiд додатка мiсцеположення сервера пiд час прив'язування. Прозорiсть реплiкацiї можна забезпечувати розсиланням усiм реплiкам запиту. Процеси розподiлених систем

  32. 2.7.Реплікація Усi реплiки отримують одне й те саме звернення. Замiсник клiєнта забезпечує прозоре збирання всiх вiдповiдей i пересилає клiєнту одне з повернених значень. Процеси розподiлених систем

  33. 2.8.Прозорiсть до збоїв Прозорiсть до збоїв у програмному забезпеченнi промiжного рiвня пiдтримується конфiгуруванням, яке передбачає багатократнi спроби зв'язку iз сервером i вибiр у разi потреби iншого сервера. Процеси розподiлених систем

  34. 3. Процеси серверiв Стандартним сервером або просто сервером є процес реалiзацiї деякої служби, потрiбної групi клiєнтiв. За органiзацiєю розрiзняють iтеративнi сервери (iterative server), якi самi обробляють запит i, у разi потреби, повертають клiєнту вiдповiдь, та паралельнi сервери (concurrent server), якi передають повiдомлення у потiк виконання або в iнший процес, обробляють запит i надсилають вiдповiдь (наприклад, в UNIX). Процеси розподiлених систем

  35. 3.1.Типи клієнтів За способом звернення клiєнта до сервера розрiзняють процеси iз запитом у кiнцеву точку (endpoint) або порт машини iз сервером, i процеси iз запитом з динамiчним визначенням кiнцевої точки, наприклад, з використанням демона. Процеси розподiлених систем

  36. 3.2. Прив'язування клiєнта до сервера iз застосуванням демона DCE Процеси розподiлених систем

  37. 3.3.Демон DCE (Distributed Computer Environment) Демон DCE (Distributed Computer Environment) переглядає загальнодоступнi кiнцевi точки. Для пiдвищення продуктивностi застосовують суперсервер (superserver), який переглядає всi кiнцевi точки запитаної служби i розгалужує процес оброблення серед серверiв. Процеси розподiлених систем

  38. 3.4. Прив'язування клiєнта до сервера з використанням суперсервера UNIX Процеси розподiлених систем

  39. 3.5.Види розірвання зв'язку За перериванням роботи сервера розрiзняють кiлька способiв розривання зв'язку мiж клiєнтом i сервером. Найпростiший - це застосування клiєнтського додатка, що призводить до переривання зв'язку. Ще один спосiб - надсилання один одному сигналу кiнця зв'язку (out-of-band), який обробляється з вищим прiоритетом. Процеси розподiлених систем

  40. 3.6.Типи серверів За зберiганням сервером iнформацiї про клiєнта розрiзняють сервери без фiксацiї стану (stateless server) - Web-сервери - i сервери з фiксацiєю стану (stateful server) - файловi сервери. В останньому випадку ведеться таблиця пар (клiєнт, файл), яка дозволяє вiдслiдковувати пересилання останнiх версiй файлу в разi збоїв. Процеси розподiлених систем

  41. 3.7.Сервер об'єктiв (object server) Сервером об'єктiв (object server) називають сервер, орiєнтований на пiдтримання розподiлених об'єктiв. На вiдмiну вiд стандартного сервера сервер об'єктiв не є конкретною службою, а лише надає засоби доступу до локальних об'єктiв за запитами вiд вiддалених клiєнтiв. Сервер об'єктiв - це мiсце для зберiгання об'єктiв. Процеси розподiлених систем

  42. 3.7.Сервер об'єктiв (продовження) Об'єкт складається з двох частин: даних, якi вiдображають його стани, i кода, який реалiзує його методи. За умови однакового подання звернення до них однакове, що характерно для середовищ DCE. Для рiзних об'єктiв є й рiзнi способи звернення до них. Зокрема, за пiдтримання сервером кiнцевих потокiв виконання, по одному на кожний об'єкт, сервер передає об'єкту запит. Можна виокремити також потiк виконання за кожним запитом, однак при цьому треба захистити об'єкт вiд одночасного доступу. Процеси розподiлених систем

  43. 3.9.Полiтика активiзацiї Правила доступу до об'єкта називають полiтикою активiзацiї (activation policies), оскiльки об'єкт перемiщується в адресний простiр сервера. Процеси розподiлених систем

  44. 3.10.Адаптер об'єктiв (object adapter) Механiзм групування об'єктiв вiдповiдно до полiтики активiзацiї кожного з них називають адаптером об'єктiв (object adapter) або пакувальником об'єктiв (object wrapper). Адаптер контролює один або кiлька об'єктiв. На серверi можуть одночасно працювати кiлька адаптерiв об'єктiв. Пiсля отримання сервером запиту на звернення до об'єкта цей запит спочатку передається вiдповiдному адаптеру об'єктiв. Процеси розподiлених систем

  45. 3.11.Робота адаптера об'єктiв Адаптер об'єктiв вибирає iз запиту посилання на об'єкт i надсилає запит через серверну заглушку об'єкта вiдповiдно до своєї полiтики активiзацiї. Заглушка зазвичай генерується з визначення iнтерфейсу об'єкта, виконує демаршалiнг запиту i звертається до вiдповiдного методу. Процеси розподiлених систем

  46. 3.12. Сервер об'єктiв з рiзною полiтикою активiзацiї Процеси розподiлених систем

  47. 4. Перенесення коду Перенесення коду часто зумовлено потребою збiльшити продуктивнiсть розподiленої системи. Наприклад, у системi «клiєнт-сервер» iснують ситуацiї, в яких частину клiєнтських операцiй передано на сервер для зменшення трафiку «клiєнт-сервер» за рахунок передавання лише результатiв оброблення iнформацiї телекомунiкацiйними каналами. Процеси розподiлених систем

  48. 4.1.Мета перенесення коду У системах з iнтерактивною взаємодiєю сервера i клiєнта виникає потреба перенесення операцiй iз сервера на клiєнта. Метою перенесення може бути забезпечення паралельного оброблення даних кiлькома клiєнтами, що дозволяє уникнути проблем, пов'язаних з паралельним програмуванням, i спростити програмне забезпечення. Наприклад, у випадку пошуку у Web має сенс реалiзувати пошуковий запит у виглядi невеликої мобiльної програми, яка переноситься iз сайту на сайт. Поширення копiй таких програм серед сайтiв дозволяє лiнiйно збiльщувати швидкiсть пошуку. Процеси розподiлених систем

  49. 4.2.Переваги перенесення коду Перенесення кодiв збiльшує також гнучкiсть системи за рахунок динамiчного реконфiгурування розподiленої системи. Наприклад, клiєнт може спочатку активiзувати потрiбне програмне забезпечення i лише потiм звертатись до сервера. Процеси розподiлених систем

  50. 4.3. Динамiчне конфiгурування клiєнта для зв'язку iз сервером Процеси розподiлених систем

More Related