Monitor. Le procedure entry sono le sole operazioni che possono essere utilizzate dai processi per accedere alle variabili comuni.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Monitor. Le procedure entry sono le sole operazioni che possono essere utilizzate dai processi per accedere alle variabili comuni."

Transcript

1 Monitor Costrutto sintattico che associa un insieme di procedure ad una struttura dati comune a più processi. Il compilatore può verificare che esse siano le sole operazioni permesse su quella struttura. Le procedure sono mutuamente esclusive:un solo processo per volta può essere attivo nel monitor. Le procedure entry sono le sole operazioni che possono essere utilizzate dai processi per accedere alle variabili comuni. Le variabili comuni mantengono il loro valore tra successive esecuzioni delle procedure del monitor (variabili permanenti). Sono accessibili solo entro il monitor. Le variabili locali definiscono lo stato della risorsa. Le procedure non dichiarate entry non sono accessibili dall esterno. Sono usabili solo dalle procedure entry. Il codice per l inizializzazione delle variabili entry viene eseguito una sola volta prima dell esecuzione di qualunque procedura. type < nome del tipo> = monitor; <dichiarazioni variabili locali>; procedure entry <nome> ( );..; --- procedure entry <nome>; ( );..; --- procedure <nome>( );..; <var nome-istanza>:<nome-monitor>; crea un particolare oggetto monitor, cioè una struttura dati organizzata secondo quanto indicato nella dichiarazione dei dati locali. <nome-istanza>.< nome procedura >( ); chiamata di una particolare procedura di un oggetto monitor da parte di un processo. <statement iniziale> 1

2 Scopo del monitor è controllare l assegnazione di una risorsa tra processi concorrenti in accordo a determinate politiche di gestione. L assegnazione avviene secondo due livelli di controllo: Il primo garantisce che un solo processo alla volta possa aver accesso alle variabili comuni del monitor. Ciò è ottenuto garanto che le procedure entry siano eseguite in modo mutuamente esclusivo (eventuale sospensione dei processi). Il secondo controlla l ordine con il quale i processi hanno accesso alla risorsa. La procedura chiamata verifica il soddisfacimento di una condizione logica che assicura l ordinamento (eventuale sospensione del processo e liberazione del monitor). Variabili tipo condizione Ogni variabile di tipo condizione rappresenta una coda nella quale i processi si sospono. Esistono tante variabili condizione quante sono le condizioni per cui un processo può essere ritardato. Le procedure del monitor agiscono su tali variabili mediante le operazioni: cond.wait cond.signal. L esecuzione dell operazione cond.wait sospe il processo e lo introduce nella coda individuata dalla variabile cond. L esecuzione dell operazione cond.signal re attivo un processo in attesa nella coda individuata dalla variabile cond. La condizione di sincronizzazione è costituita da variabili locali al monitor e da variabili proprie del processo passate come parametri. La sospensione del processo, nel caso in cui la condizione non sia verificata, avviene utilizzando variabili di un nuovo tipo, detto condition (condizione). Come conseguenza della signal entrambi i processi, quello segnalante P e quello segnalato Q, possono concettualmente proseguire la loro esecuzione. Esistono due possibilità : Signal and wait. P atte che Q abbandoni il monitor, o atte per un altra condizione Signal and continue. Q atte che P abbandoni il monitor, o atte per un altra condizione. 2

3 Signal and continue presenta l inconveniente che quando Q ripre l esecuzione la condizione logica per la quale stava atto potrebbe non essere più vera (modificata da P). Signal and wait assicura che P riprerà la sua esecuzione quando Q avrà completato la sua esecuzione, o si sarà nuovamente sospeso. Il monitor verrà liberato solo quando non vi saranno al suo interno processi in grado di completare l esecuzione. Compromesso: quando P esegue la signal abbandona immediatamente il monitor (signal eseguita come ultima istruzione della procedura.) procedure entry receive(x:messaggio); if cont=0 then non-vuoto.wait; x := buffer[testa]; testa := (testa+1)mod N; cont := cont -1; non-pieno.signal; cont := 0; testa := 0; coda := 0; (inizializzazione) var a, b : messaggio; var B, D : mailbox; (istanze del tipo monitor) B.s(a); B.receive(b) (chiamate delle procedure del monitor B da parte dei processi). Esempio: monitor come gestore di risorse (mailbox) type mailbox = monitor; var buffer : array [0 N-1] of message; testa, coda : 0...N-1; cont : 0 N; non-pieno, non-vuoto : condition; procedure entry s (x:messaggio); if cont=n then non-pieno.wait; buffer[coda] := x; coda := (coda+1)mod N; cont := cont +1; non-vuoto.signal; ESEMPIO: monitor con allocatore di risorse type allocatore = monitor; var occupato : boolean; libero : condition; procedure entry Richiesta; if occupato then libero.wait; occupato := true; procedure entry Rilascio; occupato := false; libero.signal; occupato := false 3

4 var alloc : allocatore (istanza del tipo monitor); /codice eseguito da un processo/ alloc.richiesta; <uso della risorsa>; alloc.rilascio; Il compilatore inserisce un prologo ed un epilogo all inizio ed all uscita da ogni procedure entry: prologo:wait(mutex) epilogo: if urgentcount > 0 then signal (urgent); else signal (mutex); Implementazione del monitor tramite semafori Il compilatore assegna ad ogni istanza di un monitor: un semaforo mutex inizializzato a 1 per la mutua esclusione delle procedure del monitor; un semaforo urgent inizializzato a 0 per effettuare la preemption dei processi segnalanti; un contatore urgentcount inizializzato a 0 per conteggiare in ogni istante i precedenti processi; per ogni variabile cond di tipo condition un semaforo condsem inizializzato a 0 ed un contatore condcount inizializzato a 0 per implementare cond.wait e cond.signal Il compilatore traduce le operazioni cond.wait e cond.signal nel seguente modo: cond.wait cond.signal condcount := condcount + 1; urgentcount := urgentcount + 1; if urgentcount > 0 then signal (urgent) if condcount > 0 then else signal (mutex) signal(condsem) wait(condsem); wait(urgent); condcount := condcount 1; urgentcount := urgentcount 1; condsem: semaforo associato a ciascuna variabile condizione (v.i. = 0) condcount: contatore associato a ciascuna variabile condizione (v.i. = 0) 4

5 cond.signal come ultima operazione delle procedure Non c è più necessità del semaforo urgent e del contatore urgentcount, per cui: prologo: epilogo: cond.wait: wait(mutex); signal(mutex); se la procedura non contiene cond.signal condcount := condcount + 1; signal (mutex); wait (condsem); condcount := condcount 1; Modifiche al monitor Sospensione con indicazione della priorità cond.wait (priorità) Variabili condizione intese come code monoprocesso. Il programmatore ha il controllo completo sulla scelta del processo da risvegliare. Funzioni primitive su variabili di tipo condizione: cond.queue operazione che verifica la presenza nella coda cond di almeno un processo sospeso Esempio: if cond.queue then cond.signal: if condcount > 0 then signal (condsem) else signal (mutex); La cond.signal rappresenta anche l epilogo della procedura Chiamate innestate a procedure di monitor Durante l esecuzione della procedura A1 del monitor A viene chiamata la procedura B1 del monitor B e durante l esecuzione di tale procedura il processo viene sospeso sulla variabile condizione X. Viene rilasciata la mutua esclusione per il monitor B, mentre il monitor A rimane occupato. Se la procedura B2 di B, a cui è demandato il compito di riattivare il processo, viene richiamata solo attraverso la procedura A2 di A, si ha una situazione di blocco critico Questa soluzione è imposta da un problema di congruenza dei dati; non esso terminata A1, se il monitor A viene liberato un nuovo processo può trovare la struttura dei dati del monitor non consistente. 5

6 CHIAMATE INNESTATE A MONITOR Monitor A <dati> procedure entry A1;.. B.B1 ; procedure entry A2; Monitor B <dati> procedure entry B1; X.wait ; procedure entry B2; 6

Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione

Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione Soluzioni basate su primitive di sincronizzazione Le primitive di sincronizzazione piú comuni sono: Lock (mutex) - realizzati in

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Dettagli

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

Monitor. Introduzione. Struttura di un TDA Monitor

Monitor. Introduzione. Struttura di un TDA Monitor Monitor Domenico Cotroneo Dipartimento di Informatica e Sistemistica Introduzione E stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l assegnazione

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modelli di interazione Modello a memoria comune (ambiente globale) Modello a scambio di messaggi (ambiente locale, message passing) Modello a memoria comune Il sistema

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

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

Corso di Programmazione Concorrente. I Monitor. Valter Crescenzi

Corso di Programmazione Concorrente. I Monitor. Valter Crescenzi Corso di Programmazione Concorrente I Monitor Valter Crescenzi crescenz@dia.uniroma3.it http://crescenzi.inf.uniroma3.it Sommario Monitor e Tipi di Dato Astratto sintassi & semantica Le primitive wait

Dettagli

ESERCIZIO SincrAmbGlob-1

ESERCIZIO SincrAmbGlob-1 ESERCIZI DI SINCRONIZZAZIONE TRA THREAD CON SEMAFORI ESERCIZIO SincrAmbGlob-1 Si consideri un sistema nel quale è definito il semaforo sem1 e i thread P1, P2 e P3. Al tempo t il semaforo sem1 ha la seguente

Dettagli

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1 CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1 PRODUTTORE/CONSUMATORE Il problema del produttore/consumatore è uno dei problemi più comuni di concorrenza tra processi. Il problema presenta uno o più

Dettagli

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE Il problema del produttore/consumatore Il primo approccio alla risoluzione del problema del produttore/consumatore considera un buffer infinito presentato

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

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry, o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

Il costrutto monitor

Il costrutto monitor Il Monitor 1 Monitor Definizione del monitor Esempi d uso Realizzazione del costrutto monitor Realizzazione di politiche di gestione delle risorse Chiamate innestate a procedure del monitor Realizzazione

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 9 Giovedì 10-11-2016 Semafori un semaforo s è una struttura dati gestita

Dettagli

CAPITOLO 23 PROBLEMA DEL BARBIERE

CAPITOLO 23 PROBLEMA DEL BARBIERE CAPITOLO 23 PROBLEMA DEL BARBIERE NEGOZIO DEL BARBIERE (20 norma 50 clienti) La figura riporta una pianta della sala del barbiere e come si vede ipotizza che ci siano presenti tre sedie per il taglio e

Dettagli

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Supponiamo sempre di avere un ponte stretto che permette il passaggio delle auto solo in un verso per volta,

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Sistemi Operativi A Parte III - Sincronizzazione

Sistemi Operativi A Parte III - Sincronizzazione Cooperazione e competizione tra processi (1) Sistemi Operativi A Parte III - Sincronizzazione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Due o più processi possono interagire

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

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

Algoritmi e soluzione di problemi

Algoritmi e soluzione di problemi Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)

Dettagli

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE 1 ALGORITMO, PROGRAMMA, PROCESSO Algoritmo Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma Descrizione di un

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

Processi parte V. Processi parte V. Sincronizzazione dei processi mediante monitor: Sintassi Funzionamento Implementazione

Processi parte V. Processi parte V. Sincronizzazione dei processi mediante monitor: Sintassi Funzionamento Implementazione Processi parte V Processi parte V Sincronizzazione dei processi mediante monitor: Sintassi Funzionamento Implementazione Monitor Il costrutto monitor permette di definire un tipo di dato astratto e di

Dettagli

Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Sincronizzazione Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Soluzioni hardware Le soluzioni hardware al problema della SC possono essere classificate

Dettagli

Corso di Laboratorio di Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi Corso di Laboratorio di Sistemi Operativi Lezione 7 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Threads Un thread è l unità di base per l utilizzo della CPU. Composto

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

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE

Dettagli

Sequential Functional Chart

Sequential Functional Chart Sequential Functional Chart Nel 1975 nasce il GRAFCET GRAPHe de Coordination Etapes Transitions Nel 1987 è stato adottato come standard internazionale dall IEC (Comitato Elettrotecnico Internazionale)

Dettagli

Modelli di programmazione parallela

Modelli di programmazione parallela Modelli di programmazione parallela Oggi sono comunemente utilizzati diversi modelli di programmazione parallela: Shared Memory Multi Thread Message Passing Data Parallel Tali modelli non sono specifici

Dettagli

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile

Dettagli

Sequential Functional Chart (SFC) - Parte 2

Sequential Functional Chart (SFC) - Parte 2 Sequential Functional Chart (SFC) - Parte 2 Vincenzo Suraci Automazione STRUTTURA DEL NUCLEO TEMATICO STRUTTURE DI COLLEGAMENTO Via Ariosto 25-00185 Roma http://www.diag.uniroma1.it 2 STRUTTURE DI COLLEGAMENTO

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche

Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche 5.1 Implementazione dei monitor con i semafori Un monitor è un tipo di

Dettagli

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione

Dettagli

Capitolo 7: Sincronizzazione

Capitolo 7: Sincronizzazione Capitolo 7: Sincronizzazione Il problema della sincronizzazione. Il problema della sezione critica. Hardware per la sincronizzazione. Semafori. Problemi classici di sincronizzazione. Monitor (cenni). 7.1

Dettagli

Sistemi operativi Sincronizzazione fra processi

Sistemi operativi Sincronizzazione fra processi Sistemi operativi 2003-2004 Sincronizzazione fra processi Introduzione I processi devono poter comunicare tra loro in modo strutturato e preciso Per passarsi informazioni Per non interferire con gli altri

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto Modello a scambio di messaggi type messaggio = record origine: ; destinazione: ; contenuto:

Dettagli

Puntatori. Fondamenti di Programmazione

Puntatori. Fondamenti di Programmazione Puntatori Fondamenti di Programmazione Funzioni utili stdio.h c = getchar(); restituisce un carattere letto da tastiera. Equivale a: scanf( %c, &c); putchar(c); scrive un carattere sullo schermo. Equivale

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel

Dettagli

MODELLO AD AMBIENTE GLOBALE

MODELLO AD AMBIENTE GLOBALE MODELLI DI INTERAZIONE TRA PROCESSI Modello ad ambiente globale ( global environment ) Modello a scambio di messaggi ( message passing ) MODELLO AD AMBIENTE GLOBALE Il sistema è visto come un insieme di

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento

Dettagli

28/02/2014 Copyright V. Moriggia

28/02/2014 Copyright V. Moriggia Informatica per la Finanza 3 Le variabili in VBA Altri I/O 28/02/2014 Copyright 2005-2007 V. Moriggia 1 28/02/2014 3.2 Le variabili in VBA V. Moriggia 1 28/02/2014 3.3 Dichiarazione di variabili in VBA

Dettagli

SOLUZIONE. <l auto arriva all ingresso I> while PostiDisponibili == 0

SOLUZIONE. <l auto arriva all ingresso I> while PostiDisponibili == 0 ESERCIZIO parcheggio Un parcheggio per auto della capacità di 10 posti è dotato di un unico ingresso I e un unica uscita U. L ingresso e l uscita sono controllate da sbarre. Le auto sono thread di uno

Dettagli

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

Dettagli

Note_Batch_Application 04/02/2011

Note_Batch_Application 04/02/2011 Note Utente Batch Application Cielonext La Batch Application consente di eseguire lavori sottomessi consentendo agli utenti di procedere con altre operazioni senza dover attendere la conclusione dei suddetti

Dettagli

Condivisione. Sistemi Operativi Giuseppe Prencipe. Es.: produttore -- consumatore. Es.: produttore -- consumatore. Es.: produttore -- consumatore

Condivisione. Sistemi Operativi Giuseppe Prencipe. Es.: produttore -- consumatore. Es.: produttore -- consumatore. Es.: produttore -- consumatore Sistemi Operativi Giuseppe Prencipe Sincronizzazione dei Processi Condivisione I processi di un SO possono cooperare Tipicamente condividono dati e file Si rendono necessari meccanismi che garantiscano

Dettagli

Informatica! Appunti dal laboratorio 1!

Informatica! Appunti dal laboratorio 1! Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti

Dettagli

Esempio: la Toilette Unisex

Esempio: la Toilette Unisex Esempio: la Toilette Unisex Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando i semafori forniti dalla libreria LinuxThreads, si realizzi un'applicazione concorrente

Dettagli

PRINCIPI DI SISTEMI OPERATIVI

PRINCIPI DI SISTEMI OPERATIVI PRINCIPI DI SISTEMI OPERATIVI ESERCIZIO del 28 NOVEMBRE 2003 Un distributore di benzina ha a disposizione P pompe e una cisterna da L litri. Le automobili arrivano al distributore e richiedono un certo

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06. SISTEMI OPERATIVI 06.a Il Nucleo Nucleo di un SO Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher 1 Architettura di base dei SO Due le strutture di riferimento: a

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. 6 LEZIONE SINCRONIZZAZIONE DEI PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

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

Dettagli

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare

Dettagli

Descrivono la collaborazione di un gruppo di oggetti per implementare collettivamente un comportamento

Descrivono la collaborazione di un gruppo di oggetti per implementare collettivamente un comportamento Diagrammi di interazione Diagrammi di sequenza Diagrammi di comunicazione (ex collaborazione) Diagrammi di interazione generale Diagrammi di temporizzazione Descrivono la collaborazione di un gruppo di

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Esercitazione sui grafi di precedenza, fork/join, cobegin/coend.

Esercitazione sui grafi di precedenza, fork/join, cobegin/coend. Esercitazione sui grafi di precedenza, fork/join, co/coend. Esercizio 1. Realizzare mediante il costrutto fork/join il seguente grafo di precedenze. Risposta. cont5 := 2; cont6 := 3; cont7 := 2; S1; fork(l1);

Dettagli

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007 2007 SISTEMI OPERATIVI Deadlock (blocco critico) Domande di verifica Luca Orrù Centro Multimediale Montiferru 04/06/2007 Deadlock (blocco critico) 1. Si descriva il deadlock e le condizioni sotto cui si

Dettagli

Fondamenti di Informatica T1 Mappe

Fondamenti di Informatica T1 Mappe Fondamenti di Informatica T1 Mappe Tutor Melissa Licciardello melissa.licciardell2@unibo.it Melissa Licciardello Fondamenti di Informatica T1 1 / 16 Mappe Matrice N x 2 : Gli elementi della prima colonna,

Dettagli

* Costrutto linguistico che incapsula la sincronizzazione di mutua esclusione all interno della definizione della risorsa (Brinch Hansen, Hoare)

* Costrutto linguistico che incapsula la sincronizzazione di mutua esclusione all interno della definizione della risorsa (Brinch Hansen, Hoare) 1 * Costrutto linguistico che incapsula la sincronizzazione di mutua esclusione all interno della definizione della risorsa (Brinch Hansen, Hoare) * Associa ad una struttura dati un insieme di procedure

Dettagli

Puntatori in C Lucidi della Pof.ssa Pazienza

Puntatori in C Lucidi della Pof.ssa Pazienza Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *

Dettagli

CAPITOLO 24 I MONITOR

CAPITOLO 24 I MONITOR EFFETTO DELLE PRIMITIVE - signal E wait SUI SEMAFORI CAPITOLO 24 I MONITOR I semafori sono un mezzo efficace per la gestione della mutua esclusione in ambienti con processi concorrenti, ma spesso è difficile

Dettagli

Heap e code di priorità

Heap e code di priorità Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010

Dettagli

PROGRAMMAZIONE: Le strutture di controllo

PROGRAMMAZIONE: Le strutture di controllo PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l

Dettagli

I Tipi di Dato Astratto

I Tipi di Dato Astratto I Tipi di Dato Astratto Sommario Cosa sono le Strutture Dati Astratte? Le strutture dati Le operazioni Come scegliere fra varie implementazioni? Quale è la questione? Come organizzare (strutturare) i dati

Dettagli

Fondamenti di Programmazione. Strutture di controllo

Fondamenti di Programmazione. Strutture di controllo Fondamenti di Programmazione Strutture di controllo 1! Controllo del flusso! n Flusso di esecuzione: ordine in cui le istruzioni di un programma sono eseguite! n Salvo contrordini, è in sequenza! n Due

Dettagli

Grafi pesati Minimo albero ricoprente

Grafi pesati Minimo albero ricoprente Algoritmi e Strutture Dati Definizioni Grafi pesati Minimo albero ricoprente Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è un albero; T contiene

Dettagli

Sincronizzazione dei processi

Sincronizzazione dei processi Sincronizzazione dei processi Sincronizzazione dei processi Background Il problema della sezione critica Hardware di sincronizzazione Semafori Problemi classici di sincronizzazione Monitor 6.2 Background

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Finestre di dialogo. Corso di Laboratorio di Programmazione Web. Controllo dell input e window.alert. prompt di stringhe!

Finestre di dialogo. Corso di Laboratorio di Programmazione Web. Controllo dell input e window.alert. prompt di stringhe! Corso di Funzioni ed Oggetti Finestre di dialogo prompt( Inserisci il valore, 1000 ); restituisce la stringa inserita nel campo alarm( Stai per uscire! ); Dipartimento di Informatica Università degli Studi

Dettagli

PROGRAMMAZIONE STRUTTURATA

PROGRAMMAZIONE STRUTTURATA PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:

Dettagli

Strutture di controllo e cicli

Strutture di controllo e cicli Appendice B Strutture di controllo e cicli Le condizioni I cicli Le interruzioni A p p e n d i c e B Il microcontrollore della scheda Arduino, opportunamente programmato, è in grado di prendere decisioni

Dettagli

Esercitazione 3 Monitor. 22 Novembre 2012

Esercitazione 3 Monitor. 22 Novembre 2012 Esercitazione 3 Monitor 22 Novembre 2012 Esercizio 1 L amministrazione comunale di una città ha organizzato un sistema di prestito gratuito di biciclette rivolto ai cittadini ed ai turisti. Il prestito

Dettagli

I circuiti elementari

I circuiti elementari I circuiti elementari Nel lavoro diprogrammazione con il computer si fa largo uso della logica delle proposizioni e delle regole dell algebra delle proposizioni o algebra di Boole. L algebra di Boole ha

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

Introduzione alla programmazione Object Oriented. Luca Lista

Introduzione alla programmazione Object Oriented. Luca Lista Introduzione alla programmazione Object Oriented Luca Lista Concetti base del software OO Classi e oggetti Incapsulamento Relazione di ereditarietà Polimorfismo Cos è un Oggetto? Definizione da vocabolario:

Dettagli

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore.

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore. I vettori in C Sintassi della definizione Definizione di costanti Operazioni di accesso Vettori Definizione di vettori in C I vettori in C Definizione di vettori in C Definizione di vettori in C Stesse

Dettagli

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3 Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali

Dettagli

Diagrammi a blocchi 1

Diagrammi a blocchi 1 Diagrammi a blocchi 1 Sommario Diagrammi di flusso, o a blocchi. Analisi strutturata. Esercizi. 2 Diagrammi a blocchi È un linguaggio formale di tipo grafico per rappresentare gli algoritmi. Attraverso

Dettagli

Reti e problematiche di Rete

Reti e problematiche di Rete Reti e problematiche di Rete I Processi Concorrenti Enrico Cavalli Anno Accademico 2008-2009 I problemi con i processi concorrenti 1 I processi concorrenti La concorrenza tra processi avviene secon diverse

Dettagli

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1 Parte 2 Ricorsione - AA. 2012/13 [M.C.Escher Drawing hands, 1948] 2.1 Funzioni ricorsive Una funzione si dice ricorsiva se richiama se stessa, direttamente o indirettamente La ricorsione si dice diretta

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Corso di Ingegneria del Software. Activity Diagram

Corso di Ingegneria del Software. Activity Diagram Corso di Ingegneria del Software a.a. 2009/2010 Mario Vacca mario.vacca1@istruzione.it Diagrammi di attività Diagrammi di attività 1. La notazione 2. Uso dei diagrammi di attività 3. TOOL di supporto 4.

Dettagli

Un nuovo concetto di classe

Un nuovo concetto di classe Un nuovo concetto di classe Un sistema discreto è caratterizzato dalla particolarità che i suoi cambiamenti di stato hanno luogo a distanza di tempo comunque spaziati; nel simulare un sistema del genere,

Dettagli

MONITOR come strumento di programmazione concorrente

MONITOR come strumento di programmazione concorrente MONITOR come strumento di programmazione concorrente 1. Struttura di un programma concorrente Un programma concorrente si compone di processi concorrenti che usano come strumenti di sincronizzazione e

Dettagli

Introduzione alla Programmazione in Java attraverso un esempio commentato

Introduzione alla Programmazione in Java attraverso un esempio commentato Corso di Studi in Informatica Programmazione 1 corso B prof. Elio Giovannetti Introduzione alla Programmazione in Java attraverso un esempio commentato Programmazione 1 B - a.a. 2002-03 53 Modello di memoria

Dettagli

Strutture Dinamiche. Fondamenti di Informatica

Strutture Dinamiche. Fondamenti di Informatica Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));

Dettagli

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth.

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. PASCAL standard Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. Nb: primi linguaggi furono: Fortran, Algol, Ada, Cobol (cfr testo)

Dettagli

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

Dettagli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo

Dettagli

I sistemi operativi (prima parte) Agostino Lorenzi I sistemi operativi - Atlas

I sistemi operativi (prima parte) Agostino Lorenzi I sistemi operativi - Atlas I sistemi operativi (prima parte) Le esigenze dell informatica moderna Computer facili da usare Gestione di grandi archivi di dati Esecuzione di più programmi sulla stessa macchina Collegamento in rete

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

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Dettagli

Corso di Fondamenti di Informatica Classi di istruzioni 2

Corso di Fondamenti di Informatica Classi di istruzioni 2 Corso di Informatica Classi di istruzioni 2 Anno Accademico 2010/2011 Francesco Tortorella Strutture di controllo Caratteristica essenziale degli algoritmi è la possibilità di decidere le operazioni da

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

NUCLEO DI UN SISTEMA A PROCESSI

NUCLEO DI UN SISTEMA A PROCESSI NUCLEO DI UN SISTEMA A PROCESSI Il modello a processi prevede l esistenza di tante unità di elaborazione (macchine virtuali) quanti sono i processi; ogni macchina possiede come set di istruzioni elementari

Dettagli

Algoritmi e Strutture Dati. HeapSort

Algoritmi e Strutture Dati. HeapSort Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene

Dettagli