Programmazione Concorrente: insieme delle tecniche, metodologie e strumenti per il supporto all'esecuzione di sistemi software composti da insiemi di

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Programmazione Concorrente: insieme delle tecniche, metodologie e strumenti per il supporto all'esecuzione di sistemi software composti da insiemi di"

Transcript

1 Programmazione Concorrente: insieme delle tecniche, metodologie e strumenti per il supporto all'esecuzione di sistemi software composti da insiemi di attivita` svolte simultaneamente. 1

2 Programmazione Concorrente: le origini La programmazione concorrente nasce negli anni 1960 nell ambito dei sistemi operativi. Introduzione dei canali o controllori di dispositivi : consentono l esecuzione concorrente di operazioni di I/O e delle istruzioni dei programmi eseguiti dall'unita` di elaborazione centrale. Comunicazione tra canale ed unità centrale tramite il segnale di interruzione. Come conseguenza dell interruzione, parti di progranmi possono essere eseguite in un ordine non predicibile (->interferenze su variabili comuni). 2

3 Successivamente furono introdotti i sistemi multiprocessore. Inizialmente costosi, ora ampiamente diffusi. I sistemi multiprocessore consentono a differenti processi appartenenti alla stessa applicazione di essere eseguiti in reale parallelismo e quindi alle applicazioni di essere eseguite più velocemente. Problemi: - Come suddividere un applicazione in processi? - Quanti processi utilizzare? - Come garantire la corretta sincronizzazione delle loro operazioni? Queste decisioni dipendono dal tipo di architettura hardware e dal tipo di applicazione. 3

4 Tipi di architettura: Single processor Primary memory Level 2 cache Level 1 cache CPU 4

5 Shared- Memory Multiprocessors Memory... Memory Interconnection network Cache CPU... Cache CPU 5

6 In sistemi a multiprocessore con un numero ridotto di processori (da 2 a 30 circa), la rete di interconnessione è realizzata da un memory bus o da crossbar switch. UMA (Uniform Memory Access). Tempo di accesso uniforme da ogni processore ad ogni locazione di memoria. Si chiamano anche symmetric multiprocessors (SMP). In sistemi con un numero elevato di processori (decine o centinaia) la memoria è organizzata gerarchicamente (per evitare la congestione del bus). La rete di interconnessione è un insieme di switches e memorie strutturato ad albero. Ogni processore ha memorie che sono più vicine ed altre più lontane. NUMA (Non Uniform Access Time). 6

7 Distributed-memory Multicomputers and Networks Interconnection network Memory Cache... Memory Cache CPU CPU 7

8 Distributed-memory: classificazione Multicomputer : I processori e la rete sono fisicamente vicini (nella stessa struttura): tightly coupled machine. La rete di interconnessione rappresenta un cammino di comunicazione tra i processori ad alta velocità e larghezza di banda ( es. macchine a ipercubo). Network systems: i nodi sono collegati da una rete locale (es.ethernet) o da una rete geografica (Internet): loosely coupled multiprocessors. I nodi di una distributed memory machine possono essere o singoli processori o shared memory multiprocessor. 8

9 Tipi di applicazioni a) multithreaded: Applicazioni strutturate come un insieme di processi (thread) per semplificare la loro programmazione. Sono caratterizzati dal fatto che esistono più processi che non processori per eseguire i processi. I processi sono schedulati ed eseguiti indipendentemente. Esempi di applicazioni: Sistemi a finestre su PC o Workstation Sistemi operativi time-sharing e multiprocessor Sistemi real time e di controllo dei processi 9

10 Tipi di Applicazioni b) Sistemi distribuiti/sistemi multitasking Le componenti dell applicazione (task) vengono eseguite su nodi (eventualmente virtuali) collegati tramite opportuni mezzi di interconnessione (es. canali) I processi comunicano scambiandosi messaggi. Esempi di applicazioni: File system di rete Data-base systems per applicazioni bancarie etc.. Web server su Internet Sistemi per la condivisione di risorse Sistemi fault tolerant Sistemi distribuiti pervasivi Tipica organizzazione : client-server. In alternativa altri modelli: peer to peer, publisher-subscriber, etc. I componenti in un sistema distribuito sono spesso multithreaded applications 10

11 Tipi di Applicazioni c) Applicazioni parallele: Obiettivo: risolvere un dato problema più velocemente (o un problema di dimensioni più elevate nello stesso tempo). Sono eseguite su processori paralleli facendo uso di algoritmi paralleli. Esempi di applicazioni: Applicazioni scientifiche che modellano e simulano fenomeni fisici complessi (es. previsioni del tempo,evoluzione del sistema solare etc..) Elaborazione di immagini. La creazione di effetti speciali nei film, etc. Problemi di ottimizzazione di grandi dimensioni 11

12 Processi non sequenziali e tipi di interazione 12

13 Algoritmo, programma, processo Algoritmo: Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma: Descrizione di un algoritmo mediante un opportuno formalismo (linguaggio di programmazione), che rende possibile l esecuzione dell algoritmo da parte di un particolare elaboratore. Processo: insieme ordinato degli eventi cui dà luogo un elaboratore quando opera sotto il controllo di un programma. Elaboratore: entità astratta realizzata in hardware e parzialmente in software, in grado di eseguire programmi (descritti in un dato linguaggio). Evento: Esecuzione di un operazione tra quelle appartenenti all insieme che l elaboratore sa riconoscere ed eseguire; ogni evento determina una transizione di stato dell'elaboratore Un programma descrive non un processo, ma un insieme di processi, ognuno dei quali è relativo all esecuzione del programma da parte dell elaboratore per un determinato insieme di dati in ingresso. 13

14 Processo sequenziale Sequenza di stati attraverso i quali passa l elaboratore durante l esecuzione di un programma (storia di un processo o traccia dell esecuzione del programma). Esempio: valutare il massimo comune divisore tra due numeri naturali x e y: a) Controllare se i due numeri x e y sono uguali, nel qual caso il loro M.C.D. coincide con il loro valore b) Se sono diversi, valutare la loro differenza c) Tornare ad a) prendendo in considerazione il più piccolo dei due e la loro differenza 14

15 Esempio: M.C.D. di x e y (numeri naturali) [Euclide]! int MCD(int x, int y) { a = x; b = y; while (a!= b) if (a > b) a = a b else b = b-a; return a; } R=MCD(18,24); Traccia dell esecuzione x y a b stato iniziale! stato finale! 15

16 Più processi possono essere associati allo stesso programma (istanze). Ciascuno rappresenta l esecuzione dello stesso codice con dati di ingresso diversi. Esempi: Il sistema operativo può generare più processi concorrenti che eseguono shell, ognuno per un diverso utente, che opera su dati diversi Il compilatore di un linguaggio può dare luogo a più processi, ciascuno relativo alla traduzione di un particolare programma. Il software di controllo può dare luogo a più processi che controllano dispositivi uguali o diversi 16

17 Grafo di precedenza Un processo può essere rappresentato tramite un grafo orientato detto grafo di precedenza del processo, costituito da nodi ed archi orientati: I nodi del grafo rappresentano i singoli eventi del processo gli archi orientati identificano le precedenze temporali tra tali eventi Ogni nodo rappresenta quindi un evento corrispondente all esecuzione di un operazione tra quelle appartenenti all insieme che l elaboratore sa riconoscere ed eseguire. Es. MCD: essendo il processo strettamente sequenziale, il grafo di precedenza è ad Ordinamento Totale (ogni nodo ha esattamente un predecessore ed un successore) a = 18 b = 24 b = 6 a = 12 a = 6 17

18 Processi non sequenziali L ordinamento totale di un grafo di precedenza deriva dalla natura sequenziale del processo (a sua volta imposta dalla natura sequenziale dell elaboratore). In taluni casi l ordinamento totale è implicito nel problema da risolvere. Esistono molti esempi di problemi che potrebbero più naturalmente essere risolti tramite processi non sequenziali. Processo non sequenziale: l'insieme degli eventi che lo descrive e` ordinato secondo una relazione d'ordine parziale. 18

19 Esempio: valutazione dell espressione" Grafo di precedenza ad ordinamento totale:" 3 * 4 = 12 (3 * 4) + (2 + 3) * (6-2)! Grafo di precedenza ad ordinamento parziale:" INIZIO = 5 3 * 4 = = = = 4 5 * 4 = = 32 5 * 4 = = 32 FINE 19

20 Esempio segue: La logica del problema non impone un ordinamento totale fra le operazioni da eseguire: ad esempio è indifferente che venga eseguito (2 + 3) prima di eseguire (6-2) o viceversa. Entrambe le operazioni precedenti devono invece essere eseguite prima del prodotto dei loro risultati. Certi eventi del processo sono tra loro scorrelati da qualunque relazione di precedenza temporale il risultato dell elaborazione è indipendente dall ordine con cui gli eventi avvengono. Molti settori applicativi possono essere rappresentati da processi non sequenziali: sistemi in tempo reale, sistemi operativi, sistemi di simulazione, etc 20

21 Esempio: Elaborazione di dati su un file sequenziale N rec elaborazione N rec file 1 file 2 buffer B; int i; for(i=1; i<=n; i++) { lettura(b); /* L */ } elaborazione(b); /* E */ scrittura(b); /* S */ Grafo di precedenza ad ordinamento totale: inizio L 1 E 1 S 1 L n E n S n fine 21

22 Esempio segue: La logica del problema impone due soli vincoli 1. Le operazioni di lettura (o elaborazione o scrittura) dovranno essere eseguite in sequenza sugli N record. 2. Le operazioni di lettura, elaborazione e scrittura di un record dovranno essere eseguite in quest ordine. Non esiste alcuna relazione logica di precedenza tra la lettura dell i-esimo e la scrittura dell (i-1)- esimo. Il grafo degli eventi più naturale risulta essere quello ad ordinamento parziale. 22

23 Esempio segue: grafo ad ordinamento parziale inizio L1 L2 L3 E1 E2 E3 S1 S2 Vincolo di sincronizzazione: ordinamento di eventi Un arco che collega due nodi rappresenta il vincolo di precedenza tra i corrispondenti eventi S3 Ln En Sn fine 23

24 L esecuzione di un processo non sequenziale richiede: elaboratore non sequenziale linguaggio di programmazione non sequenziale Elaboratore non sequenziale (in grado di eseguire più operazioni contemporaneamente): architettura parallela, sistemi multielaboratori (a) sistemi monoelaboratori (b) P1 P1 P1 P2 P2 P2 (a) t (b) t Linguaggi non sequenziali (o concorrenti): Caratteristica comune: consentire la descrizione di un insieme di attività concorrenti, tramite moduli che possono essere eseguiti in parallelo (ad esempio: processi sequenziali) 24

25 Linguaggi concorrenti In generale, un linguaggio concorrente permette di esprimere il parallelismo nell esecuzione di moduli differenti. Quale dimensione minima del modulo? Singola istruzione (es. CSP, Occam) Sequenze di istruzioni (es. Java, Ada..) 25

26 Scomposizione di un processo non sequenziale Se il linguaggio concorrente permette di esprimere il parallelismo a livello di sequenza di istruzioni: Scomposizione di un processo non sequenziale in un insieme di processi sequenziali, eseguiti contemporaneamente. Consente di dominare la complessità di un algoritmo non sequenziale Le attività rappresentate dai processi possono essere: completamente indipendenti interagenti 26

27 Processi indipendenti P1 P2 P3 e11 e21 e31 e12 e22 e32 e13 e23 e33 L evoluzione di un processo non influenza quella degli altri. 27

28 Nel caso di grafi connessi ad ordinamento parziale, la scomposizione del processo globale in processi sequenziali consiste nell individuare sul grafo un insieme P1.Pn di sequenze di nodi (insiemi di nodi totalmente ordinati). P1 L1 L2 L3 P2 E1 E2 E3 P3 S1 S2 S3 Presenza di vincoli di precedenza tra le operazioni dei processi (espresse dagli archi) o vincoli di sincronizzazione In questo caso i tre processi non sono fra loro indipendenti (processi interagenti) 28

29 Processi interagenti Le interazioni tra i processi di lettura, elaborazione e scrittura sono relative ad uno scambio di informazioni. I dati su cui opera il processo di elaborazione sono forniti dal processo di lettura. Vincolo di sincronizzazione: vincolo imposto da ogni arco del grafo di precedenza che collega nodi di processi diversi. I due processi, quando arrivano ad un punto di interazione corrispondente ad uno scambio di informazioni, devono sincronizzarsi, cioè ordinare i loro eventi come specificato dal grafo di precedenza. 29

30 Tipi di decomposizione La decomposizione di un grafo di precedenza ad ordinamento parziale in un insieme di sequenze di nodi (processi) può essere fatta in vari modi. ESEMPIO: Lettura, elaborazione e scrittura dell i-esimo record (i=1,2,,n) Li Ei Si I vincoli di sincronizzazione sono gli archi verticali del grafo. La scelta più idonea del tipo di decomposizione in processi sequenziali di un elaborazione non sequenziale è quella per la quale le interazioni tra processi sono poco frequenti così da agevolare l esecuzione separata della singole attività. 30

31 Interazione tra processi Le possibile forme di interazione tra processi concorrenti sono: Cooperazione Competizione Interferenza 31

32 Interazione tra processi COOPERAZIONE: comprende tutte le interazioni prevedibili e desiderate, insite cioè nella logica dei programmi (archi, nel grafo di precedenza ad ordinamento parziale). Prevede scambio di informazioni: segnali temporali (senza trasferimento di dati) dati (messaggi) comunicazione In entrambi i casi esiste un vincolo di precedenza (sincronizzazione) tra gli eventi di processi diversi 32

33 Esempio: Scambio di segnali temporali Processo P, esegue la ripetizione di una sequenza di tre operazioni (p1, p2, p3) ogni due secondi. Processo Q, esegue la ripetizione di una sequenza di quattro operazioni (q1, q2, q3, q4) ogni tre secondi. Processo O (orologio), ha il compito di registrare il passare del tempo e di attivare periodicamente i processi P e Q inviando segnali temporali. 33

34 processo P! processo O! processo Q! p 1 O1 q 1 p 2 O2 q 2 p 3 O3 q 3 p 1 O4 q 4 I nodi O1, O2, rappresentano le azioni del processo O p 2 e denotano i secondi scanditi dall orologio. O5 q 1 Gli archi che collegano i nodi di O con i p 3 nodi di P (Q) rappresentano i vincoli di precedenza che esprimono la temporizzazione. O6 q 2 34

35 Relazione di causa ed effetto tra l esecuzione dell operazione di invio da parte del processo mittente e l esecuzione dell operazione di ricezione da parte del processo ricevente. Vincolo di precedenza tra questi eventi (sincronizzazione dei due processi). Comunicazione: è previsto uno scambio di dati. Linguaggio di programmazione: deve fornire costrutti linguistici atti a specificare la sincronizzazione e la eventuale comunicazione tra i processi 35

36 COMPETIZIONE La macchina concorrente su cui i processi sono eseguiti mette a disposizione un numero limitato di risorse condivise tra i processi. La competizione ha come obiettivo il coordinamento dei processi nell accesso alle risorse condivise. Ad esempio, per risorse che non possono essere usate contemporaneamente da più processi, è necessario prevedere meccanismi di competizione. Interazione prevedibile e non desiderata, ma necessaria. 36

37 Esempio: Mutua esclusione Competizione Due processi P e Q devono usare in certi istanti una comune stampante Sp={ps1, ps2,, psn} e Sq={qs1, qs2,,qsn} sono le sequenze di istruzioni che P e Q devono rispettivamente eseguire per produrre un messaggio sulla stampante Le due sequenze devono essere eseguite in modo mutuamente esclusivo processo P P usa la stampante (Sp) px ps1 ps2 psn py processo Q qx qs1 qs2 qsn qy Q usa la stampante (Sq) px e py (qx e qy) denotano rispettivamente l ultima operazione eseguita da P (Q) prima della stampa e la prima eseguita dopo la stampa. 37

38 L interazione si estrinseca in un vincolo di precedenza tra eventi di processi diversi (psn deve precedere qs1), cioè in un vincolo di sincronizzazione. Non è (come nel caso della cooperazione) un vincolo di causa ed effetto, cioè l ordine con cui devono avvenire due eventi non è sempre lo stesso. Basta che sia verificata la proprietà di mutua esclusione. processo P P usa la stampante (Sp) px ps1 ps2 psn py processo Q qx qs1 qs2 qsn qy Q usa la stampante (Sq) 38

39 Sezione Critica La sequenza di istruzioni con le quali un processo accede a un oggetto condiviso con altri processi prende il nome di sezione critica. Ad un oggetto puo` essere associata una sola sezione critica (usata da tutti i processi) o più sezioni critiche (classe di sezioni critiche). La regola di mutua esclusione stabilisce che: Sezioni critiche appartenenti alla stessa classe devono escludersi mutuamente nel tempo. Nell'esempio precedente: Sp e Sq sono sezioni critiche; Sp e Sq appartengono alla classe di sezioni critiche, associata alla stampante; 39

40 Cooperazione: sincronizzazione diretta o esplicita Competizione: sincronizzazione indiretta o implicita Interferenza: interazione provocata da errori di programmazione: 1. Inserimento nel programma di interazioni tra processi non richieste dalla natura del problema 2. Erronea soluzione a problemi di interazione (cooperazione e competizione) necessarie per il corretto funzionamento del programma E` un'interazione non prevista e non desiderata dipende dalla velocità relativa dei processi gli errori possono manifestarsi nel corso dell esecuzione del programma a seconda delle diverse condizioni di velocità di esecuzione dei processi (errori dipendenti dal tempo) 40

41 Esempio di interferenza del primo tipo: Solo P deve operare su una risorsa R. Per un errore di programmazione viene inserita in Q un istruzione che modifica lo stato di R. La condizione di errore si presenta solo per particolari velocità relative dei processi. Esempio di interferenza del secondo tipo: P e Q competono per una stampante. Si garantisce la mutua esclusione solo per la stampa della prima linea. La condizione di errore si presenta solo per particolari velocità relative dei processi. Uno degli Obiettivi fondamentali della programmazione concorrente è l eliminazione delle interferenze. 41

42 ARCHITETTURE E LINGUAGGI PER LA PROGRAMMAZIONE CONCORRENTE 42

43 Linguaggi per la programmazione concorrente Disponendo di macchine concorrenti (in grado di eseguire più processi sequenziali contemporaneamente) e di un linguaggio di programmazione con il quale descrivere algoritmi non sequenziali, è possibile scrivere e far eseguire programmi concorrenti. L elaborazione complessiva può essere descritta come un insieme di processi sequenziali asincroni interagenti 43

44 Proprietà di un linguaggio per la programmazione concorrente Contenere appositi costrutti con i quali sia possibile dichiarare moduli di programma destinati ad essere eseguiti come processi sequenziali distinti. Non tutti i processi costituenti un elaborazione vengono eseguiti contemporaneamente. Alcuni processi vengono svolti se, dinamicamente, si verificano particolari condizioni. E quindi necessario specificare quando un processo deve essere attivato e terminato. Occorre che siano presenti strumenti linguistici per specificare le interazioni che dinamicamente potranno verificarsi tra i vari processi 44

45 Architettura di una macchina concorrente Programmi sorgente scritti nel linguaggio L Compilatore di L Programmi tradotti nel linguaggio oggetto per la macchina M Difficilmente M ha una struttura fisica con tante unità di elaborazione quanti sono i processi da svolgere contemporaneamente durante l esecuzione di un programma concorrente. M è una macchina astratta ottenuta con tecniche software (o hardware) basandosi su una macchina fisica M molto più semplice (con un numero di unità di elaborazione generalmente minore del numero dei processi). 45

46 macchina astratta M meccanismo di multiprogrammazione meccanismo di sincronizzazione macchina fisica M (hardware) nucleo del sistema Oltre ai meccanismi di multiprogrammazione e sincronizzazione è presente anche un meccanismo di protezione (controllo degli accessi alle risorse). Importante per rilevare eventuali interferenze tra i processi. Può essere realizzato in hardware o in software nel supporto a tempo di esecuzione. Capabilities e liste di controllo degli accessi. 46

47 Il nucleo corrisponde al supporto a tempo di esecuzione del compilatore di un linguaggio concorrente. Nel nucleo sono sempre presenti due funzionalità base: meccanismo di multiprogrammazione meccanismo di sincronizzazione e comunicazione Il primo meccanismo è quello preposto alla gestione delle unità di elaborazione della macchina M (unità reali) consentendo ai vari processi eseguiti sulla macchina astratta M di condividere l uso delle unità reali di elaborazione (scheduling) Il secondo meccanismo è quello che estende le potenzialità delle unità reali di elaborazione, rendendo disponibile alle unità virtuali strumenti mediante i quali sincronizzarsi e comunicare. 47

48 Architettura di M Due diverse organizzazioni logiche: Gli elaboratori di M sono collegati ad un unica memoria principale (sistemi multiprocessore) Gli elaboratori di M sono collegati da una sottorete di comunicazione, senza memoria comune (sistemi distribuiti). Le due precedenti organizzazioni logiche di M definiscono due modelli di interazione tra i processi: 1. Modello a memoria comune, in cui l interazione tra i processi avviene su oggetti contenuti nella memoria comune (modello ad ambiente globale). 2. Modello a scambio di messaggi, in cui la comunicazione e la sincronizzazione tra processi si basa sullo scambio di messaggi sulla rete che collega i vari elaboratori (modello ad ambiente locale ). INDIPENDENZA TRA ARCHITETTURA DI M e M 48

49 Costrutti linguistici per la specifica della concorrenza 49

50 Fork/Join L esecuzione di una fork coincide con la creazione e l attivazione di un processo che inizia la propria esecuzione in parallelo con quella del processo chiamante /* processo p: */ ======= A:...; p = fork fun; B:...; ======= ======= fork A /* codice nuovo processo:*/ void fun() { C:...; ======= } B C 50

51 La join consente di determinare quando un processo, creato tramite la fork, ha terminato il suo compito, sincronizzandosi con tale evento. A 1 A m join B 51

52 /* processo p: */... A:...; p = fork fun; B:...; join p; D:...;... fork A B C fun() /* codice nuovo processo:*/ void fun() { C:...;... } join D Possibilità di denotare in modo esplicito il processo sulla cui terminazione ci si vuole sincronizzare. 52

53 Cobegin-Coend La concorrenza viene espressa nel modo seguente: S 0 ; cobegin S 1 ; S 2 ; S 3 ; coend S 4 ; S 1 S 0 S 2 S 4 S 3 Le istruzioni S1, S2,,Sn sono eseguite in parallelo. Ogni S i può contenere altre istruzioni cobegin..coend al suo interno. 53

54 Processo "Costrutto linguistico per individuare, in modo sintatticamente preciso, quali moduli di un programma possono essere eseguiti come processi autonomi: "" " process <identificatore>(<parametri formali>) { <dichiarazione di variabili locali>; <corpo del processo> } 54

55 Il Nucleo di un sistema monoprocessore: realizzazione delle primitive di specifica della concorrenza fork usata da un processo per creare un altro processo. join usata per consentire ad un processo di attendere la terminazione di un processo figlio (equivalente alla wait di Unix). quit usata per terminare un processo (equivalente alla exit di Unix). 55

56 Passaggio del controllo fra ambiente dei processi e ambiente di nucleo interruzione esterna salvataggio_stato; interrupt_handler; ripristino_stato; IRET chiamata di sistema SVC primitiva di sistema 56

57 !Rappresentazione dei processi: descrittori di processo typedef des_processo * p_des; typedef struct { PID nome; modalità_di_servizio servizio; tipo_contesto contesto; tipo_stato stato; //running, ready, waiting, ecc. PID padre; int N_figli; des_figlio prole[max_figli]; p_des successivo; }des_processo; 57

58 Ogni processo viene identificato univocamente con un numero intero:!!!typedef int PID; A questo scopo, il kernel definizsce la funzione assegna_nome che, chiamata all atto della creazione di un processo, restituisce il suo PID:!!!PID assegna_nome();! Modalità di servizio (es. scheduling time sharing con priorità): typedef struct { int priorità; int delta_t; // time slice } modalità_di_servizio; 58

59 Descrittore del figlio (des_figlio): typedef struct{ PID figlio; boolean terminato; //true = terminato } des_figlio; Insieme di tutti i descrittori (descrittori):! des_processo descrittori[num_max_proc]; Funzione per selezionare il descrittore del processo di PID=x (descrittore):!!!p_des descrittore(pid x); 59

60 CODE DI DESCRITTORI I descrittori dei processi sono organizzati in Code: Rappresentazione della coda di descrittori (des_coda): typedef struct { p_des primo, ultimo; }des_coda; Inserimento e prelievo in/da coda:!void Inserimento (p_des proc,des_coda coda); p_des Prelievo (des_coda coda); Code dei processi pronti (es: scheduling multilevel, con priorità): des_coda coda_processi_pronti[num_min_priorità]; Coda dei descrittori liberi:!!des_coda descrittori_liberi; 60

61 Meccanismi realizzati dal kernel: cambio di contesto p_des processo_in_esecuzione; void salvataggio_stato () { p_des esec = processo_in_esecuzione; esec -> contesto = <valori dei registri della CPU>; } void ripristino_stato( ) { p_des esec = processo_in_esecuzione; <registri della CPU> = esec -> contesto; } 61

62 Scheduling dei processi void assegnazione_cpu { int k=0; p_des p; while ((coda_processi_pronti[k].primo)==null) k++; p = prelievo(coda_processi_pronti [k]); p -> stato = < running>; processo_in_esecuzione = p; <registro-temporizzatore>= p -> servizio.delta_t; } Invocata ogni volta che il processo in esecuzione esce dallo stato di running. 62

63 Attivazione di un processo L attivazione di un processo P, dopo una fase di sospensione, porta P nello stato di pronto (code dei processi pronti). Se lo scheduling prevede preemption, il processo attivato P può scalzare il processo in esecuzione nell uso della CPU. void attiva (p_des proc) { p_des esec = processo_in_esecuzione; int pri_esec = esec -> servizio.priorità; int pri_proc = proc -> servizio.priorità; if (pri_esec > pri_pro) { /* pre-emption*/ proc -> stato = < running>; inserimento(esec,coda_processi_pronti[pri_esec]); processo_in_esecuzione = proc; } else { proc -> stato = < ready>; inserimento(proc,coda_processi_pronti[pri_proc]); } } 63

64 fork typedef enum {OK,eccezione} risultato; risultato fork (des_processo inizializzazione) { p_des p; int NF; p_des esec = processo_in_esecuzione; if (descrittori_liberi.primo == NULL ) return eccezione; /* non ci sono descritt. liberi*/ else { p = prelievo(descrittori_liberi); *p = inizializzazione; p -> nome = assegna_nome(); p -> padre = esec -> nome; NF = esec->n_figli; esec -> prole[nf].figlio = p -> nome; esec -> prole[nf].terminato = false; esec -> N_figli++; attiva(p); return ok; } } 64

65 join void join (PID nome_figlio) { p_des esec = processo_in_esecuzione; int k =indice_figlio(esec,nome_figlio); if (esec -> prole[k].terminato == false) { /* figlio non terminato*/ esec -> stato = < sospeso in attesa che il figlio termini >; assegnazione_ CPU(); } } 65

66 quit void quit(){ p_des esec = processo_in_esecuzione; PID nome_padre = esec -> padre; p_des p_padre = descrittore(nome_padre); int k=indice_figlio(p_padre, esec -> nome); p_padre -> prole[k].terminato=true; inserimento(esec, descrittori_liberi); if (p_padre -> stato==< in attesa che questo figlio termini >) { int pri = p_padre -> servizio.priorità; inserimento(p_padre,coda_processi_pronti[pri]); p_padre -> stato = < ready>; } assegnazione_cpu( ); } 66

67 Time sharing Per consentire la realizzazione di modalità di servizio a divisione di tempo occorre revocare ad intervalli fissati di tempo la CPU al processo in esecuzione e di assegnarla ad un nuovo processo pronto: void interruzione_temporizzatore () { p_des esec=processo_in_esecuzione; int k; k=esec->servizio.priorità; esec-> stato = < ready>; Inserimento(esec,coda_processi_pronti[k]); assegnazione_cpu(); } 67

68 Proprietà dei programmi 68

69 Programmi e proprietà Una delle attività più importanti per chi sviluppa programmi è la verifica di correttezza dei programmi realizzati. Cosa succede quando il programma viene eseguito? Traccia dell esecuzione (Storia): sequenza degli stati attraversati dal sistema di elaborazione durante l esecuzione del programma. Stato: insieme dei valori delle variabili definite nel programma + variabili implicite (es. valore del Program counter). nei diversi processi concorrenti 69

70 Programmi sequenziali: ogni esecuzione di un programma P su un particolare insieme di dati D genera sempre la stessa traccia. La verifica può agevolmente essere svolta tramite debugging. Programmi concorrenti: l esito dell esecuzione dipende da quale sia l effettiva sequenza cronologica di esecuzione delle istruzioni contenute -> ogni esecuzione di un programma P su un particolare insieme di dati D dà origine ad una traccia diversa. La verifica di proprietà è molto più difficile: - Il semplice debug su una (o su un numero limitato di esecuzioni) non dà alcuna garanzia sul soddisfacimento di una data proprietà. 70

71 Proprietà dei programmi Una proprietà di un programma P è un attributo che è sempre vero, in ogni possibile traccia generata dall esecuzione di P. In generale, le proprietà dei programmi si classificano in due categorie: - Safety properties - Liveness properties 71

72 Proprietà SAFETY: È una proprietà che garantisce che durante l esecuzione di P, non si entrerà mai in uno stato errato (cioè, uno stato in cui le variabili assumono valori non desiderati). Proprietà LIVENESS: È una proprietà che garantisce che durante l esecuzione di P, prima o poi si entrerà in uno stato corretto (cioè, uno stato in cui le variabili assumono valori desiderati). 72

73 Safety & Liveness Programmi sequenziali: Le proprietà fondamentali che ogni programma sequenziale deve avere sono: 1. Correttezza del risultato finale: per ogni esecuzione il risultato ottenuto è giusto -> SAFETY 2. Terminazione: prima o poi l esecuzione termina -> LIVENESS 73

74 Programmi concorrenti: Safety & Liveness Le proprietà 1 e 2 sono fondamentali anche per i programmi concorrenti. In aggiunta, ogni programma concorrente deve presentare altre proprietà, come : 3. Mutua esclusione nell accesso a risorse condivise: per ogni esecuzione non accadrà mai che più di un processo acceda contemporaneamente alla stessa risorsa -> SAFETY 4. Assenza di deadlock: per ogni esecuzione non si verificheranno mail situazioni di blocco critico -> SAFETY 5. Assenza di starvation: prima o poi ogni processo potrà accedere alle risorse richieste -> LIVENESS 74

75 Verifica di proprietà nei programmi concorrenti Il semplice testing su vari set di dati, per diverse ripetizioni dell esecuzione non dimostra rigorosamente il soddisfacimento di proprietà. Possibile approccio: Specifica formale dei programmi concorrenti -> dimostrazione di proprietà. 75

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

Programmazione Concorrente: insieme delle tecniche, metodologie e strumenti per il supporto all'esecuzione di sistemi software composti da insiemi di

Programmazione Concorrente: insieme delle tecniche, metodologie e strumenti per il supporto all'esecuzione di sistemi software composti da insiemi di Programmazione Concorrente: insieme delle tecniche, metodologie e strumenti per il supporto all'esecuzione di sistemi software composti da insiemi di attivita` svolte simultaneamente. 1 Programmazione

Dettagli

Introduzione alla Programmazione Concorrente

Introduzione alla Programmazione Concorrente Introduzione alla Programmazione Concorrente 1 Algoritmo, programma, processo Algoritmo: Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma: Descrizione di un

Dettagli

Principles of Concurrent Programming

Principles of Concurrent Programming Principles of Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi

Dettagli

Principles of Concurrent Programming

Principles of Concurrent Programming Principles of Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi

Dettagli

Processi. Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi. Il descrittore di processo (PCB)

Processi. Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi. Il descrittore di processo (PCB) Processi Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi 1 Il descrittore di processo (PCB) Il S.O. gestisce i processi associando a ciascuno di essi

Dettagli

I Processi. Il Concetto di Processo

I Processi. Il Concetto di Processo I Processi Il Concetto di Processo Il processo è un programma in esecuzione È l unità di esecuzione all interno del SO Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono eseguite

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

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

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 5 Martedì 25-10-2016 Definizione di processo Esiste una distinzione concettuale

Dettagli

Chiamata di procedura remota

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

Dettagli

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

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore. I SISTEMI OPERATIVI Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore. Le funzioni di un S.O. non sono definibili in modo esaustivo e puntuale così come non

Dettagli

Sistemi Operativi. Lezione 3 Processi e Thread

Sistemi Operativi. Lezione 3 Processi e Thread Lezione 3 Processi e Thread Introduzione Sino ai sistemi batch la CPU di un sistema svolgeva un attività, la portava a termine e solo allora avviava un altra attività Con l avvento della multiprogrammazione

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

Il Sistema Operativo Concorrenza e Grafi di precedenza

Il Sistema Operativo Concorrenza e Grafi di precedenza ISTITUTO TECNICO SECONDO BIENNIO GIORGIO PORCU www.thegiorgio.it Sommario Elaborazione concorrente Elaborazione sequenziale Elaborazione concorrente Elaborazione parallela Grafi di Precedenza Grafi di

Dettagli

Il Concetto di Processo

Il Concetto di Processo I Processi Il Concetto di Processo Il processo è un programma in esecuzione È l unità di esecuzione all interno del SO Solitamente, l esecuzione l di un processo è sequenziale (le istruzioni vengono eseguite

Dettagli

Architetture della memoria

Architetture della memoria Architetture della memoria Un elemento determinante per disegnare una applicazione parallela e' l architettura della memoria della macchina che abbiamo a disposizione. Rispetto all architettura della memoria

Dettagli

Introduzione al Multithreading

Introduzione al Multithreading Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui

Dettagli

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi Informatica Generale 07 - Sistemi Operativi:Gestione dei processi Cosa vedremo: Esecuzione di un programma Concetto di processo Interruzioni Sistemi monotasking e multitasking Time-sharing Tabella dei

Dettagli

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

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

Dettagli

Sommario. Processi e Programmi. Che cosa e un Processo? Lezione 5 Processi e Threads

Sommario. Processi e Programmi. Che cosa e un Processo? Lezione 5 Processi e Threads Sommario Lezione 5 Processi e Threads Processi e Programmi Implementazione dei Processi Casi di Studio relativi a Processi Thread Casi di Studio relativi a Thread 5.2 Processi e Programmi Che cosa e un

Dettagli

ACSO Programmazione di Sistema e Concorrente

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

Dettagli

Sistemi Operativi: Concetti Introduttivi

Sistemi Operativi: Concetti Introduttivi Sistemi Operativi: Concetti Introduttivi 1.1 Principali funzioni di un Sistema Operativo 1.2 Cenni Storici 1.3 Classificazione dei Sistemi Operativi 1.4 Struttura dei Sistemi Operativi 1.5 Processi e gestione

Dettagli

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive) SEMAFORI 1 SEMAFORI Variabile intera non negativa con valore iniziale >= 0 Al semaforo è associata una lista di attesa Qs nella quale sono posti i descrittori dei processi che attono l autorizzazione a

Dettagli

Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione A

Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione A Nome: Cognome: Matricola: corso: fila: posto: Esercizio 1 (5 punti) Si consideri un processore che dispone dei registri speciali PC (program counter) e PS (program status), dello stack pointer SP e dei

Dettagli

il tipo di parallelismo dipende dal grado di cooperazione

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

Dettagli

CLASSIFICAZIONE DEI SISTEMI OPERATIVI (in ordine cronologico)

CLASSIFICAZIONE DEI SISTEMI OPERATIVI (in ordine cronologico) CLASSIFICAZIONE DEI SISTEMI OPERATIVI (in ordine cronologico) - Dedicati Quelli dei primi sistemi operativi. La macchina viene utilizzata da un utente per volta che può eseguire un solo programma per volta.

Dettagli

Interazione tra Processi. Sistemi Operativi T AA

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

Dettagli

Capitolo 2: Strutture dei sistemi di calcolo

Capitolo 2: Strutture dei sistemi di calcolo Capitolo 2: Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di protezione Struttura delle reti di calcolatori

Dettagli

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

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

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

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

Dettagli

Sistemi in tempo reale: applicazioni alla robotica. Sistemi in tempo reale: applicazioni alla robotica p.1/15

Sistemi in tempo reale: applicazioni alla robotica. Sistemi in tempo reale: applicazioni alla robotica p.1/15 Sistemi in tempo reale: applicazioni alla robotica Sistemi in tempo reale: applicazioni alla robotica p.1/15 Sistemi operativi Hardware Firmware Kernel Driver Applicazioni Interfacce Sistemi in tempo reale:

Dettagli

Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi

Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi 3.3 Silberschatz, Galvin and Gagne 2005 1 Un SO esegue diversi tipi di programmi Sistema

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il sistema operativo Con il termine sistema operativo si intende l insieme di programmi e librerie che opera direttamente sulla macchina fisica mascherandone le caratteristiche specifiche

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. 2014-15 Pietro Frasca Lezione 20 Martedì 16-12-2014 1 System call per la gestione dei processi Creazione

Dettagli

Processi e thread. Concetto di processo

Processi e thread. Concetto di processo Processi e thread Concetto di processo Il processo è un programma in esecuzione È l unità di esecuzione all interno del SO Solitamente, l esecuzione l di un processo è sequenziale (le istruzioni vengono

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

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

Sistemi Operativi (modulo di Informatica II) I processi

Sistemi Operativi (modulo di Informatica II) I processi Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Il concetto di processo Schedulazione dei processi Operazioni sui processi

Dettagli

Sistemi a processori multipli

Sistemi a processori multipli Sistemi a processori multipli Sommario Classificazione e concetti di base Sistemi multi-processore Sistemi multi-computer (cluster) Sistemi distribuiti Obiettivo comune Risolvere problemi di dimensioni

Dettagli

Le risorse. Alcune definizioni

Le risorse. Alcune definizioni Le risorse Dicesi risorsa un qualunque oggetto, fisico o logico, di cui un processo necessita per portare a termine la sua evoluzione. Poiché un processo evolve eseguendo istruzioni (procedure), una risorsa

Dettagli

I THREAD O PROCESSI LEGGERI

I THREAD O PROCESSI LEGGERI I THREAD O PROCESSI Processi (pesanti): LEGGERI entità autonome con poche risorse condivise (si prestano poco alla scrittura di applicazioni fortemente cooperanti) Ogni processo può essere visto come Immagine

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 8 Martedì 8-11-2016 1 Algoritmi di scheduling basati sulle priorità Assegnano

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

il Nucleo e la gestione dei processi

il Nucleo e la gestione dei processi il Nucleo e la gestione dei processi 1. Programmi, processi e risorse Differenza fra programmi e processi Il Programma rappresenta la descrizione del procedimento logico (algoritmo) che deve essere eseguito

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

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

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

Dettagli

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

Sistema Operativo. (hardware e software) della della macchina

Sistema Operativo. (hardware e software) della della macchina Sistema Operativo Senza Sistema Operativo (SO) un computer è solo un macchinario inutile... Il SO rende possibile la gestione, elaborazione e immagazinamento dell informazione. Il Il SO SO è il il software

Dettagli

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

Monitor. Le procedure entry sono le sole operazioni che possono essere utilizzate dai processi per accedere alle variabili comuni. 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.

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

Sistemi Operativi. Lezione 7-bis Esercizi

Sistemi Operativi. Lezione 7-bis Esercizi Sistemi Operativi Lezione 7-bis Esercizi Esercizio Problema dei lettori e scrittori Un insieme di processi condivide un file dal quale alcuni possono solo leggere i dati, altri solo scriverli Più lettori

Dettagli

Interazione tra Processi. Sistemi Operativi T AA

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

Dettagli

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

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

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

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

Dettagli

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

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

SISTEMI INFORMATIVI E DATABASE

SISTEMI INFORMATIVI E DATABASE SISTEMI INFORMATIVI E DATABASE SISTEMA INFORMATIVO AZIENDALE (S.I.) In una realtà aziendale si distingue: DATO elemento di conoscenza privo di qualsiasi elaborazione; insieme di simboli e caratteri. (274,

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

1. Le componenti principali di un sistema operativo sono: interfaccia con l utente (interprete dei comandi e/o interfaccia

1. Le componenti principali di un sistema operativo sono: interfaccia con l utente (interprete dei comandi e/o interfaccia 1. Quali sono le componenti principali dei sistemi operativi? 2. Si descriva il meccanismo attraverso cui i programmi in esecuzione richiamano i servizi dei sistemi operativi. 1. Le componenti principali

Dettagli

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione 1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione su un sistema con una sola CPU? 2. Qual è la differenza tra un interruzione e una trap? Si faccia qualche esempio. 1.

Dettagli

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati TEORIA DEI SISTEMI OPERATIVI Sistemi monoprogrammatie multiprogrammati 1 STRUTTURA DEL SISTEMA OPERATIVO UTENTE La struttura di un sistema operativo è di tipo gerarchico: i programmi che lo compongono

Dettagli

2. Nucleo del sistema operativo (la gestione dei processi)

2. Nucleo del sistema operativo (la gestione dei processi) Struttura interna del sistema operativo Linux 2. Nucleo del sistema operativo (la gestione dei processi) Architettura (struttura) del sistema operativo shell Programmi utente Modo utente Interfaccia delle

Dettagli

Capitolo 1: Introduzione

Capitolo 1: Introduzione Capitolo 1: Introduzione Cos è un sistema operativo Sistemi mainframe Sistemi da scrivania Sistemi con più unità d elaborazione Sistemi distribuiti Batterie di sistemi (cluster) Sistemi d elaborazione

Dettagli

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

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

Dettagli

TECN.PROG.SIST.INF. - Politiche di schedulazione del processore. Roberta Gerboni

TECN.PROG.SIST.INF. - Politiche di schedulazione del processore. Roberta Gerboni Roberta Gerboni 1 Gli stati di un processo Gli stati possibili nei quali si può trovare un processo sono: Hold (parcheggio): il programma (chiamato job) è stato proposto al sistema e attende di essere

Dettagli

AUTOMA A STATI FINITI

AUTOMA A STATI FINITI Gli Automi Un Automa è un dispositivo, o un suo modello in forma di macchina sequenziale, creato per eseguire un particolare compito, che può trovarsi in diverse configurazioni più o meno complesse caratterizzate

Dettagli

Componenti e connessioni. Capitolo 3

Componenti e connessioni. Capitolo 3 Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura

Dettagli

Sincronizzazione Le sezioni scritiche

Sincronizzazione Le sezioni scritiche Sincronizzazione Le sezioni scritiche Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Ambiente di sviluppo Concorrenza e sincronizzazione Programmazione concorrente (tramite

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli

Componenti principali

Componenti principali Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria

Dettagli

Architettura hardware

Architettura hardware Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione Che cos e l Informatica Scienza dell elaborazione dell informazione Informatica generale non si riduce all utilizzo di strumenti (e.g. linguaggi di programmazione e basi di dati); si occupa del trattamento

Dettagli

Lezione 2 Chiamate di procedura e risposta alle interruzioni

Lezione 2 Chiamate di procedura e risposta alle interruzioni Modulo 1 U.D. 1 Lez. 2 Lezione 2 Chiamate di procedura e risposta alle interruzioni Sistemi Operativi I Modulo 1 - Architettura del Calcolatore Unità didattica 1 - Architettura e funzionamento dei sistemi

Dettagli

Sistema operativo & file system 1

Sistema operativo & file system 1 Il software (sw) Software di sistema e file system Lezione 1b L esecuzione di programmi è lo scopo di un elaboratore I programmi sono algoritmi codificati in un particolare linguaggio di programmazione

Dettagli

Fondamenti di Informatica T. Il Software

Fondamenti di Informatica T. Il Software Il Software TECNOLOGIA DIGITALE CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale. Dati ed operazioni vengono codificati a partire da due valori distinti di grandezze

Dettagli

Architettura di Von Neumann

Architettura di Von Neumann Architettura di Von Neumann L architettura è ancora quella classica sviluppata da Von Neumann nel 1947. L architettura di Von Neumann riflette le funzionalità richieste da un elaboratore: memorizzare i

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

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

System call per la gestione di processi

System call per la gestione di processi System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:

Dettagli

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 JavaScript Core Language Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 Condizioni L utilizzo di operatori relazionali e logici consente di formulare delle condizioni

Dettagli

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009 Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009 Esercizio 1 (punti 3) Sia data la funzione ricorsiva seguente: void elabora (unsigned

Dettagli

Analisi e specifica dei requisiti

Analisi e specifica dei requisiti Analisi e specifica dei requisiti Processo che stabilisce i servizi che il committente richiede al sistema da sviluppare ed i vincoli con cui lo si utilizzera` e sviluppera` Requisiti funzionali o non

Dettagli

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di

Dettagli

INFORMATICA. L informatica comprende:

INFORMATICA. L informatica comprende: Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione dell informazione

Dettagli

Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1

Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1 GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di

Dettagli

Cenni di schedulazione in tempo reale. E.Mumolo

Cenni di schedulazione in tempo reale. E.Mumolo Cenni di schedulazione in tempo reale E.Mumolo mumolo@units.it Task in tempo reale Un task t i è una sequenza di processi in tempo reale τ ik ciascuno caratterizzato da un tempo d arrivo r ik un tempo

Dettagli

Lab 1: Java Multithreading

Lab 1: Java Multithreading Dept. of Computer Science Lab 1: Java Multithreading Matteo Camilli matteo.camilli@unimi.it Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Outline Programmazione multithreading

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

SCD. Correttezza temporale. Correttezza temporale. Premesse 2. Politiche di ordinamento 1. Premesse 1

SCD. Correttezza temporale. Correttezza temporale. Premesse 2. Politiche di ordinamento 1. Premesse 1 Premesse 2 Anno accademico 2014/15 Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD I sistemi a tempo reale devono assicurare correttezza temporale oltre che funzionale

Dettagli

I Sistemi Operativi. Prof.ssa Antonella Serra

I Sistemi Operativi. Prof.ssa Antonella Serra I Sistemi Operativi Prof.ssa Antonella Serra Il Software di Base Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer. Il sistema operativo è

Dettagli

MODULO 1: INTRODUZIONE

MODULO 1: INTRODUZIONE I SISTEMI OPERATIVI MODULO 1: INTRODUZIONE prof. ing. Damiano Magni ITI E. Breda Sesto S. G. - gennaio 2005 1.1 Introduzione Che cos è un Sistema Operativo? Sistemi batch semplici Sistemi batch multiprogrammati

Dettagli

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016 Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione

Dettagli

Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune

Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune a) Uso di una risorsa condivisa Siano P 1, P 2, P 3,, P k i processi che condividono l uso di una risorsa comune

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un dispositivo di I/O Gestione e organizzazione dei dischi COMPITI

Dettagli