I THREAD. thread 2. thread 1
|
|
|
- Concetta Palla
- 9 anni fa
- Просмотров:
Транскрипт
1 I THREAD Un thread è un singolo flusso di istruzioni, all interno di un processo, che lo scheduler può fare eseguire separatamente e concorrentemente con il resto del processo. Per fare questo uno thread deve possedere strutture dati per realizzare un proprio flusso di controllo. Uno thread può essere pensato come una procedura che lavora in parallelo con altre procedure. Vediamo le interazioni tra processi e thread. processo Il processo ha il proprio contesto, ovvero il proprio process ID, Program Counter, Stato dei Registri, Stack, Codice, Dati, File descriptor, Entità IPC, Azioni dei segnali. Il Codice è pensato per eseguire procedure sequenzialmente. L astrazione dei thread vuole consentire di eseguire procedure concorrentemente (in parallelo), ovviamente scrivendo tali procedure in modo opportuno. Ciascuna procedura da eseguire in parallelo sarà un thread.
2 I THREAD Un thread è un singolo flusso di istruzioni, all interno di un processo, che lo scheduler può fare eseguire separatamente e concorrentemente con il resto del processo. Per fare questo uno thread deve possedere un proprio Un Processo può avere più thread, tutti questi condividono le risorse del processo (dati e CPU) ed eseguono nello stesso spazio utente. Ciascun Thread può usare tutte le variabili globali del processo, e condivide la tabella dei descrittori di file del processo. Ciascun thread in più avrà potrà avere anche dei propri dati, e sicuramente avrà un proprio Stack, un proprio Program Counter ed un proprio Stato dei Registri. Dati globali ed entità del Thread (Dati,Stack,Codice,Program Counter, Stato dei Registi) rappresentano lo stato di esecuzione del singolo thread. thread 2 thread 1
3 THREAD Vantaggi: Visibilità dei dati globali: condivisione di oggetti semplificata. Più flussi di esecuzione. gestione semplice di eventi asincroni (I/O per esempio) Comunicazioni veloci. Tutti i thread di un processo condividono lo stesso spazio di indirizzamento, quindi le comunicazioni tra thread sono più semplici delle comunicazioni tra processi. Context switch veloce. Nel passaggio da un thread ad un altro di uno stesso processo viene mantenuto buona parte dell ambiente. Svantaggi: Concorrenza invece di parallelismo: gestire la mutua esclusione Routine di libreria devono essere rientranti (thread safe call): i thread di un programma usano il s.o. mediante system call che usano dati e tabelle di sistema dedicate al processo. Le syscall devono essere costruite in modo da poter essere utilizzate da più thread contemporaneamente. Es: la funzione char *inet_ntoa() scrive il proprio risultato in una variabile di sistema (del processo) e restituisce al chiamante un puntatore a tale variabile. Se due thread di uno stesso processo eseguono nello stesso istante la chiamata a due inet_ntoa() ognuno setta la variabile con un valore. Cosa leggono i due chiamanti dopo che le chiamate sono terminate? Thead Safe Call Le implementazioni dei thread che soddisfano gli standard POSIX devono mettere a disposizione funzioni thread safe, ovvero che non causano problemi nella scrittura/lettura di strutture dati interne al s.o. In particolare tutte le funzioni dello standard ANSI C e le funzioni degli standard POSIX.1 (alcune funzionalità per comunicazioni via rete) sono thread safe, ad eccezione di: inet_ntoa, asctime, ctime, getlogin, rand, readdir, strtok, ttyname, gethostxxx, getprotoxxx, getservxxx ( implementazioni rientranti, il nome finisce con _r).
4 PTHREAD I Thread sono stati standardizzati. IEEE POSIX c (1995) specifica l interfaccia di programmazione (Application Program Interface - API) dei thread. I thread POSIX sono noti come Pthread. Le API per Pthread distinguono le funzioni in 3 gruppi: Thread management: funzioni per creare, eliminare, attendere la fine dei pthread Mutexes: funzioni per supportare un tipo di sincronizzazione semplice chiamata mutex (abbreviazione di mutua esclusione). Comprende funzioni per creare e eliminare la struttura per mutua esclusione di una risorsa, acquisire e rilasciare tale risorsa. Condition variables: funzioni a supporto di una sincronizzazione più complessa, dipendente dal valore di variabili, secondo i modi definite dal programmatore. Comprende funzioni per creare e eliminare la struttura per la sincronizzazione, per attendere e segnalare le modifiche delle variabili. Convenzione sui nomi delle funzioni: Gli identificatori della libreria dei Pthread iniziano con pthread_ In particolare: pthread_ indica gestione dei thread in generale pthread_ attr_ funzioni per gestione proprietà dei thread pthread_mutex_ gestione mutua esclusione pthread_mutexattr_ proprietà delle strutture per mutua esclusione pthread_cond_ gestione delle variabili di condizione pthread_condattr_ proprietà delle variabili di condizione pthread_key_ dati speciali dei thead il file phtreads.h contiene le definizioni dei pthread In compilazione (linking) usando gcc aggiungere il flag -lpthread per usare la libreria dei pthread. Ad es: gcc -o thr1 thr1.c -lpthread
5 Creazione ed esecuzione di un pthread int pthread_create ( pthread_t * thread, pthread_attr_t *attr, void* (*start_routine)(void *), void * arg); crea una thread e lo rende eseguibile, cioè lo mette a disposizione dello scheduler che prima o poi lo farà partire. Il primo parametro thread è un puntatore ad un identificatore di thread in cui verrà scritto l identificatore del thread creato. Il terzo parametro start_routine è il nome (indirizzo) della procedura da fare eseguire dal thread. Deve avere come unico argomento un puntatore. Il secondo parametro seleziona caratteristiche particolari: può essere posto a NULL per ottenere il comportamento di default. Il quarto parametro è un puntatore che viene passato come argomento a start_routine. void pthread_exit (void *retval); termina l esecuzione del thread da cui viene chiamata, immagazzina il valore puntato da retval, restituendolo ad un altro thread che attende la sua fine. Il sistema libera le risorse allocate al thread. Il caso del programma principale (main) è particolare. Se il main termina prima che i thread da lui creati siano terminati e non chiama la funzione pthread_exit, allora tutti i thread sono terminati. se invece il main chiama pthread_exit allora i thead possono continuare a vivere fino alla loro teminazione.
6 #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 int N=-1; Esempio banale void *PrintHello(void *threadid) N++; printf("\n%d: Hello World! N=%d\n", threadid, N); pthread_exit (NULL); int main() pthread_t threads[num_threads]; int rc, t; for(t=0;t < NUM_THREADS;t++) printf("creating thread %d\n", t); rc = pthread_create (&threads[t], NULL, PrintHello, (void *)t); if (rc) printf("error; return code from pthread_create() is %d\n",rc); exit(-1); pthread_exit (NULL);
7 Passaggio degli Argomenti al pthread La pthread_create prevede un puntatore per il passaggio dei parametri al thread nel momento in cui comincia l esecuzione. Si ponga attenzione nel caso il thread debba modificare i parametri, oppure il chiamante debba modificare i parametri, potrebbero insorgere problemi, meglio dedicare una struttura dati ad ok, per il passaggio. CORRETTO int *taskids[num_threads]; for(t=0;t < NUM_THREADS;t++) taskids[t] = (int *) malloc(sizeof(int)); *taskids[t] = t; printf("creating thread %d\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *) taskids[t]);... int rc, t; SBAGLIATO for(t=0;t < NUM_THREADS;t++) printf("creating thread %d\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *) &t);...
8 Gli identificatori dei pthread pthread_t pthread_self (void); restituisce l identificatore del thread che la chiama. pthread_t pthread_equal (pthread_t pthread1, pthread_t pthread2); restituisce 1 se i due identificatori sono uguali
9 Attesa per la Terminazione di un Thead void main() pthread_t thread[num_threads]; // dichiaro l'attributo pthread_attr_t attr; int rc, t, status; // inizializzo l'attributo pthread_attr_init(&attr); // setto l'attributo specificando che il thread verrà creato in modo // da poterne attendere la fine (operazione join) undetached pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_UNDETACHED); for(t=0;t < NUM_THREADS;t++) printf("creating thread %d\n", t); rc = pthread_create (&thread[t], &attr, funzione, NULL); // libero la memoria usata per l'attributo pthread_attr_destroy(&attr); for(t=0;t < NUM_THREADS;t++) rc = pthread_join (thread[t], (void **)&status); printf("completed join with thread %d status= %d\n",t, status); pthread_exit(null);
10 Garantire la Mutua Esclusione due thread devono decrementare il valore di una variabile globale data, se questa è maggiore di zero Inizialmente data vale 1. THEAD1 THEAD2 if(data>0) if(data>0) data --; data --; A seconda del tempo di esecuzione dei due thread,la variabile data assume valori diversi data THEAD1 THEAD2 1 if(data>0) 1 data --; 0 if(data>0) 0 data --; 0 = valore finale di data data THEAD1 THEAD2 1 if(data>0) 1 if(data>0) 1 data --; 0 data --; -1 = valore finale di data
11 Mutex Variables Mutex à l abbreviazione di mutua esclusione. Una variabile mutex (più formalmente, di tipo pthread_mutex_t) è una variabile che serve per regolare l accesso a dei dati che debbono essere protetti dall accesso contemporaneo da parte di più thread. Ogni thread, prima di accedere a tali dati, deve effettuare una operazione di lock su una stessa variabile mutex. L operazione detta lock di una variabile mutex blocca l accesso da parte di altri thread. Infatti, se più thread eseguono l operazione di lock su una stessa variabile mutex, solo uno dei thread termina la lock() e prosegue l esecuzione, gli altri rimangono bloccati nella lock. In tal modo, il processo che continua l esecuzione può accedere ai dati (protetti mediante la mutex). Finito l accesso, il thread effettua un operazione detta unlock che libera la variabile mutex. Un altro thread che ha precedentemente eseguito eseguito la lock della mutex potrà allora terminare la lock ed accedere a sua volta ai dati. La tipica sequenza d uso diuna mutex è quindi: creare ed inizializzare la mutex più thread cercano di accedere alla mutex chiamando la lock un solo thread termina la lock e diviene proprietario della mutex, gli altri sono bloccati. il thread proprietario accede ai dati, o esegue funzioni. il thread proprietario libera la mutex eseguendo la unlock un altro thread termina la lock e diventa proprietario di mutex... e cosi via al termine la mutex è distrutta.
12 Esempio di Protezione con Mutex Variables #define NUMTHRDS 10 pthread_t callthd[numthrds]; pthread_mutex_t mutexdata; int data; void *decrementa(void *arg) pthread_mutex_lock (&mutexdata); if(data>0) data--; pthread_mutex_unlock (&mutexdata); pthread_exit((void*) 0); void main (int argc, char *argv[]) int i; int status; pthread_attr_t attr; data=4; pthread_mutex_init (&mutexdata, NULL); for(i=0;i < NUMTHRDS;i++) // per default i thread consentono il join, pthread_create ( &callthd[i], NULL, decrementa, (void *)i); for(i=0;i < NUMTHRDS;i++) // aspetto la fine dei thread pthread_join ( callthd[i], (void **)&status); printf ("data = %d \n", data); pthread_mutex_destroy (&mutexdata); pthread_exit(null);
13 Evitare il blocco con Mutex Variables int pthread_mutex_trylock (pthread_mutex_t *mutex); è come la lock(), ma se si accorge che la mutex è già in possesso di altro thread ( e quindi si rimarrebbe bloccati) restituisce immediatamente il controllo al chiamante con risultato EBUSY In caso la chiamata vada a buon fine e si ottenga la proprietà della mutex, restituisce 0.
Principles of Concurrent Programming
Principles of Giuseppe Anastasi [email protected] Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi
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à
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
Corso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 7 Alessandro Dal Palù email: [email protected] web: www.unipr.it/~dalpalu Threads Un thread è l unità di base per l utilizzo della CPU. Composto
I thread nel sistema operativo LINUX: Linuxthreads
I thread nel sistema operativo LINUX: Linuxthreads LinuxThreads: Caratteristiche Processi leggeri realizzati a livello kernel System call clone: int clone(int (*fn) (void *arg), void *child_stack, int
Esercitazione 2! Mutex e semafori POSIX. 3 Novembre 2016
Esercitazione 2! Mutex e semafori POSIX 3 Novembre 2016 Strumenti di sincronizzazione nella libreria LinuxThread I semafori nelle librerie pthread e LinuxThreads La libreria pthread definisce soltanto
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 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare
Perche le CPU multicore
Perche le CPU multicore I processi industriali producono chip sempre piu densi in termini di transistor 2000 Inoltre: Watt ~ Volt 2 x frequenza Frequenza ~ Volt Watt ~ frequenza 3 Il rapporto Watt/mm 2
I thread. Motivazioni e definizione. Modelli di programmazione multithread. Librerie per i thread. Problemi nella programmazione multithread
I Thread I thread Motivazioni e definizione Modelli di programmazione multithread Librerie per i thread Problemi nella programmazione multithread Thread di Linux 4.2 Motivazioni 1 La gestione dei 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:
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
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
Monitor pthreads. Esercizio
Monitor pthreads Esercizio Esercizio monitor Una società di noleggio di automobili offre ai propri clienti tre tipi di automobili: piccole, medie, grandi. Ogni tipo di auto è disponibile in numero limitato
Processi programma processo processo Stati di un processo Attesa di caricamento new Pronto ( ready ) Esecuzione running Waiting ( in Attesa )
Processi Un processo è l insieme delle azioni compiute dal processore per eseguire un programma. Si può semplificare dicendo che "un processo è un programma in esecuzione". Per meglio definire un processo
Semafori. Semafori classici con i thread POSIX 2
Semafori classici Semafori I semafori sono primitive, implementate attraverso dei contatori, fornite dal sistema operativo per permettere la sincronizzazione tra processi e/o thread. Per queste primitive
Sistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
Esercizio sul Monitor. Ponte con utenti grassi e magri 11 Novembre 2013
Esercizio sul Monitor Ponte con utenti grassi e magri 11 Novembre 2013 1 Ponte con utenti grassi e magri Si consideri un ponte pedonale che collega le due rive di un fiume. Al ponte possono accedere due
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
Sistemi Operativi L-A. Esercizi 14 Giugno 2007. Esercizio monitor
Sistemi Operativi L-A Esercizi 14 Giugno 2007 Esercizio monitor Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando la libreria pthread, si realizzi un'applicazione
INTERPROCESS COMMUNICATION 27
INTERPROCESS COMMUNICATION 27 - Le comunicazioni tra processi (IPC, Intreprocess Communication) sono realizzate mediante strutture dati rese disponibili dal kernel. Sono disponibili 3 tipologie di comunicazioni
Sincronizzazione. I semafori Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Sincronizzazione I semafori Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Introduzione Le soluzioni Software sono complesse da utilizzare dal punto di vista del programmatore
Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009
Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009 Luca Fossati, Fabrizio Castro, Vittorio Zaccaria October 10, 2009 Sincronizzazione - 1 1 Esercizio 1: Sincronizzazione - 1 Qual è il problema
Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
Lezione 5. Processi e thread. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata
Lezione 5 Sistemi operativi 24 marzo 2015 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 15 5.1 Di cosa parliamo in questa lezione? Relazione tra processi e thread, e relative
Posix Threads: l evoluzione dei processi UNIX
Posix Threads: l evoluzione dei processi UNIX Raffaele Quitadamo, PhD in Computer Science Università di Modena e Reggio Emilia [email protected] Sommario Pthreads vs Unix processes L API per
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
2. I THREAD. 2.1 Introduzione
2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:
Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2
Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:
Primi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
Relazione tra thread e processi
I Thread POSIX Relazione tra modello a processi e a thread Creazione di un thread Attesa Distacco Terminazione Ricerca e confronto Inizializzazione dinamica Relazione tra thread e processi Nel modello
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
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
I Thread in Java e POSIX
I Thread in Java e POSIX Thread e Multithreading Per risolvere i problemi di efficienza del modello a processi pesanti (modello ad ambiente locale) è possibile far ricorso al modello ad ambiente globale,
Laboratorio in C su Processi e POSIX IPC (Inter Process Communications) Dalla nona lezione di laboratorio in avanti
Laboratorio in C su Processi e POSIX IPC (Inter Process Communications) Dalla nona lezione di laboratorio in avanti NOTA BENE: E INSISTO!!!!! Usare il comando man nomefunzionedilibreria per ottenere informazioni
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
Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-
Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- 1 Sommario Esercizi su: Comunicazione tra processi: la funzione pipe() Condivisione dati e codice tra due o più processi: concetto di Thread 2 -
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
Corso di Programmazione Concorrente Processi. Valter Crescenzi
Corso di Programmazione Concorrente Processi Valter Crescenzi http://crescenzi.inf.uniroma3.it Sommario Processi vs Thread Creazione e terminazione di processi chiamata di sistema fork() chiamata di sistema
Architettura dei calcolatori e sistemi operativi. Il Nucleo del Sistema Operativo. N4 I servizi di Sistema
Architettura dei calcolatori e sistemi operativi Il Nucleo del Sistema Operativo N4 I servizi di Sistema 04.01.2016 Avviamento, inizializzazione e interprete comandi Al momento dell avviamento (bootstrap)
Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario
Processi e thread Dipartimento di Informatica Università di Verona, Italy Sommario Concetto di processo Stati di un processo Operazioni e relazioni tra processi Concetto di thread Gestione dei processi
I Processi nel Sistema Operativo 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
Il linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
La Comunicazione tra Processi in Unix
La Comunicazione tra Processi in Unix La è un canale di comunicazione tra processi: unidirezionale: accessibile ad un estremo in lettura ed all'altro in scrittura molti-a-molti: più processi possono spedire
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
Tipi di POSIX Semaphores
Semafori POSIX Sono una particolare implementazione dei semafori. Possono svolgere il ruolo di semafori binari o generali (n-ari) a seconda di quale valore viene loro assegnato all'atto della inizializzazione
AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema
AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel
Lab 1: Java Multithreading
Dept. of Computer Science Lab 1: Java Multithreading Matteo Camilli [email protected] Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Outline Programmazione multithreading
Esercizio monitor con pthreads
Esercizio monitor con pthreads Si consideri la pista di pattinaggio sul ghiaccio di una località turistica montana. La pista di pattinaggio è aperta a tutti. In particolare i clienti dell impianto si suddividono
Perché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
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
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
Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti
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
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
I processi: concetti di base, context switch e scheduling
Corso di laurea in Ingegneria dell Informazione Indirizzo Informatica Reti e sistemi operativi I processi: concetti di base, context switch e scheduling Processo: definizione Processo (o Job): Entità attiva
Debug di un programma
Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal
Sistemi Operativi T. Esercizi
Sistemi Operativi T Esercizi Esercizio monitor Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando la libreria pthread, si realizzi un'applicazione concorrente
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.
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
