File system: system call e strutture dati a run-time.

Slides:



Advertisements
Presentazioni simili
PROCESS MANAGEMENT: STRUTTURE DATI
Advertisements

Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
SQL (Standard query language) Istruzioni per la creazione di una tabella: Create table ( tipo, (, [vincoli]) Primary key ( ) CHIVE PRIMARIA Foreign key(
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
SC che operano su processi
1 Reti di Calcolatori Esercitazione 1 Implementazione di un superserver Unix di rete Vedi: W.R. Stevens, Unix Network Programming, Prentice Hall Copyright.
1 System Call per Comunicazione tra Processi Pipe.
SC che operano su file (1)
Un DataBase Management System (DBMS) relazionale client/server.
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
JAVA C import java.util.*; #include <stdio.h>
1 Esercitazione sui segnali Problema: creare un programma analizzatore di file testuali che prenda come argomenti il nome di un file e una sequenza di.
Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group.
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Gestione File System e I/O in Windows 2000 Implementazione del File System FAT-12, FAT-16, FAT-32 NTFS API relative al File System Gestione dei dispositivi.
Esercizio: Copiare un file in un nuovo file mediante le funzioni read e write.
Programmazione distribuita in Java
1 File System ed Input/Output UNIX Implementazione del File System Caratteristiche del File System Unix/Linux System Call relative al File System Linput/output.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
FILE TESTO INPUT PROGRAMMA + DATI OUTPUT FILE DATI PROGRAMMA OUTPUT
Sistemi Operativi - Shell 1 Il sistema operativo LINUX La shell Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica.
Java base VI: Gestione I/O. Argomenti Introdurre le API per linput e output in Java.
Sequence. CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE]
Constraints.
Componenti dell’architettura Oracle
Modulo 13: System call relative al File System
University of Pisa Computer Science Department System Administration Processi, task periodici, stampa Stefano Bistarelli University of Pisa Computer Science.
Sistemi Operativi – La shell Salvatore Campagna Politecnico di Torino Dipartimento di Automatica.
22 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ore 10:00.
Un esempio: Registrazione e lettura di dati in un file
Microsoft Access Maschere.
Muoversi tra le finestre
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
Corso di Elementi di Informatica
Tutorial relativo al Mio EBSCOhost. Benvenuti al tutorial dedicato a Mio EBSCOhost, verranno fornite le istruzioni per la configurazione e lutilizzo ottimizzato.
Prof. Pietro MASTROPIETRO MODELLO CLIENT-SERVER. prof. Pietro MASTROPIETRO Browser Richiesta pag1.htm INTERNET /INTRANE T SERVER WEB pag1.htm pag2.htm.
(1) Sistemi Operativi Prof. P. Cattaneo ufficio: L Ricevimento: Martedì14.00 –
Installazione di Drupal su Linux (sistemista) Installazione step-by-step e note.
1 Scheduling in Windows 2000 Un thread entra in modalità kernel e chiama lo scheduler quando: Si blocca su un oggetto di sincronizzazione (semaforo, mutex,
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
REDIREZIONE INPUT E OUTPUT
2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso sequenziale I file ad accesso casuale Apre un file già esistente.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
SQL Developer Lanciare sqldeveloper (alias sul desktop) / c:\Oracle\sqldeveloper Associare tutti i tipi di file, se volete Tasto destro sulla spina “connection”
1 Implementazione del File System nel Sistema Operativo Unix (Bach: the Design of the Unix Operating System (cap: 4, da 5.1 a 5.7, 5.12)
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 Amministrazione dei processi nel sistema operativo Unix (Bach: the Design of the Unix Operating System (cap: 6, 7, 8)
1 Chiamate di sistema Introduzione Errori : perror() Chiamate che lavorano su file.
1 File System ed Input/Output UNIX Caratteristiche del FS Unix Implementazione Il file system di Linux Organizzazione dell’ I/O.
1 Chiamate di sistema Chiamate che lavorano su file.
1 SC per IPC Pipe. 2 Pipe : file speciali utilizzati per connettere due processi con un canale di comunicazione Se B cerca di leggere da una pipe vuota.
1.1 Corso di Sistemi Operativi: Programmazione di Sistema Corso di Laurea in Informatica, Università di Firenze Anno accademico 2010/2011 Prof. Luca Ferrari.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Z iLOG 80 Calcolatori Elettronici Bartolomeo Bajic.
1 © F. Pedullà, M. VerolaAA Pipe e FIFO LSO1 Modulo 9 Pipe e FIFO Laboratorio di Sistemi Operativi I Anno Accademico Francesco.
Sistemi operativi.
I/O redirection AND PIPES
SC per IPC Pipe.
I FILES AD ACCESSO SEQUENZIALE
PROGRAMMAZIONE BASH – ISTRUZIONE IF
GFAL: Grid File Access Library Java API
File System ed Input/Output
LINUX: struttura generale
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
File system Casi di studio (3).
Transcript della presentazione:

File system: system call e strutture dati a run-time

Indice 1. Accesso ai file: system call e strutture dati di base 2. Redirezione dellinput/output 3. Pipelines 4. Altre strutture dati

1. Accesso ai file: system call e strutture dati di base

Gestione dei file: filosofia open carica in memoria li-node del file read / write accedono al file tramite il suo i-node close rilascia le strutture dati di memoria del file

Gestione dei file: strutture dati del kernel in-core i-node table

La system call open fd=open(pathname, mode) 1. tramite il pathname del file cerca il suo i-node nella i-list su disco 2. se il file non esiste o non è accessibile nella modalità richiesta restituisce un codice di errore 3. altrimenti: copia il suo i-node nella in-core i-node table e la completa 4. crea una entry nella File Table, e inizializza modalità di apertura, reference count e offset 5. crea una entry nella File Descriptor Table del processo utilizzando la prima entry libera 6. restituisce al chiamante lindice di tale entry (fd) 7. (se li-node esiste già nella in-core i-node table, inizia da 4) File Descriptor Table File table in-core i-node table 5

Ricerca nel file system tramite pathname 234 a 567 b 458 c 234 a b c i-listdata blockssuperblock /a/b/c

Esempio int fd; … fd=open (pathname, …); if (fd=-1) /* gestione errore */ …. read (fd, …); …. close(fd); NB: Un file può essere aperto più volte, e quindi avere più file descriptor associati contemporaneamente

La system call close i=close(fd); dealloca la entry nella File Descriptor Table se il reference count nella File Table è >1, lo decrementa e conclude altrimenti –dealloca la File Table entry –se il reference count nellin-core i-node è >1 lo decrementa e conclude –altrimenti: dealloca lin-core i-node restituisce lesito delloperazione (0 o 1) File Descriptor Table File table in-core i-node table 5

Esempio Processo A fd1=open("/etc/passwd",O_RD ONLY); fd2=open("local",O_RDWR); fd3=open("/etc/passwd",O_WR ONLY); Processo B fd1=open("/etc/passwd",O_RD ONLY); fd2=open("private",O_RDONLY );

La system call read n=read(fd, buffer, nbytes) accede alla File Table entry a partire da fd e controlla la modalità di apertura accede allin-core i-node; lock lin-core i-node trasforma loffset nella File Table entry in un indirizzo fisico (indirizzo blocco + offset allinterno del blocco), attraverso la tabella di indirizzamento nellin-core i- node legge il blocco/i richiesto/i nella buffer cache e copia gli nbytes richiesti in *buffer aggiorna li-node; unlock i-node aggiorna loffset in File Table entry restituisce al chiamante il numero di byte letti File Descript or Table File table in-core i-node table

La buffer cache: lettura kernelprocessodisco buffer cachebuffer read(fd, buffer, n)

La system call write size=write(fd, buffer, nbytes) accede alla File Table entry a partire da fd e controlla la modalità di apertura accede allin-core i-node; lock lin-core i-node trasforma loffset nella File Table entry in un indirizzo fisico (indirizzo blocco + offset allinterno del blocco), attraverso la tabella di indirizzamento nellin-core i-node scrive gli nbytes di buffer nella buffer cache aggiorna li-node; unlock i-node aggiorna loffset in File Table entry restituisce al chiamante il numero di byte scritti File Descript or Table File table in-core i-node table

La buffer cache: scrittura kernelprocessodisco buffer cachebuffer write(fd, buffer, n)

La system call lseek currpos=lseek (fd, offset, dadove) sposta la posizione corrente del file fd di offset bytes a partire dalla posizione specificata nel terzo parametro restituisce la posizione corrente dopo la operazione, o –1 se errore NB: Non effettua alcuna operazione di I/O File Descript or Table File table in-core i-node table

Altre system call creat (pathname, permissions) crea un file vuoto e lo apre in scrittura link (pathname1, pathname2) creazione di un (hard) link a un file unlink (pathname) distrugge il link indicato (se è lultimo, rimuove il file) rename (oldname, newname) cambia nome a un file chmod (pathname, mode) cambia i permessi di un file chown (pathname, uid, gid) cambia lowner di un file stat (pathname, buffer) fornisce informazioni di stato sul file ecc.

Directories: system call mkdir (pathname, mode) creazione di una directory rmdir (pathname) distruzione di una directory chdir (pathname) cambia la working directory opendir (pathname) apre una directory readdir (dp) legge da una directory entry closedir (dp) chiude una directory ecc.

Introduzione al linguaggio Java 6... Processo 2 Testo Dati Stack Processo n Testo Dati Stack U-Area Processo 1 Testo Dati Stack U-Area Ready queue Kernel Buffer pool File table i-node table Switcher System calls Interrupt Handlers I/O drivers Process Table Visione dinsieme File descriptor table

2. Redirezione dellinput/output

La system call dup i= dup (fd); duplica il file descriptor fd nella prima posizione libera della File Descriptor Table restituisce il nuovo file descriptor o –1 se errore File Descript or Table File table in-core i-node table

dup: esempio File descriptor table File table in-core i-node table dup (5)

dup: esempio File descriptor table File table in-core i-node table dup (5)

Standard files File Descriptor Table File Table in-core i-node table stdin stdout stderr standard files

Redirezione dellinput File descriptor table File table in-core i-node table close (0)

Redirezione dellinput File descriptor table File table in-core i-node table dup (5)close (0)

Redirezione dellinput File descriptor table File table in-core i-node table dup (5)close (0)close (5)

Redirezione dellinput File descriptor table File table in-core i-node table dup (5)close (0)close (5)

Struttura generale della shell write (1, PROMPT); while ((n=read(0,buffer,80)=!0) { riconosci nome file e args; If ( (pid=fork()) ==0) { /* I/O redirection */ if (exec(file, args)==-1) exit (1) } procid=wait(status); If (status !=0) write (2, error); write(1,PROMPT) } FIGLIO PADRE Se il comando è eseguito in background, non viene eseguita la wait $file args<> $

Shell: redirezione dellinput If ((pid=fork())==0 { /* processo figlio */ if (input redirection) { fd=open(f1, …); close (0); dup (fd); close (fd); } exec (…); } $cmd < f1

Shell: redirezione delloutput If ((pid=fork())==0 { /* processo figlio */ if (output redirection) { fd=creat(f1, …); close (1); dup (fd); close (fd); } exec (…); } $cmd > f1

3. Pipelines

Pipelines Loperatore di pipe richiede alla shell di connettere fra loro due (o più) comandi: comando1 comando2 … redirigendo lo standard output del primo nello standard input del successivo, e così via

Pipeline: come funzionano Per eseguire A B la shell: crea un file temporaneo di tipo speciale, chiamato pipe (invisibile allutente) redirige lo stdout di A sulla pipe, e crea un processo che esegue A (produttore) redirige lo stdin di B sulla pipe, e crea un processo che esegue B (consumatore) Il produttore A e il consumatore B si sincronizzano automaticamente quando A e B terminano, la pipe viene distrutta

Pipe Una pipe è un file di dimensione limitata gestita come una coda FIFO: –un processo produttore deposita dati (e resta in attesa se la pipe è piena) –un processo consumatore legge dati (e resta in attesa se la pipe è vuota)

Tipi di pipe Pipe con nome create da mknod (devono essere aperte con open) Pipe senza nome create e aperte da pipe su un pipe device definito al momento della configurazione

Creazione di una pipe senza nome: pipe i = pipe ( fd[2] ) crea una pipe senza nome, e la apre in lettura e scrittura restituisce lesito delloperazione (0 o –1) assegna a fd[0] il file descriptor del lato aperto in lettura, e a fd[1] quello del lato aperto in scrittura

Pipe e file ordinari Creazione e uso di un file ordinario: int fd; If ((fd=creat(filename,…) <0 ) err(); write(fd,…); … Creazione e uso di una pipe (senza nome): int fd[2]; If ( pipe(fd) < 0 ) err(); write(fd[1],…); read(fd[0],…); …

pipe ()

Pipe: uso tipico

Realizzazione di una pipeline $cmd1 cmd2

Realizzazione di una pipeline (segue) if ((pid=fork()) == 0) { /* processo figlio */ if (pipeline) { pipe (fd_pipe); if (fork()==0) { /* produttore */ close(1); dup(fd_pipe[1]); close(fd_pipe[0]); close(fd_pipe[1]); exec (cmd1,...); } /* consumatore */ close (0); dup (fd_pipe[0]); close (fd_pipe[0]); close(fd_pipe[1]); exec (cmd2,...); }... }

4. Altre strutture dati

Mount table Tabella sempre residente, aggiornata da mount e umount, che contiene, per ogni file system montato: –major e minor number del device –puntatore al superblocco del file system –puntatore alla root del file system a cui è montato –puntatore alla directory su cui è montato

Introduzione al linguaggio Java 6... Processo 2 Testo Dati Stack Processo n Testo Dati Stack U-Area Processo 1 Testo Dati Stack U-Area Ready queue Kernel Buffer pool File table i-node table Mount Table Switcher System calls Interrupt Handlers I/O drivers Process Table Visione dinsieme