8 Gestiunea fişierelor 22 aprilie 2010

Slides:



Advertisements
Prezentări similare
Prof.i.p. Bițeanu Anișoara Liceul Tehnologic Economic Administrativ
Advertisements

Proiectarea sistemelor digitale
Asistenta sociala Activitatea de asistenta sociala presupune verificarea informatiilor privind identitatea cetatenilor, veniturile si patrimoniul.
Relatii intre radacini si coeficienti (relatiile lui Viète)
Algoritmii Dijkstra si Bellman-Ford pentru determinarea costului minim
Determinarea divizorilor unui numar
-Algebra Relațională II-
Recapitulare – rezolvați următorul rebus:
Sisteme de calcul în timp real
Probleme Powerful variants of these commands are available; more later! 12.
Structura sistemelor de calcul (03-5)
Ethernet.
CREAREA DE LINK-URI.
Ce iti trebuie pentru a folosi calculatorul altcuiva!
Prof.Ghetman Daniela Grup Şcolar”Al.Vlahuţǎ” Şendriceni
Procesarea și optimizarea interogărilor
1 2 3 X O Tabela de scor Clic aici dacă X câştigă
Birotica  Excel_1 C5 / Prezentare generală Ferestra Excel
Cardul Electronic de Asigurări de Sănătate
Conținut Matrice.
MEDIUL LIMBAJULUI DE PROGRAMARE STUDIAT
Management performant în administrația publică din Municipiul Vulcan
Utilizarea Internetului in Afaceri
Utilizarea funcţiei Istoric căutări
1 CIRCUITE NUMERICE III.2.3 Numărătoare sincrone
Elementele de bază în Solidworks
Sisteme Încorporate Curs 2.
Co-Creation of Value in IT Service Processes using Semantic MediaWiki
Prezentări subiecte de cercetare
Inserarea hiperlegaturilor
Organizarea informaţiilor pe disc
Bazele Tehnologiei Informaţiei Curs 5
Generalități despre fișiere
MODULUL III: NOILE TEHNOLOGII SI OPTIMIZAREA LOR IN EDUCATIE
Pentru a insera acest diapozitiv în prezentare
Gestiunea blocajelor în Cloud
Pentru a insera acest diapozitiv în prezentare
SORTAREA PRIN METODA BULELOR
2. Unitatea aritmetică și logică
Algoritmi.
PARTEA I UTILITARE DE SISTEM
CONFERINTA “CRESTERE SUSTENABILA: ROLUL MEDIULUI DE AFACERI IN ECHILIBRUL MACROECONOMIC SI IN CONVERGENA REALA” 28 OCTOMBRIE 2015 SPINOASA PROBLEMA A CONTEXTULUI.
ALGORITMI PENTRU SORTAREA UNUI VECTOR
Css 2.
Servicii de Comert Electronic
Informatica in economie
Conferinta internationala “Intarirea Legitimitatii”
Sisteme de operare 1. Introducere.
5. Introducere în arhitecturi paralele
Proiect Tehnologia informatiei si a comunicatiilor
METODA PROIECTULUI.
Universitatea POLITEHNICA din București - Curs de 16 ore – Curs 6
Cursul 10. SEO (Promovarea site-urilor web)
Structura fișierelor index Securitate în baze de date
Cursul 7: Memorarea şi managementul informațiilor economice
Prezentare Unitate Centrala
Cum facem un CD sau DVD bootabil cu Nero
Sisteme de operare în timp real Contiki
Tastați aici detaliile evenimentului dvs.
Introducere in Geoinformatica
Software Diferite tipuri de software programe de sistem
în Word 5 moduri noi de a lucra Colaborați cu oricine, oriunde
Structura sistemelor de calcul (02-3)
TEORIA SISTEMELOR AUTOMATE
Facultatea de ………………………………………
Sondajul de opinie privind transparenta activitații APL
Profesor coordonator: prof. ing. POP ȘTEFAN DAN
Tipuri de placi video,sunet si retea
Transcriere de prezentare:

8 Gestiunea fişierelor 22 aprilie 2010 Cursul 8 8 Gestiunea fişierelor 22 aprilie 2010 14.04.2011

Gestiunea fişierelor Gestiunea fişierelor – noţiuni generale Gestiunea fişierelor în Linux VFS Inode cache, dcache, page cache Buffer cache Bibliografie LKD: capitolele 12, 15

Entități fundamentale Superblock – conţine informaţii despre sistemul de fişiere (dimensiunea blocului, inode-ul rădăcină); există atât pe disc cât şi în memorie File – structura internă SO ce descrie un fişier deschis; există doar în memorie Inode (FCB - file control block) – entitatea ce identifică un fişier în mod unic; există atât pe disc cât şi în memorie Dentry- asociază un nume cu un fişier; există atât pe disc cât şi în memorie

Entităţi fundamentale – în memorie File descriptor table FILE DENTRY INODE Tip Permisiuni .... File descriptor duplicat Link FILE DENTRY file descriptor Date Date Date Date

Entităţi fundamentale – pe disk DENTRY INODE DENTRY Date DENTRY SUPERBLOCK Block management

Exemplu: PITIX Superblock IMAP DMAP IZONE DZONE

Generic filesystem layer Privire de ansamblu stat open read Generic filesystem layer Filesystem driver Filesystem driver Block I/O layer

Operaţii fundamentale Montarea Deschiderea unui fişier Determinarea atributelor fişierului Citirea de date din fişier Scrierea de date în fişier Închiderea unui fişier Crearea unui fişier Ştergerea unui fişier

Montarea sistemului de fişiere (sau înregistrarea lui în cadrul sistemului) Intrare: un disk (partiţie) Ieşire: un DENTRY către directorul rădăcină Operaţii: verificare partiţie, determinare diverşi parametri, determinare inode-ului rădăcină Exemplu PITIX: Se verifică MAGIC-ul Se determină dimensiunea blocului Se citeşte inode-ul rădăcină şi se crează dentry-ul asociat

Deschiderea unui fişier Intrare: o cale Ieşire: un file descriptor Operaţii: Determinarea sistemului de fişiere Pentru fiecare nume din cale, determinarea inode-ului asociat cu numele Odată găsit inode-ul ultimului nume din cale se crează structura FILE şi se alocă o intrare în tabela de descriptori de fişier

Determinarea atributelor fişierului Intrare: file descriptor Ieşire: atributele fişierului Operaţii: Se accesează inode-ul (file->dentry->inode) Se citesc atributele din inode

Citirea de date din fişier Intrare: file descriptor, offset, length Ieşire: date Operaţii: Se accesează inode-ul (file->dentry->inode) Se determină blocurile de date Se copiează datele de pe disk în memorie şi sunt apoi trimise utilizatorului

Scrierea de date în fişier Intrare: file descriptor, offset, length, date Ieşire: Operaţii: Se accează inode-ul Se aloca unul sau mai multe noi blocuri pe disc – se caută blocuri libere, se marchează ca fiind ocupate Se adaugă blocurile alocate la inode Se copiaza datele de la user in bufere interne şi apoi se scriu pe disk

Închiderea unui fişier Intrare: file descriptor Ieşire: Operaţii: Se decrementează reference counter-ul structurii FILE Dacă reference counter-ul structurii FILE ajunge la 0, se şterge structura Se setează pe NULL intrarea din tabela de descriptori de fişier

Directoare Directoarele sunt fişiere ce conţin o înşiruire (vector, câteodată arbore) de DENTRY-uri.

Crearea unui fişier Intrare: o cale Ieşire: Operaţii: Se determină inode-ul directorului în care trebuie adăugat fişierul Se citesc blocurile de date Se inserează un nou dentry Se scriu pe disc blocurile de date modificate

Ştergerea unui fişier Intrare: o cale Ieşire: Operaţii: Se determină inode-ul directorului de unde trebuie şters fişierul Se citesc blocurile de date Se caută şi se şterge DENTRY-ul cu numele fişierului (caz special: link-uri) Se scriu pe disc blocurile de date modificate

Gestiunea sistemelor de fişiere în Linux

VFS stat open read Inode cache Dentry cache Page cache file Superblock Filesystem driver Filesystem driver Block I/O layer

fill_super put_super write_super read_inode write_inode Operaţii superblock fill_super put_super write_super read_inode write_inode delete_inode clear_inode Statfs remount_fs

Create Lookup Link Unlink Symlink Mkdir rmdir Operaţii inode Create Lookup Link Unlink Symlink Mkdir rmdir Rename Readlink follow_link put_link Truncate ...

Inode cache Operaţiile de citire a inode-urilor de pe disc sunt costisitoare Un inode citit se va menţine în memorie (până când apar condiţii de low memory) Căutarea inode-ului se face cu ajutorul unei tabele hash Funcţia de hash (sb, inode_number)

Dentry Stări: Dentry cache Used – d_inode este valid şi obiectul dentry este folosit Unused – d_inode este valid dar obiectul dentry nu este folosit Negative – d_inode nu este valid (NULL); fie inode-ul nu a fost încă încărcat fie a fost şters Dentry cache Lista de dentry-uri folosite (dentry->d_state == used) Lista celor mai recent folosite dentry-uri (sortată după timpul de access) Un hash table pentru a elimina parcurgerea arborelui

Page cache Menţine în memorie datele citite de pe disc Se foloseşte pentru: read/write Mmap Cache-ul se face la nivel de fişier şi nu de block device -> este nevoie de o infrastructură pentru translatarea offset-urilor din fişiere în blocuri pe disc Cache-ul se bazează pe un radix tree

address_space Structura care este folosită de page-cache pentru a translata adrese Datorită acestei abordări se poate face caching nu doar pe mapări de fişiere Operaţii address_space: write_page, read_page map direct_IO ...

Citirea de date din fişier generic_file_read – implementare generică Se verifică dacă pagina nu există în page cache Daca există se copiază datele din pache cache în buffer-ul utilizatorului Dacă nu există se apelază a_ops->readpage() block_read_full_page – implementare generică, foloseşte a_ops->bmap()

Mapează sectoare de pe disc în memorie struct buffer_head page b_page b_blocknr buffer_head b_data b_this_page buffer_head b_data Mapează sectoare de pe disc în memorie

Comenzi I/O pentru block device drivere struct bio Comenzi I/O pentru block device drivere

I/O Schedulers The Noop I/O scheduler The Linus elevator scheduler Nu se sortează, doar se coagulează cereri dacă este cazul; folosit în sistemele embedded ce nu folosesc discuri The Linus elevator scheduler Algoritm clasic, tip elevator The Deadline I/O scheduler Se asociează un deadline cu fiecare cerere; când acesta expiră cererea se va executa indeferent de poziţia în lista (sortată) The Anticipatory I/O scheduler După ce o cere este servită se aşteaptă o perioadă de timp înainte de tratarea unei cereri (timp în care se aşteaptă cereri similare de la aplicaţii)

I/O Schedulers (2) The Complete Fair Queuing I/O scheduler Fiecare process are propria coadă de I/O şi un timeslice Nucleul inspectează fiecare coadă într-o manineră round-robind şi serveşte cererile din coadă până cand timeslice-ul expiră sau până când nu mai există cereri disponibile Dacă timeslice-ul nu a fost folosit complet se aşteaptă o perioadă de timp înainte de a trece la următoarea coadă În fiecare coadă cererile sincrone (e.g. operaţiile de citire) au prioritate faţă de restul cererilor

Intrebări ?