La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti.

Presentazioni simili


Presentazione sul tema: "I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti."— Transcript della presentazione:

1 I Processi

2 Sistemi Operativi a.a I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione fra processi Comunicazioni in sistemi client server

3 Sistemi Operativi a.a Definizione di processo 1 Un SO esegue programmi di varia natura: job Sistemi batch: job programmi utentetask Sistemi time sharing: programmi utente o task jobprocesso I libri di testo impiegano indifferentemente i termini job o processoProcesso Un programma in esecuzione; lesecuzione di un processo deve avvenire in modo sequenziale …o, in alternativa, la sequenza di eventi cui da luogo un elaboratore quando opera sotto il controllo di un particolare programma

4 Sistemi Operativi a.a Definizione di processo 2 istanze del programma In realtà, un programma descrive non un processo, ma un insieme di processi istanze del programma ognuno dei quali è relativo allesecuzione del programma da parte dellelaboratore per un particolare insieme di dati in ingresso Un processo include: una sezione di testo (il codice del programma da eseguire) program counter il program counter (ed il contenuto dei registri della CPU) stack lo stack (dati temporanei e variabili locali) una sezione dati (variabili globali) heap uno heap (memoria dinamicamente allocata durante lesecuzione del processo)

5 Sistemi Operativi a.a Processo allocato in memoria

6 Sistemi Operativi a.a Stato del processo 1 transizioni distato Mentre viene eseguito, un processo è soggetto a transizioni di stato, definite in parte dallattività corrente del processo ed in parte da eventi esterni asincroni con la sua esecuzione: New New (nuovo): Il processo viene creato Running Running (in esecuzione): Se ne eseguono le istruzioni Waiting Waiting (in attesa): Il processo è in attesa di un evento Ready Ready (pronto): Il processo è in attesa di essere assegnato ad un processore Terminated Terminated (terminato): Il processo ha terminato la propria esecuzione

7 Sistemi Operativi a.a Diagramma di transizione di stato di un processo

8 Sistemi Operativi a.a Stato del processo 2 new Lo stato new corrisponde alla creazione di un nuovo processo newready La transizione dallo stato new a ready avviene quando il SO (scheduler a lungo/medio termine) ammette il nuovo processo alla contesa attiva per la CPU readyrunning dispatcher La transizione dallo stato ready a running avviene ad opera del dispatcher quando, in seguito al blocco del processo in esecuzione, il processo viene scelto, fra tutti i processi pronti, per essere eseguito

9 Sistemi Operativi a.a Stato del processo 3 runningreadyrevoca prerilascio La transizione da running a ready, chiamata revoca o prerilascio avviene… …nello scheduling a priorità, quando arriva al sistema un processo con priorità maggiore …nei sistemi a partizione di tempo, per esaurimento del quanto …al verificarsi di un interrupt esterno runningwaiting waiting ready La transizione da running a waiting avviene per la richiesta di un servizio di I/O al SO, mentre il passaggio da waiting a ready avviene al termine del servizio

10 Sistemi Operativi a.a Stato del processo 4 terminated Lo stato terminated si raggiunge per: terminazione normale, con chiamata al SO per indicare il completamento delle attività terminazione anomala uso scorretto delle risorse (superamento dei limiti di memoria, superamento del tempo massimo di utilizzo della CPU, etc.) esecuzione di istruzioni non consentite o non valide (trap)

11 Sistemi Operativi a.a Process Control Block 1 Process Control Block (PCB) Ad ogni processo è associata una struttura dati, il descrittore di processo Process Control Block (PCB) I dati utilizzati per descrivere i processi dipendono dal SO e dalla struttura della macchina fisica Le informazioni contenute nei PCB sono vitali per il SO: devono essere memorizzate in unarea di memoria accessibile solo dal nucleo del SO

12 Sistemi Operativi a.a Process Control Block 2 Informazione associata a ciascun processo: Stato del processo Nome (numero) del processo Contesto del processo Contesto del processo: program counter, registri della CPU (accumulatori, registri indice, stack pointer) Informazioni sullo scheduling della CPU (priorità, puntatori alle code di scheduling) Informazioni sulla gestione della memoria Informazioni di contabilizzazione delle risorse: elenco dispositivi assegnati, file aperti, tempo di utilizzo della CPU

13 Sistemi Operativi a.a Commutazione della CPU fra processi

14 Sistemi Operativi a.a Code per lo scheduling dei processi Coda dei job Coda dei job Insieme di tutti i processi presenti nel sistema Ready queueCoda dei processi pronti Ready queue (Coda dei processi pronti) Insieme dei processi pronti ed in attesa di essere eseguiti, che risiedono in memoria centrale Code dei dispositivi Code dei dispositivi Insieme dei processi in attesa per un dispositivo di I/O I processi migrano fra le varie code

15 Sistemi Operativi a.a Ready queue e code ai dispositivi di I/O

16 Sistemi Operativi a.a Diagramma per lo scheduling dei processi I riquadri rappresentano le code Le ellissi rappresentano le risorse che servono le code Le frecce indicano il flusso dei processi nel sistema

17 Sistemi Operativi a.a Tipi di scheduler Scheduler a lungo termine Scheduler a lungo termine (o scheduler dei job): seleziona quali processi devono essere portati dalla memoria di massa alla ready queue (in memoria centrale) Scheduler a breve termine Scheduler a breve termine (o scheduler della CPU): seleziona quale processo debba essere eseguito successivamente ed alloca la CPU

18 Sistemi Operativi a.a Scheduler a medio termine scheduler a medio termineswapper Lo scheduler a medio termine (o swapper ) rimuove i processi dalla memoria (e dalla contesa per la CPU) e riduce il grado di multiprogrammazione

19 Sistemi Operativi a.a Tipi di scheduler (Cont.) Lo scheduler a breve termine viene chiamato molto spesso (intervalli misurabili in millisecondi) deve essere veloce Lo scheduler a lungo termine viene chiamato molto raramente (secondi, minuti) può essere lento, ma efficiente grado di multiprogrammazione Lo scheduler a lungo termine controlla il grado di multiprogrammazione I processi possono essere classificati in: Processi I/O–bound burst Processi I/O–bound : impiegano più tempo effettuando I/O rispetto al tempo impiegato per elaborazioni (in generale, si hanno molti burst di CPU di breve durata) Processi CPU–bound Processi CPU–bound : impiegano più tempo effettuando elaborazioni (in generale, si hanno pochi burst di CPU di lunga durata)

20 Sistemi Operativi a.a Context Switch contesto Quando la CPU passa da un processo allaltro, il sistema deve salvare il contesto del vecchio processo e caricare il contesto, precedentemente salvato, per il nuovo processo in esecuzione Il contesto è rappresentato allinterno del PCB del processo e comprende i valori dei registri della CPU, lo stato del processo e le informazioni relative alloccupazione di memoria context switchoverhead Il tempo di context switch è un sovraccarico (overhead ); il sistema non lavora utilmente mentre cambia contesto Il tempo di context switch (msec) dipende dal supporto hardware (velocità di accesso alla memoria, numero di registri da copiare, istruzioni speciali, gruppi di registri multipli)

21 Sistemi Operativi a.a Creazione di processi 1 Il processo padre crea processi figli che, a loro volta, creano altri processi, formando un albero di processi Condivisione di risorse Il padre e i figli condividono tutte le risorse I figli condividono un sottoinsieme delle risorse del padre Il padre e i figli non condividono risorseEsecuzione Il padre e i figli vengono eseguiti in concorrenza Il padre attende la terminazione dei processi figli Spazio degli indirizzi Il processo figlio è un duplicato del processo padre Nel processo figlio è stato caricato un diverso programma

22 Sistemi Operativi a.a Albero dei processi in Solaris

23 Sistemi Operativi a.a UNIX In UNIX… fork() …la system call fork() crea un nuovo processo exec()fork() quindi, la exec() viene impiegata dopo la fork() per sostituire lo spazio di memoria del processo originale con un nuovo programma Creazione di processi 2

24 Sistemi Operativi a.a #include /*Primitive system data types */ #include #include /*Standard symbolic constants and types */ int main() { pid_t pid; pid fork(); /* genera un nuovo processo */ if (pid < 0) { /* errore*/ fprintf(stderr, Generazione del nuovo processo fallita); exit(-1); } else if (pid 0) /* Processo figlio */ execlp(/bin/ls, ls, NULL); else { /* Processo padre */ wait(NULL); printf(Il processo figlio ha terminato); exit(0); } Creazione di processi 3

25 Sistemi Operativi a.a Terminazione di processi 1 exit() UNIX Il processo esegue lultima istruzione e chiede al sistema operativo di essere cancellato per mezzo di una specifica chiamata di sistema (exit() in UNIX) che compie le seguenti operazioni: wait() Può restituire dati (output) al processo padre (attraverso la system call wait() ) Le risorse del processo vengono deallocate dal sistema operativo

26 Sistemi Operativi a.a Terminazione di processi 2 abort Il padre può terminare lesecuzione dei processi figli (abort ) se… Il figlio ha ecceduto nelluso delle risorse ad esso allocate Il compito assegnato al figlio non è più richiesto Il padre termina terminazione a cascata Alcuni sistemi operativi non consentono ad un processo figlio di continuare lesecuzione se il padre è terminato Questo fenomeno è detto terminazione a cascata e viene avviato dal SO init() Nel caso di UNIX, i processi orfani non vengono terminati, ma diventano figli di init(), che è il progenitore di tutti i processi utente

27 Sistemi Operativi a.a Thread 1 thread Alla base del concetto di thread sta la constatazione che il concetto di processo è basato su due aspetti: Possesso delle risorse Esecuzione I due aspetti sono indipendenti e come tali possono essere gestiti dal SO Lelemento che viene eseguito è il thread Lelemento che possiede le risorse è il processo

28 Sistemi Operativi a.a Thread 2 multithreading Il termine multithreading è utilizzato per descrivere la situazione in cui ad un processo sono associati più thread Tutti i thread condividono le risorse del processo, risiedono nello stesso spazio di indirizzamento ed hanno accesso agli stessi dati Ad ogni thread è però associato uno stato di esecuzione, uno spazio di memoria per le variabili locali, uno stack, un contesto un descrittore Le informazioni associate al thread sono poche: le operazioni di cambio di contesto, di creazione e terminazione sono più semplici

29 Sistemi Operativi a.a Processi cooperanti 1 indipendente Un processo è indipendente se la sua esecuzione non può influire sullesecuzione di altri processi nel sistema o subirne gli effetti cooperanti I processi cooperanti possono influire sullesecuzione di altri processi o esserne influenzati La presenza o meno di dati condivisi determina univocamente la natura del processo Vantaggi della cooperazione fra processi Condivisione di informazioni Accelerazione del calcolo Modularità Convenienza

30 Sistemi Operativi a.a Processi cooperanti 2 IPC Inter-Process Communication Due meccanismi di comunicazione fra processi (IPC, Inter-Process Communication): Scambio di messaggi: utile per trasmettere piccole quantità di dati, nessuna conflittualità, utilizzo di system call per la messaggeria Memoria condivisa: massima efficienza nella comunicazione Richiede lintervento del kernel solo per lallocazione della memoria Gli accessi successivi sono gestiti (/arbitrati) dai processi

31 Sistemi Operativi a.a Modelli di comunicazione (a) Scambio di messaggi (b) Condivisione della memoria

32 Sistemi Operativi a.a Sistemi a memoria condivisa Memoria condivisa: parte dello spazio di indirizzamento del processo che la alloca I processi cooperanti che la usano per comunicare dovranno annettere la zona di memoria al loro spazio di indirizzi La gestione della memoria condivisa, una volta allocata, non dipende dal SO Il tipo e la collocazione dei dati sono determinati dai processi …che hanno anche la responsabilità di non scrivere nella stessa locazione simultaneamente

33 Sistemi Operativi a.a Problema del produttore consumatore produttore consumatore È un paradigma classico per processi cooperanti: il processo produttore produce informazioni che vengono consumate da un processo consumatore Buffer illimitato Buffer illimitato: non vengono posti limiti pratici alla dimensione del buffer Il consumatore può trovarsi ad attendere nuovi oggetti, ma il produttore può sempre produrne Buffer limitato Buffer limitato: si assume che la dimensione del buffer sia fissata Il consumatore attende se il buffer è vuoto, il produttore se è pieno

34 Sistemi Operativi a.a Dati condivisi #define DIM_VETTORE 10 typedef struct {... } elemento; elemento vettore[DIM_VETTORE]; int inserisci = 0; int preleva = 0; La soluzione ottenuta è corretta, ma consente lutilizzo di soli DIM_VETTORE 1 elementi Buffer limitato e memoria condivisa 1

35 Sistemi Operativi a.a elemento appena_prodotto; while (1) { while (((inserisci + 1) % DIM_VETTORE) preleva) ; /* do nothing */ vettore[inserisci] = appena_prodotto; inserisci = (inserisci + 1) % DIM_VETTORE; } elemento da_consumare; while (1) { while (inserisci preleva) ; /* do nothing */ da_consumare = vettore[preleva]; preleva = (preleva + 1) % DIM_VETTORE; } Buffer limitato e memoria condivisa 2 Processo consumatore Processo produttore

36 Sistemi Operativi a.a Scambio di messaggi Meccanismo per la comunicazione e la sincronizzazione fra processi particolarmente utile in ambiente distribuito Sistema di messaggi i processi comunicano fra loro senza far uso di variabili condivise La funzionalità IPC consente due operazioni: send(messaggio) send(messaggio) la dimensione del messaggio può essere fissa o variabilereceive(messaggio) Se i processi P e Q vogliono comunicare, devono: stabilire fra loro un canale di comunicazione scambiare messaggi per mezzo di send/receive Implementazione del canale di comunicazione: fisica (es. memoria condivisa, bus, rete) logica (proprietà logiche)

37 Sistemi Operativi a.a Problemi di implementazione Come vengono stabiliti i canali (connessioni)? È possibile assegnare un canale a più di due processi? Quanti canali possono essere stabiliti fra ciascuna coppia di processi comunicanti? Qual è la capacità di un canale? Il formato del messaggio che un canale può gestire è fisso o variabile? Sono preferibili canali monodirezionali o bidirezionali?

38 Sistemi Operativi a.a Comunicazione diretta I processi devono nominare esplicitamente i loro interlocutori (modalità simmetrica): send (P, messaggio) send (P, messaggio) invia un messaggio al processo P receive(Q, messaggio) receive(Q, messaggio) riceve un messaggio dal processo Q Proprietà del canale di comunicazione: I canali vengono stabiliti automaticamente Ciascun canale è associato esattamente ad una coppia di processi Tra ogni coppia di processi comunicanti esiste esattamente un canale Il canale può essere unidirezionale (ogni processo collegato al canale può soltanto trasmettere/ricevere), ma è normalmente bidirezionale

39 Sistemi Operativi a.a Comunicazione indiretta 1 mailboxporte I messaggi vengono inviati/ricevuti da mailbox (porte) id Ciascuna mailbox è identificata con un id unico I processi possono comunicare solamente se condividono una mailbox Proprietà dei canali di comunicazione: Un canale viene stabilito solo se i processi hanno una mailbox in comune Un canale può essere associato a più processi Ogni coppia di processi può condividere più canali di comunicazione I canali possono essere unidirezionali o bidirezionali

40 Sistemi Operativi a.a Operazioni: Creare una nuova mailbox Inviare/ricevere messaggi attraverso mailbox Distruggere una mailbox Primitive di comunicazione: send(A, messaggio) send(A, messaggio) invia un messaggio alla mailbox A receive(A, messaggio) receive(A, messaggio) riceve un messaggio dalla mailbox A Comunicazione indiretta 2

41 Sistemi Operativi a.a Condivisione di mailbox P 1, P 2 e P 3 condividono la mailbox A P 1 invia; P 2 e P 3 ricevono Chi si assicura il messaggio? Soluzioni: Permettere ad un canale di essere associato ad al più due processi Permettere ad un solo processo alla volta di eseguire unoperazione di ricezione Permettere al SO di selezionare arbitrariamente il ricevente; il sistema comunica lidentità del ricevente al trasmittente Comunicazione indiretta 3

42 Sistemi Operativi a.a Sincronizzazione bloccante non–bloccante Lo scambio di messaggi può essere sia bloccante che non–bloccante sincrona In caso di scambio di messaggi bloccante la comunicazione è sincrona Il processo mittente si blocca nellattesa che il processo ricevente, o la porta, riceva il messaggio Il ricevente si blocca nellattesa dellarrivo di un messaggio Rendezvous Rendezvous tra mittente e ricevente asincrona In caso di scambio di messaggi non–bloccante la comunicazione è asincrona Il processo invia il messaggio e riprende la propria esecuzione Il ricevente riceve un messaggio valido o un valore nullo

43 Sistemi Operativi a.a Buffering La coda dei messaggi legata ad un canale può essere implementata in tre modi Capacità zero 1. Capacità zero Il canale non può avere messaggi in attesa al suo interno; il trasmittente deve attendere che il ricevente abbia ricevuto il messaggio Capacità limitata 2.Capacità limitata Il canale può avere al più n messaggi in attesa; se il canale è pieno, il trasmittente deve attendere Capacità illimitata 3.Capacità illimitata Il canale può contenere infiniti messaggi; il trasmittente non attende mai

44 Sistemi Operativi a.a Comunicazioni nei sistemi client server Socket Remote Procedure Call Chiamate di procedure remote (Remote Procedure Call RPC) Remote Method Invocation Invocazione di metodi remoti (Remote Method Invocation RMI, Java)

45 Sistemi Operativi a.a Socket 1 Una socket è definita come lestremità di un canale di comunicazione Ogni socket è identificata da un indirizzo IP concatenato ad un numero di porta Esempio: Esempio: la socket :1625 si riferisce alla porta 1625 sullhost La comunicazione si stabilisce fra coppie di socket (una per ogni processo)

46 Sistemi Operativi a.a Socket 2 In una architettura client server… …il server attende la richiesta del client, stando in ascolto ad una porta specificata Quando il server riceve una richiesta, se accetta la connessione proveniente dalla socket del client, si stabilisce la comunicazione I server che svolgono servizi specifici stanno in ascolto su porte note (per esempio, 23: telnet, 21: ftp, 80: http) Tutte le porte al di sotto del valore 1024 sono considerate note e si usano per realizzare servizi standard

47 Sistemi Operativi a.a Socket 3 La comunicazione tramite socket è una forma di comunicazione fra sistemi distribuiti a basso livello Le socket permettono la trasmissione di un flusso non strutturato di byte: È responsabilità del client e del server interpretare ed organizzare i dati

48 Sistemi Operativi a.a Comunicazione via socket

49 Sistemi Operativi a.a Chiamate di procedure remote Il concetto di chiamata a procedura remota estende il paradigma della chiamata di procedura a processi residenti su sistemi remoti collegati in rete La semantica delle RPC permette ad un client di invocare una procedura presente su un sistema remoto nello stesso modo in cui esso invocherebbe una procedura locale Il sistema delle RPC nasconde i dettagli necessari alla comunicazione

50 Sistemi Operativi a.a Invocazione di metodi remoti Linvocazione di metodi remoti è una funzione del linguaggio Java simile alla RPC LRMI permette ad un processo Java residente su una data JVM linvocazione di un metodo su un oggetto remoto, dove per remoto si intende un oggetto residente su una diversa macchina virtuale


Scaricare ppt "I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti."

Presentazioni simili


Annunci Google