Corso di Sistemi Operativi Programmazione di Sistema e Concorrente

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Sistemi Operativi Programmazione di Sistema e Concorrente"

Transcript

1 Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Sistemi Operativi Programmazione di Sistema e Concorrente Lezione VII Code di messaggi PIPE - FIFO

2 Argomenti della lezione Nozioni preliminari sullo scambio di messaggi Code di messaggi Pipe FIFO Corso di Sistemi Operativi - Esercitazioni (Lez.7) 2

3 Messaggi Sono unità di dati che possono essere scambiate tra due o più processi Il deposito (spedizione) e l estrazione (ricezione) dei messaggi avvengono in modo atomico Due o più processi non possono quindi scambiarsi frazioni di un messaggio Non necessariamente i messaggi hanno la stessa taglia Corso di Sistemi Operativi - Esercitazioni (Lez.7) 3

4 Formato di un messaggio Intestazione: contiene i campi tipici (ma non necessari) per applicazioni basate sullo scambio di messaggi la definizione di questi campi come parte del contenuto del messaggio può essere a carico delle applicazioni e non del sistema operativo il tipo e le informazioni di controllo possono determinare l ordine di consegna dei messaggi stessi Intestazione Tipo del messaggio Destinazione Sorgente Lunghezza Informazioni di controllo Contenuto Corso di Sistemi Operativi - Esercitazioni (Lez.7) 4

5 Primitive di spedizione Modello generale: Send(destinazione, messaggio) Modalità Sincrona: processo sospeso fin quando il buffer contenente il messaggio può essere sovrascritto senza arrecare danni al messaggio appena spedito Sincrona rendez-vous: processo sospeso fino a che il messaggio non viene ricevuto (uso di acknowledgment) Asincrona: possibilità di riutilizzo immediato del buffer contenente il messaggio (possibilità di sovrascrittura del messaggio in corso di spedizione) Corso di Sistemi Operativi - Esercitazioni (Lez.7) 5 bloccante e non non bloccante

6 Primitive di ricezione Modello generale: Receive(sorgente, messaggio) Modalità: Bloccante: processo sospeso fino a che non arriva almeno un messaggio dalla sorgente specificata Non-bloccante: il processo non viene sospeso neanche in caso un messaggio dalla sorgente specificata non sia disponibile Nel caso di rendez-vous la ricezione necessita di gestione di ack verso la sorgente del messaggio sincrona e non Corso di Sistemi Operativi - Esercitazioni (Lez.7) 6

7 Tecniche di indirizzamento Diretta: Sorgenti e destinazioni coincidono con identificatori di processi Uso di wild-cards nel caso in cui l identificazione della sorgente non sia rilevante Esempi: Send(P1, message) Receive(*, message) Indiretta: Sorgenti e destinazioni coincidono con identificatori di strutture dati (mailbox) che fungono da deposito per i messaggi stessi Le strutture possono essere associate o meno ad uno specifico processo Effetti sulla distruzione della struttura alla terminazione del processo Possibilità di relazione uno-a-molti e molti-a-molti Corso di Sistemi Operativi - Esercitazioni (Lez.7) 7

8 Buffering In memoria kernel non è necessario che sia impostata una receive all atto dell arrivo del messaggio la capacità di bufferizzazione può essere nulla, limitata o illimitata in caso di capacità nulla un solo messaggio alla volta può essere in transito (tipico del rendez-vous) è possibile definire un timeout per la bufferizzazione di un messaggio, allo scadere del quale il messaggio viene scartato In memoria utente è necessario che sia impostata una receive all atto dell arrivo del messaggio, altrimenti il messaggio in transito viene perso Corso di Sistemi Operativi - Esercitazioni (Lez.7) 8

9 Code di messaggi

10 Generalità Oggetto SystemV IPC: Accesso tramite chiave (key) Primitive set, ctl Strutture permanenti: creazione ed eliminazione esplicita Send sincrona (bloccante e non) Receive bloccante (sincrona) e non bloccante (sincrona) Buffering in memoria kernel ed a capacità limitata Indirizzamento indiretto Il contenuto di un messaggio ha taglia tipicamente variabile, limitata da MSGMAX (= 4056 in msg.h) Il S.O. gestisce il campo TIPO del messaggio (supporto al multiplexing) Il processo che spedisce il messaggio si fa carico di scriverlo all interno del contenuto Corso di Sistemi Operativi - Esercitazioni (Lez.7) 10

11 Struttura dei messaggi Definito in <sys/msg.h>: struct msgbuf { long int mtype; char mtext[1]; }; mtype: tipo del messaggio specificato da un intero long positivo o nullo primi 4 byte del messaggio stesso consente multiplexing mtext: i dati stessi del messaggio può essere qualsiasi tipo di dato Da interpretarsi come template di messaggio In pratica si usa una struct costruita dall utente. Es: struct my_msgbuf { long mtype; long request_id; /* Identificatore richiesta */ struct client_info; /* Informazioni client */ }; Corso di Sistemi Operativi - Esercitazioni (Lez.7) 11

12 Schema del sistema queue id message headers area dati Corso di Sistemi Operativi - Esercitazioni (Lez.7) 12

13 Message headers Il kernel memorizza ogni messaggio nella coda all interno del framework definito dalla struttura: struct msg { struct msg *msg_next; long msg_type; char *msg_spot; short msg_ts; } msg_next: puntatore al successivo messaggio in coda (linked list) msg_type: tipo del messaggio, definito in msgbuf msg_spot: puntatore ai dati del messaggio msg_ts: lunghezza del corpo del messaggio Corso di Sistemi Operativi - Esercitazioni (Lez.7) 13

14 msqid_ds struct msqid_ds { struct ipc_perm msg_perm; /* Permessi */ struct msg *msg_first; /* Primo messaggio in coda */ struct msg *msg_last; /* Ultimo messaggio in coda */ time_t msg_stime; /* Tempo dell ultima send */ time_t msg_rtime; /* Tempo dell ultima receive */ time_t msg_ctime; /* Tempo dell ultima modifica */ struct wait_queue *wwait; /* Puntat. ai processi */ struct wait_queue *rwait; /* in attesa di w/r */ ushort msg_cbytes; /* Numero di byte nella coda */ ushort msg_qnum; /* Numero di messaggi in coda */ ushort msg_qbytes; /* Max numero di bytes in coda */ ushort msg_lspid; /* PID dell ultimo scrittore */ ushort msg_lrpid; /* PID dell ultimo lettore */ }; Il kernel crea e mantiene un struttura per ogni coda nel sistema Corso di Sistemi Operativi - Esercitazioni (Lez.7) 14

15 Creazione di una coda di messaggi int msgget (key_t key, int flag) invoca la creazione una MSG key: chiave per identificare la MSG in maniera univoca nel sistema flag: modalità di creazione (IPC_CREAT, IPC_EXCL, e permessi di accesso) descrittore per l'accesso alla MSG in caso di successo (-1 in caso di fallimento) Corso di Sistemi Operativi - Esercitazioni (Lez.7) 15

16 Controllo su una coda di messaggi int msgctl(int ds_coda, int cmd, struct msquid_ds *buff) invoca l esecuzione di un comando su una MSG ds_coda: descrittore della coda su cui si vuole operare cmd: specifica del comando da eseguire (IPC_RMID, IPC_STAT, IPC_SET) buff: puntatore al buffer con eventuali parametri per il comando -1 in caso di fallimento Corso di Sistemi Operativi - Esercitazioni (Lez.7) 16

17 Invio di messaggi int msgsnd(int ds_coda, const void *buff, size_t nbyte, int flag) invoca la spedizione di un messaggio su una MSG ds_coda: descrittore della coda buff: puntatore al buffer che contiene il messaggio da depositare nbyte: taglia del messaggio, in byte (esclusi i primi 4 byte del tipo) flag: comportamento in caso di MSG satura: 0 (bloccante): il processo viene sospeso fino a quando non viene prelevato un messaggio IPC_NOWAIT (non bloccante): il processo non viene sospeso, ma la syscall fallisce -1 in caso di fallimento Corso di Sistemi Operativi - Esercitazioni (Lez.7) 17

18 Ricezione di messaggi int msgrcv (int ds_coda, const void *buff, size_t nbyte, long type, int flag) invoca la ricezione di un messaggio da una MSG ds_coda: descrittore della coda buff: puntatore al buffer che dovrà contenere il messaggio nbyte: numero massimo di byte del messaggio da ricevere (se il messaggio è più lungo errore) type: tipo del messaggio da ricevere 0: FIFO, si vuole ricevere il più vecchio messaggio in coda X>0: FIFO solo su messaggi di tipo X X<0: FIFO su tipo X, altrimenti X-1,, altrimenti 1 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 18

19 msgrcv() flag: comportamento in caso di assenza di messaggi del tipo richiesto in MSG: 0 (bloccante): il processo viene sospeso fino a quando non arriva un messaggio del tipo richiesto IPC_NOWAIT (non bloccante): il processo non viene sospeso, ma la syscall fallisce MSG_NOERROR: tronca i messaggi più lunghi a nbyte byte senza errore -1 in caso di fallimento Corso di Sistemi Operativi - Esercitazioni (Lez.7) 19

20 codamess.h Implementare una libreria che offra funzioni comuni per la gestione di code di messaggi: Creazione Invio messaggi Ricezione messaggi Ricerca di un messaggio di un certo tipo Eliminazione Corso di Sistemi Operativi - Esercitazioni (Lez.7) 20

21 Esempio: trasferimento di stringhe fra processi stdin stdout Scrittore send Coda di messaggi (in memoria kernel) receive Lettore Uso della MSG come buffer Corso di Sistemi Operativi - Esercitazioni (Lez.7) 21

22 PIPE

23 Concetti base La PIPE è un metodo per connettere l output di un processo all input di un altro processo comunicazione one-way (dette anche Halfduplex pipes) comunicazione indiretta (mailbox) Uno dei primi sistemi di IPC su Unix Utilizzate anche da shell: ls sort lp ( direzione dei dati) Corso di Sistemi Operativi - Esercitazioni (Lez.7) 23

24 Concetti di base sulle Pipe In sistemi UNIX l uso della PIPE avviene attraverso la nozione di descrittore Una volta lette, le informazioni spariscono dalla PIPE e non possono più ripresentarsi (a meno di riscritture) A livello di sistema operativo, i PIPE non sono altro che buffer di dimensione più o meno grande (solitamente 4 kb) Un processo viene bloccato se: tenta di scrivere su un PIPE pieno tenta di leggere da un PIPE vuoto I processi che usano un PIPE devono essere relazionati (antenato in comune) Corso di Sistemi Operativi - Esercitazioni (Lez.7) 24

25 I PIPE sono anche usabili per la comunicazione fra più processi (attenzione alla sincronizzazione): uno scrittore, molti lettori; molti scrittori, un lettore; molti scrittori, molti lettori; Per utilizzarle bisogna includere l header <unistd.h> Corso di Sistemi Operativi - Esercitazioni (Lez.7) 25

26 Schema di funzionamento Quando un processo crea una PIPE, il kernel: assegna un inode number (interno) alla PIPE setta 2 descrittori di file (fd[0] e fd[1]) Dopodiché il processo effettua una (o più) fork() Il processo figlio eredita tutti i descrittori di file aperti dal padre eredita anche i descrittori della PIPE Processo fd[0] padre fd[1] kernel fd[0] fd[1] Processo figlio Corso di Sistemi Operativi - Esercitazioni (Lez.7) 26

27 Schema di funzionamento Per poter utilizzare correttamente la PIPE bisogna: decidere la direzione dei dati chiudere i descrittori non utilizzati Per mandare e ricevere dati dalla PIPE si utilizzano le note system call read() e write() Non è possibile compiere operazioni di seek(), per spostarsi avanti e indietro nel flusso dati presente nella PIPE Processo fd[0] padre fd[1] kernel fd[0] fd[1] Processo figlio Corso di Sistemi Operativi - Esercitazioni (Lez.7) 27

28 Pipe nei sistemi Unix int pipe(int int fd[2]) invoca la creazione di una PIPE fd: puntatore ad un array di due interi in fd[0] viene restitutito il descrittore del canale aperto in lettura dalla PIPE in fd[1] viene restituito il descrittore del canale aperto in scrittura sulla PIPE -1 in caso di fallimento Corso di Sistemi Operativi - Esercitazioni (Lez.7) 28

29 Chiusura della PIPE Le PIPE non sono dispositivi fisici, ma logici: come fa un processo a vedere la fine di un file su una PIPE? Per convenzione, ciò avviene quando tutti i processi scrittori hanno chiuso il descrittore fd[1] sulla PIPE in questo caso la chiamata read() effettuata da un lettore restituisce 0 come notifica dell'evento che tutti gli scrittori hanno terminato il loro lavoro Allo stesso modo, un processo scrittore che tenti di scrivere su fd[1] quando tutte le copie del descrittore fd[0] siano state chiuse (non ci sono lettori sulla PIPE), riceve il segnale SIGPIPE (Broken-pipe) possibilità di deadlock! Corso di Sistemi Operativi - Esercitazioni (Lez.7) 29

30 PIPE e deadlock Per fare in modo che non si verifichino situazioni di deadlock è necessario che tutti i processi chiudano i descrittori di PIPE non utilizzati, usando la syscall close(): ogni processo lettore che erediti la coppia (fd[0],fd[1]) deve dichiarare di non essere uno scrittore, chiudendo la propria copia di fd[1] altrimenti, l'evento tutti gli scrittori hanno terminato non potrebbe mai avvenire fintanto che il lettore è impegnato a leggere, e si potrebbe avere un deadlock attesa evento Processo lettore Corso di Sistemi Operativi - Esercitazioni (Lez.7) 30

31 Esempio: trasferimento stringhe tramite PIPE Processo padre: genera una PIPE genera un figlio prende le stringhe in ingresso nello stdin e le scrive nella PIPE Processo figlio: legge le stringhe dalla PIPE e le trasferisce sullo stdout Entrambi i processi chiudono i descrittori che non utilizzano (dopo la fork()) Corso di Sistemi Operativi - Esercitazioni (Lez.7) 31

32 Atomicità delle operazioni L atomicità delle operazioni di lettura/scrittura diviene importante quando più di 2 processi hanno accesso alla PIPE Numero massimo di caratteri che possono essere trasferiti senza interruzione: UNIX: standard POSIX in <posix1_lim.h>: #define _POSIX_PIPE_BUF 512 Linux: in <linux/limits.h>: #define PIPE_BUF 4096 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 32

33 Redirezione canali standard 1 close(0); dup2(0, fd[0]); 2 dup(fd[0]); 3 execlp( sort, sort, NULL); Analizziamo questo frammento di codice: 1. Chiude lo stdin attuale 2. Duplica il lato input della pipe sullo stdin 3. Sostituisce il codice con quello del comando sort tutto ciò che viene inviato alla PIPE passa attraverso il comando sort Corso di Sistemi Operativi - Esercitazioni (Lez.7) 33

34 Realizzazione di una pipeline $ cmd1 cmd2 shell fork() produttore pipe(fd); fork(); consumatore dup2(1, fd[1]); dup2(0, fd[0]); exec(cmd1, ); exec(cmd2, ); Corso di Sistemi Operativi - Esercitazioni (Lez.7) 34

35 $ cmd1 cmd2 if ((pid = fork()) == 0) { /* processo figlio */ pipe (fd_pipe); if (fork() == 0) { /* produttore */ dup2(1, fd_pipe[1]); close(fd_pipe[0]); close(fd_pipe[1]); exec(argv[1], argv[1], ); } /* consumatore */ dup2(0, fd_pipe[0]); close(fd_pipe[0]); close(fd_pipe[1]); exec(argv[2], argv[2], ); } Corso di Sistemi Operativi - Esercitazioni (Lez.7) 35

36 popen() FILE *popen (char *command, char *type); Gruppo di azioni: crea una PIPE effettua una fork() lancia la shell bash esegue su di essa un comando command: comando da eseguire type: direzione della PIPE r : lettura dalla PIPE w : scrittura sulla PIPE Stream della PIPE aperta (NULL se errore) Funzione ANSI-C standard library Corso di Sistemi Operativi - Esercitazioni (Lez.7) 36

37 pclose() int pclose (FILE *stream); attende la terminazione del processo aperto con popen() elimina la relativa PIPE stream: lo stream della PIPE, ottenuto da popen() stato di terminazione del processo figlio Corso di Sistemi Operativi - Esercitazioni (Lez.7) 37

38 FIFO

39 Named Pipe (Fifo) - Caratteristiche A differenza delle PIPE, le FIFO sono dei file risiedono nel file system (bit type a p) individuabili tramite pathname ( dopo il nome) possono essere condivise anche tra processi non correlati persistenti: vanno eliminate esplicitamente Stesse operazioni di un file ad accesso sequenziale: apertura, lettura/scrittura, chiusura. Differenza: i dati letti vengono rimossi Corso di Sistemi Operativi - Esercitazioni (Lez.7) 39

40 Creazione FIFO int mkfifo(char *name, int mode) invoca la creazione di una FIFO *name: puntatore ad una stringa che identifica il nome della FIFO da creare mode: intero che specifica modalità di creazione e permessi di accesso alla FIFO 0 in caso di successo (o -1) corrisponde a: mknod(name, mode S_IFIFO, NULL) il file così creato deve poi essere aperto con open() (system call) o con fopen() (ANSI-C) Corso di Sistemi Operativi - Esercitazioni (Lez.7) 40

41 Note La rimozione di una FIFO dal file system avviene esattamente come per i file: chiamata di sistema: unlink() funzione ANSI C: remove() comando shell: rm Di default l apertura di una FIFO è bloccante: un processo che tenta di aprirla in lettura (o scrittura) viene bloccato fino a quando un altro processo non la apre in scrittura (o lettura) Per evitare il blocco si può aggiungere il flag O_NONBLOCK al valore del parametro mode passato all apertura di una FIFO Ogni FIFO deve avere sia un lettore che uno scrittore: se un processo tenta di scrivere su una FIFO che non ha un lettore esso riceve il segnale SIGPIPE da parte del kernel Corso di Sistemi Operativi - Esercitazioni (Lez.7) 41

42 Esempio: client/server tramite FIFO client serv r.fifo_response Il server accetta richieste su una FIFO di nome serv server risponde ai client su FIFO da essi specificate tramite un nome minuscolo Corso di Sistemi Operativi - Esercitazioni (Lez.7) 42

Argomenti della lezione. Messaggi. Formato di un messaggio. Corso di Sistemi Operativi Programmazione di Sistema e Concorrente

Argomenti della lezione. Messaggi. Formato di un messaggio. Corso di Sistemi Operativi Programmazione di Sistema e Concorrente Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Argomenti della lezione Corso di Sistemi Operativi Programmazione di Sistema e Concorrente Nozioni preliminari sullo scambio di

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi primavera 2009 System V IPC code di messaggi System V IPC I tre tipi di IPC di System V sono: Code di Messaggi Semafori Memoria Condivisa Identificatori Ogni struttura IPC è individuata tramite un identificatore

Dettagli

Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia

Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Scambio di messaggi: 1. Nozioni preliminari 2. Primitive 3. Indirizzamento

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3 code di messaggi XSI IPC Code di Messaggi Semafori Memoria Condivisa 2 1 Identificatori Ogni struttura IPC è individuata tramite un identificatore ( intero>0

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication (IPC) IPCS 1 1. Code di messaggi 2. Semafori 3. Memoria condivisa send receive 2? 3 p1 p3 p2 CODE DI MESSAGGI Modello di Comunicazione Code di Messaggi Il processo ricevente

Dettagli

Inter-process communication

Inter-process communication Primitive di Comunicazione 1 Inter-process communication Nell'attività del sistema si rende necessario la cooperazione tra processi per realizzare le diverse funzionalità offerte all'utente. La cooperazione

Dettagli

IPC System V. Code di messaggi

IPC System V. Code di messaggi IPC System V Code di messaggi Panoramica coda di messaggi una lista concatenata di messaggi, FIFO semaforo un contatore condiviso, atomicamente modificabile memoria condivisa uno spazio di memoria accessibile

Dettagli

Igino Corona

Igino 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

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa

Dettagli

GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX:

GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX: GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX: Il primo meccanismo di comunicazione tra processi locali in ambiente Unix e stato il meccanismo delle pipe. Per processo locale si intende un processo

Dettagli

SC per Inter Process Comminication. Pipe senza nome e con nome (FIFO)

SC per Inter Process Comminication. Pipe senza nome e con nome (FIFO) SC per Inter Process Comminication Pipe senza nome e con nome (FIFO) 1 Pipe Pipe : file speciali utilizzati per connettere due processi con un canale di comunicazione Possono essere utilizzati in modo

Dettagli

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) 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

Dettagli

La Comunicazione tra Processi in Unix

La 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

Dettagli

SC per Inter Process Communication. Pipe senza nome e con nome (FIFO)

SC per Inter Process Communication. Pipe senza nome e con nome (FIFO) SC per Inter Process Communication Pipe senza nome e con nome (FIFO) 1 Pipe Pipe : file speciali utilizzati per connettere due processi con un canale di comunicazione Possono essere utilizzati in modo

Dettagli

Esercizi sui file. Esercizio 1. Soluzione. Domenico Cotroneo Dipartimento di Informatica e Sistemistica

Esercizi sui file. Esercizio 1. Soluzione. Domenico Cotroneo Dipartimento di Informatica e Sistemistica Esercizi sui file Domenico Cotroneo Dipartimento di Informatica e Sistemistica Esercizio 1 Si implementi un programma in C concorrente nel quale siano presenti tre processi distinti: un processo P1 che

Dettagli

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica. SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica. SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto Comunicazione fra processi in Linux Lock-file, Signal,

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 28 giugno 2016 (Traccia A) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine

Dettagli

Modulo 9 Pipe e FIFO

Modulo 9 Pipe e FIFO 1 Modulo 9 Laboratorio di Sistemi Operativi I Anno Accademico 2007-2008 Francesco Pedullà (Tecnologie Informatiche) Massimo Verola (Informatica) Copyright 2005-2007 Francesco Pedullà, Massimo Verola Copyright

Dettagli

Crea 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 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

Dettagli

Esercitazioni 13 e 14

Esercitazioni 13 e 14 Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazioni 13 e 14 Comunicazione tra processi (IPC) Meccanismo per la comunicazione

Dettagli

Sistemi Operativi Teledidattico

Sistemi 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

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 7 settembre 2012 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Processi. 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 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

Dettagli

File binari e file di testo

File 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

Dettagli

Pipes e named pipes: 1. Nozioni preliminari 2. Pipes e named pipes (FIFO) in sistemi UNIX 3. Pipes e named pipes sistemi Windows

Pipes 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

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 8 Martedì 31-10-2017 1 Scambio di messaggi (message passing) Questa tecnica

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: protocollo connection-oriented 1 of 15 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione

Dettagli

Università 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 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

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 8 Giovedì 25-10-2018 Comunicazione con pipe Oltre che con la memoria

Dettagli

Capitolo 3 -- Stevens

Capitolo 3 -- Stevens I/O non bufferizzato (1) Capitolo 3 -- Stevens System Call open close read write lseek 1.2 sono degli interi non negativi file descriptor il kernel assegna un file descriptor ad ogni file aperto le funzioni

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 matricole congr. 0 mod 3 I/O non bufferizzato System Call open close read write lseek 2 1 file descriptor sono degli interi non negativi il kernel assegna un file descriptor

Dettagli

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Interazione tra Processi. Sistemi Operativi T AA

Interazione tra Processi. Sistemi Operativi T AA Interazione tra Processi Sistemi Operativi T AA 2012-13 1 Classificazione: Processi interagenti processi interagenti/indipendenti: due processi sono interagenti se l esecuzione di un processo è in alcun

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 7 Martedì 23-10-2018 1 Scambio di messaggi (message passing) Questa

Dettagli

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con

Dettagli

INTERPROCESS COMMUNICATION 27

INTERPROCESS COMMUNICATION 27 INTERPROCESS COMMUNICATION 27 - Le comunicazioni tra processi (IPC, Intreprocess Communication) sono realizzate mediante strutture dati rese disponibili dal kernel. Sono disponibili 3 tipologie di comunicazioni

Dettagli

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi

Dettagli

Esercizio sulla gestione di file in Unix. Sistemi Operativi T AA

Esercizio sulla gestione di file in Unix. Sistemi Operativi T AA Esercizio sulla gestione di file in Unix Sistemi Operativi T AA 2011-2012 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra

Dettagli

Le 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. 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

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente

Dettagli

Le 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. 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

Dettagli

Interazione tra Processi. Sistemi Operativi T AA

Interazione tra Processi. Sistemi Operativi T AA Interazione tra Processi Sistemi Operativi T AA 2009-2010 1 Classificazione: Processi interagenti processi interagenti/indipendenti: due processi sono interagenti se l esecuzione di un processo è in alcun

Dettagli

Chiamate di sistema. Pipe Flussi di I/O

Chiamate di sistema. Pipe Flussi di I/O Chiamate di sistema Pipe Flussi di I/O Esempio di chiamata di sistema #include int main(int argc, char ** argv) FILE * f; f = fopen("nuovo-file", "w"); fprintf(f, "Hello World!\n"); fclose(f);

Dettagli

Laboratorio di Sistemi Operativi primavera 2009 open

Laboratorio di Sistemi Operativi primavera 2009 open primavera 2009 open System Call close read I/O non bufferizzato write lseek 2 file descriptor file descriptor...ancora sono degli interi non negativi il kernel assegna un file descriptor ad ogni file aperto

Dettagli

Il Modello a scambio di messaggi

Il Modello a scambio di messaggi Il Modello a scambio di messaggi 1 Interazione nel modello a scambio di messaggi Se la macchina concorrente e` organizzata secondo il modello a scambio di messaggi: PROCESSO=PROCESSO PESANTE non vi è memoria

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Processi in Unix/Linux caratteristiche

Dettagli

Esercitazione 4. Gestione dei file in Unix

Esercitazione 4. Gestione dei file in Unix Esercitazione 4 Gestione dei file in Unix Primitive fondamentali (1/2) open close Apre il file specificato e restituisce il suo file descriptor (fd) Crea una nuova entry nella tabella dei file aperti di

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 12 febbraio 2018 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Il linguaggio C. Breve panoramica su stdio.h

Il linguaggio C. Breve panoramica su stdio.h Il linguaggio C Breve panoramica su stdio.h 1 Input/Output: stdio.h Contiene definizioni di costanti legate all I/O es. EOF (end of file) #define EOF (-1) valore restituito alla fine di un file Contiene

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 21 settembre 2017 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 17 febbraio 2014 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Struttura interna del sistema operativo Linux

Struttura interna del sistema operativo Linux Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04

Dettagli

Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi

Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 26 Sommario: Gestione dei file in C. File ad accesso sequenziale: apertura, chiusura, lettura e scrittura. File binari. Gestione files

Dettagli

Chiamate di sistema. Pipe Flus s i di I/O

Chiamate di sistema. Pipe Flus s i di I/O Chiamate di sistema Pipe Flus s i di I/O Esempio di chiamata di sistema #include int main(int argc, char ** argv) { FILE * f; f = fopen("nuovo-file", "w"); fprintf(f, "Hello World!\n"); fclose(f);

Dettagli

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi SISTEMI OPERATIVI Processi in Linux 2 Creazione di processi concorrenti» La creazione di un processo figlio consente di far eseguire alcune funzionalità del programma in modo concorrente» Opzione 1 il

Dettagli

Corso di Sistemi Operativi

Corso di Sistemi Operativi Corso di Sistemi Operativi Comunicazione tra processi (IPC) a.a. 2012/2013 Francesco Fontanella Comunicazione tra processi I processi in esecuzione concorrente possono essere indipendenti o cooperanti.

Dettagli

Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi

Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Corso di Laboratorio di Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi Corso di Laboratorio di Sistemi Operativi Lezione 6 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Interazione tra Processi I processi concorrenti possono interagire

Dettagli

Streams e disk files

Streams e disk files Streams e disk files Streams Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream: Testo: sequenza

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio 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

Dettagli

Linguaggio C: i file

Linguaggio C: i file Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 1 febbraio 2016 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

uid_t getuid(void); //real-user-id del chiamante getegid(void); //effective-user-id del chiamante gid_t getgid(void); //real-group-id del chiamante

uid_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

Dettagli

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1 SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

Dettagli

Controllo dei Processi 1

Controllo 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

Dettagli

Capitolo 5 -- Stevens

Capitolo 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

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi primavera 2009 System V IPC sono differenti dalle altre forme di IPC sono contatori usati per controllare l accesso a risorse condivise da processi diversi il protocollo per accedere alla risorsa è il

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 13 Corso di Informatica 2009-2010 Lezione 13 1 Input/output da file Stream Si definisce stream una sequenza di bytes di dati che può essere in ingresso (input

Dettagli

La gestione dell'errore

La gestione dell'errore La gestione dell'errore Esiste una variabile globale intera, definita nell'header errno.h che viene settata nel caso in cui una chiamata di sistema non possa eseguire correttamente il suo compito. Tale

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Organizzazione del filesystem Meccanismo

Dettagli

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE Disciplina: Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione Cognome e Nome:

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 23 Martedì 17-01-2017 Il file system Il file system si basa sulle astrazioni

Dettagli

CAP9. Device drivers

CAP9. Device drivers Struttura interna del sistema operativo Linux CAP9. Device drivers Device drivers Gestori di periferiche Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici

Dettagli

System call per l accesso a file

System call per l accesso a file System call per l accesso a file Nome open creat close read write lseek unlink remove fcntl Significato apre un file in lettura e/o scrittura o crea un nuovo file crea un file nuovo chiude un file precedentemente

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 5 Martedì 16-10-2018 Operazioni sui processi Nella maggior parte dei

Dettagli

System Calls per la Gestione dei Processi

System 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()

Dettagli

INTER-PROCESS COMMUNICATION (IPC) SYSTEM (Bach: the Design of the Unix Operating System ; manuale on-line)

INTER-PROCESS COMMUNICATION (IPC) SYSTEM (Bach: the Design of the Unix Operating System ; manuale on-line) INTER-PROCESS COMMUNICATION (IPC) SYSTEM (Bach: the Design of the Unix Operating System ; manuale on-line) - Memoria Condivisa (Shared Memory) - Semafori - Code di Messaggi (Sulle sito del corso trovate

Dettagli

INTER-PROCESS COMMUNICATION (IPC) SYSTEM (Bach: the Design of the Unix Operating System ; manuale on-line) IPC. Memoria Condivisa

INTER-PROCESS COMMUNICATION (IPC) SYSTEM (Bach: the Design of the Unix Operating System ; manuale on-line) IPC. Memoria Condivisa INTER-PROCESS COMMUNICATION (IPC) SYSTEM (Bach: the Design of the Unix Operating System ; manuale on-line) - Memoria Condivisa (Shared Memory) - Semafori - Code di Messaggi (Sulle sito del corso trovate

Dettagli

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3 Marzo-Giugno 2008 Matricole congrue 0 mod 3 IPC: Memoria condivisa e Semafori Memoria Condivisa Permette a due o più processi di condividere una zona di memoria È l IPC più veloce perché in questo caso

Dettagli

I/O su Socket TCP: read()

I/O su Socket TCP: read() I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una

Dettagli

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella Laboratorio di Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017 Ing. Niccolò Iardella niccolo.iardella@unifi.it 1 Esercizi Programmazione con i socket 2 Programma di

Dettagli

Program m azione di Sistem a 5

Program 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

Dettagli

Files in C endofile

Files in C endofile Files in C Il C vede i file semplicemente come un flusso (stream) sequenziale di bytes terminati da un marcatore speciale che determina la fine del file (end-of-file). 0 1 2 3 4... endofile A differenza

Dettagli

Chiamate 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 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

Dettagli

Architettura degli elaboratori Docente:

Architettura degli elaboratori Docente: Politecnico di Milano Il File System Architettura degli elaboratori Docente: Ouejdane Mejri mejri@elet.polimi.it Sommario File Attributi Operazioni Struttura Organizzazione Directory Protezione Il File

Dettagli

COMUNICAZIONE FRA PROCESSI

COMUNICAZIONE FRA PROCESSI Comunicazione fra processi COMUNICAZIONE FRA PROCESSI Segnale Passaggio di dati fra processi LINUX fornisce un ricco ambiente per la comunicazione fra processi. La comunicazione può limitarsi alla notifica

Dettagli

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

Dettagli

Processore Danilo Dessì. Architettura degli Elaboratori.

Processore Danilo Dessì. Architettura degli Elaboratori. Processore 8088 Architettura degli Elaboratori Danilo Dessì danilo_dessi@unica.it Subroutine Anche nel linguaggio assemblativo è possibile suddividere un programma in subroutine Per invocare una subroutine

Dettagli

Files, File I/O. Franco Maria Nardini

Files, File I/O. Franco Maria Nardini Files, File I/O Franco Maria Nardini UNIX file types UNIX non richiede una struttura interna del file. Dal punto di vista del sistema operativo c è un solo tipo di file. Struttura e interpretazione sono

Dettagli

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU Operazioni di I/O 1 Schema di collegamento fra dispositivi periferici e CPU Memoria CPU buffer interfaccia Registro di controllo Registro Di stato Unità di controllo Dispositivo fisico 2 1 Unità di interfaccia

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi primavera 2009 pipe vs fifo la pipe può essere usata solo tra processi "imparentati" (che hanno un antenato comune che ha creato la pipe) Le FIFO la fifo consente di scambiare dati tra processi qualsiasi

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 6 Marzo 2016 Obiettivi Il salvataggio dei dati File File e OS File in C 2 3 I programmi che abbiamo considerato finora. Perdono

Dettagli

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix. I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli