Gestione dei Processi

Documenti analoghi
Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi

Sistemi Operativi (modulo di Informatica II) I processi

Capitolo 4: Processi

Informatica II Sistemi Operativi DIGIP - a.a. 2015/16

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

Sistemi Operativi. 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

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

Processi. Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi. Il descrittore di processo (PCB)

System call per la gestione di processi

Capitolo 3 -- Silberschatz

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

Il Concetto di Processo

I Processi. Il Concetto di Processo

II parte: Gestione dei Processi. 3. Processi. 3.1 Concetto di Processo

Processi e thread. Concetto di processo

Capitolo 4: i processi

I Processi nel Sistema Operativo Unix

Processi. Comunicazione tra processi Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Controllo dei Processi 1

Sistemi Operativi. Des crizione e controllo dei proces s i

Introduzione al Multithreading

I Processi nel SO UNIX

System Calls per la Gestione dei Processi

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

Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi

GESTIONE DEI PROCESSI

Sistemi Operativi (modulo di Informatica II) I processi

Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi

I processi. Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione fra processi

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

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

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

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

I processi: concetti di base, context switch e scheduling

Sistemi Operativi Teledidattico

eseguire comandi dati dall'utente, utilizzando una macchina reale, di livello inferiore,

Riepilogo sulla Concorrenza

Il processo figlio : utilizza lo stesso codice che sta eseguendo il padre ;

Programmazione multiprocesso

TECN.PROG.SIST.INF. - Politiche di schedulazione del processore. Roberta Gerboni

Sistemi Operativi. Descrizione e controllo dei processi

Sistemi Operativi. Lezione 3 Processi e Thread

Sistemi Operativi. Marzo-Giugno 2011 matricole congrue 0 mod 3. Controllo dei processi - I

Definizione di processo 1

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3

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

il tipo di parallelismo dipende dal grado di cooperazione

SISTEMI OPERATIVI E LABORATORIO (Indirizzo Sistemi e Reti) 21 dicembre 2004

Università Ca' Foscari Venezia - Corso di Laurea in Informatica Sistemi Operativi prof. Augusto Celentano. Domande di riepilogo

INTERPROCESS COMMUNICATION 27

Il modello a thread : motivazioni

Signalling (IPC) Signalling (segnalazione)

Processi. Sistemi Operativi Giuseppe Prencipe. Stati di un processo. Stati di un processo

Corso di Programmazione Concorrente Processi. Valter Crescenzi

Interazione tra Processi. Sistemi Operativi T AA

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

Modello a scambio di messaggi

I THREAD O PROCESSI LEGGERI

Scheduling della CPU

Processi Concetti di base. Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi

Sistemi Operativi T. Esercizi

Interazione tra Processi. Sistemi Operativi T AA

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

Il Modello a scambio di messaggi

Gestione dei processi

ACSO Programmazione di Sistema e Concorrente

PROGRAMMA DISCIPLINARE SVOLTO a. s / 2016

Processi. Laboratorio Software C. Brandolese

Principles of Concurrent Programming

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009

Controllo dei Processi. M. R. Guarracino - Primitive di Controllo dei Processi

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Processi in Linux. Stru/ura file eseguibili

Sommario. Processi e Programmi. Che cosa e un Processo? Lezione 5 Processi e Threads

Il supporto al sistema operativo

La Comunicazione tra Processi in Unix

Principles of Concurrent Programming

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

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

Il Modello a scambio di messaggi

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Il Concetto di Processo

Corso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI. Fabio Buttussi

CREAZIONE PROCESSI IN UNIX 20

Bootstrap. Bootstrap. Shutdown. Struttura di un SO. Elementi principali di un SO:

Chiamate di sistema. Pipe Flussi di I/O

Concorrenza e sincronizzazione

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3

Modello a scambio di messaggi

I Thread. un thread è uno stream di esecuzione del programma

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

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

Inter Process Communication. Laboratorio Software C. Brandolese

Corso di Reti di Calcolatori L-A

Parte 2: Gestione dei Processi. 4.1 Concetto di Processo Stato del processo

Il comando make. Per produrre un eseguibile da un programma C sono necessari tre passi compiuti dai seguenti moduli:

Le basi del linguaggio Java

THREAD. Programmazione in rete e laboratorio. Come si crea un thread

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

Transcript:

Gestione dei Processi Processo Un sistema operativo esegue una varietà di programmi: Sistemi batch lavori o jobs Sistemi in time-sharing programmi utente o tasks I termini job e process sono usati quasi intercambiabilmente Processo un programma in esecuzione; l esecuzione del programma deve procedere in modo sequenziale Un processo include: program counter stack sezione dati 1

Un processo in memoria Stato di un processo Quando un processo è in esecuzione cambia il proprio stato new: il processo è stato creato ready: il processo è in attesa di essere assegnato alla CPU running: istruzioni del processo sono in esecuzione waiting: il processo è in attesa di un evento terminated: il processo ha finito l esecuzione 2

Process Control Block (PCB) Informazioni associate al processo Stato del processo Program counter Contenuto registri CPU Informazioni per lo scheduling della CPU Informazioni per la gestione della memoria Informazioni di accounting Informazioni sullo stato dell I/O Passaggio CPU da Processo a Processo 3

Code per lo scheduling dei processi Job queue insieme di tutti i processi del sistema Ready queue insieme di tutti i processi che risiedono in memoria pronti e in attesa di essere eseguiti Device queues insieme di processi in attesa di un I/O su device Processi migrano tra le varie code Ready Queue e varie I/O Device Queues 4

Rappresentazione dello scheduling dei processi Schedulers Scheduler a lungo termine (o job scheduler) in un sistema batch seleziona quali processi tra quelli in attesa devono essere portati nella ready queue Scheduler a breve termine (o CPU scheduler) seleziona quale processo deve essere eseguito e allocato sulla CPU 5

Scheduling a medio termine Serve ad eliminare dalla memoria processi parzialmente eseguiti riducendo il grado di multiprogrammazione Schedulers (Continua) Scheduler a breve termine è invocato molto frequentemente (millisecondi) (deve essere veloce) Scheduler a lungo termine è invocato di rado (secondi, minuti) (può essere lento) Lo scheduler di lungo termine controlla il grado di multiprogrammazione I processi possono essere: A prevalenza di I/O (I/O-bound) passa più tempo a fare I/O che computazioni A prevalenza di CPU (CPU-bound) spende più tempo a fare computazioni 6

Cambio di contesto Quando la CPU viene assegnata ad un altro processo, il sistema deve salvare lo stato del processo e caricare lo stato del nuovo processo (context-switch) Il cambio di contesto comporta un calo delle prestazioni; il sistema non fa nessun lavoro utile alla computazione mentre effettua il cambio di contesto Il tempo impiegato dipende dal supporto hardware Creazione dei processi Processo genitore (parent) crea processi figli (children), che a loro volta creano altri processi, formando un albero di processi (process tree) Condivisione delle risorse (es. file aperti), si hanno 3 possibilità: Processo genitore e processi figli condividono tutte le risorse I processi figli condividono con i genitori alcune risorse Processi genitori e figli non condividono nessuna risorsa Esecuzione, si hanno 2 possibilità: Processo genitore e figli sono eseguiti in concorrenza Processo genitore aspetta fino alla terminazione dei processi figli 7

Creazione dei processi (Continua) Spazio indirizzi (memoria), due possibilità: Processo figlio ha un duplicato del processo padre Processo figlio creato con un programma caricato dentro UNIX: La chiamata di sistema fork crea un nuovo processo duplicato del padre, l unica cosa che cambia tra padre e figlio è il valore ritornato da fork: padre ritorna id del processo figlio nel figlio ritorna 0 La chiamata di sistema exec viene usata dopo una fork per sostituire lo spazio di memoria con quello di un nuovo programma Creazione dei processi UNIX 8

Programma C che crea un processo separato #include <stdio.h> #include <unistd.h> #include <wait.h> int main() { pid_t pid; /* process id */ /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); else { /* parent process */ /* parent will wait for the child to complete */ wait (NULL); printf ("Child Complete"); exit(0); Un albero di processi su Solaris 9

Terminazione dei processi Un processo esegue la sua ultima istruzione e chiede al sistema di terminarsi (exit) Fornisce il valore risultato al processo padre che lo riceve dalla wait Le risorse del processo sono rilasciate dal sistema operativo Un processo genitore può terminare l esecuzione dei processi figli (abort) Se il compito assegnato al figlio non è più richiesto Se il processo padre termina: Alcuni sistemi operativi non permettono ai figli di continuare se il processo padre termina Tutti i figli sono terminati terminazione a cascata Altri sistemi operativi assegnano i figli al processo iniziale Processo Zombie: un processo figlio terminato ma che ha ancora pid e PCB per poter dare risultato al processo padre tramite wait() Unix/Linux Altre funzioni disponibili: getpid() ritorna l'identificatore del processo attualmente in esecuzione getppid() ritorna l'dentificatore del processo padre execv(char* path, char*[] args) execve(char* path, char*[] args, char*[] env); 10

Gestione processi in Java Il metodo exec della classe RunTime permette di eseguire un processo. Esempio (su Windows): Process p = RunTime.getRunTime().exec("notepad.exe"); System.out.println("attendo che finisca..."); p.waitfor(); // attende che il processo generato finisca System.out.println("finito!"); Gestione processi in Java Tramite l oggetto Process si può accedere agli stream di input/output del processo in esecuzione p.getinputstream() //stream per accedere all output del processo p.getoutputstream() //stream per fornire input al processo p.geterrorstream() //stream per accedere all'stderror del processo Inoltre si può terminare il processo tramite metodo destroy p.destroy() 11

Esempio class TestProcess1 { static public void main(string[] args) { try { Process p = Runtime.getRuntime().exec("notepad.exe"); System.out.println("attendo 5 sec..."); Thread.sleep(5*1000); //aspetta 5 secondi p.destroy(); catch(ioexception e) { e.printstacktrace(); catch(interruptedexception e) { e.printstacktrace(); class TestProcess2 { static public void main(string[] args) { try { Esempio Process p = Runtime.getRuntime().exec("cmd /c dir"); InputStream is = p.getinputstream(); //stream per prendere output comando dir BufferedReader br = new BufferedReader(new InputStreamReader(is,"Cp850")); String line; while((line = br.readline())!= null) System.out.println(":> "+line); p.waitfor(); Stampa le righe prodotte in uscita dal comado dir Esegue comado dir da riga di comando (cmd.exe) catch (IOException InterruptedException ex) { ex.printstacktrace(); Codifica caratteri accentati usata da windows 12

Processi Cooperativi Processo indipendete un processo non viene influenzato e non influenza l esecuzione di altri processi Processo cooperativo un processo che può influenzare e può essere influenzato da altri processi Vantaggi di processi cooperativi Condivisione di informazioni Velocizzazione delle elaborazioni Modularità Convenienza InterProcess Communication (IPC) Meccanismi usati dai processi per comunicare e sincronizzare le loro azioni Due modelli principali per lo scambio di informazioni tra processi: Memoria condivisa viene creata una zona di memoria condivisa tra due o più processi Scambio di messaggi I moderni sistemi operativi spesso forniscono entrambe le modalità. Memoria condivisa, più efficiente, usata per scambiare grandi quantità di dati Scambio di messaggi, meno efficienti, utili per sincronizzare processi 13

Modelli di comunicazione InterProcess Communication (IPC) IPC fornisce due operazioni di base: send(messaggio) messaggio a grandezza fissa o variabile receive(messaggio) Se i processi P e Q vogliono comunicare, devono: Stabilire un canale di comunicazione tra loro Scambiare messaggi tramite send/receive Implementazione del canale di comunicazione: Livello fisico (es. memoria condivisa, hardware bus) Livello logico (es. proprietà logiche) 14

Comunicazione diretta I processi devono nominarsi esplicitamente: send (P, message) invia messaggio al processo P receive(q, message) riceve un messaggio dal processo Q Proprietà logiche del canale di comunicazione Canale stabilito automaticamente Un collegamento viene stabilito tra due processi comunicanti Tra due coppie di processi esiste esattamente un collegamento Il collegamento può essere unidirezionale, ma di solito è bidirezionale Comunicazione indiretta Messaggi sono diretti e ricevuti da una porta o mailbox Una porta ha un id univoco I processi possono comunicare solo se condividono una porta Proprietà del collegamento Collegamento stabilito solo se i processi condividono una porta in comune Un collegamento può essere associato a più processi Ogni coppia di processi può condividere molti collegamenti Collegamento può essere unidirezionale o bidirezionale 15

Comunicazione indiretta Operazioni Creare una nuova porta Inviare e ricevere messaggi tramite una porta Distruggere una porta Le primitive definite sono del tipo: send(a, message) invia un messaggio alla porta A receive(a, message) riceve un messaggio dalla porta A Comunicazione indiretta Condivisione di una porta P 1, P 2, e P 3 condividono la porta A P 1, invia; P 2 and P 3 ricevono Chi prende il messaggio? Possibili soluzioni Permettere che una porta possa essere associata al più a due processi Permettere che solo un processo alla volta possa eseguire la receive su una porta Permettere al sistema di decidere arbitrariamente a quale processo inviare il dato, al processo inviante viene notificato quale processo ha ricevuto il messaggio. 16

Sincronizzazione L invio/ricezione di messaggi può essere bloccante o non bloccante Bloccante è considerato sincrono Invio bloccante: il processo viene bloccato fino a che il messaggio non viene ricevuto Ricezione bloccante: il processo viene bloccato fino a che un messaggio è disponibile Non bloccante è considerato asincrono Invio non bloccante: il processo invia il messaggio e continua Ricezione non bloccante: il processo riceve un messaggio valido o un messaggio nullo Code di messaggi Coda di messaggi associata al collegamento: 1. Capacità zero 0 messaggi Processo inviante deve aspettare il ricevente (rendezvous) 2. Capacità limitata lunghezza finita di n messaggi Processo inviante deve aspettare se la coda è piena 3. Capacità illimitata lunghezza infinita Processo inviante non aspetta mai 17