I THREAD O PROCESSI LEGGERI Generalità

Похожие документы
LA SINCRONIZZAZIONE TRA PROCESSI

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

Pronto Esecuzione Attesa Terminazione

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Il descrittore di processo (PCB)

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

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

Il problema del produttore e del consumatore. Cooperazione tra processi

La Gestione delle risorse Renato Agati

Gestione della memoria centrale

Il Sistema Operativo

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Java Virtual Machine

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario

FONDAMENTI di INFORMATICA L. Mezzalira

Capitolo 5: I thread

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

GESTIONE DEI PROCESSI

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

Java threads (2) Programmazione Concorrente

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Il costrutto monitor [Hoare 74]

Corso di Sistemi di Elaborazione delle informazioni

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

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D

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

Protezione. Protezione. Protezione. Obiettivi della protezione

Il Concetto di Processo

Comunicazione tra Processi

Processi e Thread. Scheduling (Schedulazione)

Corso di Linguaggi di Programmazione

Capitolo 7: Sincronizzazione

Il costrutto monitor [Hoare 74]

Introduzione al sistema operativo Il file system: file, directory,...

INFORMATICA 1 L. Mezzalira

Sistemi Operativi Kernel

Funzioni in C. Violetta Lonati

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Sistemi Operativi Esercizi Sincronizzazione

Sistemi Operativi (modulo di Informatica II) I processi

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Monitor. Introduzione. Struttura di un TDA Monitor

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

Introduzione ai Metodi Formali

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Il Sistema Operativo (1)

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

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Scheduling della CPU:

Architettura di un sistema operativo

Il Software. Il software del PC. Il BIOS

Sistema operativo: Gestione della memoria

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

Infrastrutture Software

Deadlock e Starvation

Cosa è un foglio elettronico

Approccio stratificato

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

CAPITOLO 7 - SCAMBIO DI MESSAGGI

Il memory manager. Gestione della memoria centrale

IL SISTEMA OPERATIVO

Fasi di creazione di un programma

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera

Sistemi operativi. Esempi di sistemi operativi

Lo scheduling. Tipici schedulatori

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Architettura di un calcolatore

LINGUAGGI DI PROGRAMMAZIONE

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

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

PRODUZIONE PAGELLE IN FORMATO PDF

CAPITOLO 24 I MONITOR

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Sistemi operativi e reti A.A Lezione 2

B+Trees. Introduzione

Транскрипт:

I THREAD O PROCESSI LEGGERI Generalità Thread: segmento di codice (funzione) Ogni processo ha un proprio SPAZIO DI INDIRIZZAMENTO (area di memoria) Tutti i thread genereti dallo stesso processo condividono i dati, quindi l'area di memoria del processo a cui appartengono. Multithreading Un unico processore può essere condiviso tra parecchi thread utilizzando un algoritmo di scheduling per determinare quando interrompere l'evoluzione di un thread e sevirne un altro. scheduling = mettere in lista, pianificare CONTEXT SWITCH (Cambio di contesto) Quando la CPU blocca l'esecuzione di un thread (thtread 1) per mandarne un altro in esecuzione (thtread 2), deve 1. salvare lo stato del thtread 1, così quando lo va a rieseguire può partire da dove lo aveva lasciato. 2. recuperare lo stato del thtread 2 Il multithreading è vantaggioso rispetto al multi processing in termini di context switch. Un segmento di codice è thread-safe se garantisce che nessun thread può accedere a dati durante il loro aggiornamento. Tutti i thread generati dallo stesso processo usano gli stessi dati. PROCESSI THREAD MS-DOS 1 1 UNIX + 1 JVM 1 + LINUX + + WINDOWS XP + + SOLARIS + +

PORTABILITA' SE IL THREAD SI SOSPENDE, SI SOSPENDE ANCHE IL PROCESSO PADRE E TUTTI GLI ALTRI THREAD FIGLI SFRUTTA PIU' PROCESSORI THREAD IMPLEMENTATI DA LIBRERIE APPOSITE: USER LEVEL SI' SI' NO S.O.: KERNEL LEVEL NO NO SI' ALL'INIZIO DAL S.O. POI A LIVELLO UTENTE: MISTA (SOLARIS) NO NO SI' Utilizzo dei thread Esempio 1: Word Input Reimpagninazione Controllo ortografico Sillabazione Usano sempre lo stesso testo (dati) che non va quindi ricaricato. Esempio 2: Excel Ricalcolo automatico Input

ELABORAZIONE SEQUENZIALE E CONCORRENTE Elaborazione sequenziale: esecuzione di un programma con un ordinamento totale delle azioni Elaborazione cocncorrente: esecuzione di un programma con un ordinamento parziale delle azioni, più azioni possono essere parallele tra loro, cioè possono essere eseguite contemporaneamente. Esempio: il problema da risolvere è quello di valutare una espressione matematica: (2*6)+(1+4)*(5-2)

Processi non sequenziali 1 indipendenti L'evoluzione di un processo non influenza quella dell'altro Processi 2 interagenti 1 2 totalmente ignari In competizione su una risorsa. indirettamente a conoscenza uno dell'altro In cooperazione (scambio dati). Il S.O. Gestisce la loro sincronizzazione. Il S.O. Gestisce la loro sincronizzazione. Area di memoria condivisa 3 direttamente a conoscenza uno dell'altro In cooperazione (scambio dati). Si possono scambiare messaggi espliciti. Send(destinatario,messaggio) Receive(mittente, destinatario

LA PROGRAMMAZIONE CONCORRENTE Alcuni linguaggi di programmazione permettono di implementare la programmazione concorrente. Il programmatore deve individuare le attività parallelizzabili In java esistono le istruzioni: fork (biforcazione) e join (riunione) e cobegin (inizio insieme) e coend (fine insieme). Cooperare (operare insieme)

Fork, join Sisntassi costrutto. Esempio: z=(3-2)*(5+4)

cobegin, coend Sisntassi costrutto

COMUNICAZIONE TRA PROCESSI Modello ad ambiente globale (memoria comune) risorse 1 2 dedicate Visibili da un solo processo alla volta. Gestore S.O. condivise Visibili da più processi contemporaneamente. Gestore: programmatore Risorse allocate 1 Staticamente prima che il programma va in esecuzione. Gestore: programmatore 2 dinamicamente programmatore quando il programma va in esecuzione. Gestore: S.O. S.O. Programmatore e S.O. Il gestore deve: 1. mantenere aggiornato lo stato di allocazione della risorsa 2. fornire i meccanismi ai processi per 1. accedervi, 2. prenderne possesso, 3. operare su du essa, 4. liberarla 3. definire a quale processo e per quanto tempo assenare la risorsa

Modello a scambio di messaggi (non esiste una memoria condivisa) 1 Asincrona: il mittente non rimane in attesa di una risposta da parte del destinatario 2 Sincrona: mittente e destinatario devono essere pronti a parlarsi, devono sincronizzarsi a stretto: mittente messsaggio destinatario b esteso: mittente messsaggio destinatario destinatario riscontro mittente

LA SINCRONIZZAZIONE TRA PROCESSI E' più complesso scrivere programmi concorrenti rispetto a programmi sequenziali in quanto non basta essere sicuri della correttezza dei singoli moduli ma è necessario garantire il loro corretto funzionamento per ogni possibile combinazione di interazioni che questi possono avere. Esempio concettuale dove possiamo comprendere gli effetti disastrosi che possono essere generati da errori dipendenti dal tempo o dalla errata sincronizzazione.

Per evitare errori dipendenti dal tempo bisogna rispettare 1. condizioni di Bernstein 2. regola di mutua esclusione (proprietà safety) 3. proprietà fairness (correttezza) 4. proprietà liveness (sopravvivenza)

1 condizioni di Bernstein Concetti di dominio e rango Verificare se le condizioni di Bernstein sono verificate nei 3 esempi sotto riportati

2 regola di mutua esclusione Esempio 23 32 12 0 0 0 0 0 0 0 0 0 ultimo = ultimo +1 23 32 12 0 0 0 0 0 0 0 0 0 vet_dati[ultimo] = 87 23 32 12 87 0 0 0 0 0 0 0 0 Scrive un nuovo dato nella prima posizione disponibile letto = vet_dati[ultimo] 23 32 12 87 0 0 0 0 0 0 0 0 vet_dati[ultimo] = 0 23 32 12 0 0 0 0 0 0 0 0 0 ultimo = ultimo - 1 23 32 12 0 0 0 0 0 0 0 0 0 legge l'ultimo dato inserito e lo cancella 23 32 12 0 0 0 0 0 0 0 0 0 ultimo = ultimo +1 23 32 12 0 0 0 0 0 0 0 0 0 letto = vet_dati[ultimo] 23 32 12 0 0 0 0 0 0 0 0 0 vet_dati[ultimo] = 0 23 32 12 0 0 0 0 0 0 0 0 0 ultimo = ultimo - 1 23 32 12 0 0 0 0 0 0 0 0 0 vet_dati[ultimo] = 87 23 32 87 0 0 0 0 0 0 0 0 0 Fa cose diverse I processi non devono interferire tra di loro nell'accesso alle risorse condivise.

3 proprietà fairness (correttezza) Garantisce che tutti i processi prima o poi portino a compimento il loro lavoro. Cioè evita la Starvation (blocco individuale). Si verifica quando un processo rimane in attesa di un evento che non accadrà mai. 4 proprietà liveness (sopravvivenza) Garantisce che un processo non aspetti indeterminatamente che una risorsa venga rilasciata. Cioè evita il Deadlock (blocco multiplo). Si verifica a causa di condizioni cicliche. Esempio concettuale Si può verificare se 4 automezzi giungono contemporaneamente da ogni strada all'incrocio e tutti gli autisti si comportano in maniera diligente, cioè danno la precedenza a destra, come previsto dal regolamento della strada, gli automezzi rimangono bloccati senza possibilità di soluzione.

SINCRONIZZAZIONE TRA PROCESSI: SEMAFORI Semafori di Dijkstra I processi utilizzano due primitive P(S) e V(S) che permettono la soluzione di qualsiasi problema di interazione fra processi. P proberen testare V verhogen aumentare S semaforo numero intero non negativo Un processo che vuole accedere a una risorsa condivisa esegue la primitiva P(S) Quando il processo ha terminato di utilizzare la risorsa condivisa esegue la primitiva V(S)

Esempio Si consideri un array da 2 celle, ciascuna di esse destinata a contenere una variabile da condividere, trattasi quindi di una risorsa condivisibile con molteplicità pari a 2. Inizialmente tutte le celle sono vuote, quindi S=2. Se un processo P1 vuole utilizzare una cella, esegue la funzione P: controlla che S = 0 poiché S=2 accede alla risorsa pone S=1 Se un processo P2 vuole utilizzare una cella, esegue la funzione P: controlla che S = 0 poiché S=1 accede alla risorsa pone S=0 Se un processo P3 vuole utilizzare una cella, esegue la funzione P: controlla che S = 0 poiché S=0 non accede alla risorsa viene posto nella coda di attesa Se nel frattempo P1 ha terminato di utilizzare la risorsa, esegue la funzione V: controlla se è presente un processo in attesa poiché trova P3 nella coda pone P3 nello stato di pronto pone S=1 A sua volta P3 esegue la funzione P controlla che S = 0 poiché S=1 accede alla risorsa pone S=0 e così via

Le funzioni P e V devono essere indivisibili, la qualcosa si realizza introducendo le funzioni di Lock e unlock che servono per disabilitare e abilitare gli interrupt

APPLICAZIONE DEI SEMAFORI Mutua esclusione Esempio