ЛАБОРАТОРНА РОБОТА.
з предмету: «Розподілені системи».
Тема: «Периферійні процесори».
Лабораторна робота.
Тема: Периферійні процесори.
Мета:Ознайомитись з архітектурою перефирійної системи,та розглянути принцип дії перефирійних процесорів.
Хід роботи.
Архітектура периферійної системи показана на малюнку 13.2. Мета такої конфігурації полягає в підвищенні загальної продуктивності мережі за рахунок перерозподілу виконуваних процесів між центральним і периферійними процесорами. У кожного з периферійних процесорів немає в розпорядженні інших локальних периферійних пристроїв, крім тих, які йому потрібні для зв'язку з центральним процесором. Файлова система й всі пристрої перебувають у розпорядженні центрального процесора. Припустимо, що всі користувальницькі процеси, що виконуються на периферійному процесорі і між периферійними процесорами, не переміщаються; будучи один раз передані процесору, вони перебувають
на ньому до моменту завершення. Периферійний процесор містить полегшений варіант операційної системи, призначений для обробки локальних звернень до системи, керування перериваннями, розподілу пам'яті, роботи з мережевими протоколами й із драйвером пристрою зв'язку з центральним процесором.
При ініціалізації системи на центральному процесорі ядро по лініях зв'язку завантажує на кожному з периферійних процесорів локальну операційну систему. Любий виконуваний на периферії процес пов'язаний із процесом-супутником, що належить центральному процесору (див. [Birrell 84]); коли процес,перетікає на периферійному процесорі, викликає системну функцію, що має потребу в послугах винятково центрального процесора, периферійний процес зв'язується зі своїм супутником і запит надходить на обробку на центральний процесор. Процес-супутник виконує системну функцію й посилає результати назад на периферійний процесор. Взаємини периферійного процесу зі своїм супутником схожі на відносини клієнта й сервера, докладно розглянуті нами далі: периферійний процес виступає клієнтом свого супутника, що підтримує функції роботи з файловою системою. При цьому віддалений процес-сервер має тільки одного клієнта. У наступних розділах ми роздивимося процеси-сервери, що мають клієнтів.
Центральний процесор Периферійний процесор
+-----------------------------+ +-----------------------------+
| +------------+ | | +------------+ |
| | Процесори | | | | Процесори | |
| +-----+------+ | | +-----+------+ |
| ----+-------+------+------- | | ----+-------+-------------- |
| +---+----+ +-------+------+ | | +---+----+ |
| | Пам’ять| | Периферійні | | | | Пам’ять| |
| | | | пристрої | | | | | |
| +--------+ +--------------+ +-++-+ +--------+ |
+-----------------------------+ ++ +-----------------------------+
|
+-------------+---------------+
| +------------+ |
Периферійний | | Процесори | |
процесор | +-----+------+ |
| ----+-------+-------------- |
| +---+----+ |
| | Пам’ять| |
| | | |
| +--------+ |
+-----------------------------+
Малюнок 13.2. Конфігурація периферійної системи
Коли периферійний процес викликає системну функцію, яку можна проробити локально, ядру немає потреби надсилати запит процесу-супутникові.
Так, наприклад, з метою одержання додаткової пам'яті процес може викликати для локального виконання функцію sbrk. Однак, якщо потрібні послуги центрального процесора, наприклад, щоб відкрити файл, ядро кодує інформацію до переданих у викликаній функції параметрах й умовах виконання процесу в якесь повідомлення, що посилає процесу-супутникові (Малюнок 13.3). Повідомлення містить у собі ознаку, з якої видно, що системна функція виконується процесом-супутником від імені клієнта, передані функції параметри й дані про середовище виконання процесу (наприклад, користувальницький і груповий коди ідентифікації), які для різних функцій різні. Частина повідомлення, що залишилася, являє собою дані змінної довжини (наприклад, складене ім'я файлу або дані, призначені для запису функцією write).
Процес-супутник чекає надходження запитів від периферійного процесу; при одержанні запиту він декодує повідомлення, визначає тип системної функції, виконує її й перетворює результати у відповідь, що посилає периферійному процесу відповідь, крім результатів виконання системної функції, включає в себе повідомлення про помилку (якщо вона мала місце), номер сигналу й масив даних змінної довжини, що містить, наприклад, інформацію, прочитану з файлу. Периферійний процес припиняється до одержання відповіді, а одержавши його, робить розшифровку й передає результати користувачеві. Така загальна схема обробки звертань до операційної системи; тепер перейдемо до більш детального розгляду окремих функцій.
Формат повідомлення
+----------------+----------+---------------+--------------------+
| Ознака виклику|Параметри |Дані про сере- | Складене ім’я |
| системної функ-|системної |довище виконан-|------- чи ------|
| ції |функції |ня процеса | потік даних |
+----------------+----------+---------------+--------------------+
Відповідь
+------------+-----------+---------+---------------------+
| Результати |Повідомлен-| Номер | |
| виконання |ня про | сигнала |---- Потік даних ---|
| системної |помилку | | |
| функції | | | |
+------------+-----------+---------+---------------------+
Малюнок : Формати повідомлень
Для того, щоб пояснити, яким чином працює периферійна система,розглянемо ряд функцій: getppid, open, write, fork, exit й signal. Функція
getppid досить проста, оскільки вона пов'язана із простими формами запиту й відповіді, якими обмінюються периферійний і центральний процесори. Ядро на периферійному процесорі формує повідомлення, що має ознаку, з якого видно, що запитуваною функцією є функція getppid, і посилає запит центральному процесору. Процес-супутник на центральному процесорі
читає повідомлення з периферійного процесора, розшифровує тип системної функції, виконує її й одержує ідентифікатор свого родича. Потім він формує відповідь і передає його периферійному процесу, що перебуває в стані очікування на іншому кінці лінії зв'язку. Коли периферійний процесор получає відповідь, вона передає його процесу, що викликав системну функцію getppid. Якщо ж периферійний процес зберігає дані (такі, як ідентифікатор процесу-родича) у локальній пам'яті, йому взагалі не прийдеться зв'язуватися зі своїм супутником.
Якщо виробляється звертання до системної функції open, периферійний процес посилає своєму супутникові відповідне повідомлення, що включає ім'я файлу й інші параметри. У випадку успіху процес-супутник виділяє індекс і точку входу в таблицю файлів, відводить запис у таблиці користувацьких дескрипторів файлу у своєму просторі й повертає дескриптор файлу периферійному