Professional Documents
Culture Documents
Predavanje 2
Predavanje 2
СОФТВЕР
ПРЕДАВАЊЕ 2 – ПРОЦЕСИ
доц. д-р Доне Стојанов
КОНЦЕПТ
Процесот е програма во извршување !
Процесот ја претставува тековната
активност, репрезентирана со вредноста
на програмскиот бројач и содржината
на регистрите на процесорот !
Во глобала, процесот вклучува стек
(stack) кој содржи привремени податоци
(функции, параметри, локални адреси) и
податочна секција која што ги содржи
глобалните параметри !
СТРУКТУРА НА ПРОЦЕС
Програмата не е процес; програмата е
пасивен ентитет, како на пример
датотека зачувана на диск која ја содржи
листата на иструкции, додека процесот е
активен ентитет со програмски бројач кој
ја специфицира наредната инструкција
што треба да се изврши и множество на
асоцирани ресурси.
Програмата станува процес кога .exe
датотеката се вчитува во меморијата !
СОСТОЈБА НА ПРОЦЕС
Како што процесот се извршува ја менува
својата состојба !
Процесот може да се наоѓа во една од
следниве состојби:
New (Нов). Процесот е креиран!
#include <unistd.h>
int main()
{
pid-t pid;
pid = fork();
exit (-1) ;
}
execlpf"/bin/Is","Is",NULL);
}
wait(NULL);
printf("Child Complete");
exit (0) ;
}
}
ТЕРМИНАЦИЈА НА ПРОЦЕС
Процесот терминира откако ќе ја изврши
и последната негова наредба и побарува
од оперативниот систем да биде
избришан со употреба на exit()
системскиот повик !
Во тој момент, процесот може да го врати
статусот (целобројна вредност) на својот
родител (преку wait() системскиот повик) !
Сите ресурси на процесот – физичка и
виртуелна меморија, отворени датотеки и
I/O бафери се деалоцирани од
оперативниот систем !
ТЕРМИНАЦИЈА НА ПРОЦЕС
Еден процес може да предизвика терминација на друг
процес преку соодветен системски повик
(TerminateProcess() кај Win32) !
Вообичаено таков системски повик може да биде
повикан само од родителот на процес што треба да се
терминира !
Родителот може да го прекине извршувањето на еден
од своите деца поради следниве причини:
- Детето претерало со употребата на ресурсите кои му
биле алоцирани !
- Задачата која е зададена на детето не е веќе потребна !
- Родителот е во состојба на излегување и оперативниот
систем не дозволува детето да продолжи ако родителот
излегува/терминира !
Во UNIX, системскиот повик за терминирање на процес е
exit() !
Во UNIX, wait() системскиот повик резултира со чекање
МЕЃУПРОЦЕСНА КОМУНИКАЦИЈА
Процесите кои се извршуваат конкурентно
во оперативниот систем можат да бидат
независни или кооперативни !
Процесот е независен ако не може да
афектуира или да биде афектуиран од друг
процес кој се извршува во системот !
Процес кој не споделува податоци со ниту
еден друг процес велиме дека е назависен !
Процесот е кооперативен ако може да
афектуриа или да биде афектуиран од други
процеси кои се извршуваат во системот !
МЕЃУПРОЦЕСНА КОМУНИКАЦИЈА
Постојат повеќе причини за овозможување на
меѓупроцесна комуникација:
Делење на информации – конкурентен
пристап до исто парче информации !
Пресметковно забрзување – Ако сакаме
конкретна задача да се изврши побрзо,
истата мора да ја поделиме на подзадачи,
така што секоја од овие подзадачи се
извршува паралелно со останатите !
Модуларност – делење на системските
фунцкии во одделни процеси или нитки !
Погодност – корисникот може да работи на
повеќе задачи едновремено !
МЕЃУПРОЦЕСНА КОМУНИКАЦИЈА
Постојат два модели на меѓупроцесна
комуникација:
1. Shared memory (делење на меморија)