• Non ci sono risultati.

File  System

N/A
N/A
Protected

Academic year: 2021

Condividi "File  System"

Copied!
3
0
0

Testo completo

(1)

File  System  (WIP)   AXO   Matteo  Guarnerio  

  1  

File  System  

Riferimento  alla  slide:  AXO  –  04  –  File  system.pdf    

E’  il  componente  del  SO  che  realizza  i  servizi  di  gestione  dei  file.  

I  file  sono  unità  di  archiviazione  in  memoria  di  massa.  

Il  FS  è  quindi  la  struttura  logica  della  memoria  di  massa.  

 

Un  file  è  caratterizzato  da  un  nome,  univoco  nella  directory  nel  quale  si  trova.  

Da  degli  attributi:  

• Tipo:  definisce  il  tipo  dei  dati  contenuti  (estensione  del  file,  è  facoltativa)  

• Locazione:  riferimento  implicito  alla  posizione  fisica  sul  dispositivo  

• Dimensione:  espressa  in  numero  di  byte  o  blocchi  

• Protezione:  definisce  le  politiche  di  accesso  

• Ora  e  data:  indicano  il  momento  della  creazione,  ultima  modifica  o  ultimo   accesso  a  file  

• Proprietario:  nome  utente  di  chi  ha  creato  il  file    

Le  operazioni  offerte  dalla  gestione  del  FS  sono:  

• File,  link  e  operazioni  sui  file  

• Directory  e  file  speciali  (stampanti,  tastiera,  ecc)  

• Attributi  e  politiche  di  accesso  a  file  e  directory  

• Corrispondenza  del  FS  logico  con  i  dispositivi  fisici    

Tra  le  operazioni  sui  file  troviamo  [riferimento  alle  funzioni  del  C,  fopen  e  sue   modalità  di  apertura]:  

• Creazione  

• Apertura  

• Scrittura  

• Lettura  

• Riposizionamento  

• Cancellazione    

L’immagine  del  FS  è  memorizzata  su  disco.  

Per  velocizzare  l’accesso  ai  file  il  SO  mantiene  in  memoria  una  parte  delle   strutture  dati  per  gestire  i  file.  

 

Esistono  due  tabelle  principali  del  FS:  

• Tabella  dei  file  aperti  per  ogni  processo  

E’  un  vettore  contente  informazioni  sui  file  aperto  da  un  certo  processo,   visibile  quindi  solo  da  quel  processo.  

Le  prime  3  posizioni  sono  riservate  a;  stdin,  stdout,  stderr  (l’unica   differenza  tra  stdout  e  stderr,  è  che  stderr  non  ha  un  buffer,  quindi   l’output  arriva  subito,  senza  passare  da  buffer  di  sistema).  

Se  un  processo  effettua  una  fork(),  nella  tabella  file  aperti  del  figlio  

verranno  copiate  tutte  le  entry  dei  file  aperti  dal  padre,  consentendogli  di   usarli.  

(2)

File  System  (WIP)   AXO   Matteo  Guarnerio  

  2  

• Tabella  globale  dei  file  aperti  nel  sistema  

Ogni  elemento  è  referenziato  tramite  gli  elementi  delle  tabelle  dei  file   aperti  dei  processi  e  contiene,  ed  in  aggiunta  contiene  l’indicatore  di   posizione  corrente  nel  file,  il  numero  di  riferimenti  (link)  al  file  e  un   riferimento  al  file  su  disco.  

 

Tabella  di  allocazione  su  UNIX,  i-­‐node  

Utilizza  la  logica  della  lista  (i-­‐list),  i  cui  elementi  sono  chiamati  i-­‐node  (index-­‐

node).  

Un  i-­‐node  conviene  la  lista  degli  attributi  e  degli  indirizzi  di  blocchi  di  disco  cui   sono  associati  i  blocchi  di  file.  

Un  file  esiste  su  disco  solo  se  esiste  un  i-­‐node  corrispondente,  quindi  ogni  file,   cartella  o  file  speciale  ha  associato  un  i-­‐node.  

Se  due  file  hanno  lo  stesso  i-­‐node,  sono  lo  stesso  file  (link  al  file).  

 

Un  volume  contiene  l’immagine  del  FS  (struttura  logica),  così  suddivisa:  

• Blocco  zero  o  blocco  di  bootstrap:  coincide  tipicamente  con  il  primo   settore  del  disco,  contiene  il  codice  di  inizializzazione  del  sistema   operativo.  

• Superblock:  descrive  lo  stato  del  FS,  dimensioni,  spazio  libero,  ecc.  

• Lista  degli  i-­‐node:  dimensione  definita  in  fase  di  configurazione  del  SO.  

• Blocco  di  dati:  contiene  i  blocchi  dei  file,  i  dati  effettivi  su  HD.  

 

Struttura  iList  o  tabella  degli  iNode    

#iNode  –  Numero   dell’inode  (numerazione   sequenziale  da  zero)  

Tipo  –  Dir/File   Indirizzo  Blocco  –   Numero  del  blocco  al   quale  si  fa  riferimento    

Struttura  tabella  file  aperti  da  un  processo    

FId   Id  File  Table  Globale  

 

Struttura  File  Table  Globale    

FId   Posizione  

cursore  su  file   Num  proc  con  

aperto  il  file   #iNode  

   

(3)

File  System  (WIP)   AXO   Matteo  Guarnerio  

  3  

Direct  Memory  Access  (DMA)  

Ogni  accesso  alla  memoria  fisica  viene  gestito  tramite  interrupt  dal  DMA,  il  quale   ha  il  compito  di  gestire  tutte  le  letture  e  scritture  di  dati  su  disco,  quindi  di   gestire  anche  le  chiamate  a  primitive:  open,  write  e  read.  

 

Nel  conteggio  degli  interrupt  a  DMA  si  procede  così:  

Funzione   Numero  di  interrupt  effettuati  

open()   Si  controlla  il  path  di  apertura.  

Ogni  slash  è  un  interrupt.  

Ogni  cartella  o  file  è  un  interrupt.  

Se  la  root  non  si  trova  in  memoria,   bisogna  aggiungere  un  interrupt.  

 

Esempio:  

open(“/info2/axo”)  

Num.  Interrupt  con  root  non  in   memoria:  1+2+2  

Num.  Interrupt  con  root  in  memoria:  

2+2  

(Evidenziati  gli  interrupt  che  valgono   2)  

read()  /  write()   Dipende  dal  numero  di  blocchi  

letti/scritti,  che  a  sua  volta  dipende   dalla  posizione  attuale  del  cursore  su   file.  

Ogni  blocco  letto/scritto  corrisponde   ad  un  interrupt.  

 

Riferimenti

Documenti correlati

– tabella associata ad ogni processo utente contenente una riga per ogni file aperto dal processo (indice = descrittore del file) con l’indirizzo della riga della tabella globale

• Le operazioni di lettura e scrittura su file ad accesso random fanno uso di un indice che si può spostare con le funzioni lseek (basso livello) e fseek (stream). • Ovviamente non

Calcolo dell’indirizzo fisico: a partire dall’indirizzo logico, il file system fisico individua il numero del blocco che contiene il record richiesto, in base alla lunghezza

Una conseguenza della struttura delle directory descritta e che costituisce una caratteristica peculiare dei file system dei sistemi Unix è che un inode può essere associato a più di

■ Per accedere ad un file memorizzato su un’unità fisica (di qualunque tipo), è necessario creare un collegamento tra il file oggetto dell'operazione e una variabile di tipo

int lstat (const char *path, struct stat *sb);. int fstat (int fd, struct

copiando il descrittore del file da questo alla tabella dei file aperti.  Close(f) – il descrittore del file viene rimosso dalla tabella dei

 Open(f) – prende il nome del file e cerca nel dispositivo, copiando il descrittore del file da questo alla tabella dei file aperti.  Close(f) – il descrittore del file viene