Slide sull'Unità di Apprendimento 1. La Pdf esplora i concetti fondamentali dei processi sequenziali e paralleli in informatica, distinguendo tra processi "pesanti" e "leggeri" (thread), il context switch e il multithreading. Questo materiale universitario di Informatica è ideale per lo studio autonomo dei principi di base della gestione dei processi nei sistemi operativi.
Mostra di più16 pagine


Visualizza gratis il Pdf completo
Registrati per accedere all’intero documento e trasformarlo con l’AI.
Processi sequenziali
e paralleli
0110110110101010100110110101010
1010
MOIV
011101010101001010
TONO
TTOLIOLIO
010
101010
1010101001018
011101001010
DIOT
C
OTOOUnità di apprendimento 1
Lezione 3
I thread o "processi leggeri"
0110110110101010100110110101010
1010
MOIV
011101010101001010
TONO
TTOLIOLIO
010
101010
1010101001018
011101001010
DIOT
C
OTOOIn questa lezione impareremo:
Lo sviluppo delle applicazioni è molto diverso a seconda
della loro tipologia: se si pensa ai videogiochi, ai social
network, ai server Internet, etc. vi sono situazioni in cui è
richiesto un alto grado di parallelismo con molteplici
risorse condivise ed altre in cui la cooperazione è molto
ridotta, le attività svolte in parallelo sono quasi totalmente
indipendenti, vi sono poche interazioni e piccole aree di
memoria condivise.
E opportuno in fase di progettazione del software avere
a disposizione più strumenti a seconda di tali esigenze.
=
programma che evolve
condividendo la CPU con altri
processi + risorse utilizzate.
Ciascuno ha un proprio spazio
di
indirizzamento:
non
condividono nessuna area di
memoria.
= parte del processo a cui
viene assegnata la CPU.
Funzione che viene eseguita
all'interno di un processo
pesante.
Può
essere
attivato
in
parallelo ad altri thread dello
stesso processo.
Tutti i thread di un processo condividono con esso le risorse, risiedono
nello stesso spazio di indirizzamento e hanno accesso a tutti i suoi dati.
. Il context switch per i processi è un'operazione
complessa che richiede tempo utile di CPU; per
questo motivo al processo viene "assegnato
l'aggettivo di pesante", perché richiede "pesanti"
elaborazioni per passare dallo stato di pronto a
quello di esecuzione.
. 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.
Per evolvere parallelamente agli altri thread o processi che si
contendono la CPU, il thread ha un insieme di propri elementi
che lo caratterizzano chiamato TCB (Thread Control Block),
simile al PCB per quanto visto per i processi.
Il TCB è quindi simile al PCB e contiene i registri, lo stack, le variabili "locali" e lo stato
esecuzione: dati "globali" e TCB "locale" rappresentano lo stato di esecuzione del singolo
thread.
Rappresentazione di tre thread in esecuzione all'interno di un
processo di cui eseguono tutti un segmento di codice:
Processo
PCB
file
dati
codice
IP
TCB
TCB
TCB
IP
stack
IP
stack
IP
stack
Traccia
Traccia
in esecuzione in esecuzione
Traccia
in esecuzione
L'utilizzo dei thread offre la
possibilità di sfruttare meglio le
architetture multiprocessore e
di comunicare e scambiare
informazioni
in
modo
immediato.
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:
Queste situazioni le possiamo
riscontrare in quattro diversi
ambienti operativi:
Gli ambienti operativi hanno due modalità per realizzare un
sistema multithreading:
Il modello ANSI/IEEE per i thread è definito dallo standard POSIX
(Portable Operating System Interface for Computing Environments), il
quale comprende un insieme di direttive per le interfacce applicative
(API) dei sistemi operativi. Lo scopo è quello di realizzare programmi
applicativi portabili in ambienti diversi.
I thread di POSIX sono chiamati Pthread.
Le principali applicazioni dei thread sono quelle di permettere di
organizzare l'esecuzione di lavori con attività in foreground e in
background.
Es: nei fogli di calcolo sono usati nelle procedure di ricalcolo
automatico, nei word processor per la reimpaginazione o il controllo
ortografico, nel Web per le ricerche nei motori o nei database.
Il ciclo di vita di un
thread è:
Esecuzione
del codice
Risorse
utilizzate
LWP
Un thread
un processo
acronimo
ha due
componenti
anche
per
Thread
detti
realizzare
Un thread
più processi
Threath Control
Block-TCB
Più thread
più processi
Statica
Dinamica
Puntatore al
PBC padre
Codice
Dati
Registri
Stack
Heap
Più thread
un processo
Processi
leggeri
Multi
threading
descritto
dal