У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Лабораторна робота - Периферійні процесори
17
процесу. Весь цей час на іншому кінці лінії зв'язку периферійний процес чекає відповіді. У нього в розпорядженні немає ніяких структур, які зберігали б інформацію про файл, який відкривається; дескриптор, що повертається функцією open, являє собою покажчик на запис у таблиці користувальницьких дескрипторів файлу, що належить процесу-супутникові. Результати виконання

функції показані на малюнку 13.4.

Якщо виробляється звертання до системної функції write, периферійний процесор формує повідомлення, що складається з ознаки функції write, дескриптора файлу й обсягу записуваних даних. Потім із простору периферійного процеса він по лінії зв'язку копіює дані процесу-супутникові. Процес-супутник розшифровує отримане повідомлення, читає дані з лінії зв'язку й записує їх у відповідний файл (в якості вказівника на індекс якого і запис про який в таблиці файлів використовується вміщений в повідомленні дескриптор); всі зазначені дії виконуються на центральному процесорі. По

Центральний процесор Периферійний процесор

+--------------------------------------+ +---------------------+

| таблиця | | |

| користувацьких | | |

| дескрип- | | |

| таблиця таблиця торів | | |

| индексів файлів файла +--------+| | +---------+ |

| +-----+ +-----+ +-----+ |Процес- |----------| Процес | |

| | | | | | | |супутник|| | +---------+ |

| +-----+ +-----+ +-----+ +-+------+| | |

| | -+-+ | | ++- -+---+ | | |

| +-----+ | +-----+ |+-----+ дескрип- | | |

| | | +-+- -+-+| | тор файла | | |

| +-----+ +-----+ +-----+ | | |

| | | | | | | |

| +-----+ +-----+ | | |

| | | | | | | |

| +-----+ +-----+ | | |

+--------------------------------------+ +---------------------+

Малюнок 13.4. Виклик функції open з периферійного процесу

закінченні роботи процес-супутник передає периферійному процесу посилку, що підтверджує прийом повідомлення й утримує кількість байт даних, успішно переписаних у файл. Операція read виконується аналогічно; супутника інформує периферійний процес про кількість реально прочитаних байт (у випадку читання даних з термінала або з каналу ця кількість не завжди збігається з кількістю, зазначеною в запиті). Для виконання як тієї, так й іншої функції може знадобитися багаторазове пересилання інформаційних повідомлень по мережі, що визначається обсягом даних, що пересилаються, і розмірами мережних пакетів.

Єдиною функцією, що вимагає внесення змін при роботі на центральнім процесорі, є системна функція fork. Коли процес виконує цю функцію на ЦП, ядро вибирає для нього периферійний процесор і посилає

повідомлення спеціальному процесу -серверу, інформуючи останній про те, що збирається приступити до вивантаження поточного процесу. Припускаючи, що сервер прийняв запит, ядро за допомогою функції fork створює новий периферійний процес, виділяючи запис у таблиці процесів й адресний простір. Центральний процесор вивантажує копію процесу, що викликав функцію fork, на периферійний процесор, затираючи тільки що виділений адресний простір, породжує локальний супутник для зв'язку з новим периферійним процесом і посилає на периферію повідомлення про необхідність ініціалізації лічильника команд для нового процесу. Процес-супутник (на ЦП) є нащадком процесу, викликаного функцію fork; периферійний процес із технічної точки зору виступає нащадком процесу-сервера, але по логіці він є нащадком процесу, що викликає функцію fork. Процес-сервер не має логічного зв'язку з нащадком по завершенні функції fork; єдине завдання сервера полягає в наданні допомоги при вивантаженні нащадка. Через сильний зв'язок між компонентами системи (периферійні процесори не мають у своєму розпорядженні автономію) периферійний процес й процес-супутник мають той самий код ідентифікації. Взаємозв'язок між процесами показаний на малюнку 13.5: безперервною лінією показаний зв'язок типу "родич-нащадок", пунктиром - зв'язок між рівноправними партнерами.

Коли процес виконує функцію fork на периферійному процесорі, він посилає повідомлення своєму супутникові на ЦП, що і виконує після цього всю вищеописану послідовність дій. Супутник вибирає новий периферійний

Центральний процесор Периферійний процесор

+----------------------+ +----------------------+

| +------------------+ | | +------------------+ |

| | Процес-породжувач|-------------| Процес-сервер | |

| +---------+--------+ | | +------------------+ |

| | | | |

| | | | |

| +---------+--------+ | | +------------------+ |

| | Породжений супут-|-------------| Породжений про- | |

| | ник | | | | цес | |

| +------------------+ | | +------------------+ |

+----------------------+ +----------------------+

Малюнок 13.5. Виконання функції fork на центральному процесорі

процесор і робить необхідні приготування до вивантаження образа старого процесу: посилає периферійному процесу-родичеві запит на читання його образу, у відповідь на який на іншому кінці каналу зв'язку починається передача запитуваних даних. Супутник зчитує переданий образ і переписує

його периферійному нащадкові. Коли вивантаження образа закінчується, процес-супутник виконує функцію fork, створюючи свого нащадка на ЦП, і передає значення лічильника команд периферійному нащадкові, щоб останній знав, з якої адреси починати виконання. Очевидно, було б краще, якби нащадок процесу-супутника призначався периферійному нащадкові як родич, однак в нашому випадку породжені процеси одержують можливість виконуватися й на інших периферійних процесорах, а не тільки на тім, на якому вони створені. Взаємозв'язок між процесами по завершенні функції fork показана на малюнку 13.6. Коли периферійний процес завершує свою роботу, він посилає відповідне повідомлення процесу-супутникові й той теж завершується. Від процеса-супутника ініціатива завершення роботи виходити не може.

Центральний процесор

+-------------------------------------------------------+

| +-------------------+ +-----------------+ |

|


Сторінки: 1 2 3 4