шпаргалка

b.Citire/scrie.pipe

[ Назад ]
ïn primul caz (Np+Nw)  Cp. Nucleul execută algoritmul de scriere pentru un fişier regulat, cu diferenŢa că incrementează automat dimensiunea pipe-ului, deoarece cantitatea de date din pipe se măreşte odată cu fiecare scriere. ïn cazul fişierelor regulate procesele incrementează dimensiunea fişierului numai când se scriu date după sfârşitul fişierului de la acel moment. Dacă următorul offset din pipe iese din zona blocurilor directe, nucleul stabileşte valoarea offsetului de fişier din u area la valoarea 0 (începutul pipe-ului). Când un proces termină de scris date în pipe, actualizează pointerul de scriere din inodul fişierului pipe, astfel încât următorul proces ce va scrie în pipe să o facă de unde a rămas ultimul. Apoi nucleul trezeşte toate procesele care aşteptau să citească date din pipe.
Când un proces citeşte dintr-un pipe, el verifică dacă pipe-ul este sau nu gol. Dacă pipe-ul conŢine date (Nr  Np), nucleul citeşte date din pipe folosind algoritmul read pentru fişiere regulate. După citirea fiecărui bloc, nucleul decrementează dimensiunea pipe-ului conform numărului de octeŢi citiŢi, şi actualizează valoarea offsetului din u area (dacă e necesar să fie readusă la 0). Apoi sunt trezite toate procesele care sunt în aşteptare şi care doresc să srie în pipe şi reactualizează offsetul curent de citire în inod.--Studiind implementarea pipe-urilor reiese că interfaŢa este consecventă celei pentru fişiere regulate, dar implementarea diferă deoarece nucleul păstrează offseturile de citire şi scriere în inod şi nu în GFT. Offseturile trebuie păstrate în inod pentru pipe-urile numite astfel pentru ca procesele să poată folosi în comun valorile lor. Ele nu pot fi păstrate în GFT pentru că la fiecare deschidere se alocă o nouă intrare în tabelă. SoluŢia adoptată nu ar fi neapărat necesară în cazul pipe-urilor obişnuite (procesele utilizează în comun pipe-ul folosind intrări comune în GFT), însă s-a optat pentru ea deoarece codul e mai simplu.

КАТЕГОРИИ:

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