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



Лабораторна робота - Периферійні процесори
17
|Супутник-породжувач+----------+ Супутник-нащадок| |

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

| - - |

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

- -

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

| - | | - |

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

| | Периферійний породжувач| | | | Периферійни нащадок | |

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

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

Периферійний процесор Периферійний процесор

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

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

Оскільки процес-супутник виконує системні функції від імені периферійного процесу, він повинен реагувати на сигнали, узгоджуючи свої дії з посліднім. Якщо в однопроцесорній системі сигнал змушує процес завершити виконання функції аварійно, процесу-супутникові в багатопроцесорній системі варто поводитися тим же чином. Те ж саме можна сказати й про той випадок, коли сигнал спонукає процес до завершення своєї роботи за допомогою функції exit: периферійний процес завершується й посилає відповідне повідомлення процесу-супутникові, що, зрозуміло, теж завершується.

Коли периферійний процес викликає системну функцію signal, він зберігає поточну інформацію в локальних таблицях і посилає повідомлення своєму

супутникові, інформуючи його про те, чи треба зазначений сигнал приймати або ж ігнорувати. Процесу-супутникові байдуже, чи виконувати перехоплення сигналу чи діяти за замовчуванням. Реакція процесу на сигнал залежить від трьох факторів (Малюнок 13.7): чи надходить сигнал під час виконання процесом системної функції, чи зроблено за допомогою функції signal вказівка про ігнорування сигналу, чи виникає сигнал на цьому ж периферійному процесорі або на

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

| алгоритм sighandle /* алгоритм обробки сигналів */ |

| вхідна інформація: відсутній |

| вихідна інформація: відсутній |

| { |

| якщо (поточний процес є чиїмось супутником або |

| має прототип) |

| { |

| якщо (сигнал ігнорується) |

| повернути керування; |

| якщо (сигнал надійшов під час виконання системної |

| функції) |

| поставити сигнал перед процесом-супутником; |

| у противному випадку |

| послати повідомлення про сигнал периферійному |

| процесу; |

| } |

| у противному випадку /* периферійний процес */ |

| { |

| /* чи надійшов сигнал під час виконання системної |

| * функції чи ні |

| */ |

| послати сигнал процесу-супутнику; |

| } |

| } |

| |

| алгоритм satellite_end_of_syscall /* завершення систем- |

| * ної функції, виз- |

| * ваної периферійним |

| * процесом */ |

| вхідна інформація: відсутній |

| вихідна інформація: відсутній |

| { |

| якщо (під час виконання системної функції надійшло |

| переривання) |

| послати периферійному процесу повідомлення про |

| переривання, сигнал; |

| у противному випадку /* виконання системної функції не|

| * переривалося */ |

| послати відповідь: включити прапор, що показує |

| поступлення сигналу; |

| } |

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

Малюнок 13.7. Обробка сигналів у периферійній системі

якомусь іншому. Перейдемо до розгляду різних можливостей.

Допустимо, що периферійний процес призупинив свою роботу на той час, поки процес-супутник виконує системну функцію від його імені. Якщо сигнал виникає в іншому місці, процес-супутник виявляє його раніше, ніж периферійний процес. Можливі три випадки.

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

2. Якщо процес зробив вказівку про ігнорування сигналу даного типу, супутник продовжує додержуватися алгоритму виконання системної функції, не виходячи зі стану зупинки по longjmp. У відповіді, що посилається периферійному процесу, повідомлення про одержання сигналу буде відсутнє.

3. Якщо після одержання сигналу процес-супутник перериває виконання системної функції (по longjmp), він інформує про це периферійний процес і повідомляє йому номер сигналу.

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

Периферійний процес Процес-супутник

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

| Викликає системну функцію read -

| Посилає повідомлення про виклик функції -

| процесу-супутникові -

| Припиняється до одержання -

| відповіді від процесу-супутника Одержує повідомлення

| - про виклик системної

| - функції read

| - Читає дані з тер-

| - міналу

| - Припиняється в

| - очікуванні одержання

| - порції даних

| - -

| - -

| - Сигнал (користувач

| - нажав клавішу "break")

| - Виходить зі стану

| - призупинки

| - Припиняє виконання

| - системної функції

| - Посилає відповідь пери-

| - ферійному процесу:

| - виконання функції

| - перервано

| Виходить зі стану призупинки

| Аналізує відповідь

v Обробляє сигнал

Малюнок 13.8. Переривання під час виконання системної функції

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


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