Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Programmazione Thread Java, Slide di Sistemi Operativi

Slide utili per capire la programmazione multithreading in java

Tipologia: Slide

2016/2017

Caricato il 25/11/2017

giup89
giup89 🇮🇹

1 documento

1 / 22

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Processi e thread
Processi e thread
Sistemi Operativi L-A: Processi e thread 2
Il processo
Il processo è
èun
un
programma in esecuzione
programma in esecuzione
È
Èl
l
unit
unità
àdi esecuzione
di esecuzione all
all
interno del SO
interno del SO
Solitamente, esecuzione
Solitamente, esecuzione sequenziale
sequenziale (istruzioni
(istruzioni
vengono eseguite in sequenza, secondo l
vengono eseguite in sequenza, secondo l
ordine
ordine
specificato nel testo del programma)
specificato nel testo del programma)
SO multiprogrammato consente
SO multiprogrammato consente l
l
esecuzione
esecuzione
concorrente
concorrente di pi
di più
ùprocessi
processi
D
D
ora in poi faremo implicitamente riferimento
ora in poi faremo implicitamente riferimento
sempre al caso di SO
sempre al caso di SO multiprogrammati
multiprogrammati
Concetto di processo
Concetto di processo
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16

Anteprima parziale del testo

Scarica Programmazione Thread Java e più Slide in PDF di Sistemi Operativi solo su Docsity!

Processi e threadProcessi e thread

Il processo è Il processoè unun

programma in esecuzioneprogramma in esecuzione

ˆˆ^ È lÈl’’ unitàunità di esecuzionedi esecuzione^ all’all’interno del SOinterno del SO

ˆˆ^ Solitamente, esecuzioneSolitamente, esecuzione^ sequenzialesequenziale^ (istruzioni(istruzioni vengono eseguite in sequenza, secondo l’vengono eseguite in sequenza, secondo l’ordineordine specificato nel testo del programma)specificato nel testo del programma)

ˆˆ^ SO multiprogrammato consenteSO multiprogrammato consente^ l’l’esecuzioneesecuzione concorrente di piconcorrentedi piùù processiprocessi

D’ D’ora in poi faremo implicitamente riferimentoora in poi faremo implicitamente riferimento sempre al caso di SO multiprogrammatisempre al caso di SOmultiprogrammati

Concetto di processoConcetto di processo

Sistemi Operativi L-A: Processi e thread 3

Programma = entitProgramma = entitàà passivapassiva Processo = entitProcesso = entitàà attivaattiva

Il processo è Il processoè rappresentato da:rappresentato da:

ˆˆ codicecodice (( texttext ) del programma eseguito) del programma eseguito

ˆˆ dati:dati: variabili globali

ˆ program counter

ˆ alcuni registri di CPU

ˆˆ^ stackstack :^ parametri, variabili locali a funzioni/procedure

Concetto di processo Concetto di processo

Processo = {PC, registri,Processo = {PC, registri, stackstack,, text, dati}text, dati}

Inoltre, a un processo possono essere associate Inoltre, a un processo possono essere associate delledelle risorse di SOrisorse di SO. Ad esempio:. Ad esempio:

ˆˆ file apertifile aperti

ˆˆ connessioni di reteconnessioni di rete

ˆˆ altri dispositivi di I/O in usoaltri dispositivi di I/O in uso

ˆˆ ......

Concetto di processo Concetto di processo

Sistemi Operativi L-A: Processi e thread 7

Transizioni di stato:Transizioni di stato:

Stati di un processo Stati di un processo

init

ready running

waiting

terminated

Assegnazione CPU

Revoca CPU Attesa di evento un evento

terminazione

creazione

processo attivo

Stati di un processo Stati di un processo

In un sistema monoprocessore e

multiprogrammato :

ˆ un solo processo (al massimo) si trova nello stato running ˆ più processi possono trovarsi negli stati ready e waiting necessità di strutture dati per mantenere in memoria le informazioni su processi in attesa

  • di acquisire la CPU (ready)
  • di eventi (waiting)

Descrittore di processo

Sistemi Operativi L-A: Processi e thread 9

Come vengono rappresentati i processi in SO?Come vengono rappresentati i processi in SO?

ˆˆ^ Ad ogni processo viene associata una struttura datiAd ogni processo viene associata una struttura dati (descrittore):(descrittore): Process Control BlockProcessControl Block (^) (( PCBPCB )) ˆˆ PCBPCB contiene tutte lecontiene tutte le informazioni relative alinformazionirelative al processoprocesso ::

  • – Stato del processo;Stato del processo;^ - Program-Program countercounter
  • – Contenuto dei registri di CPU (SP, IR, accumulatori, ...)Contenuto dei registri di CPU (SP, IR, accumulatori, ...)
  • – Informazioni di scheduling (prioritInformazioni di scheduling (prioritàà, puntatori alle code, ...), puntatori alle code, ...)
  • – Informazioni per gestore di memoria (registri base, limite, ...)Informazioni per gestore di memoria (registri base, limite, ...)
  • – Informazioni relative allInformazioni relative all’’I/O (risorse allocate, file aperti, ...)I/O (risorse allocate, file aperti, ...)
  • – Informazioni di accounting (tempo di CPU utilizzato, ...)Informazioni di accounting (tempo di CPU utilizzato, ...)
  • – ......

Rappresentazione dei processiRappresentazione dei processi

Process Control Block ProcessControl Block

stato del processo identificatore del processo PC

registri

limiti di memoria file aperti ...

Il sistema operativoIl sistema operativo gestisce i PCB di tutti igestisce i PCB di tutti i processi, organizzandoli inprocessi, organizzandoli in opportune strutture datiopportune strutture dati (ad(ad esempioesempio codecode di processi)di processi)

Sistemi Operativi L-A: Processi e thread 13

Scheduler a medio termine ( Schedulera medio termine (swapperswapper))

Nei sistemi operativi multiprogrammati:

ˆ quantità di memoria fisica può essere minore della somma delle dimensioni degli spazi logici di indirizzi da allocare a ciascun processo ˆ grado di multiprogrammazione non è, in generale, vincolato dalle esigenze di spazio dei processi

Swapping : trasferimento temporaneo in

memoria secondaria di processi (o di parti di processi),

in modo da consentire l’esecuzione di altri processi

ÈÈ quella parte del SO che si occupa dellaquella parte del SO che si occupa della

selezione dei processi a cui assegnare la CPUselezione dei processi a cui assegnare la CPU

Nei sistemi timeNei sistemi time sharingsharing, allo scadere di ogni quanto, allo scadere di ogni quanto

di tempo, SO:di tempo, SO:

ˆ ˆ decidedecide a quale processoa quale processo (^) assegnare la CPUassegnare la CPU (scheduling di CPU)(scheduling di CPU) ˆ ˆ effettua ileffettua il cambio di contesto (contextcambio di contesto(context switchswitch))

Scheduler a breve termine ( Schedulera breve termine ( o di CPUo di CPU ))

Sistemi Operativi L-A: Processi e thread 15

È la fase in cuiÈla fase in cui l’l’uso della CPU viene commutatouso della CPU viene commutato

da un processo ad un altroda un processo ad un altro

Quando avviene un Quando avviene un cambio di contestocambio di contesto tra un processo Ptra un processo P (^) ii ad unad un processo Pprocesso P^ i+1i+1 (ovvero, P(ovvero, P^ ii cede l’cede l’uso della CPU a Puso della CPU a P^ i+1i+1 ):):

  • Salvataggio delloSalvataggio dello statostato di Pdi P (^) ii : SO copia PC, registri,: SO copia PC, registri, ... del processo... del processo deschedulatodeschedulato PP (^) ii nel suo PCBnel suo PCB
  • Ripristino delloRipristino dello statostato di Pdi P (^) i+1i+1 : SO trasferisce i dati del: SO trasferisce i dati del processo Pprocesso P (^) i+1i+1 dal suo PCB nei registri di CPU, chedal suo PCB nei registri di CPU, che può cosìpuò così riprendere lriprendere l’’esecuzioneesecuzione ÎÎ Il passaggio da un processo al successivo può richiedereIl passaggio da un processo al successivo può richiedere onerosionerosi trasferimenti da/verso la memoria secondariatrasferimenti da/verso la memoria secondaria , per, per allocare/deallocare gli spazi di indirizzi dei processi (vedi geallocare/deallocare gli spazi di indirizzi dei processi (vedi gestionestione della memoria)della memoria)

Cambio di contesto Cambio di contesto

Cambio di Cambiodi contestocontesto

Sistemi Operativi L-A: Processi e thread 19

Coda dei processi pronti ( Coda dei processi pronti ( readyready queuequeue ):):

™ ™ strategia di gestione dellastrategia di gestione della ready queuereadyqueue dipende dalledipende dalle politiche (algoritmi) di politiche(algoritmi) di schedulingscheduling adottate dal SOadottate dal SO (parleremo di algoritmi di scheduling nelle prossime lezioni)

Code di Scheduling Code diScheduling

primo ultimo

PCB (^) i PCB^ j PCB^ k

Ready queue e altre Ready queue ealtre code percode per dispositividispositivi I/OI/O

Sistemi Operativi L-A: Processi e thread 21

Short- Short-term schedulingterm scheduling

Short- Short-term + mediumterm + medium--term schedulingterm scheduling

Sistemi Operativi L-A: Processi e thread 25

Creazione di processiCreazione di processi

  • Un processo ( padre ) può richiedere la creazione

di un nuovo processo ( figlio )

  • È possibile realizzare gerarchie di processi

padre

figlio

creazione ( fork )

...

Gerarchie di processiGerarchie di processi ((eses. UNIX). UNIX)

init

shell (^) shell

Processo 1

Processo 2

Processo 3

Sistemi Operativi L-A: Processi e thread 27

Relazione padre- Relazione padre-figliofiglio

Vari aspetti/soluzioni:Vari aspetti/soluzioni:

ˆ concorrenza

  • padre e figlio procedono in parallelo (es. UNIX), oppure
  • il padre si sospende in attesa della terminazione del figlio ˆ condivisione di risorse
  • le risorse del padre (ad esempio, i file aperti) sono condivise con i figli (es. UNIX), oppure
  • il figlio utilizza risorse soltanto se esplicitamente richieste da se stesso ˆ spazio degli indirizzi
  • duplicato : lo spazio degli indirizzi del figlio è una copia di quello del padre (es. fork() in UNIX), oppure
  • differenziato : spazi degli indirizzi di padre e figlio con codice e dati diversi (es. VMS, stesso processo dopo exec() in UNIX)

Terminazione Terminazione

Ogni processo:

ˆ è figlio di un altro processo ˆ può essere a sua volta padre di processi

SO deve mantenere le informazioni relative alle

relazioni di parentela

: nel descrittore: riferimento al padre

Se un processo termina:

ˆ il padre può rilevare il suo stato di terminazione ˆ tutti i figli terminano

Sistemi Operativi L-A: Processi e thread 31

Processi single Processi single-- o multio multi--threadedthreaded

Vantaggi dei thread Vantaggi dei thread

  • Condivisione di memoria : a differenza dei

processi ( pesanti ), un thread può condividere

variabili con altri (appartenenti allo stesso task)

  • Minor costo di context switch : PCB di thread

non contiene alcuna informazione relativa a

codice e dati

: cambio di contesto fra thread dello stesso task ha un costo notevolmente inferiore al caso dei processi pesanti

  • Minor protezione : thread appartenenti allo

stesso task possono modificare dati gestiti da

altri thread

Sistemi Operativi L-A: Processi e thread 33

Realizzazione di thread Realizzazione di thread

Alcuni SO offrono anche l’implementazione del

concetto di thread (es. MSWinXP, Linux ,

Solaris)

Realizzazione

A livello kernel ( MSWinXP, Linux, Solaris, MacOSX):

ˆ SO gestisce direttamente i cambi di contesto

  • tra thread dello stesso task (trasferimento di registri)
  • tra task ˆ SO fornisce strumenti per la sincronizzazione nell’accesso di thread a variabili comuni

Realizzazione di thread Realizzazione di thread

Realizzazione

  • A livello utente (es. Andrew - Carnegie Mellon, POSIX pthread, vecchie versioni MSWin, Java threadJava thread): ˆ il passaggio da un thread al successivo (nello stesso task) non richiede interruzioni al SO ( maggior rapidità ) ˆ SO vede processi pesanti : minore efficienza - es. sospensione di un thread - Cambio di contesto tra thread di task diversi
  • Soluzioni miste

ˆ thread realizzati a entrambi i livelli contemporan.

Sistemi Operativi L-A: Processi e thread 37

Processi interagenti Processi interagenti

Supporto all’interazione

L’interazione può avvenire mediante

  • memoria condivisa (modello ad ambiente globale ): SO consente ai processi ( thread ) di condividere variabili; l’interazione avviene tramite l’accesso a variabili condivise
  • scambio di messaggi (modello ad ambiente locale ): i processi non condividono variabili e interagiscono mediante meccanismi di trasmissione/ricezione di messaggi; SO prevede dei meccanismi a supporto dello scambio di messaggi

Processi interagenti Processi interagenti

Aspetti

ˆ concorrenza -> velocità ˆ suddivisione dei compiti tra processi -> modularità ˆ condivisione di informazioni

  • assenza di replicazione: ogni processo accede alle stesse istanze di dati
  • necessità di sincronizzare i processi nell’accesso a dati condivisi

Sistemi Operativi L-A: Processi e thread 39

Processi cooperanti Processi cooperanti

Esempio: produttore & consumatore

Due processi accedono a un buffer condiviso di

dimensione limitata:

ˆ un processo svolge il ruolo di produttore di informazioni che verranno prelevate dall’altro processo ( consumatore ) ˆ buffer rappresenta un deposito di informazioni condiviso

Produttore & consumatore Produttore & consumatore

msg

produttore consumatore

buffer