Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

Sistemul de fisiere

calculatoare



+ Font mai mare | - Font mai mic



Sistemul de fisiere

Istoric



Benzi perforate

dimensiunea datelor = dimensiunea spatiului pe dispozitivul respectiv

Benzi magnetice - de dimensiune fixa

acces secvential

se poate scrie incepand cu orice punct

1) un fisier pe o banda

- risipa mare, timp de acces redus

2) mai multe fisiere pe o banda

- aparitia notiunii de fisier ca 'grup de date'

- alocare contigua

- o imbunatatire -> index la inceput

- fragmentare externa

3) un fisier pentru mai multe benzi

- se pune problema abstractizarii sistemului de fisiere

4) discurile si cilindrii - schimba scena

- se poate accesa in orice moment orice punct al discului, platind doar un timp de acces mic

Servicii oferite de sistemul de fisiser (user view)

access independent de dispozitivul hardware - fisiere

regasirea informatie dupa identificatori simbolici

un singur director

doua nivele

ierarhie nelimitata

accesarea informatiei - operatii asupra fisierelor

o       create, delete, rename

o       open, read, write, append, seek, close

o       setattributes, geattributes

o       securitate

o       privacy

Implementarea serviciilor

Organizarea fizica a informatiei

discuri

alocare contigua

alocare pe blocuri de dimensiune fixa

o       liste inlantuite

liste inlantuite intr-un index (ex: FAT)

i-nod-uri

o       UNIX

o       Windows NT

fisierul este considerat un obiect cu atribute

inclusiv date sunt un atribut (daca incap sunt incluse in i-nod)

stocarea directoarelor - fisiere cu structura speciala

FAT

UNIX

- restul informatiilor in i-node

Structura unui volum

Unix

WindowsNT

Gestiunea spatiului liber

o       lista inlantuita

o       bitmap

Gestiunea sectoarelor defecte

Privacy

o       subiect - domeniu (Tannenbaum)

matrice de drepturi

lista de drepturi de acces - per subiect

lista de capabilitati - per domeniu

Implementare apelurilor de system

MINIX vedere de ansamblu


Structuri de date in kernel

File position table

metode de access la tabela de i-node-uri

PUBLIC struct inode *get_inode(dev, numb);

PUBLIC void put_inode(rip)

PUBLIC struct inode *alloc_inode(dev, bits);

PUBLIC void wipe_inode(rip)

PUBLIC void rw_inode(rip, rw_flag)

PUBLIC void free_inode(dev, inumb)

dev_t dev; /* on which device is the inode */

ino_t inumb; /* number of inode to be freed */


PUBLIC struct inode *get_inode(dev, numb)

dev_t dev; /* device on which inode resides */

int numb; /* inode number (ANSI: may not be unshort) */

} else

}

/* Inode we want is not currently in use. Did we find a free slot? */

if (xp == NIL_INODE)

/* A free inode slot has been located. Load the inode into it. */

xp->i_dev = dev;

xp->i_num = numb;

xp->i_count = 1;

if (dev != NO_DEV) rw_inode(xp, READING); /* get inode from disk */

xp->i_update = 0; /* all the times are initially up-to-date */

return(xp);

}

the Minix i-node


PUBLIC void rw_inode(rip, rw_flag)

register struct inode *rip; /* pointer to inode to be read/written */

int rw_flag; /* READING or WRITING */

/* Copy the inode from the disk block to the in-core table or vice versa.

* If the fourth parameter below is FALSE, the bytes are swapped.

*/

if (sp->s_version == V1)

old_icopy(rip, dip, rw_flag, sp->s_native);

else

new_icopy(rip, dip2, rw_flag, sp->s_native);

put_block(bp, INODE_BLOCK);

rip->i_dirt = CLEAN;

metode de acces la cache

PUBLIC struct buf *get_block(dev, block, only_search)

PUBLIC void put_block(bp, block_type)

PUBLIC zone_t alloc_zone(dev, z)

PUBLIC void free_zone(dev, numb)

PUBLIC void rw_block(bp, rw_flag)

PUBLIC void invalidate(device)

PUBLIC void flushall(dev)

TEMA sa se scrie functia: PUBLIC block_t read_map(rip, position) - primeste ca parametru o structura de tip inode si o positie de fisier, si calculeaza ID-ul blocului in care se gasesc datele respective

EXTERN struct inode inode[NR_INODES];

EXTERN struct buf b;

#define zone_t int

#define BLOCK_SIZE 512 LINUX - VFS: Virtual File System - abstractizarea accesului

Access simultan la FAT, Ext2, NTFS, NFS

V-Node - i-node-uri independente de sistemul de fisiere




struct vnode u;


struct inode_operations

Cateva apeluri

- mount

namei - aflarea inodului

pornind de la cale


vnode * namei(char * carare, vnode * start)

if (curent->montat_sub)
curent = curent->operatii->lookup(curent, componenta);
if (!curent)
return NULL;
}
return curent;

Read

Consideratii suplimentare

Dimensiunea blocului

Consistenta /performanta

o       Cache - mareste performanta dar reduce securitatea

o       Careful write - scrie astfel incat dupa fiecare operatie sistemul sa ramana consistent

o       Lazy Write - se sacrifica consistenta pentru performanta. Se intretes cererile, se ignor inconsistentele care pot rezulta din itretesere

o       Log service (NTFS)

o       Log-Structured File System

Toate scrierile se fac la sfarsitul zonei alocate

I-nod-urile si datele nu se mai aloca in zone separate


Sisteme distribuite

NFS: Network File System

serverul nu tine starea

bazat pe

o       Remote Procedure Call

o       eXternal Data Reprezentation

o       localizare explicita


servicii:

NFSPROC_LOOKUP(nume)

intoarce un filehandle pentru fisierul "nume"

NFSPROC_READ(readargs)

citeste o anumita zona din fisierul specificat

struct readargs ;

NFSPROC_WRITE(writeargs)


struct writeargs ;
NFSPROC_CREATE(createargs)

struct createargs ;


AFS: Andrew File System

construit pentru a oferi access unitar la resursele unui campus (fisiere, imprimante, etc) de pe oricare dintre cele 50000 statii de lucru

localizare transparenta

access transparent


un arbore comun de directoare

arborele partitionat in zone disjuncte

fiecare zona asignata unui server

baza de date cu localizarea se tine pe fiecare server

un Workstation care are nevoie de un fisier nedisponibil local aduce local intregul fisier si il stocheaza intr-un cache

se aboneaza la serverul de baza la un serviciu de notificare a schimbarilor

trimite fisierul inapoi pe server doar in cazul la inchiderea fisierului

sincronizarea intre mai multe procese care acceseaza concurent un fisier este lasata la latitudinea proceselor

ofera oricarui utilizator al retelei posibilitate de a se loga pe oricare dintre statiile de lucru AFS si a lucra a si cum fisierele sunt locale

zonele pot migra de pe un server pe altul

pot exista replici read-only

Bibliografie

Tanenbaum: Operating Systems Design and Implementation - second edition

Cap 5: File Systems (5.3, 5.6, 5.7)

RFC1094: The Network File Systems

P. Morris: Andrew: adistributed personal computing environement

Mihai Budiu: articole pentru PCReport https://www.cs.cmu.edu/~mihaib/

Surse Minix: https://www.minix.org/

Chestionar

Ce v-a placut?

Ce nu v-a placut/v-a plictisit?

Despre ce a-ti fi vrut sa aflati mai multe?



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1671
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