Inter-Process Communication

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Inter-Process Communication"

Transcript

1 Inter-Process Communication C. Baroglio a.a Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication). Queste strutture consentono inoltre lo scambio di dati fra processi. IPC contiene tre tipi di strutture: semafori, code di messaggi e memoria condivisa. Lo schema di utilizzo delle tre è identico: 1. uno dei processi alloca la struttura di interesse; 2. tutti i processi che devono essere sincronizzati tramite la struttura, utilizzano una chiave comune, decisa a tempo di programmazione, per fare riferimento alla struttura allocata. Tale chiave è usata anche dal processo allocatore; 3. le strutture di IPC possono essere utilizzate solo per mezzo di system call predefinite; 4. una volta terminato il compito previsto, le strutture di IPC devono essere esplicitamente disallocate da uno dei processi in questione (non necessariamente il processo che ha effettuato l allocazione). Per ciascuno dei tre tipi di strutture IPC sono definite una system call -get e una system call -ctl: la prima consente alternativamente di allocare un semaforo, una coda o un area di memoria condivisa, oppure di ottenere l identificatore di accesso a una struttura allocata da un altro processo. La seconda system call consente di eseguire operazioni diverse, specificate da nomi in codice, fra i quali la disallocazione della struttura condivisa (operazione: IPC RMID). Infine per ciascuna struttura sono previste system call specifiche che consentono, nel caso dei semafori di eseguire le operazioni di sincronizzazione up e down, nel caso delle code di messaggi di effettuare send e receive e, per la memoria condivisa, di agganciare l area in questione allo spazio degli indirizzi di un processo. Queste note contengono una descrizione ad alto livello delle system call viste a lezione ed integrano i lucidi. Per i dettagli si consulti il manuale on-line. 1

2 2 Chiavi ed identificatori interni Una struttura di IPC è in un certo senso esterna a qualsiasi processo, anche al processo allocatore, ed è gestita dal sistema operativo. Il numero di strutture allocabili in un sistema è finito e ciascuna struttura è rappresentata da una struttura dati contenente tutte le informazioni che la riguardano. Queste strutture dati variano a seconda del tipo di oggetto IPC che consideriamo. Per allocare una struttura di IPC vengono utilizzate le system call -get: semget (semafori), msgget (code di messaggi) e shmget (aree di memoria condivisa). In tutti e tre i casi il primo argomento è un numero intero detto chiave e il risultato restituito dalla system call è un altro numero intero detto identificatore. In un certo senso anche la chiave è un identificatore della struttura in questione, il suo uso è però assai diverso da quello del valore restituito da una -get. Siano prog1.c e prog2.c i codici sorgenti di due programmi che generano due processi P1 e P2 da sincronizzare. Il primo richiede l allocazione di un semaforo, che sarà utilizzato anche dal processo generato dal secondo programma. P1 eseguirà una semget, richiedendo al sistema operativo di allocare un semaforo. Ottiene come risultato un identificatore che gli consente di accedere alla specifica struttura semaforo allocata. P2 dovrà accedere, affinché le cose funzionino come desideriamo, alla stessa struttura semaforo allocata da P1. P2 però non può sapere quale struttura è stata allocata dal sistema operativo e quindi quale identificatore è stato restituito a P1, a meno che P1 e P2 non abbiano definito un nome convenzionale con il quale identificano la struttura di IPC in questione; tale nome convenzionale è la chiave. Per fare un analogia, facciamo finta che invece di semafori si parli di numeri di telefono: un numero di telefono identifica (in senso lato) un utente. Tale utente avrà però anche un nome: per telefonare a una persona posso chiedere a un servizio automatico di darmi il numero associato al nome che mi interessa. Ebbene, per tornare ai semafori, il nome è l analogo della chiave, il numero di telefono lo è dell identificatore restituito da semget e infine il servizio automatico è il sistema operativo. Non posso telefonare a una persona se conosco solo il suo nome (chiave), devo avere il suo numero (identificatore). 3 Allocazione e accesso Ciascuna system call -get ha diversi usi e comportamenti che dipendono dai valori del primo e dell ultimo suo argomento. Il primo argomento, lo abbiamo visto, è la chiave. L ultimo è detto normalmente flag e specifica sia i diritti di accesso da associare alla struttura condivisa sia alcune opzioni relative alla creazione. Vediamo i casi principali. Supponiamo che un processo voglia allocare una nuova struttura dati condivisa. Può procedere in due modi. Il più semplice è utilizzare la specifica convenzionale IPC PRIVATE come chiave. IPC PRIVATE forza l allocazione di un nuovo oggetto IPC, se vi è ancora spazio disponibile, il cui identifica- 2

3 tore viene restituito al processo chiamante. Questa soluzione può apparire in contrasto con quanto spiegato sopra, in quanto IPC PRIVATE non è una vera chiave (è solo l indicazione di creare forzatamente un nuovo oggetto), non può quindi essere usata per accedere all identificatore di uno specifico semaforo, a una specifica coda o a una specifica area di memoria condivisa. Questa soluzione è però molto comoda quando un processo alloca delle strutture i cui identificatori verranno passati in eredità ai processi figli. Supponiamo che il codice contenga l istruzione: semid = semget(ipc PRIVATE,...,... ) Il valore restituito da semget viene salvato in una variabile di tipo intero. Quando il processo eseguirà una fork, il figlio erediterà una copia della variabile semid e del suo valore. Erediterà quindi l identificatore del semaforo allocato, restituito dal sistema operativo e potrà usarlo per eseguire operazioni sul semaforo, senza dover eseguire una seconda semget. La soluzione precedente funziona se i processi da sincronizzare sono in relazione padre figli. Non sempre questo è il caso. Più in generale i processi da sincronizzare saranno avviati da comandi differenti all interno di shell differenti. Occorre quindi specificare chiavi effettive affinché possano usare le stesse strutture IPC. Supponiamo di voler usare la chiave 1234 e che un processo esegua semget(1234,...,... ). Ci sono due possibilità: o il semaforo richiesto non è ancora stato allocato oppure è già stato allocato da qualche processo (in generale un processo diverso dal nostro). Nel secondo caso la semget restituisce semplicemente l identificatore del semaforo allocato. Se invece non esiste alcun semaforo con quella chiave, il sistema operativo può ancora eseguire due operazioni diverse: l allocazione oppure la restituzione di un errore. Il comportamento tenuto dipende dal valore dei flag. Entrambe le operazioni sono lecite: a seconda dello schema di sincronizzazione che si intende implementare può darsi che il nostro processo debba effettivamente interpretare il ruolo dell allocatore della struttura oppure può darsi che questo ruolo competa ad un altro processo. Nel secondo caso, se il nostro processo scopre che la struttura non è ancora stata allocata, deve fermarsi perché probabilmente qualcosa è andato storto. Supponiamo che non esista alcuna struttura IPC del tipo richiesto, con la chiave specificata, e che il nostro processo debba fungere da allocatore. In questo caso occorre specificare come flag della system call -get un or bit a bit, i cui operandi sono la parola chiave IPC CREAT (senza e finale) e i diritti di accesso che si intende assegnare all oggetto allocato; per esempio IPC CREAT IPC CREAT è una costante predefinita nel sistema, 0600 i diritti di accesso di cui parleremo più avanti. Per esempio: semid = semget(1234,..., IPC CREAT 0600) Si osservi che, nel caso in cui dovesse esistere una struttura di IPC con chiave identica a quella specificata, la -get non eseguirebbe alcuna allocazione e si limiterebbe a restituire l identificatore trovato. Se invece vogliamo che il processo non esegua alcuna allocazione e si limiti ad utilizzare una struttura IPC già allocata, restituendo errore nel caso che non 3

4 la trovi, è importante non specificare IPC CREAT nei flag. Spesso si utilizza in questo caso come flag il valore 0. Per esempio: semid = semget(1234,..., 0) 4 Parametri specifici delle varie system call -get Nelle sezioni precedenti sono state illustrate le caratteristiche comuni delle varie system call -get. Ciascuna di esse ha però anche alcuni parametri specifici, che catturano caratteristica della struttura di IPC considerata. La system call semget, che consente di allocare semafori, ha tre parametri. Oltre ai due già descritti occorre specificare anche il numero di semafori da allocare. La questione è che in Unix i semafori vengono allocati a pool: ogni struttura IPC mantenuta dal sistema operativo contiene infatti un puntatore a un vettore di semafori in senso tradizionale, ai quali è possibile accedere singolarmente. Supponiamo, per esempio, che un processo padre debba allocare i semafori privati dei propri 10 figli. In Unix può eseguire un unica operazione di allocazione, nella quale richiede di riservare un vettore di 10 semafori. Ciascun figlio potrà accedere al proprio semaforo privato specificandone l indice nell array. La system call msgget, che consente di allocare una coda di messaggi ha solo due parametri: la chiave e i flag, dei quali abbiamo già parlato. Infine, la system call shmget, per le aree di memoria condivisa, ha tre parametri: i due visti più un numero che corrisponde alla dimensione in byte dell area da riservare. 5 System call -ctl Le system call di questo tipo consentono di effettuare operazioni dette di controllo. Ciascuna di esse consente di effettuare una certa varietà di operazioni predefinite. I loro parametri sono: le informazioni necessarie ad identificare la struttura su cui agire, una keyword che codifica l operazione da svolgere, un eventuale parametro dell operazione. 1. semctl(semid, semnum, op, param): alcune delle operazioni che possono essere svolte sui semafori tramite semctl agiscono sull intero pool di semafori allocato, altre su di un elemento del vettore di semafori. Il primo parametro è l identificatore del pool di semafori restituito da semget; il secondo è l eventuale indice di una specifica componente del vettore. Il terzo è l operazione da eseguire. Le più frequenti sono: SETVAL (assegna un valore alla componente di indice semnum del pool semid), GETVAL (restituisce il valore della componente di indice semnum del pool semid), IPC RMID (rimuove l intero pool di semafori). 2. msgctl(msqid, op, param): msqid è l identificatore interno della coda di messaggi su cui si vuole operare, op è l operazione da svolgere, ve ne sono 4

5 diverse, fra di esse la più utilizzata è IPC RMID, che consente di rimuove la coda. Il terzo argomento è un parametro utile ad alcune delle operazioni possibili. 3. shmctl(shmid, op, param): analoga alla precedente, per le aree di memoria condivisa. Il tipo del terzo parametro varia a seconda della system call -ctl considerata. Nel caso dei semafori si tratta di una union semun, nel caso delle code si tratta di un puntatore a struct msqid ds (un tipo di dato predefinito), infine per le aree condivise si tratta di un puntatore a struct shmid ds. La union semun non è un tipo predefinito quindi nel definire variabili di questo tipo occorre specificare l intera struttura, ad esempio: union semun { int val; struct semid ds *buf; ushort t *array; } arg. 6 System call semop semop è una system call specifica per i semafori. Consente di effettuare una serie di operazioni sospensive (up e down) su di un pool di semafori. Ha tre argomenti: l identificatore interno del pool di semafori su cui agire, un vettore di operazioni da eseguire, il numero di tali operazioni. Supponiamo di avere un pool di 2 semafori e di volere che il nostro processo esegua una up sul primo e una down sul secondo. Potrà eseguire le due operazioni con una sola chiamata a semop, nel seguente modo: struct sembuf cmd[2]; semid = semget(key,...);... /* inizializza cmd[0] */... /* inizializza cmd[1] */ semop(semid, cmd, 2); L esecuzione di una sola operazione (up o down) è quindi un caso particolare. Un operazione è descritta da una variabile di tipo struct sembuf (tipo predefinito nel sistema), avente tre campi: short sem num; short sem op; short sem flg. Nell esempio precedente è stato definito un array di due elementi di questo tipo, esso codificherà quindi due operazioni. L operazione descritta da una variabile di tipo struct sembuf viene applicata a una specifica componente del pool di semafori in questione. Tale componente è identificata dal primo campo (sem num). Il secondo campo (sem op) codifica l operazione da compiere. Il terzo, che ignoreremo, specifica ulteriori comportamenti da tenere in taluni casi particolari; per noi varrà sempre zero. Il campo sem op codifica quindi il fatto che la system call debba compiere una up oppure una down. Questo campo contiene un numero intero (short); vediamo il comportamento assunto dal sistema operativo a seconda dei possibili 5

6 valori di questo campo. Chiamando semval il valore corrente del semaforo che ci interessa, ci sono tre possibilità: 1. sem op = = 0: particolarità di Unix, attesa del valore zero. il processo viene sospeso se il semaforo ha valore maggiore di zero. verrà riattivato solo quando il semaforo assume valore zero. Non è un operazione classica dei semafori. 2. sem op > 0: up. semval viene incrementato di sem op unità. 3. sem op < 0: down. sem op semval: semval viene decrementato di sem op unità, il processo continua ad eseguire. sem op > semval: sospensione del processo. Il valore del semaforo rimane immutato. 7 System call msgsnd e msgrcv Vediamo ora le system call specifiche per le code di messaggi, che consentono di effettuare le operazioni di invio (msgsnd) e recezione (msgrcv). Si tratta di system call molto a basso livello che possono essere utilizzate per implementare diverse politiche di sincronizzazione, con e senza attesa. L invio di un messaggio è effettuato tramite msgsnd(int msqid, const void *msgp, size t msgsz, int msgflg). Il primo parametro, msqid, è l identificatore interno della coda alla quale si intende inviare il messaggio. L ultimo parametro, msgflg, specifica il comportamento da tenere nel caso in cui la coda sia piena. Si tratta di una situazione particolare, che difficilmente si verificherà in laboratorio per via delle ridotte dimensioni del progetto. In generale quando la coda è piena 1 e risulta quindi impossibile inserire il messaggio da inviare, il processo può alternativamente attendere che qualche altro processo consumi un messaggio in coda, liberando spazio, oppure terminare immediatamente la msgsnd senza attendere (opzione IPC NOWAIT). I due parametri msgp e msgsz riguardano il messaggio da spedire. Un messaggio è genericamente contenuto in una struttura dati definita dall utente a seconda delle proprie esigenze. Supponiamo che si chiami, per esempio, mio tipo mess. Tale struttura deve però forzatamente contenere due campi, in quest ordine: il primo deve essere un numero intero (long, strettamente maggiore di zero) indicante il tipo del messaggio, il secondo è il campo dati vero e proprio e può essere di qualsiasi tipo. Fra i due non deve essere inserito alcun altro campo. La struttura mio tipo mess potrebbe, per esempio essere così definita: 1 può esserlo in due modi distinti: o perché contiene il numero massimo di messaggi possibili o perché occupa le quantità massima di spazio per essa riservato 6

7 struct mio tipo mess {... long tipo; struct mio dato dati;... } Come vengono utilizzate queste informazioni? Il tipo del messaggio verrà discusso quando si parlerà di msgrcv. Cominciamo da msgp e msgsz. L operazione di inserzione di un messaggio in coda effettuata dalla msgsnd consiste in un operazione di copiatura. Il sistema operativo copia un numero di byte pari al valore di msgsz, consecutivi all indirizzo specificato da msgp all interno della coda; msgp deve essere l indirizzo del campo tipo della struttura dati contenente il messaggio da inviare e dovrebbe essere convertito in un (void *). La system call msgrcv viene utilizzata da un processo che desidera ricevere un messaggio di un tipo specificato e può essere bloccante o non bloccante. È bloccante quando, qualora la coda non contenga messaggi del tipo di interesse, il processo rimanga sospeso in attesa che giunga un tale messaggio, non bloccante altrimenti (in questo caso occorre usare il flag IPC NOWAIT). ssize t msgrcv(int msqid, void *msgp, size t msgsz, long int msgtyp, int msgflg) richiede come primo argomento l identificatore della coda in questione; il secondo argomento è l indirizzo di una variabile all interno della quale verrà memorizzato il messaggio ricevuto (void * è un puntatore generico, occorrerà fare un opportuno cast al tipo di dato del messaggio letto); il terzo argomento è il numero di byte dei quali è costituito il messaggio; msgtyp è il tipo di messaggio atteso; del flag abbiamo già parlato. Il tipo del messaggio atteso deve essere un numero positivo; nel caso particolare in cui si utilizza il valore zero, verrà estratto dalla coda il primo messaggio in essa contenuto, indipendentemente dal suo tipo. 8 System call shmat e shmdt Infine, per quel che riguarda la memoria condivisa, sono disponibili due system call che consentono a un processo di agganciare un area di memoria condivisa, eventualmente allocata da un processo diverso, al proprio spazio degli indirizzi e di sganciarla nel momento in cui non serve più. void *shmat(shmid, addr, flag) vuole come primo argomento l identificatore dell area in questione (restituito da shmget). Come secondo indirizzo utilizzeremo sempre il valore zero. In questo modo lasceremo al sistema operativo la scelta dell indirizzo attraverso il quale agganciare l area condivisa al segmento dati. Il terzo argomento è costituito da eventuali flag di controllo. La system call restituisce un indirizzo generico, del quale occorrerà effettuare il cast ad un opportuno tipo di dato. Se per esempio, in fase di allocazione era stato richiesto di riservare una quantità di spazio sufficiente a contenere un dato di tipo mio tipo dato, occorrerà convertire il puntatore generico restituito da shmat in un mio tipo dato *. 7

8 shmdt ha un solo argomento, un indirizzo restituito da una shmat. Dopo aver eseguito una shmdt sull indirizzo di un area di memoria condivisa, non sarà più possibile per il processo accedere all area in questione, anche se questa non verrà disallocata. 8

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

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

CREAZIONE PROCESSI IN UNIX 20

CREAZIONE PROCESSI IN UNIX 20 CREAZIONE PROCESSI IN UNIX 20 STRUTTURE DATI PER PROCESSI Un processo puo' essere in escuzione in 2 modi: kernel e utente. Un processo ha almeno 3 regioni: codice, dati e stack Lo stack è allocato dinamicamente.

Dettagli

Interprocess Communications - II. Franco Maria Nardini

Interprocess Communications - II. Franco Maria Nardini Interprocess Communications - II Franco Maria Nardini XSI IPC Tre tipi di IPC introdotti da System V: semafori shared memory code di messaggi Comunicazioni tra processi su stesso host Tutte consentono

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

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

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

SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale

Dettagli

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007 2007 SISTEMI OPERATIVI Sincronizzazione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 30/05/2007 Sincronizzazione dei processi 1. Si descrivano i tipi di interazione tra processi?

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX Processi UNIX I Processi nel SO UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice

Dettagli

Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005)

Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005) Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005) Descrizione dell esercitazione L esercitazione consiste nell implementare un semplice gestore di aste attraverso il quale gli utenti

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 22 Martedì 7-1-2014 1 System Call per l'uso dei segnali Un processo che

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

CAPITOLO 27 SCAMBIO DI MESSAGGI

CAPITOLO 27 SCAMBIO DI MESSAGGI CAPITOLO 27 SCAMBIO DI MESSAGGI SCAMBIO DI MESSAGGI Sia che si guardi al microkernel, sia a SMP, sia ai sistemi distribuiti, Quando i processi interagiscono fra loro, devono soddisfare due requisiti fondamentali:

Dettagli

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Struttura interna del sistema operativo Linux CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Architettura del sistema operativo shell Programmi utente Modo utente Interfaccia delle chiamate

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 5 Martedì 21-10-2014 Thread Come abbiamo detto, un processo è composto

Dettagli

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale didattico,

Dettagli

Processi in Linux. Igino Corona igino.corona@diee.unica.it. 20 Ottobre 2009

Processi in Linux. Igino Corona igino.corona@diee.unica.it. 20 Ottobre 2009 Sistemi Operativi Processi in Linux Igino Corona igino.corona@diee.unica.it 20 Ottobre 2009 Contenuti della lezione Come funzionano i programmi in Linux? Schema base di esecuzione di un programma Modalità

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

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

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

Esercitazione 2 di verifica

Esercitazione 2 di verifica Architettura degli Elaboratori, 27-8 Esercitazione 2 di verifica Soluzione: mercoledì 24 ottobre Una unità di elaborazione U è così definita: Domanda 1 i) possiede al suo interno due componenti logici

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Laboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat.

Laboratorio di Sistemi Operativi 29-01-2009. 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

Processi. Laboratorio Software 2008-2009 C. Brandolese

Processi. Laboratorio Software 2008-2009 C. Brandolese Processi Laboratorio Software 2008-2009 Introduzione I calcolatori svolgono operazioni simultaneamente Esempio Compilazione di un programma Invio di un file ad una stampante Visualizzazione di una pagina

Dettagli

I thread nel sistema operativo LINUX: Linuxthreads

I thread nel sistema operativo LINUX: Linuxthreads I thread nel sistema operativo LINUX: Linuxthreads LinuxThreads: Caratteristiche Processi leggeri realizzati a livello kernel System call clone: int clone(int (*fn) (void *arg), void *child_stack, int

Dettagli

Processi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto

Processi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto Processi e Sincronizzazione C. Brandolese M. Grotto Sommario 1. Processi Concetti fondamentali Stati in GNU/Linux 2. Creazione Descrizione Creazione con system() Creazione con fork() Effetto di fork()

Dettagli

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 VINCENZO MARRA Indice Esercizio 1 1 Conversione di un numero naturale in base b.

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

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 18 dicembre 2007 Esercizio 1: rappresentazione di una tabella di occorrenze L obiettivo è quello di rappresentare in modo efficiente

Dettagli

Il simulatore SPIM SPIM

Il simulatore SPIM SPIM Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html

Dettagli

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione Informatica 3 Informatica 3 LEZIONE 6: Il controllo dell esecuzione Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente Lezione 6 - Modulo 1 La gestione delle eccezioni Politecnico

Dettagli

Lezione 11. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata.

Lezione 11. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata. Lezione 11 system Sistemi operativi 12 maggio 2015 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 15 11.1 Di cosa parliamo in questa lezione? L interfaccia : system 1 Il

Dettagli

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job. Di cosa parliamo in questa lezione? Lezione 4 Cosa è un processo e come viene gestito dal SO 1 e job 2 Il blocco di controllo Sistemi operativi 3 Struttura di un file eseguibile 4 La schedulazione dei

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 16 Martedì 3-12-2013 1 La tecnica di gestione di un dispositivo a interruzione

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

Homework HWC1 di Programmazione Concorrente 13 novembre 2014 anno accademico 2014/2015

Homework HWC1 di Programmazione Concorrente 13 novembre 2014 anno accademico 2014/2015 Homework HWC1 di Programmazione Concorrente 13 novembre 2014 anno accademico 2014/2015 Modalità di consegna L homework va consegnato entro le ore 20:00 di domenica, trenta di novembre, inviando al docente

Dettagli

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Dettagli

CAPITOLO 7 - SCAMBIO DI MESSAGGI

CAPITOLO 7 - SCAMBIO DI MESSAGGI CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni

Dettagli

Sommario. G. Piscitelli

Sommario. G. Piscitelli Sommario Interprocess Communication Processi (e thread) cooperanti Il paradigma produttore-consumatore Shared Memory e Inter Process Communication (IPC) facility Proprietà caratteristiche della comunicazione

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina M. Grotto R. Farina Sommario 1. Applicazioni Distribuite 2. I Socket Introduzione Interfacce e protocolli Descrizione Stile di comunicazione Namespace e protocollo Include e system call Creazione e chiusura

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Record locking con la system call fcntl

Record locking con la system call fcntl Record locking con la system call fcntl Il record locking è un metodo per disciplinare la cooperazione tra processi. Permette ad un processo di poter accedere ad un file in modo esclusivo. È utile quindi

Dettagli

strutturare dati e codice

strutturare dati e codice Puntatori e passaggio parametri strutturare dati e codice Tipo di dati int * Pi ; Op. dereferenziazione j = *Pi ; Op. indirizzo Pi = &i ; By value int f(int i) ; a = f(b) ; By address int f(int * Pi) ;

Dettagli

Compito di Fondamenti di Informatica

Compito di Fondamenti di Informatica Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette

Dettagli

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O

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

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici ISA di riferimento: MIPS Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello funzionale Livello logico Livello circuitale Livello del layout istruzioni macchina, ISA Reti logiche:

Dettagli

HTTP adaptation layer per generico protocollo di scambio dati

HTTP adaptation layer per generico protocollo di scambio dati HTTP adaptation layer per generico protocollo di scambio dati Sandro Cavalieri Foschini 101786 Emanuele Richiardone 101790 Programmazione in Ambienti Distribuiti I - 01FQT prof. Antonio Lioy A.A. 2002-2003

Dettagli

Protezione. Protezione. Protezione. Obiettivi della protezione

Protezione. Protezione. Protezione. Obiettivi della protezione Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in

Dettagli

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa Raccolta prove scritte Realizzare una classe thread Processo che deve effettuare un numero fissato di letture da una memoria

Dettagli

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

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script. I file in PHP Un file è un archivio elettronico contenente informazioni (dati) memorizzate su memoria di massa. Il file ha la caratteristica di consentire la lettura, la scrittura e la modifica dei dati

Dettagli

SISTEMI OPERATIVI. Gestione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 13/05/2007

SISTEMI OPERATIVI. Gestione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 13/05/2007 2007 SISTEMI OPERATIVI Gestione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 13/05/2007 Gestione dei processi 1. Qual è la differenza tra un programma e un processo? Un programma

Dettagli

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi

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

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale

Dettagli

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28

Dettagli

RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO

RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO REMOTO TRAMITE terza parte TCP/IPdi Cristian Randieri randieri@intellisystem.it In questa terza parte della presentazione del dispositivo

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

OGGETTI KERNEL. Marcello Barnaba Danilo Cassone

OGGETTI KERNEL. Marcello Barnaba <vjt@openssl.it> Danilo Cassone <cassoned@libero.it> Universita` degli Studi di Bari C.d.L triennale in Informatica, A.A. 2001/02 Corso di Sistemi Operativi, II semestre Prof. Impedovo Sebastiano 17/05/2002 OGGETTI KERNEL Marcello Barnaba

Dettagli

11 Realizzazione del File System. 11.1.1 Struttura a livelli (fig. 11.1) 11.4 Allocazione dei file

11 Realizzazione del File System. 11.1.1 Struttura a livelli (fig. 11.1) 11.4 Allocazione dei file 11 Realizzazione del File System 1 Metodi di allocazione Allocazione contigua Allocazione concatenata e varianti Allocazione indicizzata e varianti Gestione dello spazio libero 11.1.1 Struttura a livelli

Dettagli

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Le operazioni di allocazione e deallocazione sono a carico del sistema. Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione

Dettagli

che vengano generati nell ordine corretto i sistema (es., la memoria, l unità aritmetico-

che vengano generati nell ordine corretto i sistema (es., la memoria, l unità aritmetico- Principi di architetture dei calcolatori: l unità di controllo Mariagiovanna Sami L unità di controllo Per eseguire le istruzioni di macchina, occorre che vengano generati nell ordine corretto i segnali

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni

Dettagli

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

Dettagli

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat.

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat. Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio di 1 punto

Dettagli

I processi. Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione fra processi

I processi. Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione fra processi I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione fra processi Il modello a processi Consideriamo un informatico appassionato di cucina che

Dettagli

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile Corso di Laurea in Ingegneria Biomedica Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa Prof. Fabio Solari: fabio.solari@unige.it (010-3532059) Prof. Manuela Chessa: manuela.chessa@unige.it

Dettagli

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

Dettagli

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX Introduzione In questa dispensa sono stati raccolti alcuni esercizi di programmazione C in ambiente Unix, tratti dagli esami di Sistemi Operativi svoltisi

Dettagli

TECNICHE AVANZATE DI I/O. Al loro livello più basso, tutti i file scritti sull hard disk. Training per esperti SU FILE

TECNICHE AVANZATE DI I/O. Al loro livello più basso, tutti i file scritti sull hard disk. Training per esperti SU FILE Training per esperti TECNICHE AVANZATE DI I/O SU FILE Spesso, la decisione di dividere in processi differenti la produzione dei dati dall uso degli stessi viene presa perché occorre scrivere i dati su

Dettagli

Visual Basic for Applications (VBA) Francesco Brun Fondamenti di Informatica a.a. 2014/2015

Visual Basic for Applications (VBA) Francesco Brun Fondamenti di Informatica a.a. 2014/2015 Francesco Brun Fondamenti di Informatica a.a. 2014/2015 Scopo di questo approfondimento Lo scopo di questo approfondimento è rispondere alla domanda: e se nella vita mi troverò a dover utilizzare un linguaggio

Dettagli

Gestione dei processi

Gestione dei processi Capitolo 1 Gestione dei processi 1.1 Creazione di un processo I principali eventi che possono dare luogo ad un nuovo processo sono: inizializzazione del sistema; esecuzione di una primitiva di sistema

Dettagli

Tecniche di traduzione da C ad assembly 68000. Note generali

Tecniche di traduzione da C ad assembly 68000. Note generali Tecniche di traduzione da C ad assembly 68000 Note generali Schema di compilazione da C ad assembly 68K Ispirato a GCC Fa uso di: banco di registri classi d istruzioni modi d indirizzamento e organizzazione

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

La memoria virtuale 9.2. Sistemi Operativi a.a. A.A. 2009-10 2013-2014

La memoria virtuale 9.2. Sistemi Operativi a.a. A.A. 2009-10 2013-2014 La Memoria Virtuale La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine Allocazione dei frame Thrashing File mappati in memoria Allocazione di memoria del kernel

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

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 Esercizi Assembly Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 RIPASSO Architettura dei registri del 68K Di (0 i 7): registri di dato a 8, 16, 32 bit Ai (0 i 7): resgistri di a 16, 32

Dettagli

Appunti di Informatica 1. Gianluca Rossi

Appunti di Informatica 1. Gianluca Rossi Appunti di Informatica 1 Gianluca Rossi Versione maggio 2011 Indice 1 Algoritmi, macchine e linguaggi di programmazione 3 1.1 La macchina di Von Neumann........................ 5 1.2 Dal linguaggio macchina

Dettagli

Cenni ad Assembly Intel

Cenni ad Assembly Intel Cenni ad Assembly Intel Luca Abeni April 17, 2015 Architerrura Intel Utilizzata sulla maggior parte dei laptop, desktop e server moderni Lunga storia Dagli anni 70 (Intel 8080-8 bit!)......fino ad oggi

Dettagli

Sistemi Operativi. Des crizione e controllo dei proces s i

Sistemi Operativi. Des crizione e controllo dei proces s i Sistemi Operativi Des crizione e controllo dei proces s i Servizi di un Sistema Operativo Permettere ad un utente di creare processi (lanciare programmi) Interallacciare l esecuzione di diversi processi,

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

Sistemi Operativi. ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Sistemi Operativi. ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08 Sistemi Operativi Docente: Ugo Erra ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione Concetto di processo

Dettagli

Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability.

Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability. Implementazione delle primitive di comunicazione Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability. Struttura dati canale {

Dettagli

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file. ESERCIZIO 1 Si consideri un hard disk formattato la cui memoria è suddivisa in 16 blocchi (numerati da 0 a 15). Si supponga che sull hard disk sia memorizzato un unico file, contenuto, nell ordine, nei

Dettagli

SISTEMI OPERATIVI. Realizzazione del file system. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

SISTEMI OPERATIVI. Realizzazione del file system. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II) SISTEMI OPERATIVI (MODULO DI INFORMATICA II) Realizzazione del file system Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) Università degli Studi di Bergamo a.a. 2012-13 Sommario Realizzazione

Dettagli

Lezione 5. Processi e thread. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata

Lezione 5. Processi e thread. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata Lezione 5 Sistemi operativi 24 marzo 2015 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 15 5.1 Di cosa parliamo in questa lezione? Relazione tra processi e thread, e relative

Dettagli

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

Dettagli

Lezione E12. Sistemi operativi open-source, embedded e real-time

Lezione E12. Sistemi operativi open-source, embedded e real-time Lezione E12 Sistemi operativi open-source, embedded e real-time 17 dicembre 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SOSERT 13 E12.1 Di

Dettagli

----------------------------------------------------------------

---------------------------------------------------------------- ---------------------------------------------------------------- utilizzo frequente di chiamate a.. A differenza del Pascal, il C permette di operare con assegnamenti e confronti su dati di tipo diverso,

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

Dettagli

4.6 LISTINI PLUS: Importazione listini fornitori [5.20.0/10]

4.6 LISTINI PLUS: Importazione listini fornitori [5.20.0/10] - 88 - Manuale di Aggiornamento 4.6 LISTINI PLUS: Importazione listini fornitori [5.20.0/10] È ora possibile importare i listini fornitori elencati in un file Excel. Si accede alla funzione dal menù Magazzino

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 3 Martedì 15-10-2013 1 Struttura ed organizzazione software dei sistemi

Dettagli

I tipi di dato astratti

I tipi di dato astratti I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato

Dettagli