
i Thread
Presentation
•
Computers
•
11th Grade
•
Medium
Emanuela Giaconi
Used 3+ times
FREE Resource
30 Slides • 13 Questions
1
TPSI
Emanuela Giaconi
I thread o “processi leggeri”
2
In questa lezione impareremo:
la differenza tra processi e thread
le modalità di utilizzo dei thread nei
SO
3
4
Open Ended
Come è possibile parallelizzare più processi? Come avviene la cooperazione tra processi? è facile/semplice ottenere la parallelizzazione, la cooperazione e lo scambio di informazioni?
5
Generalità
I processi sono entità autonome e sono
quindi adatti alla descrizione di attività
autonome con poche risorse condivise
• poco si prestano alla scrittura di applicazioni
fortemente cooperanti
Oltre al processo viene definita una nuova
entità a esso molto simile:
• ha particolari caratteristiche che agevolano la
risoluzione di problemi con alta cooperazione e
condivisione di risorse: i thread.
6
Generalità
Al modello a processi
• che implementa un insieme di macchine
virtuali “una per ciascun processo”
si affianca quindi un modello a thread
•definisce un sistema di macchine virtuali
che realizzano “delle attività” piuttosto che
un “compito completo”
7
Open Ended
Un processo può essere rappresentato dall'immagine del processo e dalle sue risorse. Cosa si intende con immagine del processo e cosa per risorse possedute?
8
Processi “pesanti” e “processi leggeri”
Processi pesanti
Si è detto che il processo può essere
visto come l’insieme della sua immagine
e dalle risorse che sta utilizzando, dove:
• l’immagine del processo è costituita da:
• process ID, Program Counter, Stato dei Registri,
Stack, Codice, Dati ecc.
• le risorse possedute sono:
• i file aperti, processi figli, dispositivi di I/O
9
Open Ended
Ripassiamo insieme: cosa si intende con cambio di contesto? cosa deve fare il sistema operativo?
10
Processi “pesanti” e “processi leggeri”
Quando avviene il cambio di contesto, per
rendere operativo il nuovo processo le
operazioni che il SO deve compiere sono
molteplici e complesse
• richiedono il salvataggio del contesto del
processo che si sospende e il ripristino di quello
che inizia (o riprende) la sua esecuzione.
11
Processi “pesanti” e “processi leggeri”
L’esecuzione delle operazioni di context
switch richiede tempo utile di CPU
viene così sprecato tempo per effettuare
queste operazioni “non produttive”
questo tempo impiegato prende il nome
di overhead
può essere definito come “costo di
gestione” per realizzare il multitasking.
12
Processi “pesanti” e “processi leggeri”
Per questo motivo al processo viene
“assegnato l’aggettivo di pesante”
richiede “pesanti” elaborazioni per
passare dallo stato di pronto a quello di
esecuzione
Naturalmente l’obiettivo di ogni SO è quello di ridurre al minimo
l’overhead migliorando gli algoritmi di scheduling.
13
Open Ended
Da cosa è composto il processo in esecuzione?
14
Processi “pesanti” e “processi leggeri”
Processi leggeri
Il processo in evoluzione può essere
visto come l’unione di due componenti:
◗le risorse che utilizza, cioè quelle
comprese nel suo spazio di
indirizzamento;
◗l’esecuzione del codice, cioè il flusso di
evoluzione del programma che condivide
la CPU con gli altri processi.
15
Processi “pesanti” e “processi leggeri”
16
Processi “pesanti” e “processi leggeri”
Il sistema operativo gestisce questi due
componenti in modo indipendente
Questa osservazione è alla base dei thread:
◗ la parte del processo alla quale viene
assegnata la CPU viene definita processo
leggero (thread);
◗ la parte del processo che possiede le
risorse viene definita processo pesante
(processo o task).
17
Processi “pesanti” e “processi leggeri”
Un thread è un “segmento di codice” che
viene eseguito in modo sequenziale all’interno
di un processo pesante
Tutti i thread definiti all’interno di un processo
ne condividono le risorse, risiedono nello
stesso spazio di indirizzamento e hanno
accesso a tutti i suoi dati.
18
THREAD o processo leggero
Il termine “processo leggero” (LightWeight
Process LWP)” vuole indicare che
l’implementazione di un thread è meno
onerosa di quella di un vero processo
con multithreading si indica la molteplicità
di flussi di esecuzione all’interno di un
processo pesante.
19
THREAD o processo leggero
Per evolvere parallelamente agli altri thread o processi che
si contendono la CPU, il thread ha inoltre un insieme di
propri elementi che lo caratterizzano chiamato TCB (il
Thread Control Block), costituito da:
20
THREAD o processo leggero
21
THREAD o processo leggero
L’esecuzione dei thread richiede necessariamente che le
routine di libreria debbano essere rientranti: i thread di un programma interagiscono con il SO mediante system call che usano dati e tabelle di sistema dedicate al processo e queste devono essere progettate in modo da poter essere utilizzate da più thread contemporaneamente (thread safe call) senza che vengano persi i dati.
22
Confronto processi VS thread
23
Soluzioni adottate: single
threading vs multithreading
In base alla capacità di un sistema di gestire a
livello kernel i thread, distinguiamo tra quattro
possibili scenari, ottenuti dalla combinazione delle
possibili situazioni:
◗singoloprocesso e threadsingolo;
◗singoloprocesso e threadmultiplo per processo;
◗multiploprocesso e threadsingolo per processo;
◗multiploprocesso e threadmultiplo per processo.
24
Soluzioni adottate: single
threading vs multithreading
Queste quattro situazioni le possiamo riscontrare in
quattro diversi ambienti operativi:
◗MS-DOS: un solo processo utente e un solo thread;
◗UNIX: più processi utente ciascuno con un solo thread;
◗ supporto run time di Java (JVM): un solo processo, più
thread;
◗Linux, Windows NT, Solaris: più processi utente
ciascuno con più thread.
25
Soluzioni adottate: single
threading vs multithreading
26
Realizzazione di thread
Gli ambienti operativi hanno due modalità per realizzare
un sistema multithreading a seconda che il kernel del
sistema operativo sia o meno a conoscenza della loro
esistenza
se i thread vengono realizzati mediante chiamate al kernel
• si parla di Kernel-Level
se i thread vengono realizzati da software mediante
procedure e librerie.
• si parla di User-Level
27
Realizzazione di thread
User-Level
sono quelli che vengono implementati grazie a delle
librerie apposite (thread package)
• contengono le funzioni per la creazione, terminazione,
sincronizzazione dei thread e per realizzare anche i meccanismi per il
loro scheduling
nè la schedulazione e neppure lo switching con il cambio
di contesto coinvolgono il nucleo
• “ignora” la loro presenza e gestisce solamente i processi.
28
Realizzazione di thread
I vantaggi di questa soluzione sono:
• l’efficienza di gestione
• in quanto i tempi di switching sono molto ridotti dato che non
richiedono chiamate al kernel
• hanno una grande flessibilità e scalabilità
• dato che lo scheduling può essere modificato e dimensionato volta
per volta in funzione della specifica situazione
• possono essere implementati su qualunque sistema
operativo
• hanno un alto grado di portatilità tra macchine e sistemi diversi
L’esempio tipico di ambienti User Level è UNIX
29
Realizzazione di thread
Kernel-Level
La gestione dei thread è affidata al kernel tramite
chiamate di sistema
E’ il kernel che gestisce i thread come tutti gli altri
processi, li deve schedulare, sospendere e risvegliare
assegnandogli le risorse di sistema
A differenza del caso precedente, se un thread si
sospende può naturalmente evolvere un secondo thread
generato dallo stesso processo, in quanto sono tra loro
schedulati in modo autonomo.
30
Realizzazione di thread
Questo è proprio il vantaggio più significativo di questa
seconda soluzione unito al fatto che in architetture
multiprocessori si può sfruttare anche il parallelismo fisico
inoltre lo stesso kernel può essere scritto come un
sistema multithread.
Lo svantaggio principale è legato alla efficienza del
sistema dovuta ai tempi impiegati dal kernel per il cambio
di contesto durante la schedulazione
Infatti risulta essere più complessa in quanto deve gestire
la copresenza di processi e thread
31
Thread POSIX
Il modello ANSI/IEEE per i thread è definito dallo standard
POSIX (Portable Operating System Interface for
Computing Environments)
Comprende un insieme di direttive per le interfacce
applicative (API) dei sistemi operativi
I thread di POSIX sono chiamati Pthread
Utilizzano la libreria <pthread.h>: in essa viene
definito il tipo pthread_t che sarà usato per definire i
thread nei programmi concorrenti creandoli all’interno di
un processo
siamo nella situazione 4: thread multipli per processo.
32
Stati di un thread
33
Multiple Choice
Which of these statements is incorrect?
By multithreading CPU’s idle time is minimized, and we can take maximum use of it
By multitasking CPU’s idle time is minimized, and we can take maximum use of it
Two thread in Java can have same priority
A thread can exist only in two states, running and blocked
34
Multiple Choice
What is multithreaded programming?
It’s a process in which two different processes run simultaneously
It’s a process in which two or more parts of same process run simultaneously
Its a process in which many different process are able to access same information
Its a process in which a single process can access information from many sources
35
Multiple Choice
Which of these method of Thread class is used to Suspend a thread for a period of time?
a) sleep()
b) terminate()
c) suspend()
d) stop()
36
Multiple Choice
_______________ and __________________ are the types of synchronization.
Process synchronization and thread synchronization
multitasking and multithreading
Interthread communication and mutual exclusion
None
37
Multiple Choice
1. The capability to control the access of multiple threads to any shared resource is called_____________
Synchronization
Multitasking
multithreading
None
38
Multiple Choice
Which thread will be executed first if two threads have same priority
They will fall in starvation and none will be executed.
Both will be executed simultaneously
It depends upon operating system
They will be executed on first come first serve basis
39
Multiple Choice
How many threads does a process contains?
1
2
multiple
none
40
Multiple Choice
Which of these is not a thread state?
new
runnable
killed
terminated
41
Multiple Choice
Why to use synchronization?
Avoiding thread interference
Avoiding consistency problem
Both
None
42
43
TPSI
Emanuela Giaconi
I thread o “processi leggeri”
Show answer
Auto Play
Slide 1 / 43
SLIDE
Similar Resources on Wayground
39 questions
Poros Maritim
Presentation
•
11th Grade
38 questions
Buku Besar
Presentation
•
11th Grade
38 questions
Immune System
Presentation
•
11th Grade
38 questions
Sistem Ekskresi
Presentation
•
11th Grade
40 questions
Mengenal TIK
Presentation
•
10th Grade
38 questions
FISCAL POLICY
Presentation
•
11th Grade
41 questions
Bab 10 Pemakaian Antar Muka Aplikasi(User Interface)
Presentation
•
10th Grade
38 questions
European Nationalism
Presentation
•
10th Grade
Popular Resources on Wayground
10 questions
Factors 4th grade
Quiz
•
4th Grade
10 questions
Cinco de Mayo Trivia Questions
Interactive video
•
3rd - 5th Grade
13 questions
Cinco de mayo
Interactive video
•
6th - 8th Grade
20 questions
Math Review
Quiz
•
3rd Grade
20 questions
Main Idea and Details
Quiz
•
5th Grade
20 questions
Context Clues
Quiz
•
6th Grade
20 questions
Inferences
Quiz
•
4th Grade
19 questions
Classifying Quadrilaterals
Quiz
•
3rd Grade