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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 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 messaggi Code di messaggi Lezione VII Code di messaggi PIPE - FIFO Pipe FIFO Corso di Sistemi Operativi - Esercitazioni (Lez.7) 2 Messaggi Formato di un messaggio 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 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) 3 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 4

2 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) bloccante e non non bloccante Corso di Sistemi Operativi - Esercitazioni (Lez.7) 5 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 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 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) 7 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 8

3 Generalità Code di messaggi 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 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 Schema del sistema queue id message headers area dati Corso di Sistemi Operativi - Esercitazioni (Lez.7) 12

4 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 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 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) 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) 15 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 16

5 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 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 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 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) 19 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 20

6 Esempio: trasferimento di stringhe fra processi Scrittore send stdin stdout Coda di messaggi (in memoria kernel) receive Lettore PIPE Uso della MSG come buffer Corso di Sistemi Operativi - Esercitazioni (Lez.7) 21 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) 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) 23 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 24

7 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> 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) 25 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 26 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 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 Processo fd[0] padre fd[1] kernel fd[0] fd[1] Processo figlio Corso di Sistemi Operativi - Esercitazioni (Lez.7) 27 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 28

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

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

10 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 FIFO Corso di Sistemi Operativi - Esercitazioni (Lez.7) 37 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 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) 39 Corso di Sistemi Operativi - Esercitazioni (Lez.7) 40

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

Corso di Sistemi Operativi Programmazione di Sistema e Concorrente

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 VII Code di messaggi PIPE - FIFO Argomenti della lezione

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Digressione: man 2...

Digressione: 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Directory. Le directory unix sono file.

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

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 4 (proposta) Server Multiservizio: Socket C con select Luca Foschini Anno accademico 2010/2011 Esercitazione

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

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

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

System call per la gestione di processi

System 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:

Dettagli

Digressione: man (2)...

Digressione: 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

Dettagli

Sistemi Operativi (M. Cesati)

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

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

System call fcntl e record locking

System call fcntl e record locking System call fcntl e record locking Esempio: prenotazione di voli aerei La compagnia ACME Airlines usa un sistema di prenotazione dei voli basato su unix. Possiede due uffici per la prenotazione, A e B,

Dettagli

Chiamata di procedura remota

Chiamata di procedura remota Con gli strumenti gia` visti, si puo` realizzare come segue: lato chiamante: send asincrona immediatamente seguita da una receive lato chiamato: una receive seguita, al termine dell azione richiesta, da

Dettagli

Componenti di un sistema operativo

Componenti di un sistema operativo Componenti di un sistema operativo Dipartimento di Informatica Università di Verona, Italy Componenti di un S.O. Gestione dei processi Gestione della memoria primaria Gestione della memoria secondaria

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

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

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: server concorrente single-process 1 of 12 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione

Dettagli

Corso di Laboratorio di Sistemi Operativi

Corso 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/

Dettagli

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel 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

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Esame Laboratorio di Sistemi Operativi 2-01-2008 Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 1 ora. Domande chiuse:

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Sistemi operativi Modulo II I semafori 2 Select

Sistemi 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

Dettagli

il tipo di parallelismo dipende dal grado di cooperazione

il tipo di parallelismo dipende dal grado di cooperazione Thread Settembre 2009 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio d informazione) necessario tra attività svolte in parallelo processo macchina virtuale

Dettagli

Esercitazione 11. Esercitazione di riepilogo

Esercitazione 11. Esercitazione di riepilogo Esercitazione 11 Esercitazione di riepilogo Agenda Esercizio 1 - Monitor java Gestione della pista di un aereoporto Esercizio 2 Programma C di sistema Gestione e monitoraggio dell esecuzione del programma

Dettagli

Esercitazione [5] Input/Output su Socket

Esercitazione [5] Input/Output su Socket Esercitazione [5] Input/Output su Socket 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

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie ! La libreria standard del C è in realtà un insieme di librerie! Per usare una libreria, non occorre inse -rirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle! Ogni file sorgente

Dettagli

Reti (già Reti di Calcolatori )

Reti (già Reti di Calcolatori ) Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare

Dettagli

PIPE. M. Guarracino - PIPE 1

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

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

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

Sistemi Operativi II

Sistemi Operativi II Sistemi Operativi II Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/ e-mail:

Dettagli

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

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

Dettagli

La sincronizzazione è legata alla implementazione delle pipe: int pipe(int fd[2]);

La 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

Dettagli

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Input/Output Stream

Dettagli

File e puntatori a file

File e puntatori a file File e puntatori a file Vitoantonio Bevilacqua vitoantonio.bevilacqua@poliba.it La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di

Dettagli

SmallShell Piccolo processore comandi

SmallShell 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

Dettagli

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it e 11 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Contenuti: 1. Strumenti per il debugging nel Kernel LINUX: printk() e panic()

Contenuti: 1. Strumenti per il debugging nel Kernel LINUX: printk() e panic() Sistemi Operativi III Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Contenuti: 1. Strumenti per il debugging nel Kernel LINUX: printk()

Dettagli

Sistemi Operativi (modulo di Informatica II)

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

Dettagli

Panoramica Introduttiva su Inter-Process Communication (IPC)

Panoramica Introduttiva su Inter-Process Communication (IPC) Panoramica Introduttiva su Inter-Process Communication (IPC) Inter-Process Communication: panoramica (1) Dei processi si dicono cooperanti se si influenzano l'un con l'altro. Per potersi influenzare dei

Dettagli

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

File 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:

Dettagli

ACSO Programmazione di Sistema e Concorrente

ACSO Programmazione di Sistema e Concorrente ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività

Dettagli

Gestione dei processi

Gestione dei processi Gestione dei processi Dormire unsigned int sleep(unsigned int); Attende un numero specificato di secondi a meno che non si verifichi un segnale Restituisce 0 se l'attesa è terminata senza interruzioni,

Dettagli

Sulla libreria standard, III. Manipolare file con stdio.h

Sulla 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,

Dettagli

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle

Dettagli

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

Dettagli

Sistemi Operativi. Sottosistema di I/O

Sistemi Operativi. Sottosistema di I/O Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O Patrizia Scandurra Università degli Studi di Bergamo a.a. 2011-12 Sommario L hardware di I/O Struttura Interazione tra computer e controllori

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 5 Martedì 25-10-2016 Definizione di processo Esiste una distinzione concettuale

Dettagli

Gestione dei file. Linguaggio ANSI C Input/Output - 13

Gestione dei file. Linguaggio ANSI C Input/Output - 13 Gestione dei file Necessità di persistenza dei file archiviare i file su memoria di massa. Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi 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

Dettagli

Introduzione ai socket

Introduzione 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

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2013 Obiettivi Alcuni problemi aperti Il main() Allocazione dinamica della memoria Il salvataggio dei dati File File

Dettagli

RTAI IPC. Andrea Sambi

RTAI IPC. Andrea Sambi RTAI IPC Andrea Sambi Inter-Process Communication Inter-Process Communication (IPC) indica la possibilità di scambiare informazioni tra processi attivi Per rendere lo sviluppo delle applicazioni il più

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 16 ottobre 2007 1 Rappresentazioni di caratteri in C In C un carattere è una costante intera il cui valore è dato dal codice ASCII

Dettagli

file fisico file logico

file 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

Dettagli

Timeout. Socket Avanzati. Funzione alarm() Client echo UDP con alarm

Timeout. Socket Avanzati. Funzione alarm() Client echo UDP con alarm I semestre 02/03 Socket Avanzati Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Timeout Abbiamo visto

Dettagli