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

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

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

Відношення між батьківським та дочірніми процесами - раздел Образование, Лекція 4 5 Створення процесу Процес, Який Створює, Або Породжує, Інший Процес, Є Батьківським (Pare...

Процес, який створює, або породжує, інший процес, є батьківським (parent) процесом по відношенню до породженого, або дочірнього (child) проце­су. Процес init – батьківський (або предок) всіх процесів користувача – перший процес, видимий системою UNIX після її завантаження. Процес init організує систему, при необхідності виконує інші програми і запускає демон-програми (demon), тобто мережеві програми, які працюють у фоновому режимі. Ідентифі­катор процесу init (PID) рівний 1. Дочірній процес має свій унікальний іденти­фікатор (PID), БУП-блок і окрему структуру в таблиці процесів. Дочірній про­цес також може новий процес. Додаток, що виконується, може створювати де­рево процесів. Наприклад, батьківський процес виконує пошук накопичувача на жорстких дисках для заданого HTML-документу. Ім'я цього HTML-докумен­ту записано у глобальній структурі даних, подібно списку, який містить всі за­пити на документи. Після успішного знаходження документ видаляється із спи­ску запитів, і його маршрут (шлях в мережі) записується в іншу глобальну стру­ктуру даних, яка містить шляхи знайдених документів. Щоб забезпечити прий­нятну реакцію на запити користувача, для процесу передбачено обмеження у вигляді п’яти неопрацьованих запитів у списку. По досягненню цієї межі поро­джуються два нових процеси. Якщо породжений процес в свою чергу досягає межі, він створить ще два нових процеси. Створене таким чином дерево проце­сів подано на рис. 1. Довільний процес може мати тільки один батьківський, але
множину дочірніх процесів.

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

Деякі атрибути предка не успадковуються нащадком. Як говорилося вище, дочірній процес не успадковує PID предка і його БУП-блок. Нащадок не успадковує ніяких файлових блокувань, створених предком або неопрацьова­них сигналами. Для дочірнього процесу використовуються власні значення та­ких часових характеристик, як коефіцієнт завантаження процесора і час створе­ння. Незважаючи на те що дочірні процеси пов’язані певними відно­синами з предками, вони все ж функціонують як окремі процеси. Їх програмні та стекові лічильники діють окремо. Оскільки розділи даних копіюються, а не використо­ву­ються спільно, процес-нащадок може змінювати значення своїх змінних, не впливаючи на батьківську копію даних. Батьківський та дочірній процеси спі­льно використовують розділ програмного коду і виконують інструк­ції, розмі­щені безпосередньо після виклику системної функції, яка створила системний процес. Вони не виконують ці інструкції на етапі блокування із-за конкуренції за процесор зі всіма іншими процесами, завантаженими в пам'ять.

Після створення образ дочірнього процесу може бути замінено іншим образом, що виконується. Розділи програмного коду, даних та стеків, а також його масив пам’яті перезаписуються новим образом процесу. Новий процес зберігає свої ідентифікаційні номери (PID і PPID). Атрибути, що зберігаються новим процесом після заміни образу який виконується, подано в табл. 1. В ній також вказані системні функції, які повертають дані атрибути. Змінні середови­ща також зберігаються, якщо під час заміни образу процесу, що виконується, не були задані нові змінні середовища. Файли, які були відкриті до моменту замі­ни образу що виконувався, залишаються відкритими. Новий процес буде ство­рювати файли з тими ж файловими розширеннями. Час ПЦ при цьому не онов­люється.

Таблиця 1. Атрибути,що зберігаються новим процесом після заміни його образу який виконується, образом новогопроцесу
Атрибути, що зберігаються Функції
Ідентифікатор (ID) процесу getpid ()
ID батьківського процесу getppid ()
ID групи процесів getppid ()
Сеансові членство getsid ()
Ідентифікатор ефективного користувача getuid ()
Ідентифікатор ефективної групи getgid ()
Додаткові ID груп getroups ()
Час, який залишився до сигналу тривоги alarm ()
Фактор поступливості nice ()
Час, який використовувався до даного моменту times ()
Маска сигналів процесу sigprocmask ()
Сигнали, які очікують sigpendding ()
Граничний розмір файлу ulimit ()
Граничний об’єм ресурсів getrlimit ()
Маска створення файлового режиму umask ()
Біжучий робочий каталог getcwd ()
Кореневий каталог  
     

1.1. Утиліта pstree

Утиліта pstree в середовищі Linux відображає дерево процесів (точніше, вона відображає процеси, що виконуються, у формі деревоподібної структури). Коренем даного дерева є процес init.

При виклику даної утиліти можемо використати наступні опції.

-а Відображає аргументи командної стрічки.

-h Виділяє біжучий процес і його нащадків.

- H Аналогічно опції –h, але виділенню підлягає заданий процес.

-n Відсортувати процеси з однаковим предком по значенню PID а не за іменем.

-р Відобразити значення PID.

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

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

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

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

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

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

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

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

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

Використання системних функцій
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
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги