Процеси та їх виконання.


Термін процес в ОС Unix розуміється як програма, яка виконується в власному віртуальному адресному просторі. Для створення нового процесу в ОС Unix використовуються наступні виклики АРІ:

· fork ();

· exec (ім’я програми яка завантажується).

Виклик fork() створює новий адресний простір, стан якого є ідентичним головному процесу. Керування новим процесом передається на команду, яка безпосередньо знаходиться за викликом fork(). Виклик fork() повертає значення “0” в породженому процесі і ціле додаткове число в основному процесі. Це процес ідентифікації.

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

Таким чином це приводить до заміни поточного сегменту даних і сегменту коду, які були скопійовані системним викликом fork() з основного процесу на нові сегменти, що описані в завантажувальному файлі.

В ОС Unix кожний процес є об’єктом який створюється в результаті виконання функції fork(). Кожний процес, за виключенням нульового (початкового) процесу, породжується в результаті завантаження чи виконання функції fork() у породженому процесі.

Кожен процес має одного процеса – породжувача і в свою чергу може породжувати багато інших процесів.

Нульовий (початковий) процес має ідентифікатор 0. Він породжується і виконується під час завантаження ОС. Після завантаження він реалізує механізм взаємодії з файлами підкачки, тобто реалізує механізм віртуальної пам’яті. Після процесу завантаження керування передається і який фактично є породжувачем усіх процесів ОС Unix.

Процеси в загальному виконуються в одному з двох станів:

· користувацькому стані – процес виконує тільки користувацьку програму і має доступ до користувацького сегменту даних;

· системному стані – процес виконує підпрограми ядра ОС і має доступ до системного сегменту даних.

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

Для виконання процесів в ОС Unix використовується режим розподілу часу. Тобто кожному процесу виділяється квант часу. Процес або завершується сам до закінчення виділеного йому кванту часу, або ставиться в чергу процесів по закінченню поточного кванту часу.

Для розподілу процесорного часу між процесами використовуються дисципліни диспетчеризації.



Дата добавления: 2016-07-27; просмотров: 1368;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.