c.Crearea.proc

Сделай свою wap-шпаргалку =) попробуй конструктор сайтов http://www.panweb.com/


-Cвnd contextul fiului este gata, pгrintele terminг partea sa a apelului fork prin schimbarea stгrii fiului оn "gata de rulare (оn memorie)" ?i prin оntoarcerea spre utilizator a identificatorului de proces al fiului. Nucleul programeazг mai tвrziu procesul fiu pentru execuюie cu ajutorul algoritmului normal de planificare ?i procesul fiu о?i terminг astfel partea sa de fork. Contextul procesului fiu a fost completat de cгtre procesul tatг; оn nucleu, procesul fiu pare a fi trezit dupг a?teptarea unei resurse. Procesul fiu executг porюiunea de cod din apelului sistem fork, оn acord cu contorul programului, pe care nucleul l-a refгcut din contextul regi?trilor salvaюi aflat оn nivelul context 2 ?i оntoarce un 0 din apelul sistem.
--^algoritm fork
^intrгri: niciuna
^ie?iri: la procesul pгrinte, identificatorul fiului (PID)la procesul fiu, 0
{
verificг resursele disponibile ale nucleului;
^obюine o intrare liberг оn tabela proceselor, un unic numгr pentru PID;
^verificг ca utilizatorul sг nu ruleze prea multe procese;
^marcheazг starea procesului ca "fiind creat";
^copiazг datele din intrarea tabela procese corespunzгtoare procesului pгrinte оn noua intrare a fiului;
^incrementeazг contorul i-nodului directorului curent ?i a rгdгcinii schimbate(dacг este necesar);
^face o copie a contextului pгrintelui (u area, text, date, stivг) оn memorie;
^depune contextul dummy al nivelului sistem оn contextul nivelului sistem al fiului;
^contextul dummy conюine date care permit procesului fiu sг se recunoascг singur ?i sг оnceapг sг ruleze de aici atunci cвnd este programat;
^if (procesul оn execuюie este procesul pгrinte)
{
chimbг starea procesului оn "gata de rulare";
^оntoarce (idetificatorul fiului); /* dinspre sistem cгtre utilizator */
^else /* procesul care se executг este procesul fiu */
{
iniюializeazг cвmpurile de timp ale u area;
return (0);
}
^ }