I processi Concetto di processo Scheduling dei processi

Slides:



Advertisements
Presentazioni simili
Scheduling (Schedulazione) Susanna Pelagatti – Università di Pisa
Advertisements

Meccanismi di IPC Problemi classici di IPC
CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
1 Introduzione ai calcolatori Parte II Software di base.
Introduzione Cosa è un Sistema Operativo? Una breve storia
Il Sistema Operativo Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per: gestire.
Gestione dei processi A. Ferrari.
Il Sistema Operativo.
File System Cos’è un File System File e Directory
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Gestione del processore
Gestione del processore
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Operating System Concepts
5.1 Sistemi operativi Scheduling della CPU Concetti di base Criteri di scheduling Algoritmi di scheduling Scheduling in sistemi con più processori Valutazione.
Strutture dei Sistemi Operativi
Silberschatz, Galvin and Gagne Operating System ConceptsIntroduzione Che cosè un Sistema Operativo? Sistemi batch semplici Sistemi batch multiprogrammati.
Realizzazione del file system
Sincronizzazione fra processi
Scheduling della CPU Concetti fondamentali Criteri di scheduling
Processi Concetto di processo Scheduling dei processi
Scheduling della CPU Concetti di base Criteri di scheduling
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 10/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Processi e Thread.
Gestione dei processi Un sistema operativo multitasking è in grado di gestire più processi Un processo corrisponde ad un programma in esecuzione. Un programma.
Threads: Sistemi Operativi I Corso di Laurea in Ingegneria Informatica
Struttura dei sistemi operativi (panoramica)
I Thread.
I Processi.
1 Gestione del processore Il modello a processi sequenziali.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Sistemi Operativi SCHEDULING DELLA CPU.
Sistemi Operativi GESTIONE DEI PROCESSI.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Il sistema operativo Vito Perrone
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Interazione e sincronizzazione
Architettura degli elaboratori
La schedulazione dei processi
Seconda Università degli Studi di Napoli Facoltà di Economia Corso di Informatica Prof.ssa Zahora Pina.
1 Scheduling in Windows 2000 Un thread entra in modalità kernel e chiama lo scheduler quando: Si blocca su un oggetto di sincronizzazione (semaforo, mutex,
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
Sincronizzazione dei processi
Processi.
Threads.
Scheduling della CPU.
Sistema Operativo (Software di base)
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
I processi.
1 Gestione del Processore (Scheduling). 2 Scheduling dei processi È l’attività mediante la quale il sistema operativo effettua delle scelte tra i processi,
Gestione del Processore (Scheduling)
Il nucleo del Sistema Operativo
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Gestione del processore (Scheduler)
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Processi e Thread Processi Thread
1 Processi e Thread Scheduling (Schedulazione). 2 Scheduling Introduzione al problema dello Scheduling (1) Lo scheduler si occupa di decidere quale fra.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Informatica Generale Marzia Buscemi
I primi elaboratori Anni ‘50 Rigidamente sequenziali
Fabio Garufi - TAADF Tecniche Automatiche di Acquisizione Dati Sistemi operativi.
Fabio Garufi - TAADF Tecniche Automatiche di Acquisizione Dati Sistemi operativi.
INTRODUZIONE AI SISTEMI OPERATIVI. Introduzione Il software può essere diviso un due grandi classi: Il software può essere diviso un due grandi classi:
© 2016 Giorgio Porcu - Aggiornamennto 31/01/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Thread G IORGIO P.
Il Sistema Operativo Processi e Risorse
Transcript della presentazione:

I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione fra processi Operating System Concepts

Concetto di processo Un sistema operativo esegue programmi di varia natura: Sistemi batch: job Sistemi time–sharing: programmi utente o task I libri di testo impiegano indifferentemente il termine job o processo. Processo — un programma in esecuzione; l’esecuzione di un processo deve avvenire in modo sequenziale. Un processo include: il program counter lo stack una sezione dati Operating System Concepts

Diagramma degli stati di un processo Stato del processo Mentre viene eseguito un processo cambia stato: New (nuovo): Il processo viene creato. Running (in esecuzione): Le istruzioni vengono eseguite. Waiting (in attesa): Il processo è in attesa di un evento. Ready (pronto): Il processo è in attesa di essere assegnato ad un processore. Terminated (terminato): Il processo ha terminato la propria esecuzione. Diagramma degli stati di un processo Operating System Concepts

Process Control Block (PCB) Informazione associata a ciascun processo: Stato del processo Program counter Registri della CPU (accumulatori, indice, stack pointer) Informazioni sullo scheduling della CPU (priorità, puntatori alle code di scheduling) Informazioni sulla gestione della memoria (registri base e limite, tabella pagine/segmenti) Informazioni di contabilizzazione delle risorse (numero job/account, tempo di CPU) Informazioni sullo stato di I/O (lista dispositivi/file aperti) Operating System Concepts

Commutazione della CPU fra processi Operating System Concepts

Code per lo scheduling di processi Coda dei job — Insieme di tutti i processi presenti nel sistema. Ready queue (Coda dei processi pronti) — Insieme di tutti i processi pronti ed in attesa di esecuzione, che risiedono i memoria centrale. Code dei dispositivi — Insieme di processi in attesa per un dispositivo di I/O. I processi si “spostano” fra le varie code. Operating System Concepts

Ready queue e code ai dispositivi di I/O Operating System Concepts

Diagramma di accodamento per lo scheduling dei processi Ogni riquadro rappresenta una coda. Le ellissi racchiudono le risorse che servono le code, mentre le frecce indicano il flusso dei processi nel sistema. Operating System Concepts

Scheduling a medio termine Tipi di scheduler 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 (o scheduler della CPU) : seleziona quale processo debba essere eseguito successivamente, ed alloca la CPU. Scheduler a medio termine (swapper ): rimuove processi dalla memoria (e dalla contesa per la CPU) e riduce il grado di multiprogrammazione. Scheduling a medio termine Operating System Concepts

Tipi di scheduler Lo scheduler a breve termine viene chiamato molto spesso (100 millisecondi)  deve essere veloce. Lo scheduler a lungo termine viene chiamato raramente (secondi, minuti)  può essere lento (ma efficiente). Lo scheduler a lungo termine controlla il grado di multiprogrammazione. I processi possono essere classificati in: 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 : impiegano più tempo effettuando elaborazioni (in generale, si hanno pochi burst di CPU di lunga durata). Operating System Concepts

Context Switch Quando la CPU passa da un processo all’altro, il sistema deve salvare lo stato del vecchio processo e caricare lo stato precedentemente salvato per il nuovo processo. Il tempo di context–switch è un sovraccarico (overhead ); il sistema non lavora utilmente mentre cambia contesto. Il tempo di context–switch dipende dal supporto hardware (velocità di accesso alla memoria, numero di registri da copiare, istruzioni speciali, gruppi di registri multipli). Operating System Concepts

Creazione di processi Il processo padre crea processi figli che, a loro volta, creano altri processi, formando un albero di processi. Condivisione di risorse Il padre e il figlio condividono tutte le risorse. I figli condividono un sottoinsieme delle risorse del padre. Il padre e il figlio non condividono risorse. Esecuzione Il padre e i figli vengono eseguiti concorrentemente. 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. In UNIX: la system call fork crea un nuovo processo, la execve viene impiegata dopo una fork per sostituire lo spazio di memoria del processo originale con un nuovo programma. Operating System Concepts

Albero dei processi in un tipico sistema UNIX Operating System Concepts

Terminazione di processi Il processo esegue l’ultima 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: Può restituire dati (output) al processo padre (wait). Le risorse del processo vengono deallocate dal SO. Il padre può terminare l’esecuzione dei processi figli (abort) se… Il figlio ha ecceduto nell’uso di alcune risorse. Il compito assegnato al figlio non è più richiesto. Il padre termina. Il sistema operativo non consente ad un processo figlio di continuare l’esecuzione se il padre è terminato. Questo fenomeno è detto terminazione a cascata e viene avviato dal SO. Operating System Concepts

Processi cooperanti Un processo è indipendente se non può influire su altri processi nel sistema o subirne l’influsso. Processi cooperanti possono influire su 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 (in sistemi multiprocessore) Modularità Convenienza Operating System Concepts

Problema del produttore–consumatore È un paradigma classico per processi cooperanti. Il processo produttore produce informazioni che vengono consumate da un processo consumatore. Buffer illimitato: non vengono posti limiti pratici alla dimensione del buffer. Buffer limitato: si assume che la dimensione del buffer sia fissata. Esempio: Un programma di stampa produce caratteri che verranno consumati dal driver della stampante. Operating System Concepts

Soluzione con buffer limitato e memoria condivisa Dati condivisi #define BUFFER_SIZE 10 Typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; La soluzione ottenuta è corretta, ma consente l’utilizzo di soli BUFFER_SIZE–1 elementi. Operating System Concepts

Soluzione con buffer limitato e memoria condivisa item nextProduced; while (1) { while (((in + 1) % BUFFER_SIZE) == out) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; } Processo Produttore item nextConsumed; while (1) { while (in == out) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; } Processo Consumatore Operating System Concepts

Thread Un thread (o lightweight process, LWP) è l’unità di base di utilizzo della CPU e consiste di: Program counter Insieme dei registri Spazio dello stack Un thread condivide con i thread ad esso associati: Segmento di codice Segmento dati Risorse del sistema operativo L’insieme dei thread e dell’ambiente da essi condiviso è chiamato task. Un processo tradizionale, o heavyweight, corrisponde ad un task con un solo thread. Operating System Concepts

Processi a thread singolo e multithread Operating System Concepts

Thread In un task multithread, mentre un thread è blocccato in attesa, un secondo thread nello stesso task può essere in esecuzione. La cooperazione di più thread nello stesso job fornisce un maggior throughput. Applicazioni che richiedono la condivisione di un buffer (es. produttore–consumatore) traggono beneficio dall’impiego di thread. I thread forniscono un meccanismo che permette a processi sequenziali di effettuare chiamate di sistema bloccanti ottenendo allo stesso tempo un’esecuzione parallela. Alcuni sistemi supportano i thread a livello kernel (OS/2). Thread a livello utente: il lavoro di gestione dei thread viene effettuato dalle applicazioni ed il kernel non è conscio della loro presenza (Andrew). Approcci ibridi implementano thread sia a livello kernel che a livello utente (Solaris 2). Operating System Concepts

Thread a livello utente (ULT) Vantaggi: Il cambio di contesto fra thread non richiede privilegi in modalità kernel (risparmia il sovraccarico del doppio cambiamento di modalità). Lo scheduling può essere diverso per applicazioni diverse. Gli ULT (User Level Thread ) possono essere eseguiti su qualunque SO senza cambiare il kernel sottostante. La libreria dei thread è un insieme di utilità a livello di applicazione. Svantaggi: In caso di system call bloccanti, quando un thread esegue una chiamata di sistema, viene bloccato tutto il processo. Un’applicazione multithread non può sfruttare il multiprocessing: in un dato istante un solo thread per processo è in esecuzione. Operating System Concepts

Thread a livello kernel (KLT) Il kernel effettua lo scheduling a livello di thread: Può schedulare simultaneamente più thread; Se un thread di un processo è bloccato il kernel può schedulare un altro thread dello stesso processo. Svantaggio dell’approccio KLT (Kernel Level Thread ): Il trasferimento del controllo fra thread dello stesso processo richiede il passaggio in modalità kernel: l’aumento di prestazioni è molto meno rilevante rispetto all’approccio ULT. Operating System Concepts

Un esempio di KLT: LINUX LINUX si riferisce ai thread chiamandoli task. La creazione di thread in LINUX avviene tramite la system call clone. La system call clone permette al task figlio la condivisione dello spazio degli indirizzi del task padre (il processo originario). Operating System Concepts

Comunicazione tra processi (IPC) IPC, Inter–Process Communication: Meccanismo per la comunicazione e la sincronizzazione fra processi. Sistema di messaggi — i processi comunicano fra loro senza far uso di variabili condivise. La funzionalità IPC consente due operazioni: send(messaggio) — la dimensione del messaggio può essere fissa o variabile; receive(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 hardware); logica (proprietà logiche). Operating System Concepts

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? Stabilire canali monodirezionali o bidirezionali? Operating System Concepts

Comunicazione diretta I processi devono “nominare” esplicitamente i loro interlocutori (modalità simmetrica): send (P, messaggio) — invia un messaggio al processo P 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. Operating System Concepts

Comunicazione indiretta I messaggi vengono inviati/ricevuti da mailbox (porte). Ciascuna mailbox è idendificata 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. Operazioni: creare una nuova mailbox Inviare/ricevere messaggi attraverso mailbox distruggere una mailbox Operating System Concepts

Comunicazione indiretta Primitive di comunicazione: send(A, messaggio) — invia un messaggio alla mailbox A receive(A, messaggio) — riceve un messaggio dalla mailbox A Condivisione di mailbox P1, P2, e P3 condividono la mailbox A. P1, invia; P2 e P3 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 un’operazione di ricezione. Permettere al SO di selezionare arbitrariamente il ricevente. Il sistema comunica l’identità del ricevente al trasmittente. Operating System Concepts

Sincronizzazione Lo scambio di messaggi può essere sia bloccante che non–bloccante. In caso di scambio di messaggi bloccante la comunicazione è sincrona. In caso di scambio di messaggi non–bloccante la comunicazione è asincrona. Le primitive send e receive possono essere sia bloccanti che non–bloccanti. Operating System Concepts

Buffering La coda dei messaggi legata ad un canale può essere implementata in tre modi. 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 (rendezvous). 2. Capacità limitata — Lunghezza finita pari a n messaggi. Se il canale è pieno, il trasmittente deve attendere. 3. Capacità illimitata — Lunghezza infinita. Il trasmittente non attende mai. Operating System Concepts

Condizioni di eccezione Terminazione del processo: un processo trasmittente o ricevente può terminare prima che un messaggio sia stato elaborato  messaggi mai ricevuti, processi bloccati in attesa. Messaggi perduti: a causa di guasti sui canali di comunicazione; il SO o il processo trasmittente sono responsabili del rilevamento della condizione di eccezione e della ripetizione del messaggio. Messaggi alterati: a causa di disturbi sul canale di comunicazione; il messaggio deve essere ritrasmesso. Operating System Concepts