Files, File I/O, File Sharing. Franco Maria Nardini



Documenti analoghi
Files, File I/O. Franco Maria Nardini

File I/O. M. R. Guarracino: File I/O 1

Digressione: man 2...

Laboratorio di Sistemi Operativi

Capitolo 3 -- Stevens

Introduzione al Linguaggio C

Interprocess Communications - II. Franco Maria Nardini

Laboratorio di Sistemi Operativi primavera 2009 open

Corso di Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi

Digressione: man (2)...

Gestione dei File in C

Esercitazione [8] Pipe e FIFO

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A

I file di dati. Unità didattica D1 1

Modulo 13: System call relative al File System

Drivers. Introduzione Tipologie Struttura Interazione con il kernel

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file:

I/O su Socket TCP: read()

L API socket ed i daemon

Esercitazione [5] Input/Output su Socket

Esercitazione 4. Gestione dei file in Unix

Files e Directories. Franco Maria Nardini

Laboratorio di Sistemi Operativi

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Gestione dei File. dischi nastri cd

1. Standard input 2. Standard output 3. Standard error

Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo:

SISTEMI OPERATIVI DISTRIBUITI

Laboratorio di Sistemi Operativi

Standard I/O. Franco Maria Nardini

IPC System V. Code di messaggi

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3

Introduzione alla. Alessandra Giordani Lunedì 27 febbraio

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo

Il sistema operativo LINUX Il file system. Indice. Blocchi logici. Indice. Super block. G. Di Natale, S. Di Carlo

Interfaccia del file system

Record locking con la system call fcntl

Input-Output di basso livello

Indice. settembre 2008 Il File System 2

Corso di Laboratorio di Sistemi Operativi A.A

Sistemi Operativi: Programmazione di Sistema

Cognome: Nome: Matricola: Sicurezza dei sistemi informatici e delle reti 18 febbraio 2014

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Implementazione del File System

Capitolo 5 -- Stevens

1.4: Il File System. File, directory, file system. Struttura e operazioni su file e directory. Implementazione delle directory

Software di base. Corso di Fondamenti di Informatica

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Laboratorio di sistemi operativi A.A. 2010/2011 Gruppo 2 Gennaro Oliva 16 Input/Output

Il File-System. I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Corso sul linguaggio Java

Il Software. Il software del PC. Il BIOS

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Controllo I/O Costituito dai driver dei dispositivi e dai gestori dei segnali d interruzione.

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

&& (nessun altro processo ha il file aperto) && (il fd e chiuso) Cancella il file;

Capitolo Silberschatz

Informatica Generale 1 - Esercitazioni Introduzione all uso della command-line shell

rsystem Maximiliano Marchesi

FPf per Windows 3.1. Guida all uso

Il linguaggio C. Breve panoramica su stdio.h

I SISTEMI OPERATIVI (1)

INTERRUPT 21H. Dispensa. Autore: Michele Naso. Classe: QUINTA INFORMATICA (5IA) Anno scolastico: 2003/2004. Scuola: Itis Euganeo

Filesystem. Introduzione Struttura logica Struttura fisica

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

File system II. Sistemi Operativi Lez. 20

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Le Infrastrutture Software ed il Sistema Operativo

Il Sistema Operativo: il File System

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI

CAP.8: Il file system

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Il software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo. (continua) Gestione della memoria principale

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

Il File System. Il file system

Calcolatori Elettronici Parte X: l'assemblatore as88

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Sistemi operativi e distribuiti

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico

Architettura di un calcolatore

Programmazione di sistema in UNIX. Immagine di un processo in UNIX. Area dati. File comandi utente

Virtualizzazione delle Periferiche. Corso di Sistemi Operativi

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE

RISOLUTORE AUTOMATICO PER SUDOKU

I Socket. Laboratorio Software M. Grotto R. Farina

Introduzione alle applicazioni di rete

Transcript:

Files, File I/O, File Sharing Franco Maria Nardini

UNIX file types UNIX non richiede una struttura interna del file. Dal punto di vista del sistema operativo c e un solo tipo di file. Struttura e interpretazione sono demandati al software. Alcuni file speciali esistono: directory

UNIX file types Tipi di file regular file: file comune, listati con un - davanti directory: file speciale più comune symbolic link: reference ad un altro file. ricorda nulla? :) named pipe: comunicazioni inter-processo (più avanti) socket: comunicazioni inter-processo (più avanti) device file: tutto è un file, anche un disco device a caratteri: stream in input e output device a blocchi: accesso diretto (dischi possono essere entrambe) door:

File Descriptors Un file descriptor (o file handle) è un intero non negativo e piccolo che identifica un file al kernel. stdin è 0, stdout è 1, stderr è 2 VIETATO usare numeri magici nel codice. usare STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO

Standard I/O File I/O: fatto tutto con cinque funzioni: open(2), close(2), lseek(2), read(2), write(2). I processi possono voler condividere risorse! atomicità delle operazioni condivisione file manipolazione dei file descriptors

c era creat(2) In origine

Ora creat(2) deprecata da open(2)

In dettaglio oflag deve essere uno (e solo uno) tra: O_RDONLY O_WRONLY O_RDWR assieme possono essere usati: O_APPEND: per appendere O_CREAT: crea il file se non esiste O_EXCL: genera errore se O_CREAT e il file esiste (atomica) O_TRUNC: se file esiste e aperto correttamente in O_WRONLY e O_RDWR, setta lunghezza a 0. O_NOTTY: se il path riferisce ad un terminale, trattalo appropriatamente O_NONBLOCK: se il path riferisce ad una FIFO, block special o char special, setta la modalità noblocking (open e I/O) O_SYNC: ogni scrittura aspetta che l I/O su dispositivo (fisico) sia completato.

Varianti di open(2) su alcune piattaforme oflag può essere: O_SEARCH: apre per ricerca (directory) O_EXEC: apre per esecuzione

Varianti di open(2) e possono esser usati anche: O_DIRECTORY: se path risolve a una non-directory, fallisce (errno a ENOTDIR). O_DSYNC: aspetta per I/O fisico (ad eccezione degli attributi) O_RSYNC: blocca la read() finchè ci sono write() pendenti

Varianti di open(2) openat() è usata per gestire pathname da differenti working directory atomicamente.

close(2) la chiusura rilascia la lock su un file descriptor. (dettagli più avanti). il kernel ci aiuta! file descriptors non esplicitamente chiusi vengono chiusi alla terminazione del processo. evitare leaks, gestire la chiusura appropriatamente (visibilità).

Esempio $ wget http://hpc.isti.cnr.it/~nardini/siselab/02/openex.c $ more openex.c $ cc -Wall -o myopen openex.c

read(2) Dichiarazione? read() inizia a leggere dall offset corrente e incrementa fino a nbytes Alcuni casi di lettura minore dei bytes richiesti: EOF incontrato prima delle nbytes letture Letture da terminale una riga alla volta Letture da rete (ritardi dovuti a buffering) Arriva un segnale

write(2) Dichiarazione? write() ritorna nbytes oppure si è verificato un errore per i regular file: write() inizia a scrivere dall offset corrente. eccezioni? :) O_APPEND! qual è l offset in questo caso? alla fine, l offset è aggiornato di nbytes

Esempio $ wget http://hpc.isti.cnr.it/~nardini/siselab/02/rwex.c $ more rwex.c $ cc -Wall -o myrw rwex.c

lseek(2)

lseek(2) whence determina come l offset e usato SEEK_SET bytes dall inizio del file SEEK_CUR bytes dalla posizione corrente SEEK_END bytes dalla fine del file

lseek(2) tutto ciò comporta: lseek di un offset negativo lseek di 0 bytes dalla posizione corrente lseek superando la fine del file

Esempio $ wget http://hpc.isti.cnr.it/~nardini/siselab/02/lseek.c $ more lseek.c $ cc -Wall -o myseek./lseek.c $./myseek <./lseek.c seek OK $ cat./lseek.c./myseek cannot seek

Esempio $ wget http://hpc.isti.cnr.it/~nardini/siselab/02/hole.c $ more hole.c $ cc -Wall -o myhole./hole.c $./myhole