(1) Sistemi Operativi 2001-2002 Prof. P. Cattaneo ufficio: L 1 18 Ricevimento: Martedì14.00 – 16.00.

Slides:



Advertisements
Presentazioni simili
Meccanismi di IPC Problemi classici di IPC
Advertisements

Uso avanzato di C.
Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Alcune Classi Standard Object, Vettori. Esercizio dellultima volta Superclasse Persona Sottoclasse Libro.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Sequential Statements. – Il VHDL simula lo svolgersi in parallelo di varie operazioni – Loggetto fondamentale e il PROCESS – Un PROCESS contiene una serie.
Università La Sapienza Web programming e programmazione multimediale 1 Web Programming e comunicazione multimediale Lezione 10: PHP.
Programmazione Concorrente
Sincronizzazione fra processi
Sincronizzazione di processi
INFORMATICA Strutture iterative
STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°13 Heap massimo.
Tail recursion: esempio
Esempio: Tombola! Parte seconda.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
Richiami di Java Multithreading. Threads (subclassing) public class A { public void a_method { C t = new C(); //C t = new C(String name); t.start(); …
prompt> java SumAverage
Programmazione 1 9CFU – TANTE ore
Corso di Laurea in Biotecnologie Informatica (Programmazione)
// PROTOTIPI void costruisciLista(Pnodo &, string &); void stampaLista(Pnodo ); void creaNodo (int, Pnodo&); Pnodo inserisciNodoTesta (int,Pnodo &); Pnodo.
1 Esercitazione sui segnali Problema: creare un programma analizzatore di file testuali che prenda come argomenti il nome di un file e una sequenza di.
Algoritmi di ordinamento
Sincronizzazione dei Processi
Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Esempi di riuso del codice nei linguaggi di alto livello Lab Programmazione - turno /2006.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Istruzioni Iterative Nicola Fanizzi
Array Ricerca Ordinamento Fusione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
Esercizi C sui tipi definiti dall’utente
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Le liste dinamiche La ricorsione
Le funzioni.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Compito desame del Svolgimento della Sezione 5: CONTROLLORI Esempio preparato da Michele MICCIO.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Ricerca di una chiave: Search(x, k) if x == nil or k == x.key return x
22 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ore 10:00.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
void binario(int n); …………………
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
Multiset. Progettare (specifica con identificazione delle eventuali astrazioni necessarie, incluse eccezioni, e implementazione) del tipo di dato Multiset,
Grafi Rappresentazione mediante liste di adiacenza:
Tail recursion: esempio
Sincronizzazione dei processi
Pippo.
Scrivere un algoritmo non deterministico di complessita` polinomiale che risolva il problema del commesso viaggiatore. Vengono proposte due soluzioni,
Collection & Generics in Java
ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.
1 Un esempio con iteratore: le liste ordinate di interi.
Ordinare F. Bombi Liste ordinate Una lista di n oggetti confrontabili (a 0, a 1, a 2, … a n-1 ) si dice ordinata quando a i.
Programmazione Concorrente e Distribuita
Processi e Thread Processi Thread
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
6/11/01Ordinamento 1 Un esempio di algoritmi: ordinamento.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Divide et Impera Quicksort Mergesort Charles Antony Richard Hoare
Bubble Sort.
Processi e Thread Meccanismi di IPC (1).
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Dalla programmazione tradizionale al paradigma OO
Transcript della presentazione:

(1) Sistemi Operativi Prof. P. Cattaneo ufficio: L Ricevimento: Martedì14.00 – Mercoledì18.00 –19.00

(2) Sincronizzazione tra processi Proprietà Mutua Esclusione: In ogni istante al più un processo avrà accesso ad una regione critica => Se un processo Pi è nella sua regione critica nessun altro processo potrà accedervi Progresso: Se nessun processo è nella regione critica ed uno o più processi richiedono laccesso, solo processi che non sono in regione critica parteciperanno (eseguiranno il codice) alla decisione su quale sarà il prossimo processo ad accedervi Attesa limitata: Ogni processo dopo aver richiesto laccesso ad una regione critica attenderà un tempo finito durante il quale altri processi potranno accedere una o più volte alla regione critica ma necessariamente in numero finito

(3) Algoritmo n.1 enum procs { pi, pj} Turno; repeat while (Turno != pi) do_no_op; sezione critica Turno = pj; until false;

(4) Algoritmo n.2 bool flag[2]; repeat flag[i] = true; while (flag[j] == true) do_no_op; sezione critica flag[i] = false; until false;

(5) Algoritmo n.3 bool flag[2]; enum procs { pi, pj} Turno; repeat flag[i] = true; Turno = pj; while (flag[j] and Turno == pj) do_no_op; sezione critica flag[i] = false; until false;

(6) Algoritmo per n processi repeat choosing[i] = true; number[i] = max(number) + 1; choosing[i] = false; for(j = 0; j < n; j++) { while (choosing[j]) do no-op; while((number[j] != 0) and (number[j]+j < number[i]+i)) } sezione critica number[i] = 0; until false;

(7) Supporto HW: TestAndSet int TestAndSet( int * target) { int tmp = *target; *target = true; return tmp; }

(8) Mutua esclusione con TestAndSet repeat while (TestAndSet( &lock)) do_no_op; sezione critica lock = false; until false;

(9) Supporto HW: Swap void Swap( int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; }

(10) Mutua esclusione con Swap repeat Key = true; do { Swap( &lock, &key); } while (Key != false); sezione critica lock = false; until false;

(11) Implementazione di wait(S) struct semaphore { int valore; List L; } void wait(struct semaphore S) { S.valore--; // N.B. sincronizzazione !!! if S.valore < 0) { L.append(MyPID); // metti il processo nella coda // dei processi waiting }

(12) Implementazione di signal(S) struct semaphore { int valore; List L; } void signal(struct semaphore S) { S.valore++; // N.B. sincronizzazione !!! if S.valore < 0) { PID = L.head(); // wakeup il processo PID // dalla coda dei processi waiting }

(13) Sincronizzazione tra processi Uso dei semafori repeat wait(mutex); // sezione critica signal(mutex); // sezione non critica until false;

(14) Implementazione di region x when B do S wait(mutex); while (!B){ first_cnt++; if (second_cnt > 0) signal(second_delay); else signal(mutex); wait(first_delay); first_cnt--; second_cnt++; if (first_cnt > 0) signal(first_delay); else signal(second_delay); wait(second_delay); second_cnt--; } Regioni critiche (1)

(15) Regioni critiche (2) Implementazione di region x when B do S … S; // esecuzione regione critica if (first_cnt > 0) signal(first_delay); else { if (second_cnt > 0) signal(second_delay); else signal(mutex); }