рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Завершення процесу

Завершення процесу - раздел Образование, Лекція 4 5 Створення процесу Коли Процес Завершується, Його Блок Буп Руйнується, А Адресний Прос­тір, Який...

Коли процес завершується, його блок БУП руйнується, а адресний прос­тір, який він займав і ресурси звільняються. Код завершення розміщується в головну таблицю процесів. Як тільки батьківський процес прийме цей код, від­повідна структура таблиці процесів буде видалена. Процес завершується, якщо дотримані наступні вимоги.

· Всі інструкції виконані.

· Процес очевидним чином передає керування батьківському процесу або викликає системну функцію, яка завершує процес.

· Дочірні процеси можуть завершуватися автоматично при завершенні батьківського процесу.

· Батьківський процес подає сигнал про завершення свої дочірніх про­це­сів.

Аварійне завершення процесу може відбутися в тому випадку, якщо процес виконує неприпустимі дії.

· Процес потребує більше пам’яті, ніж система може йому надати.

· Процес намагається отримати доступ до недозволених ресурсів.

· Процес намагається виконати некоректну інструкцію або заборонені обчислення.

Завершення процесу може бути ініційоване користувачем, якщо цей процес інтерактивний.

Батьківський процес несе відповідальність за завершення (звільнення) своїх нащадків. Батьківський процес повинен очікувати до тих пір, доки не за­вершаться всі його дочірні процеси. Якщо батьківський процес виконає зчиту­вання коду завершення дочірнього процесу, процес-нащадок покидає систему нормально. Процес залишається в ²зомбованому² стані до тих пір, доки його предок не прийме відповідний сигнал. Якщо батько ніколи не приймає сигнал (оскільки він вже встиг сам завершитися і вийти з системи або не очікував за­вершення дочірнього процесу), процес-нащадок залишається в ²зомбованому² стані до тих пір, доки процес init (вихідний системний процес) не прийме його код завершення. Велика кількість ²зомбованих² процесів може негативно впли­нути на продуктивність системи.

4.1. Функції exit (), kill () і abort ()

Для самостійного завершення процес може викликати одну із двох фун­кцій: exit () і abort (). Функція exit () забезпечує нормальне завершення процесу , який викликає. При цьому будуть закриті всі дескриптори відкритих файлів, по­в’язаних з процесом. Функція exit () скине на диск всі відкриті потоки, які міс­тять ще не переписані буферизовані дані, після чого відкриті потоки будуть закриті. Параметр status приймає статус завершення процесу, який повертається батьківському процесу, що очікує, який в подальшому перезапускається. Пара­метр status може приймати наступні значення: 0, EXIT_FAILURE або EXIT _SUCCESS. Значення 0 говорить про вдале завершення процесу. Батьківський процес, що очікує, має доступ лише до молодших восьми бітів значення пара­ме­­тру status. Якщо батьківський процес не очікує завершення дочірнього про­цесу, його (що став ²зомбі²) ²всиновлює² процес init.

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

– Конец работы –

Эта тема принадлежит разделу:

Лекція 4 5 Створення процесу

Синопсис... pstree a c h frac Hpid l n p u G frac U... pid frac user...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Завершення процесу

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Створення процесу
Відношення між батьківським і дочірнім процесами;

Відношення між батьківським та дочірніми процесами
Процес, який створює, або породжує, інший процес, є батьківським (parent) процесом по відношенню до породженого, або дочірнього (child) проце­су. Процес init – батьківський (або предок) всіх

Використання системних функцій
2.1. Системна функція fork () Системна функція (або системний виклик) fork () створює новий процес, який є дублікатом процесу який його викликав, тобто його батька. При успіш­ному виконанн

Синопсис
# include <unistd> pid_t fork (void); Невдале виконання функції fork () можливе у випадку, коли система не володіє ресурсами для створення ще одного процесу. Це відбувається

Синопсис
# include <unistd.h int execl (const char *path, const char *arg0, . . ./*, (char *)0 */); int execle (const char *path, const char *arg0, . . ./*, (char *)0 *, char * const en

Синопсис
# include < unistd.h > long sysconf (int name); Ще одним обмеженням при використанні функцій сімейства exec та інших функцій, які застосовуються для створення процесів, є ма

Синопсис
# include < stdlib.h > char *getenv ( const char *name ); int setenv (const char *name, const char *value, int overwrite ); void unsetenv ( const char *name );

Синопсис
# include < stdlib.h > int system (const char *string); В якості параметру string можемо передати системну команду або ім'я файлу, який виконується. При вдалому виконанні фу

Використання POSIX-функцій для породження процесів
Подібно створенню процесів за допомогою функцій system () і fork- exec, функцій posix_spawn () створюють нові дочірні процеси із заданих образів про­цесів. Однак функції posix_spawn () дозволяють п

Синопсис
# include < stdlib.h > int posix_spawn (pid_t *restrict pid, const char *restrict path, const posix_spawn_file_actions_t * file_actions, const posix_spawnattr_t *restrict attrp, char

Синопсис
# include < stdlib.h > void exit (int status); void abort (void); Функцію kill () можемо використати для примусового завершення іншо­го процесу. Дана функція відпра

Ресурси процесу
При виконанні призначених на процес задач часто приходиться запису­вати дані у файл, відправляти їх на принтер або відображати отримані результа­ти на екран. Процесу можуть знадобитися дані, що вво

Синопсис
# include < sys/resource.h > int setrlimit (int resource, const struct rlimit *rlp); int getrlimit (int resource, struct rlimit *rlp); int getrusage (int who, struc

Синопсис
# include < sys/wait/h > pid_t wait (int *status); pid_t waitpid (pid_t pid, int *status, int oрtions); Функція waitpid () аналогічна функції wait () за виключенням

Розбиття програми на задачі
Аналізуючи розбиття програми на декілька задач, ми робимо перший крок до реалізації паралелізму в свою програму. В одно процесорному середо­вищі паралелізм реалізується засобами багатозадачності. Ц

Лінії видимого контуру
Породження процесі, як подано в лістінгу 6, можливе за допомогою фу­нкцій, які викликаються із функції mane (). // Лістінг 6. Основна гілка програми, з якої викликається функція,

Висновки
Паралелізм в С++ програмі досягається за рахунок поділу на декілька процесів або декілька потоків. Процес – це ²одиниця роботи², що реалізується операційною системою. Якщо програма – це а

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги