Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Interfetele de driver - UNIX

linux



+ Font mai mare | - Font mai mic



Interfetele de driver - UNIX

Sistemul UNIX contine doua feluri de dispozitive, dispozitive de tip bloc si dispozitive de tip caracter. Dispozitivele de tip bloc, cum ar fi discurile si benzile, sunt privite ca dispozitive de memorare cu acces aleator. Dispozitivele de tip caracter includ toate celelalte dispozitive, cum ar fi terminalele si mediile de retea. Dispozitivele de tip bloc pot avea o interfata de dispozitiv de tip caracter.



Interfata utilizator - dispozitive trece prin sistemul de fisiere. Fiecare dispozitiv are un nume vazut ca nume de fisier si este accesat ca un fisier. Fisierul special de tip dispozitiv are un inod si ocupa un nod in ierarhia de directoare a sistemului de fisiere. Fisierul dispozitiv se distinge de celelalte fisiere prin tipul fisierului memorat in inodul sau, si poate fi bloc, sau caracter, corespunzator dispozitivului pe care il reprezinta. Daca un dispozitiv are atat interfata bloc cat si caracter, acesta este reprezentat de doua fisiere dispozitiv : fisierul special de tip bloc si fisierul special de tip caracter. Apelurile sistem pentru fisierele obisnuite, cum ar fi open, close, read si write au aceeasi semnificatie pentru dispozitive. Apelul sistem ioctl furnizeaza o interfata ce permite proceselor sa controleze dispozitivele de tip caracter, dar nu este aplicabila pentru fisierele obisnuite. Oricum, nu este nevoie ca fiecare driver de dispozitiv sa suporte toate apelurile sistem. De exemplu, driverul pentru depanare mentionat mai inainte permite utilizatorilor sa citeasca inregistrarile scrise de alte drivere, dar nu permite utilizatorilor sa le scrie.

Configurarea sistemului

Configurea sistemului este procedura prin care administratorii specifica parametrii care sunt dependenti de instalare. Unii parametrii specifica marimea tabelelor nucleului, cum ar fi tabela de procese, tabela de inoduri si tabela de fisiere si numarul de buffere ce vor fi alocate pentru un sistemul de buffere. Alti parametrii specifica configurarea dispozitivelor, informand nucleul care dispozitive sunt incluse in sistem si adresele lor. De exemplu,se poate specifica daca o placa de terminal este conectata intr-un slot particular pe placa de baza. Exista trei etape in care poate fi specificat modul de configurare a unui dispozitiv. Intai, administratorii pot coda hardware datele de configurare in fisiere care sunt compilate si linkeditate cand se construieste codul nucleu. Datele de configurare sunt specificate intr-un format simplu si programul de configurare le converteste intr-un fisier porivit pentru compilare. Apoi, administratorii pot furniza informatii de configurare dupa ce sistemul este deja in executie; nucleul actualizeaza tabelele interne de configurare dinamic. In final, autoidentificarea dispozitivelor permite nucleului sa recunoasca care dispozitiv a fost instalat. Nucleul citeste comutatoarele hardware pentru a se autoconfigura. Detaliile configurarii sistemului depasesc scopul acestui curs, dar in toate cazurile procedura de configurare genereaza sau umple tabelele de configurare care formeaza o parte a codului nucleului.

Interfata dintre nucleu si driver este descrisa prin tabela de comutare a dispozitivelor de tip bloc ( block device switch table) si prin tabela de comutare a dispozitivelor de tip caracter ( character device switch table ). Fiecare tip de dispozitiv are intrari in tabela ce directioneaza nucleul spre interfata de driver corespunzatoare apelurilor sistem. Apelurile sistem open si close ale unui fisier dispozitiv cauta prin cele doua tabele, in functie de tipul fisierului.

Figura 6.1. Puncte de intrare in driver

Apelurile sistem mount si umount invoca de asemenea procedurile open si close ale dispozitivului pentru dispozitive de tip bloc. Apelurile sistem read, write si ioctl ale fisierelor speciale de tip caracter trec prin procedurile respective in tabela de comutare a dispozitivelor de tip caracter. Apelurile sistem read si write ale dispozitivelor de tip bloc si ale fisierelor de pe sisteme de fisiere montate invoca algoritmii buffer-ului cache care invoca procedura strategy a dispozitivului. Unele drivere invoca procedura strategy intern din procedurile lor read si write. Urmatoarea sectiune exploreaza fiecare interfata de driver si mai amanuntit.

Interfata dintre dispozitiv si hardware este alcatuita din registri de control dependenti de masina sau instructiuni I/O pentru manipularea dispozitivului si vectorilor de intrerupere: cand o intrerupere de dispozitiv apare, sistemul identifica dispozitivul care a generato si apeleaza rutina de tratare corespunzatoare. Evident, dispozitivele software nu au o interfata hardware, dar alte rutine de tratare a intreruperilor pot apela direct o rutina de tratare a unei intreruperi software.

Administratorii instaleaza fisierele speciale cu comanda mknod furnizand tipul fisierului (bloc sau caracter ) si numerele minor si major.

Comanda mknod invoca apelul sistem mknod pentru a crea un fisier dispozitiv. De exemplu in linia de comanda :

mknod /dev/tty13 c 2 13

"/dev/tty13" este numele de fisier al dispozitivului, c specifica ca este un fisier special de tip caracter ( b specifica un fisier special de tip bloc ), 2 este numarul major si 13 este numarul minor. Numarul major indica un tip de dispozitiv ce corespunde unei intrari in tabela de comutare a dispozitivelor de tip caracter sau in tabela de comutare a dispozitivelor de tip bloc si numarul minor indica o unitate a dispozitivului. Daca un proces deschide un fisier special de tip bloc " /dev/dsk1" si numarul sau major este zero, nucleul apeleaza rutina gdopen din intrarea zero in tabela de comutare a dispozitivelor de tip bloc ( Figura 6.2.); daca un proces citeste fisierul special de tip caracter "/dev/mem" si numarul sau major este 3, nucleul apeleaza rutina "mmread" din intrarea 3 in tabela de comutare a dispozitivelor de tip caracter. Rutina nulldev este o rutina "goala" care este folosita cand nu este nevoie de o functie anume de driver. Mai multe dispozitive periferice pot fi asociate cu un numar major de dispozitiv; numarul minor face distinctie intre dispozitive. Fisierele speciale nu trebuie sa fie create de fiecare data cand sistemul este incarcat: este nevoie ca ele sa fie schimbate numai daca se schimba configuratia, de exemplu cand adaugam dispozitive in sistem.


Figura 6.2. Exemplu de tabele de comutare a dispozitivelor de tip

caracter si de tip bloc

Apelurile sistem si interfata de driver

Aceasta sectiune descrie interfata intre nucleu si driverele dispozitivelor. Pentru apelurile sistem care folosesc descriptori de fisier, nucleul urmareste pointerii de la descriptorul de fisier al utilizatorului la tabela de fisiere a nucleului si la inod, unde examineaza tipul fisierului si acceseaza tabela de comutare a dispozitivelor de tip caracter sau tabela de comutare a dispozitivelor de tip bloc. El extrage numarul minor si numarul major din inod, foloseste numarul major ca un index in tabela corespunzatoare si apeleaza functia driverului in concordanta cu apelul sistem facut, transmitand numarul minor ca parametru. O diferenta importanta intre apelurile sistem pentru fisiere dispozitiv si fisiere obisnuite este ca inodul pentru un fisier special nu este blocat in timp ce nucleul executa driverul. Driverele asteapta frecvent conectarile hardware sau sosirea datelor. Daca inodul ar fi blocat, alte procese care ar incerca sa-l acceseze ( prin apelul sistem stat , de exemplu ) ar putea sa se puna in asteptare un timp nedefinit.

Driverul de dispozitiv interpreteaza parametrii apelului sistem in concordanta cu tipul dispozitivului. Driverul pastreaza structurile de date ce descriu starea fiecarei unitati pe care o controleaza; functiile driverului si rutinele de tratare a intreruperilor se executa in acord cu starea driverului.

Open

Nucleul urmeaza pentru deschiderea unui dispozitiv aceeasi procedura pe care o foloseste pentru deschiderea unui fisier obisnuit ( Sectiunea 5.1), alocand un   inod in memoria interna, incrementand contorul sau de referinta si asignand o intrare in tabela de fisiere si un descriptor de fisier pentru utilizator. Nucleul returneaza, eventual, descriptorul de fisier procesului apelant, asa incat deschiderea unui dispozitiv arata ca deschiderea unui fisier obisnuit. Oricum, el invoca procedura open specifica dispozitivului inainte de intoarcerea in modul utilizator (Figura 6.3). Pentru un dispozitiv de tip bloc, el invoca procedura open din tabela de comutare a dispozitivelor de tip bloc si pentru un dispozitiv de tip caracter invoca procedura open din tabela de comutare a dispozitivelor de tip caracter. Daca un dispozitiv este si de tip bloc si de tip caracter, nucleul va invoca procedura open corespunzatoare depinzand de fisierul particular pe care utilizatorul l-a deschis. Cele doua proceduri open pot fi chiar identice, aceasta depinzand de driver.

Procedura open specifica dispozitivului stabileste o conexiune intre procesul apelant si dispozitivul deschis, si initializeaza structurile proprii de date ale driverului. Pentru un terminal, de exemplu, procedura open poate pune procesul in asteptare pana cand masina detecteaza un semnal purtator (hardware) care sa indice ca un utilizator incearca sa se logheze in sistem.

Apoi initializeaza structurile de date ale driverului in concordanta cu setarile corespunzatoare ale terminalului (cum ar fi rata de transfer a terminalului ). Pentru dispozitivele software, cum ar fi memoria, procedura open poate sa nu aiba initializari de facut.

Daca un proces trebuie sa se puna in asteptare pentru unele motive externe, cand deschidem un dispozitiv, este posibil ca evenimentul care ar trebui sa trezeasca procesul sa nu apara niciodata. De exemplu, daca nici un utilizator nu se logheaza la un terminal, procesull getty ramane in asteptare pana cand un utilizator incearca acest lucru, posibil un timp indelungat. Nucleul trebuie sa fie capabil sa trezeasca procesul si sa intrerupa apelul open la receptionarea unui semnal. El trebuie sa reseteze inodul, intrarea in tabela de fisiere si descriptorul de fisier care a fost alocat inainte de intrarea in driver, deoarece deschiderea dispozitivului esueaza. Din acest motiv, nucleul salveaza contextul procesului folosind algoritmul setjmp ( Sectiunea 7.4.4) inainte de intrarea in rutina open specifica driverului; daca procesul este trezit din cauza unui semnal, nucleul restaureaza contextul procesului la starea de dinainte de a intra in driver folosind algoritmul longjmp (Sectiunea 7.4.4) si elibereaza toate structurile de date pe care le-a alocat pentru apelul open. Similar, driverul poate intercepta semnalul si sterge structurile de date private, daca este necesar. Nucleul reajusteaza structurile de date ale sistemului de fisiere cand driverul intalneste conditii de eroare, cum ar fi cand un utilizator incearca sa acceseze un dispozitiv care nu a fost configurat. Apelul open esueaza in aceste cazuri.

Procesele pot specifica diferite optiuni pentru apelul open . Cea mai obisnuita optiune este "fara intarziere" , insemnand ca procesul nu se va pune in asteptare in timpul procedurii open daca dispozitivul nu este pregatit. Apelul sistem open se termina imediat si procesul utilizator nu are de unde sa stie daca conectarea hardware a fost facuta sau nu. Deschiderea unui dispozitiv cu optiunea "fara intarziere" afecteaza semantica apelului sistem read.

Daca un dispozitiv este deschis de mai multe ori, nucleul manipuleaza descriptorii de fisier, inodul si intrarile in tabela de fisiere cum s-a descris in capitolul 5, invocand procedura open specifica dispozitivului pentru fiecare apel sistem open. Driverul dispozitivului poate deci numara de cate ori a fost deschis un dispozitiv si apelul open esueaza daca numarul nu este potrivit. De exemplu, are sens sa se permita mai multor procese sa deschida un terminal pentru scriere asa incat utilizatorii sa poata schimba mesaje. Dar nu are sens sa se permita mai multor procese sa deschida o imprimanta pentru scriere simultan, deoarece s-ar putea scrie datele unui proces peste datele altor procese. Diferentele sunt mai curand practice decat de implementare: permiterea scrierii simultane la terminare inlesneste comunicarea intre utilizatori; prevenirea scrierii simultane la imprimanta creste sansa obtineri unor rezultate lizibile la iesirea imprimantei.

algoritmul open ( pentru drivere de dispozitive )

intrari: numele fisierului

mod de deschidere

iesiri : descriptorul de fisier

else

if ( deschiderea esueaza )

decrementeaza contorul din tabela de fisiere si din inod;

Figura 6.3. Algoritmul pentru deschiderea unui dispozitiv

Close

Un proces se deconecteaza de la un dispozitiv deschis prin inchiderea lui. Oricum, nucleul invoca procedura close specifica numai driverului pentru ultimul apel close adresat dispozitivului, numai daca nici un alt proces nu are dispozitivul deschis, deoarece procedura close inchide conexiunea hardware; evident aceasta trebuie sa astepte pana cand nici un alt proces nu mai acceseaza dispozitivul. Deoarece nucleul invoca procedura open in timpul fiecarui apel sistem open si invoca procedura close numai o singura data, driverul dispozitivului nu stie niciodata sigur de cate procese mai folosesc inca dispozitivul.

Driverele pot ajunge usor intr-o stare incorecta daca nu sunt modificate cu atentie. Daca ele sunt puse in asteptare in procedura close si un alt proces deschide dispozitivul inaintea terminarii procedurii close, dispozitivul poate fi considerat nefolositor daca combinatia de apeluri open si close furnizeaza o stare incorecta.

Algoritmul pentru inchiderea unui dispozitiv este similar cu algoritmul pentru inchiderea unui fisier obisnuit (figura 6.4).Totusi, inainte de eliberarea inodului, nucleul executa unele operatiuni specifice.

1. Nucleul cauta in tabela de fisiere pentru a fi sigur ca nici un alt proces nu are inca dispozitivul deschis. Nu este suficient sa ne bazam pe contorul din tabela de fisiere pentru a indica ultima inchidere a dispozitivului, deoarece mai multe procese pot accesa dispozitivul cu o intrari diferite in tabela de fisiere. De asemenea nu este suficient sa ne bazam pe contorul din tabela de inoduri, deoarece mai multe fisiere pot specifica acelasi dispozitiv. De exemplu, rezultatul urmatoarei comenzi: ls -l arata doua fisiere speciale de tip caracter (primul "c" de pe linie) care refera un singur dispozitiv, deoarece numerele lor majore si minore (9 si 1) sunt egale. Numarul de legaturi (1) pentru fiecare fisier arata ca exista doua inoduri.

crw--w--w- 1 root vis 9, 1 Aug 6 1984 /dev/tty01

crw--w--w- 1 root unix 9, 1 May 3 15:02 /dev/tty01

Daca procesele deschid cele doua fisiere independent, ele acceseaza inoduri diferite dar acelasi dispozitiv.

2. Pentru un dispozitiv de tip caracter, nucleul invoca procedura close si revine in modul utilizator. Pentru un dispozitiv de tip bloc, nucleul cauta in tabela de montare pentru a se asigura ca dispozitivul nu contine un sistem de fisiere montat. Daca exista un sistem de fisiere montat pe dispozitivul de tip bloc, nucleul nu poate invoca procedura close , deoarece nu este ultimul apel close al dispozitivului. Chiar daca dispozitivul nu contine un sistem de fisiere montat, buffer-ul cache poate contine inca blocuri de date care au fost ramase de la sistemul de fisiere montat anterior si nu au fost scrise pe dispozitiv, deoarece ele au fost marcate" intarziere la scriere". Nucleul cauta deci in buffer-ul cache astfel de blocuri si le scrie pe dispozitiv inainte de invocarea procedurii close. Dupa inchiderea dispozitivului, nucleul trece din nou prin buffer-ul cache si invalideaza toate bufer-ele ce contin blocuri ale dispozitivului inchis, permitand buffere-lor cu date folositoare sa mai ramana in cache.

3. Nucleul elibereaza inodul fisierului dispozitiv.

Concluzionand, procedura close deconecteaza dispozitivul si reinitializeaza structurile de date ale driverului si hardware-ul dispozitivului, asa incat nucleul sa poata redeschide dispozitivul mai tarziu.

Figura 6.4. Algoritmul pentru inchiderea unui dispozitiv

Read si Write

Algoritmii nucleului pentru citirea si scrierea in,respectiv din dispozitiv sunt similari cu aceia pentru un fisier obisnuit. Daca procesul citeste sau scrie un dispozitiv de tip caracter, nucleul invoca procedurile read sau write . Desi acestea sunt cazuri importante in care nucleul transmite date direct intre spatiul de adrese utilizator si dispozitiv, driverele de dispozitiv pot pastra bufferele de date intern. De exemplu, driverele de terminal folosesc liste de caractere pentru aceasta sa buffereze datele (Sectiunea 6.3.1.). In astfel de cazuri, driverul dispozitivului aloca un buffer, copiaza datele din spatiul utilizator in timpul unui apel write, si scoate datele din bufer la dispozitiv. Procedura write limiteaza cantitatea de date scoasa la iesire ( controlul fluxului) : daca procesele genereaza date mai rapid decat dispozitivul le poate scoate la iesire, procedura write pune procesele in asteptare pana cand dispozitivul poate acepta mai multe date. Pentru o citire driverul de dispozitiv primeste date de la dispozitiv intr-un buffer si copiaza datele din buffer la adresa utilizator specificata in apelul sistem.

Metoda precisa prin care un driver comunica cu un dispozitiv depinde de hardware. Unele masini furnizeaza operatii de I/O mapate in memorie, ceea ce inseamna ca anumite adrese din spatiul de adrese nucleu nu sunt locatii in memoria fizica dar sunt registre speciale ce controleaza anumite dispozitive. Prin scrierea parametrilor de control in registrii specificati in concordanta cu specificatiile hardware, driverul controleaza dispozitivul. De exemplu controller-ele I/O pentru calculatoarele VAX - 11 contin registre speciale pentru inregistrarea starii dispozitivului (registrii de stare si control) si pentru transmisia datelor (registrii de buffer-are a datelor), care sunt configurati la adrese specifice in memoria fizica. In particular, controller-ul terminalului VAX DZ 11 controleaza 8 linii asincrone pentru comunicarea cu terminalul. Presupunem ca registrul de stare si control al unui controller DZ 11 este la adresa 160120 , registrul de buffer-are a datelor de transmis este la adresa 160126, si registrul de buffer-are a datelor primite este la adresa 160122 (Figura 6.5).Pentru a scrie un caracter la terminalul "/dev/tty09", driverul de terminal scrie 1 (1=9 mod 8) in pozitia specificata din registrul de control si stare si apoi scrie caracterul in registrul de buffer-are a datelor de transmis. Operatia de scriere a registrului de buffer-are a datelor de transmis inseamna transmiterea datelor. Controller-ul DZ 11 seteaza bitul "done" in registrul de control si stare cand este gata sa accepte mai multe date. Driverul poate seta optional un bit "activare intrerupere "in registrul de control si stare, care face ca controller-ul DZ 11 sa intrerupa sistemul cand este gata sa accepte mai multe date. Citirea datelor de la DZ 11 este similara.


Figura 6.5. I/O mapate in memorie cu controllerul VAX DZ11

Alte masini au I/O programate, insemnand ca masina contine instructiuni de control pentru dispozitiv. Driverele controleaza dispozitivele prin executarea instructiunilor corespunzatoare. De exemplu, calculatorul IBM 370 are o instructiune start I/O pentru a initializa operatii I/O cu un dispozitiv. Metoda pe care un driver o foloseste sa comunice cu perifericele este transparenta pentru utilizator.

Deoarece interfata intre driverele de dispozitiv si suportul hardware este dependenta de masina , nu exista nici o standardizare a interfetei la acest nivel. Pentru I/O mapate in memorie si I/O programate, un driver poate sa activeze secventele de control ale unui dispozitiv setand accesul direct la memorie (DMA) intre dispozitiv si memorie. Sistemul permite transferul DMA al datelor intre dispozitiv si memorie in paralel cu operatiunile UCP, si dispozitivul intrerupe sistemul cand un astfel de transfer s-a terminat. Driverul seteaza maparea memoriei virtuale asa incat locatiile corespunzatoare din memorie sunt folosite pentru DMA.

Dispozitivele de mare viteza pot uneori transfera date direct intre dispozitiv si spatiul de adrese utilizator, fara interventia unui buffer al nucleului. Rezulta o viteza mai mare de transfer deoarece am renuntat la operatiunea de copiere in nucleu, si cantitatea de date transmisa intr-o operatie de transfer nu este limitata de marimea buffere-lor nucleului.

Interfata de strategy

Nucleul foloseste interfata de strategy pentru a transmite date intre buffer-ul cache si un dispozitiv, desi cum s-a mentionat anterior, procedurile read si write ale dispozitivului de tip caracter folosesc uneori procedura lor de strategy pentru a transfera datele direct intre dispozitiv si spatiul de adrese utilizator. Procedura de strategy poate inlantui sarcinile I/O ale unui dispozitiv intr-o lista de lucru sau poate sa faca mult mai complicata procesarea, planificand aceste sarcini de I/O. Driverele pot seta transmisia datelor pentru o adresa fizica sau mai multe. Nucleul transfera procedurii strategy adresa antetului buffer-ului. Antetul contine o lista a adreselor (paginilor) si marimea datelor de transmis la si de la dispozitiv. Pentru buffer-ul cache, nucleul transmite datele de la o adresa de date; cand se face swapping, nucleul transmite datele de la mai multe adrese ( pagini). Daca datele sunt copiate la sau din spatiul de adrese utilizator, driverul trebuie sa blocheze procesul ( sau cel putin, paginile semnificative) in memorie pana cand transferul I/O este complet.

De exemplu, dupa montarea unui sistem de fisiere, nucleul identifica fiecare fisier in sistemul de fisiere prin numarul de dispozitiv si prin numarul de inod. Numarul de dispozitiv este o combinatie a numarului major si numarului minor al dispozitivului. Cand nucleul acceseaza un bloc dintr-un fisier, el copiaza numarul dispozitivului si numarul blocului in antetul buffer-ului, cum s-a descris in capitolul 3. Cand algoritmii buffer-ului cache ( bread sau bwrite, de exemplu ) acceseaza discul, ei invoca procedura de strategy indicata prin numarul major al dispozitivului. Procedura de strategy foloseste numarul minor si numarul blocului in antetul buffer-ului pentru a identifica datele pe dispozitiv si foloseste adresa buffer-ului sa identifica unde trebuie transferate datele. Similar, daca un proces acceseaza direct un dispozitiv de tip bloc ( adica il deschide si scrie sau citeste din el ), el foloseste algoritmii buffer-ului cache si interfata lucreaza exact cum s-a descris.

Ioctl

Apelul sistem ioctl este o generalizare a apelurilor sistem specifice terminalului stty si gtty disponibile in versiunile anterioare ale sistemului UNIX. Furnizeaza un punct de intrare pentru interceptarea tuturor comenzilor specifice unui dispozitiv, permitand unui proces sa seteze optiunile hardware asociate cu un dispozitiv si optiunile software asociate cu driverul. Programele care folosesc ioctl trebuie sa stie ce tip are fisierul pe care il trateaza. Aceasta este o exceptie de la regula generala ca sistemul nu face diferentieri intre diferitele tipuri de fisiere. Sectiunea 6.3.3. furnizeaza mai multe detalii referitoare la folosirea apelului ioctl pentru terminale.

Sintaxa apelului sistem este:

ioctl ( fd, comanda, arg );

unde fd este descriptorul de fisier returnat de apelul sistem open, comanda   este o cerere de executare a unei actiuni de catre driver si arg este un parametru ( posibil un pointer catre o structura ) pentru comanda. Comenzile sunt specifice driverului; din acest motiv fiecare driver interpreteaza comenzile in concordanta cu specificatiile interne, si formatul structurii de date arg depinde de comanda. Driverele pot citi structura de date arg din spatiul utilizator in concordanta cu formatele predefinite, sau pot scrie setarile dispozitivului in spatiul de adrese utilizator la adresa arg. De exemplu, interfata ioctl permite utilizatorilor sa seteze ratele de transfer ale terminalului; permite utilizatorilor sa deruleze benzile la un driver de banda; in final, permite operatii specifice retelelor cum ar fi specificarea numerelor circuitelor virtuale si ale adreselor de retea.

Alte apeluri sistem referitoare la sistemul de fisiere

Apelurile sistem cum ar fi stat si chmod au acelasi rol pe care il au pentru fisierele obisnuite, manipuleaza inodul fara sa acceseze driverul. Chiar si apelul sistem lseek este accesibil fisierelor speciale. De exemplu, daca un proces apeleaza lseek pentru un octet particular al unei benzi, nucleul actualizeaza deplasamentul din tabela de fisiere, dar nu face operatii specifice driverului. Cand procesul citeste sau scrie mai tarziu, nucleul muta deplasamentul din tabela de fisiere in uArea, asa cum face si pentru fisierele obisnuite, si dispozitivul cauta fizic la adresa corect indicata in uArea . Un exemplu in sectiunea 6.3. ilustreaza acest caz.


Figura 6.6. Intreruperile de dispozitiv



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1006
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved