CATEGORII DOCUMENTE |
dimensiunea datelor = dimensiunea spatiului pe dispozitivul respectiv
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
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
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
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; /*
/* 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
V-Node - i-node-uri independente de sistemul de fisiere
- mount
namei - aflarea inodului
pornind de la cale
Read
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
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)
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
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/
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 |
Vizualizari: 1830
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved