PDA

View Full Version : [UNIX] I-node e tabelle dei file.. come funziona?


zanardi84
02-04-2009, 08:12
Rieccomi con un altro problemuccio.

Sto cercando di risolvere questo esercizio sul funzionamento del file system unix. La prima parte mi risulta piuttosto facile, basta seguire le indicazioni date dagli i-node e si arriva a costruire la struttura delle directory. Poi è solo una questione seguire le inidcazioni al puntatore di ogni file.

La seconda parte invece, quella delle tabelle proprio non mi è chiara. Sto leggendo la teoria da più fonti e appunti ma non ne esco proprio.
Qualcuno mi spiega come si arriva al completamento, che poi dovrebbe essere una simulazione di come evolvono le tabelle dei file quando vengono usati dai processi.


int main ( ) { /* processo P */
/∗ dichiarazioni varie ∗/
fd1 = open ("/cat1/cat3/file1", O_RDONLY);
read (fd1, bufP1, 5);
fd2 = open ("/cat1/cat3/file2", O_RDONLY);
read (fd2, bufP2, 4);
pid = fork ( );
if (pid == 0) { /* processo Q */
read (fd2, bufQ, 6);
pid = fork ( );
if (pid == 0) { /* processo R */
fd3 = open ("/cat1/cat2/file3", O_RDONLY);
read (fd3, bufR3, 6);
close (fd1);
lseek (fd2, -2, 1);
/* 1 = riferimento relativo alla posizione corrente∗/
read (fd2, bufR2, 5);
exit (0);
} /∗ fine R ∗/
...
} /∗ fine Q ∗/
...
} /∗ fine P ∗/

A un certo istante T si sono verificati gli eventi seguenti:
• dopo l’esecuzione della prima fork è andato in esecuzione subito il processo Q
• dopo l’esecuzione della seconda fork è andato in esecuzione subito il processo R
• il processo R ha eseguito la seconda funzione read (ma non ha ancora eseguito la funzione exit)
Il contenuto del volume durante l’esecuzione del processo è il seguente.
Nota Bene: lo i-node associato alla directory radice ( / ) ha 0 come i-number; le directory contengono coppie <i-node, nome file>.
Tab. i-node: <0,dir,8>,<3,dir,20>,<4,dir,12>,<5,dir,17>,<11,norm,75>,<18,norm,80>,<30,norm,90>
Blocco 8: …< 1, dev >, < 3, cat1> …
Blocco 12: …< 11, file1> … <18, file2>…
Blocco 17: …< 30, file3>
Blocco 20: …< 4, cat3 > … <5, cat2>…
Blocco 75: ABCDEFGHI
Blocco 80: AlfaBetaGammaDelta
Blocco 90: PQRSTUVZ
a) Indicare il contenuto, all’istante T, delle variabili seguenti:
bufP1: ABCDE_____________ bufP2: Alfa______________ bufQ: BetaGa___________
bufR2: Gamma_______________ bufR3: PQRSTU_____________

Poi mi propone questo punto

http://img3.imageshack.us/img3/576/immagineeis.jpg


Grazieee

zanardi84
04-04-2009, 10:19
Nessuno mi sa aiutare, magari spiegandomi cosa succede alle tabelle quando un processo apre un file?