Scurtă introducere în sistemele de fișiere



Universitatea Politehnic?, Bucure?tiFacultatea de Electronic?, Telecomunica?ii ?i Tehnologia Informa?ieiTem? de curs S.O.Sisteme de fi?iere Performan?? Student: Fr?ncu Robert Marinescu Alexandru Popa Marius Grupa: 431AMai, 2015Cuprins TOC \o "1-3" \h \z \u 1.Scurt? introducere ?n sistemele de fi?iere(Robert) PAGEREF _Toc421038995 \h 31.1 Exemplu de program folosind apeluri ale sistemului de fi?iere PAGEREF _Toc421038996 \h 51.3 Performan?a sistemelor de fi?iere PAGEREF _Toc421038997 \h 82.Defragmentarea(Marius) PAGEREF _Toc421038998 \h 102.1 Cauze alte fragment?rii PAGEREF _Toc421038999 \h 102.2 Contram?suri comune – Parti?ionarea PAGEREF _Toc421039000 \h 132.3 Probleme de utilizator si performan?a PAGEREF _Toc421039001 \h 132.4 Disk Defragmenter (Windows) PAGEREF _Toc421039002 \h 132.5 Limit?ri PAGEREF _Toc421039003 \h 143.Sistem de fi?iere virtual(Robert) PAGEREF _Toc421039004 \h 153.1 Implement?ri PAGEREF _Toc421039005 \h 174.SATA(Alex) PAGEREF _Toc421039006 \h 204.1 Descriere SATA PAGEREF _Toc421039007 \h 204.2 Registre PAGEREF _Toc421039008 \h 224.3 Comenzi ATA PAGEREF _Toc421039009 \h 265. S.M.A.R.T.(Marius) PAGEREF _Toc421039010 \h 295.1 Implementare PAGEREF _Toc421039011 \h 305.2 Vizibilitatea sistemelor host PAGEREF _Toc421039012 \h 305.3 Atribute SMART PAGEREF _Toc421039013 \h 315.4 Comenzi SMART PAGEREF _Toc421039014 \h 31Bibliografie PAGEREF _Toc421039015 \h 39Scurt? introducere ?n sistemele de fi?iere(Robert)Un sistem de fi?iere este un mod de organizare a informa?iei pe un suport fizic. Ele ofer? scalabilitate ?i acces facil. Unitatea de baza a sistemelor de fi?iere este fi?ierul. Din punctul de vedere al utilizatorului, sistemul de fi?iere este v?zut precum o interfa?? c?tre informa?ia aflat? ?n directoare ?ntr-o structur? ierarhic?.Din punctul de vedere al sistemului de operare, sistemul de fi?iere este v?zut ca o multitudine de algoritmi de organizare a fi?ierelor pe disc .Exemple de sisteme de fi?iere:ETFS - a fost creat de c?tre QNX Software Systems pentru device-uri NANDexFAT – sistem de fi?iere creat de Microsoft pentru memoriile flashExtremeFFS – sistem de fi?iere intern pentru SSD-uriF2FS – sistem de fi?iere introdus de Samsung ?n 2012 pentru LinuxJFFS2 – succesorul lui JFFS pentru memorii NAND ?i NORRFS – creat ?i folosit de SamsungNTFSExt3ReiserFSHFSFAT32Ierarhia de interfe?eFig. [1]Structura sistemului de fi?iereFig. [2]1.1 Exemplu de program folosind apeluri ale sistemului de fi?iereVom examina un program UNIX ce copiaz? un fi?ier din locul unde se afl? ?ntr-o alt? destina?ie.Programul are o func?ionalitate minima dar inspir? o idee despre cum merg apelurile ce au leg?tur? cu fi?ierele.Exemplu de func?ie ce poate fi apelat? ?n linia de comand?:copyfile abc xyzComanda executat? mai sus va copia fi?ierul abc ?n loca?ia xyz. Dac? xyz exist? va fi suprascris, dac? nu va fi creeat?.Codul059055Fig. [3]Programul trebuie s? fie apelat cu 2 argumente, amandou? av?nd nume de fi?iere existente pe disc. Primul este sursa, al doilea este fi?ierul de ie?ire.Headerul programului include defini?iile standard pentru a face programul relevant standardelor interna?ionale.Primul #define este o defini?ie macro care define?te stringul de caractere BUFSIZE de tip num?r 4096. Programul va citii ?i va afi?a ?n “buc??i” de 4096 octe?i. Al doilea #define stabile?te cine poate accesa fi?ierul de ie?ire.Programul principal main are dou? argumente, argc ?i argv. Acestea sunt furnizate c?nd se face apelul de c?tre sistemul de operare. Primul argument informeaz? c?te ?iruri de caractere au fost prezente ?n linia de comand? atunci c?nd s-a f?cut apelul, iar al doilea este un vector de pointeri c?tre argumente. ?n exemplul relatat anterior(cel cu abc, xyz), vectorul ar trebui s? con?in? pointeri c?tre valorile urm?toare:argv[0]=”copyfile”argv[1]=”abc”argv[2]=”xyz”Mai departe, sunt declarate 5 variabile. Primele dou?, in_fd ?i out_fd vor stoca descriptorii de fi?iere, adic? ni?te numere ?ntregi returnate atunci c?nd fi?ierul este deschis. Urm?toarele dou? rd_count ?i wt_count sunt octe?i returna?i de apelurile de sistem. Ultima variabil?, buffer, este buffer-ul folosit pentru a memora informa?iile citite ?i de a trimite informa?iile pentru a fi scrise.Prima declara?ie verific? dac? argc este 3. Dac? nu, iese cu status-ul 1. Orice alt status cu excep?ia lui 0 rezult? c? o eroare a fost recep?ionat?. Acest status este singurul lucru care raporteaz? erorile ?n acest cod.Apoi, se ?ncearc? deschiderea fi?ierului surs? ?i crearea fi?ierului destina?ie. Dac? fi?ierul surs? este deschis cu succes, sistemul asigneaz? un ?ntreg la in_fd pentru a indentifica fi?ierul. Apeluri adi?ionale trebuie s? includ? acest ?ntreg pentru ca sistemul s? ?tie ce fi?ier este dorit. Similar, dac? fi?ierul destina?ie este creat lui out_fd i se atribuie o valoare pentru a se identifica. Al doilea argument seteaz? starea de protec?ie a programului. ?n caz c? deschiderea sau crearea e?ueaz?, fi?ierul descriptor este setat pe -1 ?i programul se ?ncheie cu o eroare de cod.Acum urmeaz? bucla care face copierea fi?ierului. ?ncepe prin a ?ncerca s? citeasc? 4KB de date ?n buffer. Acest lucru se realizeaz? apel?nd libr?ria procedural? read care invoc? apelul de citire al sistemului. Primul parametru identific? fi?ierul, al doilea returneaz? bufferul ?i al treilea spune c??i octe?i sunt de citit. Valoarea atribuit? lui rd_count indic? num?rul actual de octe?i citi?i. ?n mod normal, acesta ar trebui s? fie de 4096, except?ndu-se momentele ?n care lipsesc c??iva octe?i r?ma?i ?n fi?ier. C?nd sf?r?itul se apropie, acesta va fi 0. Dac? rd_count este 0 sau este negativ copierea nu mai poate continua, ?n acest fel execut?ndu-se instruc?iunea break ?i oprind bucla for din execu?ie.Apelul write scrie bufferul ?n fi?ierul destina?ie. Primul parametru identific? fi?ierul, al doilea returneaz? bufferul iar al treilea spune c??i octe?i trebuie scri?i(analog cu read).C?nd ?ntregul fi?ier a fost procesat, primul apel de deasupra end-ului va returna 0 pentru rd_count ceea ce va provoca ?nchiderea buclei. ?n acest moment ambele fi?iere vor fi ?nchise ?i programul se ?ncheie. 1.3 Performan?a sistemelor de fi?iereAccesarea discului se realizeaz? mult mai ?ncet dec?t accesarea memoriei. Citirea unui cuv?nt de 32 de bi?i din memorie dureaz? undeva la 10ns, ?n schimb citirea aceluia?i cuv?nt de pe disc poate dura ?ntre 5-10ms. Comparativ, pentru accesarea unui cuv?nt din memorie ?i un cuv?nt de pe disc, accesarea din memorie este de 1 milion de ori mai rapid? dec?t cea de pe disc. Din acest punct de vedere multe sisteme de fi?iere au primit multe optimiz?ri pentru a ?mbun?t??ii performan?a.Cache-ulCea mai des ?nt?lnit? metod? pentru a reduce timpul de acces la disc este un bloc cache sau un buffer cache. Cache-ul este o colec?ie de blocuri care, din punct de vedere logic apar?in discului dar sunt ?inute ?n memorie din considerente de performan??.Pentru a administra cache-ul se folosesc diferi?i algoritmi, dar cel mai des folosit este acela de a verifica dac? vreun bloc pentru cerut pentru citire se afl? ?n cache. Dac? nu se afl? ?n cache, se cite?te ?n cache ?i apoi se copiaz? oriunde este nevoie.Opera?iuni ale cache-ului sunt ilustrate ?n figura urm?toare:04445Fig. [4]Din moment ce se afl? foarte multe blocuri ?n cache, este nevoie de o metod? de a determina rapid dac? blocul c?utat este prezent. Metoda cea mai simpl? este de a ?h??ui” dispozitivul ?i adresele discului ?i de a verifica ?n tabela de ha?uri. Toate blocuri cu acela?i nivel de hash sunt ?nl?n?uite ?ntre ele ?ntr-o list? de linkuri pentru a se g?sii rapid.C?nd un bloc trebuie s? fie ?nc?rcat ?n cache, unele blocuri trebuiesc ?terse. Aceast? opera?iune este similar? pagin?rii.2.Defragmentarea(Marius)?n ?ntre?inerea?sistemelor de fi?iere?,?defragmentarea?este un proces care reduce cantitatea de?fragmentare?. Ea face acest lucru prin organizarea fizic? a con?inutului de stocare a?dispozitivului utilizat pentru a stoca?fi?iere??n cel mai mic num?r de fragmente. De asemenea, ?ncearc? s? creeze regiuni mai mari de spa?iu liber, utiliz?nd?compactarea?pentru a impiedica revenirea fragmentarii.?Unele utilit??i de defragmentare ?ncerc? s? p?streze fi?iere mai mici ?ntr-un singur director, ?mpreun?, deoarece acestea sunt adesea accesate ?n ordine.Defragmentarea este avantajoas? ?i relevanta pentru sisteme de fi?iere pe unit??i de disc electromecanice.?Mi?carea?capetelor de citire / scriere ale hardului de?pe diferite zone ale discului atunci c?nd se acceseaza fi?ierele fragmentate este mai lent?, comparativ cu accesarea ?ntregului con?inut al unui fi?ier secven?ial non-fragmentat, f?r? mi?care de citire / scriere pentru a?c?uta?alte fragmente.2.1 Cauze alte fragment?riiFragmentarea se produce atunci c?nd sistemul de fi?iere nu poate sau nu aloca spa?iu suficient pentru a stoca un dosar complet ca o unitate, dar pune ?n schimb p?r?i din ea ?n golurile dintre fi?ierele existente (de obicei exist? aceste lacune, deoarece a existat ?nainte un fi?ier pe care sistemul de operare l-a eliminat ulterior sau pentru c? sistemul de fi?iere a alocat spa?iu ?n exces pentru fi?ier ?n prim? instant?).Fi?ierele mai mari, sau un num?r mai mare de fi?iere, contribuie , de asemenea, la fragmentare ?i la sc?derea performantei ?n consecin??. Defragmentarea ?ncearc? sa atenueze aceste probleme.Exemplu:S? luam in considerare urmatoriul scenariu, asa cum este afisat in imagine. Fig. [5]Un disc are 5 fi?iere (A,B,C,D si E), fiecare dintre ele utiliz?nd c?te 10 blocuri de memorie (un bloc este alocat ca o unitate a sistemului de fi?iere; dimensiunea lui este setat? c?nd discul este formatat si poate avea orice dimensiune suportat? de sistemul de fi?iere).Pe un disc gol, toate aceste fi?iere vor fi alocate unul dupa altul (vezi exemplul 1 din imagine). Dac? fi?ierul B ar fi eliminat, ar r?m?ne 2 op?iuni: marcarea spa?iului ca fiind liber pentru o utilizare ulterioar?, sau s? fie mutate fi?ierele existente in locul r?mas liber.Din moment ce mutarea fi?ierelor poate fi consumatoare de timp dac? sunt mai multe fi?iere care trebuie mutate, de obicei spa?iul liber este pur si simplu l?sat nealocat, marcat ca fiind disponibil pentru noi fi?iere (vezi exemplul 2 in imagine). ?n momentul ?n care un nou fi?ier (F) are nevoie pentru a fi alocat de 6 blocuri de spa?iu, el poate fi pozitionat in primele 6 blocuri ale spa?iului r?mas liber dupa eliminarea fi?ierului B, iar celelalte 4 blocuri vor r?m?ne in continuare disponibile (vezi exemplul 3 din imagine). Dac? un nou fi?ier (G) este ad?ugat si are nevoie de doar 4 blocuri, el poate ocupa spa?iul disponibil dintre F si C (exemplul 4 din imagine).Cu toate aceste, dac? fi?ierul F trebuie sa fie extins, sunt 3 optiuni, din moment de spa?iul imediat urm?tor nu mai este disponibil:1) Se mut? fi?ierul F intr-un loc nou, de dimeniune mai mare, unde sa aib? loc toat? informatia (inclusiv extinderea sa). Acest lucru nu este posibil dac? fi?ierul este mai mare dec?t cel mai mare spa?iu disponibil. De asemenea, fi?ierul ar putea fi at?t de mare ?nc?t s? dureze o perioada foarte mare de timp, ceea ce este nedorit, pentru a se realiza operatia.2) S? fie mutate toate fi?ierele ce urmeaz? dup? F, p?n? c?nd se elibereaz? destul spa?iu pentru a pune toat? informatia cuprins? ?n fi?ierul F, f?r? a mai fi despartit? ?n mai multe buca?i de catre alte fi?iere. Ca ?i in exemplul precedent, dac? nu sunt multe fi?iere de mutat si dac? nu ocup? un spa?iu mare de memorie, acest lucru nu este greu de realizat. ?n schimb, problema apare dac? sunt mii sau zeci de mii de fi?iere si timpul este mult prea mare pentru a le muta.3) S? fie ad?ugat un bloc nou ?i sa ?i fie indicat fi?ierului F c? exist? spa?iu disponibil. Trebuie repetat acest lucru de c?teva sute ori pentru a avea un num?r suficient de mare de spa?ii foarte mici, astfel inc?t s? incap? extinderea fi?ierului. C?nd fi?ierul este divizat in at?t de multe par?i, cum este cazul de fa?a, timpul de acces poate fi extrem de lung atunci c?nd este citit.?n plus, conceptul de “fragmentare” nu este limitat doar de fi?iere individuale care con?in multiple extensii pe disc. De exemplu, un grup de fi?iere citite ?ntr-o ordine secven?iala (cum ar fi fi?ierele accesate de un program care se ?ncarc?, ce poate include DLL-uri, fi?iere media (audio/video) etc., poate fi considerat fragmentat, chiar dac? fiecare fi?ier individual nu este fragmentat: capetele de citire / scriere vor trebui s? caute aceste fragmente ?n locuri aleatoare de memorie. Unele grupuri de fi?iere au fost ini?ial instalate in ordine corecta, dar au fost despar?ite ?n timp pentru c? unele dintre ele au fost sterse. O cauz? comun? a acestui lucru sunt actualiz?rile, pentru c? prima oara sunt ?terse fi?ierele vechi, apoi sunt scrise si updatate altele noi. Cu toate acestea, noile fi?iere nu sunt scrise in zona de memorie care a fost eliberat? dup? ?tergerea celor vechi.Pentru a defragmenta un disc, software-ul care realizeaza acest lucru ( cunoscut si ca “defragmenter”) poate doar s? mute fi?iere ?n spa?iile libere disponibile. Aceasta este o opera?ie intensiva si nu poate fi realizat? pe un sistem de fi?iere cu pu?in spa?iu liber sau neexistent. ?n timpul defragment?rii, performan?a sistemului poate fi degradat? ?i este cel mai bine s? nu utiliz?m calculatorul pe perioada procesului pentru a nu se produce schimb?ri nea?teptate. 2.2 Contram?suri comune – Parti?ionareaO strategie comun? pentru optimizarea defragmentarii ?i pentru reducerea impactului fragmentarii este parti?ionarea hard diskului ?ntr-o modalitate care separ? partitiile ce sunt folosite mai mult pentru citit dec?t pentru scris de zonele unde fi?ierele sunt create ?i ?terse frecvent. Directoarele care con?in profilele utilizatorilor sunt modificate constant ( ?n special directorul Temp ?i cel al web browserului din care sunt ?terse mii de fi?iere ?n c?teva zile). Pentru partitiile cu activitate de scriere relativ mic?, timpul de defragmentare se imbunata?e?te dup? prima rulare, din moment ce dup? aceea se aplic? doar fi?ierelor ce au fost create dup?.2.3 Probleme de utilizator si performan?a?ntr-o gam? larg? de sisteme multi-utilizator, nu oricare dintre ei poate defragmenta discul, dec?t dac? are accesul primit de la superuser / Administrator. ?n plus, sistemele de fi?iere, cum ar fi NTFS sunt concepute pentru a reduce riscul fragment?rii. ?mbunata?irile moderne, cum ar fi RAM cache, viteza de rota?ie mai mare a platanelor etc. reduc impactul negativ al fragment?rii. Rota?ia platanelor (masurat? in rota?ii pe minut) este viteza caracteristic? a hardurilor ?i a experimentat cea mai inceat? evolu?ie de-a lungul timpului. Din moment ce discurile bazate pe memorie flash nu au p?rti ?n mi?care, accesul aleatoriu al unui fragment nu sufer? de aceast? ?ntarziere, f?c?nd defragmentarea pentru optimizarea vitezei de acces inutil?. ?n plus, cum memoria flash poate fi scris? de un num?r limitat de ori p?n? s? nu mai functioneze, defragmentarea este, de fapt, d?unatoare. 2.4 Disk Defragmenter (Windows) Disk Defragmenter este un utilitar al sistemului de operare Windows, conceput pentru a m?ri viteza de acces prin rearanjarea fi?ierelor stocate pe disc, pentru a ocupa loca?ii de memorie consecutive, tehnica numit? defragmentare. ?ncepand cu Windows XP, Disk Defragmenter reduce, de asemenea, ?i timpul de pornire al sistemului.Windows 7 reintroduce analiza func?ionalita?ii ?i afisarea procentelor ale defragmentarii sistemului, care au fost eliminate din Windows Vista. ?n conformitate cu spusele lui Scott Hanseman de la Microsoft, Windows-urile 7, 8 si 8.1 realizeaz? defragmentarea SSD-urilor (solid-state drive), dar ?ntr-un mod complet diferit. ?n cazul SSD-urilor, fragmentarea influenteaz? mai pu?in performan?a, iar ele suport? un num?r finit de cicluri de stocare p?n? nu mai func?ioneaz?.2.5 Limit?ri?n windows 2000 ?i ?n sistemele de operare ulterioare, Disk Defragmenter are urm?toarele limitari:- nu realizeaz? opera?ia asupra fi?ierelor care sunt ?n Recycle Bin sau cele care sunt utilizate in momentul respectiv - ?nainte de lansarea Windowsului Vista, un singur volum putea fi analizat sau defragmentat ?n acelasi timp- spre deosebire de versiunile anterioare, interfa?a utilizatorului ?n Windows Vista nu mai afi?eaza un grafic al fragment?rii discului ?i nici progresul din timpul defragment?rii.3.Sistem de fi?iere virtual(Robert)Un sistem virtual de fi?iere ( VFS ) este un strat abstract ?n partea de sus a unui sistem de fi?iere mai concret. Scopul unui VFS este de a permite aplica?iilor client s? acceseze diferite tipuri de sisteme de fi?iere concrete ?ntr-un mod uniform. Un VFS poate, de exemplu, s? fie folosite pentru a accesa dispozitivele locale ?i de stocare de re?ea transparent. Acesta poate fi folosit? pentru a acoperi diferen?ele de Windows, Mac OS ?i sisteme de fi?iere Unix, astfel ?nc?t aplica?iile pot accesa fi?iere de pe sisteme de fi?iere locale ale acestor tipuri, f?r? s? ?tie ce tip de sistem de fi?iere sunt accesate.Un VFS specifica o interfa?? ?ntre nucleu ?i un sistem de fi?iere. Prin urmare, este u?or a ad?uga suport pentru noile tipuri de sistem de fi?iere la nucleu pur ?i simplu prin interfa?? . Fig. [6]?n present toate ecosistemele UNIX ?ncearc? s? integreze mai multe sisteme de fi?iere ?ntr-o singur? structur?. De exemplu, un sistem Linux poate avea ext2 ca sistem de fi?iere root cu o parti?ie ext3 ?i un hard-disk secund av?nd ReiserFS, precum ?i un ISO 9660 CD-ROM montat temporar. Din perspectiva utilizatorului exist? un singur sistem de fi?iere, dar de fapt ?n spate se afl? o diversitate de sisteme de fi?iere ?i de procese.Fig. [7]Schema de mai sus ilustreaz? o structur? de VFS realizat? de Sun Microsystems ?n 1986. Aceasta exemplifica felul ?n care Sun a organizat VFS-ul ?i anume: s-a abstractizat zona din sistemele fi?ierelor care era comun? ?i s-a pus acel cod ?ntr-un layer separat ce f?cea apel la organizatorul de date din sistemul de fi?iere concret. Toate apelurile sistemului ce f?ceau referire la fi?iere erau direc?ionate c?tre VFS pentru procesarea ini?ial?. Aceste apeluri veneau din procesele utilizatorului ?i erau numite apeluri standard POSIX(open-read-write-iseek-close-etc). Interfa?a cu utilizatorul a VFS-ului care organiza procesele ?i apelurile se numea interfa?a POSIX. VFS avea, ?i o interfa?a situat? mai jos, numit? interfa?a VFS care se ocupa cu restul proceselor si apelurile de func?ii ce permiteau realizarea f?r? probleme integrarea tuturor sistemelor de fi?iere.3.1 Implement?riUnul dintre primele mecanisme ale sistemului de fi?iere virtuale pe sisteme Unix a fost introdus de Sun Microsystems ?n SunOS 2.0 ?n 1985. Acesta a permis sistemului Unix apeluri pentru a accesa sistemele locale de fi?iere UFS ?i sisteme de fi?iere NFS(Network File System) la distan?? transparent. Din acest motiv, furnizorii Unix care licen?iau codul NFS de la Sun au copiat design-ul de proiectare al VFS Sun. Alte sisteme de fi?iere ar putea fi conectate: a existat o punere ?n aplicare a sistemului de fi?iere MS- DOS FAT dezvoltat la Sun, conectat la SunOS VFS, care nu a fost livrat ca un produs p?n? ?n SunOS 4.1. Implementarea SunOS a stat la baza mecanismului de VFS ?n System V Release 4.John Heidemann a dezvoltat un VFS sub SunOS 4.0 pentru sistemul de fi?iere Ficus experimental. Heidemann a adaptat acest lucru pentru utilizarea ?n BSD ca o parte a cercet?rilor sale teze: descenden?i ai acestui cod stau la baza implementarilor sistemului de fi?iere ?n instrumente derivate BSD moderne, inclusiv Mac OS X.Alte sisteme de fi?iere virtuale Unix includ Switch File System ?n System V Release 3, sistemul de fi?iere Generic ?n Ultrix, iar VFS ?n Linux. ?n OS / 2 ?i Microsoft Windows, mecanismul sistemului de fi?iere virtual este denumit Sistemul de fi?iere instalabile.Sistemul de fi?iere din spatiu utilizator ( FUSE ) permite codului userland s? se conecteze ?n mecanismul sistemului de fi?iere virtuale ?n Linux, NetBSD, FreeBSD, OpenSolaris, ?i Mac OS X.?n Microsoft Windows, sistemele de fi?iere virtuale pot fi, de asemenea, puse ?n aplicare prin spa?iul utilizator namespace Shell ; cu toate acestea, ele nu sus?in acces sistemului de fi?iere interfe?ele de programare a aplica?iilor la nivel mai mic, ?n Windows, deci nu toate cererile vor putea accesa sisteme de fi?iere care sunt implementate ca extensii namespace. KIO ?i GVFS / GIO furnizeaz? mecanisme similare ?n KDE ?i medii desktop GNOME ( respectiv ), cu limit?ri similare, de?i ele pot fi f?cute pentru a utiliza tehnici de siguran?a ?i, prin urmare, integrarea f?r? probleme ?n sistem.Exemplu concret de apel folosit de VFS pentru a face o citireC?nd sistemul de operare porne?te, sistemul de fi?iere este ?nregistrat de VFS. Odat? ?nregistrat, sistemul de fi?iere trimite VFS-ului o list? de adrese de func?ii pe care acesta le cere. ?n momentul ?n care sunt primite, VFS ?tie de exemplu s? fac? o citire, doar face un apel la a 10-a func?ie (10 este un exemplu) din vectorul de func?ii primit de la sistemul de fi?iere.Dup? ce un sistem de fi?iere este montat acesta poate fi folosit. De exemplu, un sistem de fi?iere este montat pe parti?ia /usr iar un process face apelul urm?tor:open(“usr/include/unistd.h”, CLRDONLY)?n timp ce parcurge calea primit? VFS-ul observ? c? s-a montat un nou sistem de fi?iere pe parti?ia /usr ?i ?i localizeaz? superblocul din lista de superblocuri ale sistemului respectiv de fi?iere. Odat? ce realizeaz? acest lucru, ?i poate accesa foarte u?or root-ul urm?rind calea primit?. ?n acel moment VFS creeaz? un v-node ?i face apel la sistemul de fi?iere concret ce ?i returneaz? toat? informa?ia despre fi?ierul din i-node-ul respectiv. Aceast? informa?ie este copiat? ?n RAM ?mpreun? cu pointerul c?tre tabela de func?ii ce include opera?iile asupra fi?ierului(open-read-write-close etc).Odat? ce v-node este creat, VFS creeaz? o intrare nou? ?n tabela descriptorilor pentru apelurile de procese ?i ?i seteaz? un pointer c?tre v-node. ?i ?n final VFS returneaz? descriptorul de fi?ier c?tre apelant pentru a putea fi folosit la scriere, citire ?i ?nchiderea fi?ierului. C?nd procesul face o citire folosind descriptorul de fi?ier, VFS localizeaz? v-node-ul procesului ?i fi?ierul din tabela de descriptori de fi?iere ?i ?i urm?re?te pointerul c?tre tabela de func?ii ?n care sunt adresele din sistemul de fi?iere ?i ?n care se afl? fi?ierul ce a fost apelat. Procedeul este ilustrat ?n figura urm?toare.00Fig. [8]4.SATA(Alex)4.1 Descriere SATAFirma Intel ?i mai multe firme produc?toare de discuri, ?n anul 2000 au ?nceput elaborarea unei interfe?e ATA serial deoarece interfa?a ATA paralel a ?nceput sa prezint? probleme in continuarea ?mbun?t??irii performan?elor din cauza problemelor specifice interfe?elor paralele.Prima versiune de lucru (1.0) a fost elaborat? de un grup numit Serial ATA Working Group ?n anul 2001 c?nd a fost publicat specifica?iile interfe?ei. ?n anul 2002 a fost format grupul Serial ATA II Working Group ce a ?mbun?t??it specifica?iile interfe?ei elabor?nd versiunea 2.0. Versiunea 3.0 , respectiv 3.1 au fost publicate specifica?iile lor in anul 2009 , respectiv 2011.?n anul 2013 a fost publicat? versiunea curent? ,3.2, ce con?ine specifica?iile pentru SATA Express ce permite conectarea unei unit??i de discuri cu interfa?a PCI Express sau p?n? la doua unit??i cu interfa?a SATA. Datorit? vitezei crescute pe interfa?a PCI Express este permis? optimizarea performan?ei pentru SSD-uri si memorii flash NAND intregrate.ATA serial? folose?te dou? canale seriale unidirec?ionale, unul recep?ie ?i unul transmisie , ?n timp ce ATA paralel? folose?te un canal de 16 bi?i pentru a transmite datele.Semnalul de ceas are frecven?a mai ridicat? fat? de cea a interfe?ei ATA paralel, chiar dac? sunt transmise serial bit cu bit.Tip Interfa??Frecven?a (GHz)Rata de transferSATA-1501,5150 MB/sSATA-3003300 MB/sSATA-6006600 MB/sSATA Express82 GB/s[9] Bi?ii de date sunt codifica?i NRZ , reprezenta?i pe linia de transmisie, astfel un bit reprezint? o schimbare a tensiunii.. Utilizeaz? codificarea 8b/10b pe linia serial? pentru transmisie de dat, prin fiecare octet de date printr-o anumit? combina?ie de 10 biti sunt reprezentate.Codificarea 8b/10b asigur? c? nu exist? patru sau mai mult de ?ase bi?i de 1 (sau 0) ?ntr-un singur octect codificat, astfel este asigurat c? distran?ele intre tranzi?iile de tensiune s? fie echilibrate.Interfa?a SATA folose?te conexiunea punct la punct, astfel nu exist? necesitatea de a desemna un master ?i un slave.Principalele avantaje ale interfe?ei SATA sunt:dimensiunile reduse ale conectorilor ?i cablului,viteza ridicat?lungimea cablului mai marecompatibilitate la nivel software cu interfa?a ATA paralel?posibilitatea deconect?rii si conect?rii echipamentelor f?r? ?ntreruperea tensiunii de alimentareDatorit? acest avantaje interfa?a ATA paralel? a fost ?nlocuit? treptat de SATA.Registrele interfe?ei ATA Comunicarea se realizeaz? prin regristre de I/O. Spre deosebire de alte interfe?e , la care numai controlerul selectat recep?ioneaz? comenzi de la calculator, in cazul ATA se transmit abelor unit??i ?i controlelor ?ncorporate.Calculatorul realizeaza distinc?ia dintre cele dou? prin bitul DEV din registrul de selec?ie al dispozitivului. Dac? bitul DEV este 1, unitatea 1 este selectat? (slave) , iar dac? este 0 atunci unitatea 0 este selectat? (master).right254635Tabel registrele interfe?ei ATA ?i adresele acestora pentru ATA primar? [10] 4.2 RegistreRegistrul de comand?Con?ine codul comenzii care este transmis controlerului unit??ii de discuri. ?ncepe imediat execu?ia comenzii dup? ce codul comenzii este ?nscris ?n registrul de comand?. Scrierea ?n acest regristru ?terge orice condi?ie de ?ntrerupere ?n curs, cu excep?ia comenzii Device Reset.Registrul de selectie al dispozitivuluiUtilizeaz? pentru selectarea unit??ii de discuri. Se scrie ?n registru numai atunci c?nd bi?ii BSY ?i DRQ din regristrul de stare sunt egali cu 0.Registrul de date?n acest registru de 16 bi?i este utilizat pentru scrierea ?i citirea datelor in modul de transfer PIORegistrul de control al dispozitivuluiPermite calculatorului gazd? executarea reset?rii software a unit??ilor de discuri ?i s? valideze activarea semnalului de ?ntrerupere INTRQ de c?tre unitatea selectat?.Registrul de eroareCon?ine starea ultimei comenzi executate sau un cod de diagnosticare, cu excep?ia comenzilor Device Reset ?i Execute Device Diagnostic. Con?inutul acestuia este valid c?nd bitul ERR este 1.La terminarea execu?iei unei comenzi Device Reset sau Execute Device Diagnostic ?i dup? o resetare software sau hardware, con?ine un cod de diagnosticare acest registru.Registru de contor de sectoareAcest registru este scris cu num?rul sectoarelor de date ce trebuie transferate ?ntr-o opera?ie de scriere sau citire ?ntre unitatea de discuri ?i calulatorul gazd?. Se poate scrie ?n acest registru numai daca bi?ii DRQ ?i BSY sunt ambii 0.Con?inutul acestui registru devine un parametru al comenzii, codul comenzii este scris in registrul de comand?.Pentru comenzile de acces la suport , valoare este 0 la terminarea comenzii dac? nu au fost erori indicate ?n registrul de stare. ?n cazul unei erori acest registru con?ine num?rul de sectoare ce trebuie transferate pentru a termina opera?ia.Registru pentru setarea caracteristicilorRegistrul este utilizat pentru setarea diferitelor caracteristici ale interfe?ei, ex pentru invalidarea sau validarea memoriei chace prin comanda Set Features. Registrul poate fi scris numai atunci c?nd bi?ii DRQ ?i BSY din registrul de stare sunt 0.Registrele de adres? LBARegistrele permit scrierea adresei sectorului la comenzile de scriere sau citire ce utilizeaz? adresarea LBA. Registrele pot fi scrise numai cand bi?ii DRQ ?i BSY din registrul de stare sunt 0. Con?inutul devine parametri ai comenzii atunci c?nd codul comenzii este ?nscris ?n regristrul de comand?.Comenzile care utilizeaz? adresarea LBA pe 48 de bi?i, o sa func?ioneze ca memorii FIFO de c?te doi octe?i regristrele de adres? LBA.Registrul de stareCon?ine starea curent? a unit??ii, daca bitul BSY este 0 atunci ceilal?i bi?i con?in informa?ii valide. Dac? acest registru ?n timpul unei ?ntreruperi este citit de calculatorul gazd? condi?ia de ?ntrerupere este ?tears?.Registrul alternativ de stare Con?ine acelea?i informa?ii ca ?i registrul de stare. Deosebirea const? ?n faptul c? registrul alternativ de stare nu implic? ?tergerea condi?iei de ?ntrerupere sau achitarea unei ?ntreruperi c?nd este citit registrul.Execu?ia transferurilor de dateSunt definite protocoalele utilizate ?n standardele ATA pentru transferurile de date ?ntre unitatea de discuri , calculatorul gazd? ?i durata ciclurilor de citire/scriere.Prezentarea modului de transfer PIO ?i modul de transfer DMA.PIO:“Protocolul pentru o opera?ie de citire ?n modul de transfer PIO este urm?torul:1. Calculatorul cite?te registrul de stare p?n? c?nd bitul BSY devine 0.2. Calculatorul seteaz? la 0 sau la 1 bitul DEV din registrul de selec?ie al dispozitivului, ?n func?ie de unitatea care trebuie selectat?.3. Calculatorul cite?te registrul de stare p?n? c?nd bitul BSY devine 0 ?i bitul DRDY devine 1.4. Calculatorul scrie parametrii necesari ai comenzii ?n registrele corespunz?toare.5. Calculatorul scrie codul comenzii ?n registrul de comand?.6. Unitatea seteaz? bitul BSY ?i preg?te?te primul bloc de date care trebuie transferat c?tre calculator.7. Atunci c?nd blocul de date este disponibil, unitatea seteaz? bitul DRQ. Dac? a ap?rut o condi?ie de eroare, unitatea seteaz? bi?ii corespunz?tori de eroare ?i de stare. Apoi, unitatea reseteaz? bitul BSY ?i activeaz? semnalul INTRQ. 8. Dup? ce detecteaz? c? bitul BSY este 0 prin citirea registrului alternativ de stare sau dup? ce prime?te o cerere de ?ntrerupere, calculatorul cite?te ?i salveaz? con?inutul registrului de stare.9. Dac? bitul DRQ este setat, calculatorul transfer? un bloc de date prin citirea registrului de date. Dac? exist? o condi?ie de eroare ?n starea citit? la pasul 8, transferul de date poate fi invalid.10.Ca r?spuns la citirea registrului de stare, unitatea dezactiveaz? semnalul INTRQ. Ca r?spuns la citirea ?ntregului bloc de date, se execut? una din urm?toarele opera?ii:- Dac? nu a ap?rut nici o eroare ?i dac? este necesar transferul unui nou bloc de date, unitatea seteaz? bitul BSY ?i secven?a de sus este repetat? de la pasul 7.-Dac? a ap?rut o eroare, unitatea ?terge bitul DRQ ?i execu?ia comenzii se termin?.-Dac? s-a transferat ultimul bloc de date, unitatea ?terge bitul DRQ ?i execu?ia comenzii este ?ncheiat?. “ :“Execu?ia unei comenzi DMA are loc ?n urm?toarele etape:1. Calculatorul cite?te registrul de stare p?n? c?nd bitul BSY devine 0.2. Calculatorul seteaz? la 0 sau la 1 bitul DEV din registrul de selec?ie al dispozitivului, ?n func?ie de unitatea care trebuie selectat?.3. Calculatorul cite?te registrul de stare p?n? c?nd bitul BSY devine 0 ?i bitul DRDY devine 1.4. Calculatorul scrie parametrii necesari ai comenzii ?n registrele corespunz?toare.5. Calculatorul ini?ializeaz? canalul DMA.6. Calculatorul scrie codul comenzii ?n registrul de comand?.7. Unitatea seteaz? bitul BSY ?i se preg?te?te pentru execu?ia comenzii.8. Atunci c?nd unitatea este gata pentru transferul datelor, activeaz? semnalul DMARQ. Transferul DMA poate fi ?mp?r?it ?n mai multe transferuri par?iale de c?tre unitate sau de canalul DMA. Pe durata transferului, unitatea men?ine setat bitul BSY sau DRQ. Dac? apare o eroare, unitatea seteaz? bi?ii corespunz?tori din registrul de eroare ?i de stare.9. La terminarea transferului, unitatea ?terge bi?ii BSY ?i DRQ ?i activeaz? semnalul INTRQ.10.Calculatorul reseteaz? canalul DMA.” 4.3 Comenzi ATATabelul urmatorul con?ine principalele comenzi ATA ?i registrele ce trebuie ?ncarcate cu parametrii comenzilor. Semnifica?ia registrelor este:SC – Registrul pentru setarea caracteristicilor;CS – Registrul contor de sectoare;LBA – Registrele de adres? LBA;SD – Registrul de selec?ie al dispozitivului.0219075[11]-142875320040005. S.M.A.R.T.(Marius)S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) este un sistem de monitorizare, inclus ?n hard diskuri (HDD) ?i ?n solid-state drive (SSD), care detecteaz? ?i raporteaz? diferi?i indicatori ai fiabilit?tii discului, cu inten?ia de a permite anticiparea erorilor hardware.C?nd S.M.A.R.T. indic? o posibil? defec?iune, software-ul care ruleaz? pe ma?ina respectiv? poate anun?a utilizatorul de acest lucru, pentru a putea copia datele pe un alt dispozitiv de stocare, prevenind astfel pierderile de date. Produc?torul poate utiliza ?nregistrarile pentru a descoperi unde au aparut erorile ?i pentru a evita repetarea lor pe noile genera?ii de dispozitive.E?ecurile discului se ?ncadreaz? ?ntr-una din cele dou? clase de baz?:- e?ecuri previzibile, rezultate din procese lente, cum ar fi uzura mecanic? ?i degradarea treptat? a suprafe?elor de stocare.- e?ecuri imprevizibile, care se intampl? f?r? avertisment, cum ar fi problemele componentelor electrice, care se pot defecta.E?ecurile mecanice reprezint? aproximativ 60% din toate defec?iunile dispozitivelor. Majoritatea erorilor apar in urma uzurii graduale ?i, de obicei, sunt anumi?i indicatori care detecteaza ?n avans defec?iunea. Aceasta poate include cre?terea c?ldurii, cre?terea nivelului de zgomot, probleme la citire si scriere ale datelor, sau o cre?tere a num?rului de sectoare de disc deteriorate.Un studiu al Google arat? c? ?n peste 100.000 de dispozitive, care au fost testate pe o perioad? de nou? luni, s-au g?sit corela?ii clare ?ntre informatiile furnizate de SMART ?i erorile reale ap?rute ulterior. Cu toate acestea, statistica arat? c? ?ntr-o proportie de 56% a defectelor, acestea au aparut f?r? a se ?nregistra avertizari ale utilitarei SMART. Introdus pentru prima dat? ?n 2004, a avut parte de revizii periodice, cel mai recent fiind ap?rut ?n 2008. Informatia cea mai de baz? pe care o ofer? este “starea SMART”. Aceasta ofer? doar doua valori: “prag dep??it” ?i “prag nedep?sit”. Adesea, acestea sunt reprezentate de “drive fail”, respectiv “drive OK”. Valoarea “Prag dep?sit” indic? faptul c? este o probabilitate mare ca discul s? nu se mai comporte ?n viitor conform specifica?iilor ( “about to fail” ). E?ecul prezis poate produce avarii grave, sau poate fi ceva la fel de subtil ca incapacitatea de a scrie ?n anumite sectoare, sau probabil performan?a pu?in mai sc?zuta fa?? de cea declarat? de produc?tor. ?n cazul ?n care dispozitivul a ?ntalnit probleme ?n trecut, dar senzorii nu mai detecteaz? aceste probleme, starea SMART poate indica, ?n functie de produc?tor, c? driveul este ?n stare bun? de func?ionare. Incapacitatea de a citi nu indic? neaparat faptul c? o unitate este pe cale s? cedeze.5.1 ImplementareMulte pl?ci de baz? afi?eaz? un mesaj de avertizare atunci c?nd discul se apropie de o stare de eroare. De?i exista un standard, printre cei mai mari produc?tori de hard discuri, exista unele probleme r?mase s? fie rezolvate de c?tre ace?tia, fiecare cu abordarea sa. Ca urmare, SMART nu este intotdeauna implementat corect, din cauza lipsei r?sp?ndirii unui standard SMART complet, at?t hardware, c?t ?i software. Termenul SMART se refer? numai la o metod? de semnalizare ?ntre senzorii de pe disc si calculator. Prin urmare, pe o unitate poate fi implementat SMART, de?i aceasta nu include, s? zicem, un senzor de temperatur?, pe care utilizatorul consider? c? il are.5.2 Vizibilitatea sistemelor host?n func?ie de tipul de interfa?a folosit, unele pl?ci de baz? cu SMART ?i software-ul asociat nu pot comunica cu dispozivele care suport? la randul lor SMART. De exemplu, doar cateva dispozitive externe conectate prin USB sau Firewire transmit corect date SMART prin aceste interfe?e. Cu atat de multe modalita?i de conectare al hardului ( SCSI, ATA, SATA, SAS etc.), este dificil de prezis dac? rapoartele SMART vor fi transmise ?n mod corect. Chiar ?i cu un hard ?i interfat? care corespund cerin?elor, sistemul de operare al calculatorului nu poate vedea informatia SMART deoarece driveul ?i interfa?a sunt ?ncapsulate ?ntr-un strat inferior.Pe platforme Windows, multe programe sunt concepute astfel inc?t informa?ia transmis? s? func?ioneze numai dac? este logat un administrator.C?teva programe care citesc informa?ie SMART sunt: AIDA64, Argus Monitor, Defraggler, Speccy (pentru Windows), Disk Utility (pentru OS X), GNOME Disks (pentru Linux).5.3 Atribute SMARTFiecare produc?tor define?te un set de atribute ?i seteaza valori ale acestora ?n care trebuie s? func?ioneze ?n mod normal. Fiecare atribut are o valoare bruta (a carui semnifica?ie ?ine ?n ?ntregime de producator), valoare nominalizata (variaza intre 1 (cel mai r?u caz) si 253 (cel mai bun caz) ), si o alt? valoare, care reprezint? cea mai scazut? valoare nominalizat?. Produc?torii care au implementat cel pu?in un atribut SMART ?n diverse produse sunt: Samsung, Seagate, IBM, Toshiba, Intel, Western Digital etc.5.4 Comenzi SMARTScopul comenzilor SMART este de a proteja datele utilizatorilui ?i de minimiza pe c?t posibil probabilitatea erorilor dintr-un sistem, care pot fi cauzate de degradarea ?i / sau defecte ale dispozitivului. Astfel, comunic?ndu-i sistemului gazd? parametrii negativi pe care ii descopera, acesta din urma poate avertiza utilizatorul de un eventual risc ce poate s? apar? ?i ?l poate sfatui cu anumite sugestii pentru prevenirea pierderilor de date.Dac? caracteristica SMART este implementat?, atunci vor fi disponibile urmatoarele comenzi:- SMART activare / dezactivare a atributului auto – salvare- SMART – activarea opera?iilor- SMART – dezactivarea opera?iilor- SMART – returneaz? starea curent?Urmatoarele comenzi sunt op?ionale:- SMART – cite?te datele- SMART – cite?te jurnalul- SMART – scrie ?n jurnalTabelul 1: Comenzi SMART[12][13] Comenzi ATAComenzile ATA sunt utilizate pentru a citi si pentru a scrie de pe dispozitivele ATA, dar s?i pentru a seta parametrii diverselor dispozitive si pentru a verifica starea lor.Cerin?e HARDWAREPentru a putea rula comenzi ATA, este nevoie de un sistem o operare Windows. Dac? vrem s? test?m comenzi pe 48 de biti, atunci trebuie ca acestea s? fie suportate de catre drivere.Putem verifica dac? sistemul de operare vede dispozivele folosind Device manager, a?a cum era ar?tat ?n figura urm?toare:Fig. [14]Utilizarea comenzilor ATA utiliz?nd “STB Suite”Pentru a putea utiliza comenzile trebuie ca din meniul STB Suite s? select?m Comenzi -> Comenzi definite pentru utilizator. Ne va ap?rea o imagine ca ?n urmatoarea figur?: Fig. [15]Alegerea comenzilor predefiniteProgramul dispune de comenzi predefinite pe care le putem selecta, a?a cum este precizat ?n figura urm?toare: Fig. [16]?n continuare vom vedea c? respectiva comand? pe care am ales-o a fost ?nc?rcat?, lungimea transferului de date a fost specificat, am setat timpul de anulare al comenzii dac? aceasta nu se executa ?n maxim 5 secunde ?i am selectat de asemenea s? se execute comanda o singur? dat?, ca ?n figura urm?toare: Fig. [17]Vizualizarea rezultatelor returnateRezultate returnate ?n urma rul?rii comenzii vor fi afi?ate ?n sec?iunea “Command results”. ?n acest caz, se poate observa c? Statusul are valoare 0x50, ceea ce reprezint? faptul ca s-a executat cu succes.Fig. [18]Rezultatele tuturor comenzilorToate detaliile ce ?in de rezultatele comenzilor vor fi stocate ?ntr-o “list? istoric”. Fig. [19]Dac? apar eroriDac? ?n urma rularii unei comenzi, aceasta nu se termin? cu succes, atunci se va returna acest status ?n registri. ?n cele mai multe cazuri, statusul returnat va fi 0x51. ?n functie de secven?a de bi?i ce va fi afi?at? ca rezultat, putem identifica problema pe care o are dispozitivul.Fig. [20]Definirea comenzilor propriiOrice valoare poate fi plasat? ?n “task registers”, astfel permi??ndu-ne s? transmitem orice comand?. Acest posibilitate nu func?ioneaz? ?n toate situa?iile, ceea ce ?nseamn? c? a?a cum putem transmite comenzi deja definite, la fel de u?or putem transmite comenzi gre?ite c?tre dispozitiv.BibliografieFiguri + tabele[1] [2] [3][4][7][8] Modern Operating Systems – Third Edition – Andrew S. Tanenbaum[5] [6] (computing)[6] [6] [6] [9] [10][11] [12][13][14][15][16][17][18][19][20] Operating Systems – Third Edition – Andrew S. TanenbaumCap.2 Operating Systems – Third Edition – Andrew S. TanenbaumCap.4(smart)-defined ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery

Related searches