SHPORA.net :: PDA

Login:
регистрация

Main
FAQ

гуманитарные науки
естественные науки
математические науки
технические науки
Search:
Title: | Body:

b.Apel,sist.pipe

Nucleul alocă apoi două intrări în GFT şi actualizează informaŢiile din inodul aflat în memoria internă. Fiecare intrarea în GFT conŢine numărul de instanŢe ale pipe-ului deschise pentru citire sau scriere (iniŢial 1 pentru fiecare intrare în GFT), iar contorul de referinŢă al inodului din memoria internă indică de câte ori pipe-ul a fost deschis (iniŢial are valoarea 2).Offseturile de citire şi scriere din pipe sunt păstrate în inod, fapt ce permite accesul în mod FIFO la pipe. ïn cazul fişierelor regulate offsetul se păstrează în GFT. Utilizarea comenzii lseek nu este permisă, ceea ce face imposibil accesul aleator la un pipe.
Deschiderea unui pipe numit Un pipe numit este un fişier a cărui semantică este asemănătoare cu cea a unui pipe obişnuit. DiferenŢa între ele este că cel numit are o intrare în director şi este accesat prin nume. Deschiderea unui pipe numit este la fel cu cea a fişierelor regulate, fiind astfel permisă comunicarea între procese ce nu sunt înrudite. Pipe-urile numite există în sistemul de fişiere şi după încheierea utilizării lor, pe când cele obişnuite sunt tranzitorii (când nu mai sunt procese ce utilizează pipe-ul, nucleul va elibera inodul alocat pipe-ului).
Algoritmul pentru deschiderea unui pipe numit este identic cu cel de deschidere al unui fişier obişnuit. Totuşi, înaintea încheierii apelului sistem, nucleul incrementează contorul de citire sau cel de scriere din inod, ce indică numărul proceselor ce au deschis pipe-ul numit pentru citire sau scriere. Un proces care deschide un pipe numit pentru citire va aştepta pâna când un alt proces va deschide acest pipe pentru scriere, şi reciproc. La deschiderea unui pipe numit (pentru citire sau scriere), nucleul trezeşte toate procesele ce aşteptau acest lucru. Dacă un proces deschide un pipe numit pentru citire şi există un proces care să scrie în acesta, atunci apelul open se încheie. Dacă un proces deschide un pipe numit cu opŢiunea 'no delay', apelul se va încheia fără ca procesul să se pună în aşteptare chiar dacă nu există un proces care să scrie în acest pipe. ïn caz contrar procesul este blocat până când apare şi procesul care să scrie în pipe. Regulile sunt similare pentru un proces ce deschide un pipe pentru scriere.