SHPORA.net :: PDA

Login:
đćăèńòđàöèÿ

Main
FAQ

ăóìàíèòàđíûć íàóêè
ćńòćńòâćííûć íàóêè
ìàòćìàòèśćńêèć íàóêè
òćőíèśćńêèć íàóêè
Search:
Title: | Body:

b.Comunic.intre

Procesul părinte face operații similare astfel încât descriptorul intrării standard să devină descriptorul de citire al pipe-lui pentru to_par. Analog, procesul fiu î?i închide fi?ierul standard de ie?ire (descriptor 0) ?i duplică descriptorul de citire al pipe-lui pentru to_child. Întrucât primul slot liber în UFDT este slotul fostuului fi?ier standard de intare, intrarea standard a fiului devine descriptorul de citire al pipe-lui pentru to_child. Fiul face operații similare astfel încât descriptorul ie?irii standard să devină descriptorul de scriere al pipe-lui pentru to_par. Ambele procese închid descriptorii de fi?iere întor?i de apelarea lui pipe. Ca rezultat, când părintele scrie la ie?irea standard, acesta scrie în pipe-ul to_child ?i trimite date procesului fiu, care cite?te pipe-ul ca pe propria intrare standard. Când procesul fiu scrie la ie?irea standard, acesta scrie în pipe-ul to_par ?i trimite datele procesului părinte care cite?te pipe-ul ca pe propria intrare standard. Procesele astfel schimbă mesaje prin intermediul pipe-urilor.
Rezulatele programului sunt acelea?i, indiferent de ordinea în care procesele î?i execută apelurile sistem respective. Adică nu este nici o diferență, dacă părintele se întoarce din fork înaintea fiului sau după el. Similar, nu este nici o diferență față de ordinea relativă în care procesele î?i esxecută apelurile sistem până când acestea intră în ciclu: structurile nucleului sunt identice. Dacă procesul fiu execută apelul sistem read înainte ca procesul părinte să facă write, procesul fiu va intra în a?teptare până când procesul părinte scrie pipe-ul ?i este trezit. Dacă procesul părinte scrie pipe-ul înainte ca procesul fiu să citească pipe-ul, părintele nu va citi de la intrarea sa standard până când fiul nu de la cite?te intrarea sa standard ?i nu scrie la ie?irea sa standard. Din acest motiv, ordinea de execuție este fixată: fiecare proces termină un apel sistem read ?i write ?i nu poate termina următorul apel sistem read până când celălalt proces nu termină un apel sistem read ?i write.
Părintele face exit după cele 15 iterații aflate în ciclu; apoi fiul cite?te "sfâr?it de fi?ier" (EOF), deoarece pipe-ul nu are procese care să scrie, ?i termină.