Chiamate di sistema. Pipe Flussi di I/O
|
|
- Arrigo Ferrario
- 6 anni fa
- Visualizzazioni
Transcript
1 Chiamate di sistema Pipe Flussi di I/O
2 Esempio di chiamata di sistema #include <stdio.h> int main(int argc, char ** argv) FILE * f; f = fopen("nuovo-file", "w"); fprintf(f, "Hello World!\n"); fclose(f); Sistemi Operativi 2015/16 Chiamate di sistema 2
3 Esempio chiamata di sistema #include <stdio.h> #include <sys/fcntl.h> int main(int argc, char ** argv) int fd; // file descriptor fd = open("nuovo-file", O_WRONLY O_CREAT, 0666); write(fd, "Hello World\n", 12); close(fd); File descriptor File table stdin stdout stderr Sistemi Operativi 2015/16 Chiamate di sistema 3
4 Pipe Questa comunicazione tra processi appare al programmatore simile alla scrittura-lettura dei file Una pipe è un file di dimensione limitata gestito 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 coda è vuota) Produttore Consumatore Sistemi Operativi 2015/16 Chiamate di sistema 4
5 POSIX: creazione di pipe pipe senza nome, create e aperte da pipe int pipe(int fd[2]); crea una pipe, la apre in lettura e scrittura restituisce l'esito dell'operazione (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 Si possono creare pipe con nome, devono essere create da mknod poi devono essere aperte con open Sistemi Operativi 2015/16 Chiamate di sistema 5
6 File e pipe ordinari Creazione e uso di un file ordinario: int fd; if ((fd=open(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], ); Note: la pipe è analoga a open, ma non specifica il nome e produce due file descriptor read e write sono le stesse nei due casi Sistemi Operativi 2015/16 Chiamate di sistema 6
7 Pipe: uso tipico Generalmente una pipe viene usata per far comunicare un processo padre con un suo figlio Il processo figlio eredita i file aperti, quindi anche le pipe La comunicazione generalmente è unidirezionale Processo padre pipe(fd); fork(); Processo figlio write(fd[1]); read(fd[0]); pipe oppure pipe read(fd[0]); write(fd[1]); Sistemi Operativi 2015/16 Chiamate di sistema 7
8 Pipe: uso tipico #include <stdio.h>; int main(int argc, char ** argv) int fd[2], pid, status; char i, j, i1, j1; pipe(fd); pid = fork(); if(pid!=0) // padre for(i=0; i<10; i++) write(fd[1], &i, 1); printf("scritto!\n"); waitpid(-1, &status, 0); printf("pid=%d i1=%d j=%d\n", pid, i1, j); else // figlio for(j=0; j<10; j++) read(fd[0], &j1, 1); printf("j1=%d\n",j1); printf("pid=%d i=%d\n", pid, i); Sistemi Operativi 2015/16 Chiamate di sistema 8
9 Pipe: uso tipico int main(int argc, char ** argv) int fd[2], fd2[2], pid; char i, j; pipe(fd); pipe(fd2); pid = fork(); if(pid!=0) for(i=0; i<10; i++) write(fd[1], &i, 1); read(fd2[0], &j, 1); printf("pid=%d i=%d j=%d\n", pid, i, j); else for(j=0; j<10; j++) read(fd[0], &i, 1); printf("i=%d\n", i); write(fd2[1], &j, 1); printf("pid=%d i=%d j=%d\n", pid, i, j); Sistemi Operativi 2015/16 Chiamate di sistema 9
10 Pipe: uso tipico % cat documento.txt sort shell fork(); pipe(fd); fork(); processo figlio Produttore close(1); dup(fd[1]); close(fd[0]); close(fd[1]); close(0); dup(fd[0]); close(fd[0]); close(fd[1]); Consumatore exec( cat, ); exec( sort, ); Sistemi Operativi 2015/16 Chiamate di sistema 10
11 Sistemi Operativi 2015/16 Chiamate di sistema 11 Realizzazione stdin stdout stderr File descriptor File table pipe(fd); stdin stdout stderr pipe-in pipe-out close(1); stdin stderr pipe-in pipe-out dup(fd[1]); close(fd[0]); close(fd[1]); stdin stderr pipe-out 1) 2a) 3a) 4a) stdin stderr pipe-in pipe-out close(0); stdout stderr pipe-in pipe-out dup(fd[0]); close(fd[0]); close(fd[1]); stdout stderr pipe-in pipe-out 2b) 3b) 4b) stdout stderr pipe-in pipe-out
12 Pipe: uso tipico #include <stdio.h> int main(int argc, char ** argv) int fd[2], pid; char j, j1; pipe(fd); 1) pid = fork(); if(!pid) close(1); dup(fd[1]); 2a)-3a) close(fd[0]); close(fd[1]); 4a) execlp("cat", "cat", "prova4.c", NULL); else close(0); dup(fd[0]); 2b)-3b) close(fd[0]); close(fd[1]); 4b) for(j=0; j<10; j++) read(0, &j1, 1); printf("j1=%3d %c\n", j1, j1); fprintf(stderr, "pid=%d j1=%d j=%d\n", pid, j1, j); Sistemi Operativi 2015/16 Chiamate di sistema 12
13 Risultato j1= 35 # j1=105 i j1=110 n j1= 99 c j1=108 l j1=117 u j1=100 d j1=101 e j1= 32 j1= 60 <; pid=1070 j1=60 j=10 Sistemi Operativi 2015/16 Chiamate di sistema 13
14 Ridirezioni % ls -l. pippo > ris 2>log shell fork(); processo figlio close(1); open( ris, ); close(2); open( log, ); exec( ls, ); Sistemi Operativi 2015/16 Chiamate di sistema 14
15 Pipe: uso tipico #include <stdio.h> #include <unistd.h> #include <sys/fcntl.h> int main(int argc, char ** argv) close(1); open("ris", O_WRONLY O_CREAT O_TRUNC, 0666); close(2); open("log", O_WRONLY O_CREAT O_TRUNC, 0666); execlp("ls", "LS", "-l", ".", "pippo", NULL); /* non dovrebbe mai essere eseguito */ fprintf(stderr, "Error: execlp\n"); return 1; File log : LS: cannot access pippo: No such file or directory Sistemi Operativi 2015/16 Chiamate di sistema 15
16 Semaforo tramite pipe int up(int *pipe) char tmp = 0; return write(pipe[1],&tmp,1)==1? 0 : -1; int down(int *pipe) char tmp = 0; return read(pipe[0],&tmp,1)==1? 0 : -1; int mk_mutex(int *p) if( pipe(p) < 0) return -1; return write(p[1], p, 1) == 1? 0 : -1; Sistemi Operativi 2015/16 Chiamate di sistema 16
17 Semaforo tramite pipe import java.io.*; public class Semaforo private PipedReader in; private PipedWriter out; public void down() try in.read(); catch(ioexception e) public void up() try out.write(0); catch(ioexception e) public Semaforo() this(0); public Semaforo(int v) try in = new PipedReader(); out = new PipedWriter(in); while(v-- > 0) up(); catch(ioexception e) Sistemi Operativi 2015/16 Chiamate di sistema 17
18 popen #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) FILE *pin; char line[10]; pin = popen("cat " FILE, "r"); fread(line, 1, 10, pin); fwrite(line, 1, 10, stdout); pclose(pin); return 0; Sistemi Operativi 2015/16 Chiamate di sistema 18
19 popen /* equivale a ls l sort */ #include <stdio.h> #include <stdlib.h> int main(int argc, char ** argv) FILE * pp, * pout; char line[100]; pp = popen("ls -l", "r"); pout = popen("sort", "w"); if(!pp!pout) exit(1); while(fgets(line, 100, pp)) fprintf(pout, "%s", line); pclose(pp); pclose(pout); return 0; Sistemi Operativi 2015/16 Chiamate di sistema 19
20 Duplicazione di processi #include <stdio.h> #include <sys/fcntl.h> int main(int argc, char ** argv) int i, j, pid; int fin, fout; char ch[8]; fin = open("dati", O_RDONLY); pid = fork(); if(!pid) fout = open("uno", O_WRONLY O_CREAT, 0666); else fout = open("due", O_WRONLY O_CREAT, 0666); for(j=0; j<400; j++) read(fin, ch, 8); write(fout, ch, 8); Sistemi Operativi 2015/16 Chiamate di sistema 20
21 Duplicazione di processi dati uno due Sistemi Operativi 2015/16 Chiamate di sistema 21
22 Duplicazione di processi #include <stdio.h> int main(int argc, char ** argv) int i, j, pid; FILE * fin, * fout; fin = fopen("dati", "r"); fscanf(fin, "%d\n", &i); pid = fork(); if(!pid) fout = fopen("uno", "w"); else fout = fopen("due", "w"); for(j=0; j<400; j++) fscanf(fin, "%d\n", &i); fprintf(fout, "%d\n", i); fclose(fout); Sistemi Operativi 2015/16 Chiamate di sistema 22
23 Duplicazione di processi uno due Sistemi Operativi 2015/16 Chiamate di sistema 23
24 Duplicazione di processi #include <stdio.h> #include <sys/fcntl.h> int main(int argc, char ** argv) int i, j, pid; int fin, fout; char ch[8]; pid = fork(); fin = open("dati", O_RDONLY); if(!pid) fout = open("uno", O_WRONLY O_CREAT, 0666); else fout = open("due", O_WRONLY O_CREAT, 0666); for(j=0; j<400; j++) read(fin, ch, 8); write(fout, ch, 8); Sistemi Operativi 2015/16 Chiamate di sistema 24
25 Prestazioni e chiamate di sistema #include #define BUFFSIZE 8192 int main(void) int n; char buf[buffsize]; while( (n=read(stdin_fileno,buf, BUFFSIZE))>0) if (write(stdout_fileno, buf, n)!= n) perror("main"); if (n<0) perror("main"); return(0); Note: È corretto usare, come file descriptor: STDIN_FILENO e STDOUT_FILENO (definiti in <unistd.h>) al posto di O e 1 standard input e output non vengono aperti nè chiusi Sistemi Operativi 2015/16 Chiamate di sistema 25
26 Prestazioni e chiamate di sistema #include #define BUFFSIZE 8192 int main(void) int n; char buf[buffsize]; while( (n=fread(buf, BUFFSIZE, 1, stdin))>0 ) fwrite(buf, sizeof(char), n, stdout); return(0); Sistemi Operativi 2015/16 Chiamate di sistema 26
27 Influenza di BUFFSIZE BUFFSIZE read/write (sec.) fread/fwrite (sec.) K 2K 4K 8K 16K 32K 64K 128K 256K 512K 1M Test (ambiente UNIX): prog < prova > /dev/null -Dimensione prova: 1G Sistemi Operativi 2015/16 Chiamate di sistema 30
Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC)
Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC) Le pipe sono canali di comunicazione unidirezionali Limitazione pipe: permettono la comunicazione solo
DettagliLa Comunicazione tra Processi in Unix
La Comunicazione tra Processi in Unix La è un canale di comunicazione tra processi: unidirezionale: accessibile ad un estremo in lettura ed all'altro in scrittura molti-a-molti: più processi possono spedire
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare
DettagliSistemi Operativi Teledidattico
Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione
DettagliChiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it
Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia
DettagliPer operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo:
I/O (Input/Output) System Call di I/O 2 Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo: open (e creat) write read close lseek 1 File descriptors 3 File descriptor (fd)
DettagliSmallShell Piccolo processore comandi
SmallShell Piccolo processore comandi /* file smallsh.h */ #include #include #define EOL 1 #define ARG 2 #define AMPERSAND 3 #define SEMICOLON 4 #define RIDIRIN 5 #define RIDIROUT 6
DettagliSystem calls. permettono ai programmi utente di richiedere servizi al Sistema Operativo. servizi come scrittura di file, stampa su video, ecc.
Le System Calls System calls permettono ai programmi utente di richiedere servizi al Sistema Operativo servizi come scrittura di file, stampa su video, ecc. corrispondenti procedure di libreria GNU C Library
DettagliProgrammazione di sistema in Linux: gestione dei file. E. Mumolo
Programmazione di sistema in Linux: gestione dei file E. Mumolo Struttura di Linux System Call per il file system System Call per i processi Hardware: dischi, CPU, monitor, tastiera, schede di rete, porte
DettagliLa sincronizzazione è legata alla implementazione delle pipe: int pipe(int fd[2]);
int pipe(int fd[2]); Le pipe sono canali di comunicazione unidirezionali che costituiscono un primo strumento di comunicazione (con diverse limitazioni), basato sullo scambio di messaggi, tra processi
DettagliLab. di Sistemi Operativi - Esercitazione n 9- -Thread-
Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- 1 Sommario Esercizi su: Comunicazione tra processi: la funzione pipe() Condivisione dati e codice tra due o più processi: concetto di Thread 2 -
DettagliCorso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 5 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Processi in Unix Approfondimenti: http://gapil.gnulinux.it/download/
DettagliLab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-
Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- 1 Sommario Esercizi sulla gestione dei processi Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait 2 -
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3
Marzo-Giugno 2008 matricole congrue 0 mod 3 Controllo dei processi - I Controllo dei processi Creazione di nuovi processi Esecuzione di programmi Processo di terminazione Altro 2 1 Identificatori di processi
DettagliIgino Corona
Sistemi Operativi Esercitazione 6: Comunicazione fra processi in Linux PIPE Igino Corona igino.corona@diee.unica.it 17 Novembre 2009 File In Linux, un le può essere un contenitore di informazione o uno
DettagliI SISTEMI OPERATIVI (1)
I SISTEMI OPERATIVI () un computer può essere pensato come una stratificazione di macchine virtuali, ciascuna delle quali mette a disposizione alcuni servizi, che sono utilizzabili mediante chiamate effettuate
DettagliDigressione: man (2)...
Syscall File I/O Digressione: man (2)... Le funzioni della libreria standard UNIX associate alle system call di Linux sono documentate nella sezione 2 di man e.g.: man 2 open Ogni manpage di system call
DettagliIl File-System. I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Il File-System I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 File System Il file-system è uno degli aspetti più visibili di un sistema operativo
DettagliEsercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012
Sommario: Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - System Call Parte 1 open (apertura file) creat (creazione file) close (chiusura file) write (scrittura file) read (lettura file)
DettagliProgrammazione di sistema in Linux: System Call per le IPC (InterProcessCommunication) E. Mumolo
Programmazione di sistema in Linux: System Call per le IPC (InterProcessCommunication) E. Mumolo Tipi di IPC PIPE FIFO Shared Memory shm_open() + mmap(), shm_unlink(), munmap() Semafori sem_open(), sem_close(),
DettagliPIPE. M. Guarracino - PIPE 1
PIPE M. Guarracino - PIPE 1 Introduzione Si è visto come i processi possano utilizzare i segnali per scambiarsi delle semplici informazioni. Se due processi sono nella relazione genitore/figlio, condividono
DettagliProcessi. Comunicazione tra processi Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Processi Comunicazione tra processi Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Processi independenti e cooperanti I processi concorrenti possono essere Indipendenti Cooperanti
DettagliLaboratorio di Sistemi Operativi
II Semestre - Marzo/Giugno 2008 matricole congr. 0 mod 3 I/O non bufferizzato-2 dup, dup2 System Call sync, fsync, fdatasync fcntl 2 1 Condivisione di file Unix supporta la possibilità che più processi
DettagliIl processo figlio : utilizza lo stesso codice che sta eseguendo il padre ;
La creazione di un nuovo processo in UNIX int fork(void); Viene creato un nuovo processo (figlio) identico (stesso codice, area dati copiata) al processo (padre) che ha invocato la fork Solo il valore
DettagliFile I/O. M. R. Guarracino: File I/O 1
File I/O M. R. Guarracino: File I/O 1 File I/O Gran parte delle operazioni su file in ambiente UNIX possono essere eseguite utilizzando solo cinque funzioni: open read write lseek close M. R. Guarracino:
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliCorso di Programmazione Concorrente Processi. Valter Crescenzi
Corso di Programmazione Concorrente Processi Valter Crescenzi http://crescenzi.inf.uniroma3.it Sommario Processi vs Thread Creazione e terminazione di processi chiamata di sistema fork() chiamata di sistema
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 2 luglio 2015 (Turno 1) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliPipe con nome. [Pagina intenzionalmente vuota] 1: Pipe con nome ( ) slide 1:1/22 (p.1)
Pipe con nome [Pagina intenzionalmente vuota] (10 3 2003) slide 1:1/22 (p.1) Pipe tradizionali int pipe(int filedes[2]); Crea una pipe e restituisce due descrittori di file: fildes[0] aperto in lettura
DettagliESERCIZI RISOLTI IN C LANGUAGE (programmazione avanzata)
ESERCIZI RISOLTI IN C LANGUAGE (programmazione avanzata) 1. Gestione file a basso livello 1) Scrivere un programma che carichi in un file binario, gestito a basso livello, una serie di numeri interi contenuti
DettagliProcessi: Exit, Wait, Exec
Processi: Exit, Wait, Exec Contiene lucidi tratti da: 2005-07 Giuseppe Schmid (Univ. Federico II), 2005-2007 Francesco Pedulla, Massimo Verola (Uniroma2), 2001-2005 Renzo Davoli (Universita di Bologna),
DettagliProgrammazione di sistema in Linux: System Call per il controllo processi. E. Mumolo, DIA
Programmazione di sistema in Linux: System Call per il controllo processi E. Mumolo, DIA Struttura generica di Linux Chiamate delle System call (Trap) interfaccia Utente Shell comandi di linea Compilatori
DettagliCrea un nuovo processo. Al processo padre ritorna il PID del figlio. Al processo figlio ritorna 0
Crea un nuovo processo. Al processo padre ritorna il PID del figlio. Al processo figlio ritorna 0 Sequenza di operazioni di fork: * alloca una entry nella tabella dei processi * assegna un unico ID al
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 20 Martedì 16-12-2014 1 System call per la gestione dei processi Creazione
DettagliIn generale può essere utile che i due processi eseguano del codice diverso
System call FORK P fork() ha l aspetto di una funzione C, in realtà è una system call, una chiamata al sistema operativo fork() P P Il processo P' è una copia di P esegue lo stesso codice e possiede una
DettagliI SISTEMI OPERATIVI (1)
I SISTEMI OPERATIVI (1) 1 un computer può essere pensato come una stratificazione di macchine virtuali, ciascuna delle quali mette a disposizione alcuni servizi, che sono utilizzabili mediante chiamate
DettagliFile binari e file di testo
I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file
DettagliCapitolo 5 -- Stevens
Libreria standard di I/O Capitolo 5 -- Stevens Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano
DettagliControllo dei Processi. M. R. Guarracino - Primitive di Controllo dei Processi
Controllo dei Processi Introduzione Come possiamo creare nuovi processi? Come possiamo eseguire un programma? Come possiamo terminare un processo? Introduzione Unix fornisce le primitive per la creazione
DettagliSistemi operativi. Corso di Laurea Triennale in Ingegneria Informatica
Sistemi operativi ì Corso di Laurea Triennale in Ingegneria Informatica Lezione 10 Virtual Filesystem mount, umount I/O, Unix I/O, Standard I/O Pipe e Fifo Domande sulle lezioni passate? Virtual File System
DettagliSystem call per la gestione di processi
System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:
DettagliSistemi operativi Modulo II I semafori 2 Select
Il sistema operativo LINUX Semafori 2 Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica La system call read è bloccante Non
DettagliCorso di Sistemi Operativi Esercitazioni
Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Sistemi Operativi Esercitazioni Lezione IX Esempio di progetto Server HTTP 0.9 Server HTTP 0.9 Specifiche Si chiede di
DettagliChiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI mumolo@units.it
Chiamate di sistema per la Gestione dei processi in POSIX E.Mumolo, DEEI mumolo@units.it Process id ed altri identificatori pid_t getpid(); // Process id del processo chiamante pid_t getppid(); // Process
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 22 Martedì 7-1-2014 1 System Call per l'uso dei segnali Un processo che
DettagliSistemi Operativi. Esercitazione 9. Corso di Laurea Triennale in Ingegneria Informatica.
Sistemi Operativi Corso di Laurea Triennale in Ingegneria Informatica Esercitazione 9 Semafori Programmazione coi segnali Pipe e Fifo daniel.cesarini@for.unipi.it 1 Oggi niente domande!!! Sommario esercitazione
DettagliSistemi Operativi. Bruschi Monga Re. Sincronizzazione con monitor pthreads. Shell Shell programming Esercizi I/O Esercizi Tabella riassuntiva
1 Mattia Monga Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it Lezione XV: Concorrenza e sincronizzazione a.a. 2013/14 1 cba 2008 14 M. Monga. Creative Commons Attribuzione
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 strace : visualizzazione delle system call
DettagliScrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file:
Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: usare lseek per spostarsi alla fine del file e poi scrivere: lseek(filedes, (off_t)0, SEEK_END); write(filedes, buf, BUFSIZE);
DettagliEsercizio sulla gestione di file in Unix
Esercizio sulla gestione di file in Unix 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra due processi (padre e figlio) mediante
DettagliPipes e named pipes: 1. Nozioni preliminari 2. Pipes e named pipes (FIFO) in sistemi UNIX 3. Pipes e named pipes sistemi Windows
Sistemi Operativi II Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Pipes e named pipes: 1. Nozioni preliminari 2. Pipes e named pipes
Dettagliuid_t getuid(void); //real-user-id del chiamante getegid(void); //effective-user-id del chiamante gid_t getgid(void); //real-group-id del chiamante
#include // typedef long pid_t; // typedef long uid_t; // typedef long gid_t; pid_t getpid(void); //pid del chiamante; pid_t getppid(void); //pid del padre uid_t getuid(void); //real-user-id
DettagliIntroduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it
Introduzione ai Device Drivers in Linux E.Mumolo, DEEI mumolo@units.it 1 Device Drivers Moduli software che gestiscono le periferiche attraverso il file system Tutte le periferiche sono viste come file
DettagliSistemi Operativi. Marzo-Giugno 2011 matricole congrue 0 mod 3. Controllo dei processi - I
Marzo-Giugno 2011 matricole congrue 0 mod 3 Controllo dei processi - I Controllo dei processi Creazione di nuovi processi Esecuzione di programmi Processo di terminazione Altro 2 1 Identificatori di processi
DettagliComandi. Sistema Operativo
Introduzione Programmazione di sistema in UNIX File comandi utente Shell Comandi Sistema Operativo Programmi in C Servizi di sistema (primitive, system call) solo per driver fork exec wait exit char I/O
DettagliInterprocess communication: Pipe
Interprocess communication: Pipe Affinché due processi possano cooperare, è spesso necessario che comunichino fra loro dei dati. Una prima possibile soluzione a questo problema consiste nell utilizzo condiviso
DettagliFiles, File I/O, File Sharing. Franco Maria Nardini
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
DettagliSistemi Operativi. 7 Gestione dei processi in Unix
Gestione dei processi in Unix Creazione e terminazione dei processi: fork: crea un nuovo processo duplicando il processo chiamante exec: attiva l esecuzione di un programma memorizzato in un file eseguibile.
DettagliProgrammazione di sistema in UNIX. Immagine di un processo in UNIX. Area dati. File comandi utente
Programmazione di sistema in UNIX File comandi utente Shell Gestione processi Comandi Sistema Operativo Servizi di sistema (primitive, system call) fork exec wait exit char I/O block I/O open create close
DettagliProgram m azione di Sistem a 5
Program m azione di Sistem a 5 Lucidi per il corso di Laboratorio di Sistemi Operativi tenuto da Paolo Baldan presso l'università Ca' Foscari di Venezia, anno accademico 2004/ 2005. Parte di questo materiale
Dettaglifile fisico file logico
I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi
DettagliPrinciples of Concurrent Programming
Principles of Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi
DettagliEsercizi di Verifica Aprile 2005 Università disalerno
Laboratorio di Sistemi Operativi: Prof.ssa A. Rescigno Anno Acc. 2004-2005 Esercizi di Verifica Aprile 2005 Università disalerno Nome e Cognome: Matricola: Classe 1 Classe 2 p-p p-d 1 2 3 4 5 6 7 tot /10
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica-Informatica-Telecomunicazioni a.a. 2001-2002 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 Trasferimento
DettagliSulla libreria standard, III. Manipolare file con stdio.h
Sulla libreria standard, III Manipolare file con stdio.h 1 Libreria per input/output Con libreria si intende una collezione di sottoprogrammi che vengono utilizzati per lo sviluppo di software non eseguibili,
DettagliSincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.
Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,
DettagliControllo dei Processi 1
Controllo dei Processi 1 I processi Nei sistemi Unix/Linux ogni processo ne può generare altri. Il processo che li genera è detto processo padre (parent process), mentre i processi generati sono detti
DettagliProgrammazione multiprocesso
DTI / ISIN / Titolo principale della presentazione 1 Programmazione multiprocesso Amos Brocco, Ricercatore, DTI / ISIN 20 febbraio 2012 2 Processi Cos'è un processo? Un programma in esecuzione Spazio di
DettagliI file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002
I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti
DettagliSistemi Operativi. Des crizione e controllo dei proces s i
Sistemi Operativi Des crizione e controllo dei proces s i Servizi di un Sistema Operativo Permettere ad un utente di creare processi (lanciare programmi) Interallacciare l esecuzione di diversi processi,
Dettaglieseguire comandi dati dall'utente, utilizzando una macchina reale, di livello inferiore,
La programmazione di sistema Introduzione ai sistemi operativi multiprocesso Primitive per la gestione dei processi http://home.dei.polimi.it/silvano/acso.htm Il sistema ste operativo Il Sistema Operativo
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3
Marzo-Giugno 2008 matricole congrue 0 mod 3 Funzioni wait e waitpid quando un processo termina il kernel manda al padre il segnale SIGCHLD Controllo dei processi (2) il padre può ignorare il segnale (default)
DettagliSistemi Operativi T. Esercizi
Sistemi Operativi T Esercizi Esercizio monitor Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando la libreria pthread, si realizzi un'applicazione concorrente
DettagliProgrammazione di sistema
Programmazione di sistema Prof. Gerardo Pelosi & Ing. Michele Scandale Il materiale illustrato a lezione e in queste note contiene anche esempi di Fabrizio Castro, Luca Fossati, Vittorio Zaccaria. Esercizio
DettagliPOSIX Systems Programming. geek evening 0x0d. ambienti POSIX. By lord_dex ZEI e Salug! presentano:
POSIX Systems Programming Syscall e fondamenti della ambienti POSIX programmazione in By lord_dex f.apollonio@salug.it ZEI e Salug! presentano: geek evening 0x0d INDICE Processi e Thread Creazione ed utilizzo
DettagliDirectory. Le directory unix sono file.
Le directory unix sono file. Directory Molte system call per i file ordinari possono essere utilizzate per le directory. E.g. open, read, fstat, close. Tuttavia le directory non possono essere create con
DettagliCREAZIONE DI UN FILE
#include #include CREAZIONE DI UN FILE fd = creat(filename, mode); int fd, mode; char *filename; La primitiva creat crea un file, se non ne esiste uno col nome specificato, oppure
DettagliProcessi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX
Processi UNIX I Processi nel SO UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice
DettagliStruttura interna del sistema operativo Linux. Il file system. -revisione del 30 marzo 2004
Struttura interna del sistema operativo Linux Il file system -revisione del 30 marzo 2004 File System Il file system è il componente del sistema operativo che realizza i servizi di gestione dei file file:
DettagliInterazione, sincronizzazione e comunicazione tra processi
Interazione, sincronizzazione e comunicazione tra processi Classificazione Processi interagenti processi interagenti/indipendenti due processi sono indipendenti se l esecuzione di ognuno non è in alcun
DettagliUNIX file system: organizzazione logica. Il File System di UNIX. UNIX file system: organizzazione fisica
UNIX file system: organizzazione logica / Il File System di UNIX omogeneità: tutto è file tre categorie di file file ordinari direttori bin.profile etc usr dev anna file1 paolo mbox dispositivi fisici:
DettagliScrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file:
Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: usare lseek per spostarsi alla fine del file e poi scrivere: lseek(filedes, (off_t)0, SEEK_END); write(filedes, buf, BUFSIZE);
DettagliProcessi Concetti di base. Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi
Processi Concetti di base Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi Esecuzione sequenziale I sistemi di calcolo più semplici consentono unicamente l'esecuzione sequenziale
DettagliCAP.8: Il file system
Struttura interna del sistema operativo Linux CAP.8: Il file system Primitive per la gestione dei file File System Il gestore del file system è quel componente del Sistema Operativo che realizza i servizi
DettagliModello di Programma in UNIX
Modello di Programma in UNIX Spazio di Indirizzamento per ogni singolo PROCESSO (Modello ad ambiente locale) Aree Dati Stack Heap Dati non inizializzati Dati dinamici Processo riferisce dati codice Dati
DettagliFile. Gestione memoria - 19/01/2003 1/11
File L informazione memorizzata in RAM non soddisfa alcuni requisiti: volume elevato (eventualmente > VM) persistenza / stabilità (rispetto a processi / crash / power out) condivisione / accesso simultaneo
DettagliSystem Calls per la Gestione dei Processi
System Calls per la Gestione dei Processi Domenico Cotroneo Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Roadmap Process Context Identificativi getpid() getppid()
DettagliProcessi in UNIX. Spazio di sistema (residente) Tabella dei. file APERTI OPEN FILE. Tabella dei codici
Processi in UNIX Spazio di sistema (residente) 1 i Tabella dei processi CODE Tabella dei file APERTI ACTIVE FILE PROCESS Tabella dei codici OPEN FILE Tabella dei file ATTIVI Spazio di utente (swappable)
DettagliI files in C. A cura del prof. Ghezzi
I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files
DettagliProgrammazione I (Classe 1)
Programmazione I (Classe 1) Appello 12 CFU 8 Settembre 2017 Docenti: Fuccella - Zizza Cognome: Nome: Matricola: Ritirato Riservato alla commissione d esame 1 2 3 4 5 6 7 8 TOT (/40) Da codice etico Unisa
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione
DettagliCREAZIONE PROCESSI IN UNIX 20
CREAZIONE PROCESSI IN UNIX 20 STRUTTURE DATI PER PROCESSI Un processo puo' essere in escuzione in 2 modi: kernel e utente. Un processo ha almeno 3 regioni: codice, dati e stack Lo stack è allocato dinamicamente.
DettagliPrinciples of Concurrent Programming
Principles of Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliDigressione: man 2...
Syscall File I/O Digressione: man 2... Le funzioni della libreria standard UNIX associate alle system call di Linux sono documentate nella sezione 2 di man e.g.: man 2 open Ogni manpage di system call
DettagliEsercitazione di Lab. di Sistemi Operativi a.a. 2012/2013. - I processi Unix -
Esercitazione di Lab. di Sistemi Operativi a.a. 2012/2013 - I processi Unix - 1 Sommario Gestione dei processi: Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait Esercizi: fork fork
DettagliIntroduzione ai socket
Introduzione ai socket Socket locali Contiene lucidi tratti da: 2006-2007 Marco Faella, Clemente Galdi, Giovanni Schmid (Università di Napoli Federico II), 2004-2005 Walter Crescenzi(Universita di Roma
DettagliArgomenti della lezione. Generalità. System calls. Corso di Sistemi Operativi Programmazione di Sistema e Concorrente
Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Sistemi Operativi Programmazione di Sistema e Concorrente Lezione III Gestione dell Input/Output System Calls Argomenti
DettagliShell BASH. Variabili Redirezione
Shell BASH Variabili Redirezione Variabili Scrittura/definizione: a=3 (senza spazi) Lettura: ${a} o semplicemente $a Esempi: > a=3 > echo $a 3 > echo $aa > echo ${a}a 3a > a=ciao pippo bash: pippo: command
DettagliEsercitazione [8] Pipe e FIFO
Esercitazione [8] Pipe e FIFO Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo
Dettagli