c.Incarc,sist si.proc
Init cite?te fi?ierul ?i, dacг starea оn care a fost apelat se potrive?te cu identificatorul de stare a liniei, creazг un proces care executг specificaюia de program datг. De exemplu, cвnd se apeleazг init pentru starea de multiuser (starea 2), init оn mod obi?nuit lanseazг procesul getty pentru a supraveghea liniile terminale configurate оntr-un sistem.
--algoritmul init /* procesul de iniюializare, ^procesul 1 al sistemului */
^ intrгri: niciuna
^ ie?iri: niciuna
{
^fd=open("/etc/inittab",O_RDONLY);
^while(linia cititq(fd, buffer))
{
/* cite?te fiecare linie a fi?ierului */
^if(starea invocatг!=starea cititг оn buffer)
continuг; /* sare оnapoi la while */
/* starea se potrive?te */
^if( fork()==0)
{
^execl("procesul specificat оn buffer");
^exit();
}
/* procesul init nu a?teaptг */
/* sare la while */
}
while((id=wait((init *)0))!=-1)
{
/* ^aici verificг dacг procesul fiu lansat s-a terminat;
^* considerг relansarea lui */
/* оn caz contrar, doar continuг */
}
} .
--Cвnd intrг un utilizator cu succes, getty trece prin procedura login ?i executг shell-ul login. Оntre timp, init executг apelul sistem wait, controlвnd terminarea propriilor procese fiu ?i terminarea proceselor fiu rгmase "orfane" prin terminarea proceselor pгrinte (exit).
Procesele оn sistemul UNIX sunt fie procese utilizator, fie procese de tip "daemon", sau procese nucleu. Cele mai multe procese de pe sistemele obi?nuite sunt procese utilizator asociate utilizatorilor de la un terminal.