Per gestire la concorrenza nell`accesso ai dati nel file dev_ufs si
Transcript
Per gestire la concorrenza nell`accesso ai dati nel file dev_ufs si
LSO1 ufs: architectural analysis 1 Per gestire la concorrenza nell'accesso ai dati nel file dev_ufs si possono prevedere vari scenari: 1) NO SERVER ufsd: le applicazioni utilizzano direttamente i file lock, implementati nel codice della libreria libufs.a, per gestire l'accesso a dev_ufs 2) UN SOLO SERVER ufsd: le applicazioni inviano mediante IPC (FIFO) le loro richieste all'unico server condiviso che esegue l'accesso a dev_ufs, senza la necessità di file lock 3) SERVER ufsd MULTIPLI: le applicazioni inviano mediante IPC (FIFO) le loro richieste ai rispettivi server, che utilizzato i file lock per gestire l'accesso a dev_ufs Per il progetto/esonero 2 si richiede l'implementazione dello scenario 3. AA 2007-2008 © 2005-2007 F. Pedullà, M. Verola ufs: architectural analysis LSO1 2 1) Gestione della concorrenza implementata nelle applicazioni stesse Appl 1 Appl i record locking Appl N I/O syscalls dev_ufs Linux kernel Il record locking è necessario in quanto più processi contemporaneamente accedono alle strutture dati contenute nel file Linux dev_ufs. La libreria libufs.a ha il compito di richiedere i lock e di fare l'accesso diretto al file Linux dev_ufs. AA 2007-2008 © 2005-2007 F. Pedullà, M. Verola ufs: architectural analysis LSO1 3 2) Gestione della concorrenza implementata mediante singolo server Appl 1 Appl i IPC Appl N I/O syscalls dev_ufs Linux kernel File server ufsd AA 2007-2008 Il record locking NON è necessario in quanto UN SOLO processo accede alle strutture dati contenute nel file Linux dev_ufs. La libreria libufs.a serve per inviare e ricevere messaggi via FIFO. © 2005-2007 F. Pedullà, M. Verola ufs: architectural analysis LSO1 3) Gestione della concorrenza implementata mediante server multipli Appl 1 Appl i Appl N (1) (10) IPC Channels Record Locking 4 Typical access pattern: (1) Appl sends I/O request via FIFO (2) Server receives I/O request via FIFO (3) Server obtains lock on dev_ufs data (4) Server calls I/O syscall (5) Kernel performs I/O access to dev_ufs (6) Kernel retrieves data from dev_ufs (7) Server gets rc/data of I/O syscall (8) Server releases lock on dev_ufs data (9) Server sends reply/data via FIFO (10) Appl receives reply/data via FIFO I/O syscalls (5) (6) dev_ufs Linux kernel (2) (9) (3) (4) (8) (7) File Server ufsd.1 AA 2007-2008 File Server ufsd.i File Server ufsd.N © 2005-2007 F. Pedullà, M. Verola