шпаргалка

b.Terminarea proces

[ Назад ]
Procesele care au aparюinut vechiului grup nu vor aparюine ?i grupului urmгtor. Nucleul parcurge descriptorii fi?ierelor deschise, оnchizвndu-le pe fiecare prin algoritmul intern close ?i elibererazг inodurile care au fost folosite pentru directorul curent ?i rгdгcina schimbatг (dacг existг) prin algoritmul iput.
Nucleul elibereazг apoi toatг memoria utilizatorului prin ?tererea regiunilor corespunzгtoare cu algoritmul detachreg ?i schimbг starea procesului оn zombie. El salveazг codul de stare al lui exit ?i timpii de execuюie utilizator ?i nucleu acumulaюi de proces ?i descendenюii lui оn tabela de procese
Nucleul mai scrie, de asemenea, o оnregistrare de contabilitate оntr-un fi?ier global de cont ce conюine diferite statistici de rulare cum ar fi identificatorul utilizatorului, utilizarea CPU-lui ?i a memoriei precum ?i cantitatea de operaюii de intrare/ie?ire pentru un proces.
La sfвr?it, nucleul deconecteazг procesul de la arborele de procese fгcвnd ca procesul 1 (init) sг adopte toate procesele sale fii. Aceasta presupune cг procesul 1 devine pгrinte legal al tuturor proceselor fii оn execuюie pe care procesul care a executat exit le-a creat.
Dacг vreunul din procesele de tip fiu este оn starea zombie, procesul ce executг exit trimite cгtre init semnalul de "terminare proces fiu" pentru ca init sг-l ?teargг din tabela proceselor; procesul care executг exit trimite ?i pгrintelui sгu un semnal de terminare proces fiu.Оn programul de mai jos un proces о?i creazг un fiu care о?i tipгre?te propriul PID ?i executг apelul sistem pause suspendвndu-?i execuюia pвnг cвnd prime?te un semnal. Procesul pгrinte tipгre?te PID-ul fiului ?i executг exit оntorcвnd PID-ul fiului drept cod de stare. Dacг apelul exit nu ar fi prezent, rutina de lansare procese ar apela exit la оntoarcerea programului din funcюia main. Procesul fiu creat de pгrinte continuг sг existe pвnг cвnd prime?te un semnal, chiar dacг procesul pгrinte s-a terminat.
^main()
{
^int child;
^if((chil=fork())==0)
{
^printf({child PID %d
", getpid());
^pause()/* suspendг execuюia pвnг la recepюionarea unui semnal*/
}
/* pгrinte */
^printf("child PID %d
", child);
^exit(child);
}

КАТЕГОРИИ:

Network | английский | архитектура эвм | астрономия | аудит | биология | вычислительная математика | география | Гражданское право | демография | дискретная математика | законодательство | история | квантовая физика | компиляторы | КСЕ - Концепция современного естествознания | культурология | линейная алгебра | литература | математическая статистика | математический анализ | Международный стандарт финансовой отчетности МСФО | менеджмент | метрология | механика | немецкий | неорганическая химия | ОБЖ | общая физика | операционные системы | оптимизация в сапр | органическая химия | педагогика | политология | правоведение | прочие дисциплины | психология (методы) | радиоэлектроника | религия | русский | сертификация | сопромат | социология | теория вероятностей | управление в технических системах | физкультура | философия | фотография | французский | школьная математика | экология | экономика | экономика (словарь) | язык Assembler | язык Basic, VB | язык Pascal | язык Си, Си++ |