Processi e thread. Concetto di processo

Похожие документы
I Processi. Il Concetto di Processo

Il Concetto di Processo

Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.

I THREAD O PROCESSI LEGGERI

Scheduling della CPU

Sistemi Operativi (modulo di Informatica II) I processi

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

I Processi nel Sistema Operativo Unix

2. Nucleo del sistema operativo (la gestione dei processi)

ACSO Programmazione di Sistema e Concorrente

CLASSIFICAZIONE DEI SISTEMI OPERATIVI (in ordine cronologico)

Introduzione al Multithreading

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

GESTIONE DEI PROCESSI

Lab 1: Java Multithreading

Concetto di processo. Processi. Immagine in memoria di un processo. Stati di un processo. Un SO esegue una varietà di attività:

Struttura Logica del S.O:

Modelli di interazione tra processi

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione

Le risorse. Alcune definizioni

Organizzazione di un SO monolitico

SISTEMI OPERATIVI. I processi. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

Corso di Laboratorio di Sistemi Operativi

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario

Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per:

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Capitolo 3 -- Silberschatz

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.

Componenti e connessioni. Capitolo 3

Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione

Lezione 2 Chiamate di procedura e risposta alle interruzioni

Il Sistema Operativo

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione

Sistemi Operativi. A.M. Fanelli Architettura dei Sistemi a. a Livello di Sistema Operativo. Livello di Linguaggi Applicativi

2. Nucleo del sistema operativo (la gestione dei processi)

Modelli di interazione tra processi

I thread. Motivazioni e definizione. Modelli di programmazione multithread. Librerie per i thread. Problemi nella programmazione multithread

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Sistema operativo & file system 1

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

SISTEMI OPERATIVI. Gestione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 13/05/2007

PROGRAMMA DISCIPLINARE SVOLTO a. s / 2016

Scheduling della CPU

Struttura interna del sistema operativo Linux

Processi. Laboratorio Software C. Brandolese

Processo - generalità

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse.

Modello a scambio di messaggi

Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune

Obiettivo della multiprogrammazione: massimizzazione dell utilizzo CPU. Scheduling della CPU: commuta l uso della CPU tra i vari processi

Modelli di interazione tra processi

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Capitolo 5: I thread

Introduzione ai sistemi operativi

Capitolo 6 Le infrastrutture SoftWare

Il Sistema Operativo. Funzionalità. Sistema operativo. Sistema Operativo (Software di base)

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

Sistema Operativo (Software di base)

Modelli di programmazione parallela

Corso di Sistemi di Elaborazione delle informazioni

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Scheduling della CPU:

Il Sistema Operativo. Informatica Sistema Operativo 1

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL

Il Processore. Informatica di Base -- R.Gaeta 27

Транскрипт:

Processi e thread Concetto di processo Il processo è un programma in esecuzione È l unità di esecuzione all interno del SO Solitamente, l esecuzione l di un processo è sequenziale (le istruzioni vengono eseguite in sequenza, secondo l ordine l specificato nel testo del programma) Un SO multiprogrammato consente l esecuzione concorrente di più processi D ora in poi faremo implicitamente riferimento sempre al caso di SO multiprogrammati Sistemi Operativi L-A - Processi 2

Concetto di processo Programma = entità passiva Processo = entità attiva Il processo è rappresentato da: codice (text)) del programma eseguito dati: variabili globali program counter alcuni registri di CPU stack: parametri, variabili locali a funzioni/procedure Sistemi Operativi L-A - Processi 3 Concetto di processo Processo = {PC, registri, stack, text,, dati} Inoltre, a un processo possono essere associate delle risorse del sistema operativo.. Ad esempio: file aperti connessioni di rete altri dispositivi di I/O in uso... Sistemi Operativi L-A - Processi 4

Stati di un processo Un processo, durante la sua esistenza può trovarsi in vari stati: Init: stato transitorio durante il quale il processo viene caricato in memoria e il SO inizializza i dati che lo rappresentano Init Ready: il processo è pronto per acquisire la CPU Running: il processo sta utilizzando la CPU Waiting: il processo è sospeso in attesa di un evento Terminated: stato transitorio relativo alla fase di terminazione e deallocazione del processo dalla memoria Terminated Sistemi Operativi L-A - Processi 5 Transizioni di stato: Stati di un processo creazione Assegnazione CPU init ready evento Revoca CPU running Attesa di un evento terminazione terminated waiting Sistemi Operativi L-A - Processi 6

Stati di un processo Transizioni di stato: creazione Assegnazione CPU processo attivo init ready evento Revoca CPU running Attesa di un evento terminazione terminated waiting Sistemi Operativi L-A - Processi 7 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 8

Rappresentazione dei processi Come vengono rappresentati i processi nel sistema operativo? Ad ogni processo viene associata una struttura dati (descrittore): Process Control Block (PCB) PCB contiene tutte le informazioni relative al processo: Stato del processo; - Program counter Contenuto dei registri di CPU (SP, IR, accumulatori,...) Informazioni di scheduling (priorità,, puntatori alle code,...) Informazioni per gestore di memoria (registri base, limite,...) Informazioni relative all I/O (risorse allocate, file aperti,...) Informazioni di accounting (tempo di CPU utilizzato,...)... Sistemi Operativi L-A - Processi 9 Process Control Block stato del processo identificatore del processo PC registri limiti di memoria file aperti... Il sistema operativo gestisce i PCB di tutti i processi, organizzandoli in opportune strutture dati (ad esempio code di processi) Sistemi Operativi L-A - Processi 10

Scheduling dei processi È l attività mediante la quale SO effettua delle scelte tra i processi, riguardo a: caricamento in memoria centrale assegnazione della CPU In generale, SO compie tre diverse attività di scheduling: scheduling a breve termine (o di CPU) scheduling a medio termine (o swapping) scheduling a lungo termine Sistemi Operativi L-A - Processi 11 Scheduler a lungo termine Lo scheduler a lungo termine è quella componente del SO che seleziona i programmi da eseguire dalla memoria secondaria per caricarli in memoria centrale (creando i corrispondenti processi): controlla il grado di multiprogrammazione (numero di processi contemporaneamente presenti nel sistema) è una componente importante dei sistemi batch multiprogrammati nei sistemi time sharing Interattività: spesso è l utente che stabilisce direttamente il grado di multiprogrammazione => scheduler a lungo termine non è presente Sistemi Operativi L-A - Processi 12

Scheduler a medio termine (swapper( swapper) Nei sistemi operativi multiprogrammati: la 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 Sistemi Operativi L-A - Processi 13 Scheduler a breve termine (o( di CPU o di CPU) È quella parte del SO che si occupa della selezione dei processi a cui assegnare la CPU Nei sistemi time sharing,, allo scadere di ogni quanto di tempo, il SO: decide a quale processo assegnare la CPU (scheduling di CPU) effettua il cambio di contesto (context switch) Sistemi Operativi L-A - Processi 14

Cambio di contesto È la fase in cui l uso della CPU viene commutato da un processo ad un altro Quando avviene un cambio di contesto tra un processo P i ad un processo P i+1 (ovvero, P i cede l uso l della CPU a P i+1 ): Salvataggio dello stato di P i : il SO copia PC, registri, etc. del processo deschedulato P i nel suo PCB Ripristino dello stato di P i+1 : il SO trasferisce i dati del processo P i+1 dal suo PCB nei registri di CPU, che può così riprendere l esecuzionel Il passaggio da un processo al successivo può richiedere onerosi trasferimenti da/verso la memoria secondaria,, per allocare/deallocare gli spazi di indirizzi dei processi (vedi gestione della memoria) Sistemi Operativi L-A - Processi 15 Cambio di contesto Sistemi Operativi L-A - Processi 16

Scheduler a breve termine (o( di CPU Lo scheduler a breve termine gestisce o di CPU) la coda dei processi pronti: contiene i PCB dei processi che si trovano in stato Ready Altre strutture dati necessarie le code di waiting I/O, timer,...): ognuna di esse contiene i PCB dei processi waiting in attesa di un evento del tipo associato alla coda waiting (una per ogni tipo di attesa: dispositivi Sistemi Operativi L-A - Processi 17 Scheduler Scheduler short-term scheduler viene invocato con alta frequenza (ms) deve essere molto efficiente Scheduler long-term viene invocato a minore frequenza (sec-min) può essere anche più lento Scelte ottimali di scheduling dipendono dalla tipologia di processi: processi I/O-bound maggior parte del tempo in operazioni I/O, molti burst brevi di CPU processi CPU-bound maggior parte del tempo in uso CPU, pochi burst di CPU tipicamente molto lunghi Sistemi Operativi L-A - Processi 18

Code di Scheduling Coda dei processi pronti (ready( ): ready queue): primo ultimo PCB i PCB j PCB k strategia di gestione della ready queue dipende dalle politiche (algoritmi) di scheduling adottate dal SO (parleremo di algoritmi di scheduling nelle prossime lezioni) Sistemi Operativi L-A - Processi 19 Ready queue e altre code per dispositivi I/O Sistemi Operativi L-A - Processi 20

Short-term term scheduling Sistemi Operativi L-A - Processi 21 Short-term term + medium-term scheduling Sistemi Operativi L-A - Processi 22

Scheduling e cambio di contesto Cambio di contesto determina un costo computazionale aggiuntivo che dipende essenzialmente da: frequenza di commutazione della CPU (1/Dt Dt) dimensione del PCB costo dei trasferimenti da/verso la memoria esistono sistemi operativi che prevedono processi leggeri (thread)) che hanno la proprietà di condividere codice e dati con altri processi: dimensione PCB ridotta riduzione dell overhead Sistemi Operativi L-A - Processi 23 Operazioni sui processi Ogni SO multiprogrammato prevede dei meccanismi per la gestione dei processi Meccanismi necessari: creazione terminazione interazione tra processi Sono operazioni privilegiate (esecuzione in modo kernel) definizione di system call Sistemi Operativi L-A - Processi 24

Creazione di processi Un processo (padre)può richiedere la creazione di un nuovo processo (figlio) padre creazione (fork) figlio È possibile realizzare gerarchie di processi... Sistemi Operativi L-A - Processi 25 Gerarchie di processi (es.. UNIX) init shell shell Processo 3 Processo 1... Processo 2... Sistemi Operativi L-A - Processi 26

Vari aspetti/soluzioni: concorrenza Relazione padre-figlio 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, exec() in UNIX) Sistemi Operativi L-A - Processi 27 Ogni processo: Terminazione è 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 28

Processi leggeri (thread( thread) Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread ad esso associati Task = insieme di thread che riferiscono lo stesso codice e gli stessi dati codice e dati non sono caratteristiche del singolo thread,, ma del task al quale appartengono Thread = {PC, registri, stack,,...} Task = {thread1, thread2,..., threadn, text, dati} Sistemi Operativi L-A - Processi 29 Processi leggeri (thread( thread) codice thread.. dati task Processo pesante equivale a un task con un solo thread Sistemi Operativi L-A - Processi 30

Processi single- o multi-threaded threaded Sistemi Operativi L-A - Processi 31 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: il PCB di un thread non contiene alcuna informazione relativa a codice e dati cambio di contesto 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 32

Realizzazione di thread Alcuni SO realizzano il concetto di thread (es. MSWin2000, Linux, Solaris) Realizzazione A livello kernel (MSWinXP/2000, 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 Sistemi Operativi L-A - Processi 33 Realizzazione di thread Realizzazione A livello utente (es. Andrew - Carnegie Mellon, POSIX pthread, Win32, Java 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 i thread possono essere realizzati a entrambi i livelli Sistemi Operativi L-A - Processi 34

Interazione tra processi I processi, pesanti o leggeri, possono interagire Classificazione processi indipendenti: due processi P1 e P2 sono indipendenti se l esecuzione di P1 non è influenzata da P2, e viceversa processi interagenti: P1 e P2 sono interagenti se l esecuzione di P1 è influenzata dall esecuzione di P2, e/o viceversa Sistemi Operativi L-A - Processi 35 Processi interagenti Tipi di interazione Cooperazione: l interazione consiste nello scambio di informazioni al fine di eseguire un attività comune Competizione: i processi interagiscono per sincronizzarsi nell accesso a risorse comuni Interferenza: interazione non desiderata e potenzialmente deleteria tra processi Sistemi Operativi L-A - Processi 36

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 dei processi interagenti a variabili condivise scambio di messaggi (modello ad ambiente locale): i processi non condividono variabili e interagiscono mediante oppurtuni meccanismi di trasmissione/ ricezione di messaggi; SO prevede dei meccanismi a supporto dello scambio di messaggi Sistemi Operativi L-A - Processi 37 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 38

Processi cooperanti Esempio: produttore & consumatore Due processi accedono ad un buffer condiviso di dimensione limitata: un processo svolge il ruolo di produttore di informazioni che verranno prelevate dall altro processo (consumatore) il buffer rappresenta un deposito di informazioni condiviso Sistemi Operativi L-A - Processi 39 Produttore & consumatore msg produttore consumatore buffer Sistemi Operativi L-A - Processi 40

Produttore & consumatore produttore consumatore buffer Sistemi Operativi L-A - Processi 41 Produttore & consumatore Necessità di sincronizzare i processi: quando il buffer è vuoto (il consumatore NON può prelevare messaggi) quando il buffer è pieno (il produttore NON può depositare messaggi) Sistemi Operativi L-A - Processi 42

Produttore & consumatore Processo produttore:... shared msg Buff [DIM]; main() { msg M; do { produco(&m); inserisco(m, Buff); } while(!fine); } Processo consumatore:... shared msg Buff [DIM]; main() { msg M; do { prelievo(&m, Buff); consumo(m); } while(!fine); } Problema: che cosa succede se il buffer è pieno? il buffer è vuoto? Sistemi Operativi L-A - Processi 43 Produttore & consumatore Necessità di sincronizzare i processi Aggiungiamo due variabili logiche condivise: buff_vuoto: se uguale a true, indica che il buffer non contiene messaggi (viene settata dalla funzione di prelievo, quando l unico messaggio presente nel buffer viene estratto) buff_pieno: se uguale a true, indica che il buffer non può accogliere nuovi messaggi, perché pieno (viene settata dalla funzione di inserimento, quando l ultima locazione libera del buffer viene riempita) Sistemi Operativi L-A - Processi 44

Produttore & consumatore Processo produttore:... shared int buff_pieno=0; shared int buff_vuoto=1; shared msg Buff [DIM]; main() { msg M; do { produco(&m); while (buffer_pieno); inserisco(m, Buff); buffer_vuoto=0; }while(!fine); } Processo consumatore:... shared int buff_pieno=0; shared int buff_vuoto=1; shared msg Buff [DIM]; main() { msg M; do { while (buffer_vuoto); prelievo(m, Buff); buffer_pieno=0; consumo(&m); }while(!fine); } Sistemi Operativi L-A - Processi 45