Sistemi Operativi. Des crizione e controllo dei proces s i



Documenti analoghi
Sistemi Operativi. Descrizione e controllo dei processi

Sistemi Operativi. Descrizione e controllo dei processi

Sistemi Operativi. Descrizione e controllo dei processi

Sistemi Operativi (modulo di Informatica II) I processi

Capitolo 3 -- Silberschatz

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

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

Gestione dei processi

GESTIONE DEI PROCESSI

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

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

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

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

Corso di Sistemi di Elaborazione delle informazioni

Programmazione multiprocesso

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Gestione dei processi

Il Concetto di Processo

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

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

Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI

Il Sistema Operativo

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

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

Il software. la parte contro cui si può solo imprecare. Il software

Processi in Linux. Igino Corona 20 Ottobre 2009

Il descrittore di processo (PCB)

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Mul&programmazione. Ges&one dei processi. Esecuzione parallela. MAC OSX Monitoraggio a9vità. Linux System monitor. Windows Task Manager. A.

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Processi e Sincronizzazione. Laboratorio Software C. Brandolese M. Grotto

Processi in Linux. Stru/ura file eseguibili

Approccio stratificato

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Lezione 5. Processi e thread. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi

Pronto Esecuzione Attesa Terminazione

Le system call: fork(), wait(), exit()

Il software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo. (continua) Gestione della memoria principale

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

Processi. Laboratorio Software C. Brandolese

CREAZIONE PROCESSI IN UNIX 20

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Scheduling della CPU Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica

SISTEMI&OPERATIVI& AA&2013&0&2014& Processi( in(linux( Giorgio&Giacinto&2013& Sistemi&Opera?vi&

Funzioni. Il modello console. Interfaccia in modalità console

Elementi di Architettura e Sistemi Operativi

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

2. I THREAD. 2.1 Introduzione

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Processo - generalità

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

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

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

Informatica: il sistema operativo

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Sistemi Operativi. Rappresentazione e gestione delle attività e della computazione: processi e thread

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

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

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Terza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Java Virtual Machine

Scheduling della CPU

System Calls per la Gestione dei Processi

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

I SISTEMI OPERATIVI (1)

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

Il Sistema Operativo (1)

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica. SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

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

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

TITLE Sistemi Operativi 1

Sistemi operativi. Esempi di sistemi operativi

Infrastrutture Software

IL SISTEMA OPERATIVO

I THREAD O PROCESSI LEGGERI Generalità

Introduzione ai sistemi operativi

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

IPC System V. Code di messaggi

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

Sistemi Operativi Kernel

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

File system II. Sistemi Operativi Lez. 20

Il sistema operativo

Fondamenti di Informatica 2

Scheduling della CPU:

Realizzazione di una classe con un associazione

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Capitolo 3: Strutture dei sistemi operativi

I puntatori e l allocazione dinamica di memoria

Le command line di Java

Transcript:

Sistemi Operativi Des crizione e controllo dei proces s i

Servizi di un Sistema Operativo Permettere ad un utente di creare processi (lanciare programmi) Interallacciare l esecuzione di diversi processi, per massimizzare l uso del processore contemporaneamente fornire un tempo di risposta ragionevole Allocare risorse ai processi Permettere le comunicazioni fra processi Sistemi Operativi 2012/13 Processi 2

Processo È il concetto principale di ogni Sistema Operativo È una astrazione di un programma in esecuzione I moderni calcolatori eseguono più azioni contemporaneamente (eseguire un programma, leggere un file di dati, stampare ecc.) Multiprogrammazione: Pseudoparallelismo rapido cambiamento dell'operare della CPU tra vari programmi, mentre in parallelo lavorano le periferiche. Sistemi Operativi 2012/13 Processi 3

Processo a) Multiprogrammazione b) Modello concettuale c) Diagramma temporale Un program counter A B C Proces s switch A 4 program counter B C D D C B A D (a) (b) Tempo (c) Sistemi Operativi 2012/13 Processi 4

Il modello del processo In questo modello tutto il software eseguibile su un calcolatore (eventualmente compreso il sistema operativo) è organizzato in un certo numero di Processi Sequenziali ( o processi) La durata di ogni computazione di un processo non è stabilita a priori, non è uniforme e non è identica ad ogni esecuzione: i processi non devono essere programmati con assunzioni a priori rispetto al tempo Sistemi Operativi 2012/13 Processi 5

Stati di un processo Nuovo 3 Terminato Pronto Esecuzione 4 2 Bloccato 1 Sistemi Operativi 2012/13 Processi 6

Stati di un processo 1. Quando un processo in esecuzione chiede un servizio di I/O al sistema operativo si blocca in attesa del risultato 2. Al termine del time slice il controllo torna al S.O.; lo scheduler decide a chi affidare la CPU 3. Uno dei processi in attesa ottiene la CPU 4. Quando un processo ha completato le operazioni di I/O viene rimesso dal S.O. nella coda dei processi in attesa Sistemi Operativi 2012/13 Processi 7

Context Switch Processo P 0 Sistema Operativo Processo P 1 In esecuzione Interrupt o chiamata di sistema Salva stato in PCB 0 idle Ricarica stato da PCB 1 idle Interrupt o chiamata di sistema In esecuzione Salva stato in PCB 1 idle Ricarica stato da PCB 0 In esecuzione Sistemi Operativi 2012/13 Processi 8

Diagramma delle code Sistemi Operativi 2012/13 Processi 9

Implementazione dei processi Per implementare il Modello del Processo, il SO ha una tabella (array di strutture) Tabella dei processi un entry (PCB Process Control Block) per ogni processo, per ogni entry: stato del processo program counter stack pointer allocazione della memoria stato dei suoi file aperti informazioni sullo scheduling informazioni circa i salvataggi necessari per il mantenimento della consistenza I campi nella tabella riguardano la gestione dei processi, la gestione della memoria e la gestione del file system Sistemi Operativi 2012/13 Processi 10

Creazione di processi Esecuzione di un nuovo job batch Collegamento di un nuovo utente Creazione di un servizio (esempio: stampa) Creazione di un processo da parte di un altro processo Sistemi Operativi 2012/13 Processi 11

Creazione di processi Il processo padre crea processi figli, che a loro volta possono creare altri processi Condivisione di risorse Padre e figli condividono tutte le risorse I figli condividono un sottoinsieme delle risorse del padre Padre e figli non condividono alcuna risorsa Esecuzione Padre e figli sono in esecuzione in modo concorrente Il padre attende che i figli terminino (MS-DOS) Spazio degli indirizzi Il figlio è un duplicato del padre Il figlio è un nuovo programma Sistemi Operativi 2012/13 Processi 12

Creazione di un processo figlio Come si crea un processo figlio? In Unix, Posix con una chiamata di sistema fork. Duplica l'immagine del padre, creando un processo figlio identico: padre padre u-area dati stack fork() figlio u-area dati stack codice padre figlio codice Stesso ambiente di esecuzione del padre: u-area, program counter, file aperti, directory,, dati e stack Sistemi Operativi 2012/13 Processi 13

Memoria e processi Un processo UNIX è costituito da quattro parti principali che costituiscono la sua immagine u-area: dati relativi al processo di pertinenza del sistema operativo (tabella dei file, working directory,... ) dati: dati globali del processo stack: pila del processo codice: il codice eseguibile u-area dati stack codice stack Libero dati codice Sistemi Operativi 2012/13 Processi 14

Creazione di un processo figlio La fork restituisce il valore 0 al processo figlio, il pid del figlio al processo genitore. Il codice non modificabile viene condiviso tra genitore e figlio. Se si vuole modificare il codice, uso una exec: exec(pathname, argomenti) sostituisce l'immagine del chiamante con il file eseguibile pathname, e lo manda in esecuzione passandogli gli argomenti Sistemi Operativi 2012/13 Processi 15

Creazione di un processo figlio u-area dati stack codice exec() u-area dati stack codice L immagine in memoria viene sostituita da quella di un nuovo eseguibile Le informazioni relative al S.O. vengono conservate Sistemi Operativi 2012/13 Processi 16

Esempio UNIX #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { /* crea un nuovo processo duplicato del padre */ int pid = fork(); if (pid < 0) { /* la creazione è fallita */ fprintf(stderr, "Fork Failed\n"); exit(1); } else if (pid == 0) { /* processo figlio */ /* viene eseguito un nuovo programma */ execlp("/bin/ls", "ls", NULL); } else { /* processo padre */ /* il genitore attende che il figlio termini */ wait(null); printf("child Complete\n"); exit(0); } } Sistemi Operativi 2012/13 Processi 17

Albero dei processi di UNIX Un processo speciale (init) viene avviato al boot, questo processo legge un file di configurazione che avvia i terminali tutti i processi appartengono perciò ad un albero che ha init come radice (vedi comando pstree -p) Sistemi Operativi 2012/13 Processi 18

Terminazione di un processo Il processo ha eseguitola sua ultima istruzione (exit) Per mezzo di wait alcune informazioni possono passare al processo padre Le risorse del processo sono liberate dal sistema operativo Il processo padre può porre termine ad alcuni processi figli (abort) (condizioni di errore) Se il processo figlio ha richiesto troppe risorse Se il compito affidatogli non è più necessario Se il processo padre termina (un utente si scollega) Alcuni S.O. non permettono ai figli di sopravvivere al padre Tutti I figli sono fermati (terminazione a cascata) Sistemi Operativi 2012/13 Processi 19

Task manager Sistemi Operativi 2012/13 Processi 20

Top Sistemi Operativi 2012/13 Processi 21

Sostituzione di codice int execve( const char *pathname, char *const argv[], char *const envp[]); esegue il file di pathname specificato, passandogli gli argomenti argv, e l'environment envp #include <stdio.h> int main(int argc, char *argv[], char *envp[]) { for( ; *envp; envp++) printf("%s\n", *envp); return 0; } Sistemi Operativi 2012/13 Processi 22

La famiglia exec exec è in realtà una famiglia di primitive: int execl(const char *path, const char *argv0, ); int execle(const char *path, const char *argv0, /*, char * const *envp[] */); int execlp(const char *path, const char *argv0, ); int execlpe(const char *path, const char *argv0, /*, char * const *envp [] */);...l (list: i parametri sono una lista di argomenti della funzione, si aggiunge sempre NULL in coda)...e (environment)...p (path) fa riferimento alla variabile di shell $PATH (%PATH%) Sistemi Operativi 2012/13 Processi 23

La famiglia exec...v (vector: i parametri sono memorizzati in un vettore, con un elemento terminale NULL) : int execv(const char *path, char * const *argv[]); int execve(const char *path, char * const *argv[], char * const *envp[]); int execvp(const char *path, char * const *argv[]); int execvpe(const char *path, char * const *argv[], char * const *envp[]);...e (environment)...p (path) fa riferimento alla variabile di shell $PATH (%PATH%) Sistemi Operativi 2012/13 Processi 24

Class Runtime Method Summary Process Process Process Process Process Process exec(string command) Executes the specified string command in a separate process. exec(string[] cmdarray) Executes the specified command and arguments in a separate process. exec(string[] cmdarray, String[] envp) Executes the specified command and arguments in a separate process with the specified environment exec(string[] cmdarray, String[] envp, File dir) Executes the specified command and arguments in a separate process with the specified environment and working directory. exec(string cmd, String[] envp) Executes the specified string command in a separate process with the specified environment. exec(string command, String[] envp, File dir) Executes the specified string command in a separate process with the specified environment and working directory. Sistemi Operativi 2012/13 Processi 25

Esempio Java Creo un nuovo processo import java.io.*; public class TestExec { static public void main(string[] args) throws IOException, InterruptedException, IllegalThreadStateException { Leggo quanto viene prodotto dal processo Attendo che il processo termini } } java.lang.runtime rt = Runtime.getRuntime(); java.lang.process p = rt.exec("xcopy /?"); BufferedReader br = new BufferedReader( new InputStreamReader(p.getInputStream())); for(string s=null; (s=br.readline())!=null;) System.out.println(s); p.waitfor(); System.out.println(p.exitValue()); Stampo il valore di uscita del processo Sistemi Operativi 2012/13 Processi 26

Creazione di processi: la shell La shell generalmente NON fa parte del sistema operativo: è un interprete di comandi. Alla login, viene avviata una shell. Il terminale è il dispositivo di I/O. Inizia stampando il prompt. All'immissione di un comando, la shell crea un processo figlio che fa eseguire il comando. Esempi: date date > file sort <file1 > file2 cat file1 file2 file3 sort > /dev/lp0 cat file1 file2 file3 sort > /dev/lp0& Sistemi Operativi 2012/13 Processi 27

Modello semplificato di shell while (TRUE){ Read_command(command, parameters); if (fork()!=0) { waitpid(-1, &status, 0); } else { execve(command, parameters,null); } } Esempio: cp file1 file2 Il meccanismo è identico al passaggio di parametri da linea di comando. Il terzo parametro di execve è un puntatore all'environment, attraverso il quale si passano al processo figlio informazioni aggiuntive (esempio: directory di lavoro). Sistemi Operativi 2012/13 Processi 28