Лекція 4 5 Створення процесу
Лекція_4_5
використання системних функцій;
використання POSIX-функцій для породження процесів;
завершення процесу;
Дочірній процес може бути створений з власними образами, що виконуються, або у вигляді дублікату батьківського процесу. При створенні в якості… Деякі атрибути предка не успадковуються нащадком. Як говорилося вище, дочірній… Після створення образ дочірнього процесу може бути замінено іншим образом, що виконується. Розділи програмного коду,…
Синопсис
pstree [-a] [-c] [-h ½ - Hpid] [-l] [-n] [-p] [-u] [-G] ½ -U]
[pid ½ user]
pstree –V
На рис 2 подано результат виконання команди pstree –h в середовищі Linux.
Системна функція (або системний виклик) fork () створює новий процес, який є дублікатом процесу який його викликав, тобто його батька. При…
pid_t fork (void);
Невдале виконання функції fork () можливе у випадку, коли система не володіє… 2.2. Системні функції exec
int execl (const char *path, const char *arg0, . . ./*, (char *)0 */);
int execle (const char *path, const char *arg0, . . ./*, (char *)0 *, char *… int execlp (const char *fale, const char *arg0, . . ./*, (char *)0 */);
long sysconf (int name);
Ще одним обмеженням при використанні функцій сімейства exec та інших функцій,… 2.6. Читання та встановлення змінних середовища
char *getenv ( const char *name );
int setenv (const char *name, const char *value, int overwrite );
void unsetenv ( const char *name );
int system (const char *string);
В якості параметру string можемо передати системну команду або ім'я файлу,… Функція system () повертає значення батьківському процесу. При невдалому виконанні функція exec () повертає число…
· дескриптори файлів;
· стратегія планування;
· ідентифікатор групи процесів;
int posix_spawn (pid_t *restrict pid, const char *restrict path, const posix_spawn_file_actions_t * file_actions, const posix_spawnattr_t *restrict… int posix_spawnp (pid_t *restrict pid, const char *restrict file, const… Різниця між ціми двома функціями полягає в тому, що функція posix_ spawn () передає параметр path, а функція…
Синопсис
# include < unistd.h >
pid_t getpid (void);
pid_t getppid (void);
· Всі інструкції виконані.
· Процес очевидним чином передає керування батьківському процесу або викликає… · Дочірні процеси можуть завершуватися автоматично при завершенні батьківського процесу.
void exit (int status);
void abort (void);
Функцію kill () можемо використати для примусового завершення іншого процесу. Дана функція відправляє повідомлення…
Синопсис
# include < signal.h >
int kill (pid_t pid, int sig);
Щоб процес отримав доступ до ресурсів, він спочатку повинен зробити запит, звернувшись з ним до операційної системи. Якщо ресурс вільний,… Якщо задовольняється відразу декілька запитів на отримання доступу до ресурсу,… Одні ресурси можуть змінюватися або модифікуватися процесами, а інші – ні. Поведінка ресурсів які поділяються і можуть…
int setrlimit (int resource, const struct rlimit *rlp);
int getrlimit (int resource, struct rlimit *rlp);
int getrusage (int who, struct rusage *r_usage);
pid_t wait (int *status);
pid_t waitpid (pid_t pid, int *status, int oрtions);
Функція waitpid () аналогічна функції wait () за виключенням того, що вона приймає додаткові параметри pid і oрtions.…
В додатку або системі розрізняють два рівня паралельної обробки: рівень процесів і рівень потоків. Паралельна обробка на рівні потоків має назву… При декомпозиції програми на функції як правило використовують низхідний… Задачі, на які буде розділена програма, можуть виконуватися паралельно, при чому можемо виділити наступні три способи…
// Лістінг 6. Основна гілка програми, з якої викликається функція,
// що породжує процес
int main (int argc, char *argv [ ]) {
Деякі дані та атрибути процесу зберігаються в блоці керування процесами (process control block – PCB), або БУП, що використовує операційна система… Процеси, які створюють інші процеси, вступають з ними в ²родинні²… Програму можна розділити на декілька процесів. Ці процеси можуть породити батьківський процес, або вони можуть бути…