Search Header Logo
i Thread

i Thread

Assessment

Presentation

Computers

11th Grade

Medium

Created by

Emanuela Giaconi

Used 3+ times

FREE Resource

30 Slides • 13 Questions

1

media

TPSI

Emanuela Giaconi

I thread o “processi leggeri”

2

media

In questa lezione impareremo:

la differenza tra processi e thread

le modalità di utilizzo dei thread nei

SO

3

media
media

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

media

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

media

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

media

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

media

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

media

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

media

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

media

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

media

Processi “pesanti” e “processi leggeri”

media

16

media

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

media

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

media

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

media

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

media

THREAD o processo leggero

21

media

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

media

Confronto processi VS thread

23

media

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

media

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

media

Soluzioni adottate: single
threading vs multithreading

26

media

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

media

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

media

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

media

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

media

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

media

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

media

Stati di un thread

33

Multiple Choice

Which of these statements is incorrect?

1

By multithreading CPU’s idle time is minimized, and we can take maximum use of it

2

By multitasking CPU’s idle time is minimized, and we can take maximum use of it

3

Two thread in Java can have same priority

4

A thread can exist only in two states, running and blocked

34

Multiple Choice

What is multithreaded programming?

1

It’s a process in which two different processes run simultaneously

2

It’s a process in which two or more parts of same process run simultaneously

3

Its a process in which many different process are able to access same information

4

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?

1

a) sleep()

2

b) terminate()

3

c) suspend()

4

d) stop()

36

Multiple Choice

_______________ and __________________ are the types of synchronization.

1

Process synchronization and thread synchronization

2

multitasking and multithreading

3

Interthread communication and mutual exclusion

4

None

37

Multiple Choice

1. The capability to control the access of multiple threads to any shared resource is called_____________

1

Synchronization

2

Multitasking

3

multithreading

4

None

38

Multiple Choice

Which thread will be executed first if two threads have same priority

1

They will fall in starvation and none will be executed.

2

Both will be executed simultaneously

3

It depends upon operating system

4

They will be executed on first come first serve basis

39

Multiple Choice

How many threads does a process contains?

1

1

2

2

3

multiple

4

none

40

Multiple Choice

Which of these is not a thread state?

1

new

2

runnable

3

killed

4

terminated

41

Multiple Choice

Why to use synchronization?

1

Avoiding thread interference

2

Avoiding consistency problem

3

Both

4

None

42

media
media

43

media
media
media

TPSI

Emanuela Giaconi

I thread o “processi leggeri”

Show answer

Auto Play

Slide 1 / 43

SLIDE