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.
Requisiti precedenti Contenuti Verifiche Bibliografia Maura Zini.
Gestione dei processi A. Ferrari.
Il Sistema Operativo.
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.
Strutture dei Sistemi Operativi
5.1 Sistemi operativi Scheduling della CPU Concetti di base Criteri di scheduling Algoritmi di scheduling Scheduling in sistemi con più processori Valutazione.
I processi Concetto di processo Scheduling dei processi
Sincronizzazione fra processi
Sincronizzazione di processi
Scheduling della CPU Concetti fondamentali Criteri di scheduling
Scheduling della CPU Concetti di base Criteri di scheduling
2 luglio 2006URM2 – ING- OOP0304 OL G. Cantone e A. Lomartire 1 Programmazione Orientata agli Oggetti Processi, task e thread Java (ed esempi) Università
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
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.
Corso di Informatica (Programmazione)
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.
Requisiti precedenti Contenuti Verifiche Bibliografia Maura Zini.
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
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,
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
Processi.
Threads.
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.
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Gestione del processore (Scheduler)
Processi e Thread Processi Thread
1 Processi e Thread Processi e thread in Windows 2000.
Gestione della Memoria
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
Informatica Generale Marzia Buscemi
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
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
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti Lezione n°9.
Transcript della presentazione:

Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi Sistemi Operativi

Concetto di processo Un sistema operativo esegue vari programmi: 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 di dati Sistemi Operativi

Stato del processo Mentre viene eseguito un processo cambia stato Nuovo (new): Il processo viene creato. In esecuzione (running): Le istruzioni vengono eseguite. In attesa (waiting): Il processo è in attesa per qualche evento che deve avvenire. Pronto (ready): Il processo è in attesa di essere assegnato ad un processore. Terminato (terminated): Il processo ha finito l’esecuzione. Sistemi Operativi

Process Control Block (PCB) Contiene le informazioni associate ad un processo. Stato del processo Program counter Registri della CPU Informazioni sullo scheduling della CPU Informazioni sulla gestione della memoria Informazioni di contabilizzazione delle risorse Informazioni sullo stato di I/O Sistemi Operativi

Switch della CPU da processo a processo Sistemi Operativi

Code per lo scheduling di processi Coda dei job – Insieme di tutti i processi presenti nel sistema. Coda dei processi pronti – Insieme di tutti i processi pronti ed in attesa di esecuzione, che risiedono i memoria. Code dei dispositivi – Insieme di processi in attesa per un dispositivo di I/O. I processi si “spostano” fra le varie code. Sistemi Operativi

Tipi di scheduler Scheduler a lungo termine (o scheduler dei job) – seleziona quali processi devono stare nella coda dei processi pronti. Scheduler a breve termine (o scheduler della CPU) – seleziona quali processi debbano essere eseguiti successivamente, ed alloca la CPU. Scheduler a medio termine (swapping) – rimozione dei processi dalla memoria (e dalla contesa per la CPU) e riduzione del grado di multiprogrammazione. Sistemi Operativi

Tipi di scheduler Lo scheduler a breve termine viene chiamato molto spesso (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 descritti come: Processo I/O-bound – impiega più tempo effettuando I/O rispetto al tempo impiegato per elaborazioni (in generale, si hanno molti burst di CPU di breve durata). Processo CPU-bound – impiega più tempo effettuando elaborazioni (in generale, si hanno pochi burst di CPU di lunga durata). Sistemi Operativi

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; il sistema non lavora utilmente mentre cambia processo. Il tempo dipende dal supporto hardware. Sistemi Operativi

Creazione di processi Il processo padre crea processi figli che, a loro volta, creano altri processi, formando un albero di processi. Condivisione di risorse (possibilità) Il padre e il figlio condividono tutte le risorse. Il figlio condivide un sottoinsieme delle risorse del padre. Il padre e il figlio non condividono risorse. Esecuzione Il padre e il figlio vengono eseguiti concorrentemente. Il padre attende fino al termine del processo figlio. Spazio degli indirizzi Il processo figlio è un duplicato del processo padre. Nel processo figlio è stato caricato un programma. Esempio UNIX: la chiamata fork crea un nuovo processo, la chiamata execve viene impiegata dopo una fork per rimpiazzare lo spazio di memoria del processo con un nuovo programma. Sistemi Operativi

Un albero di processi in un tipico sistema UNIX Sistemi Operativi

Terminazione di un processo 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 dei dati (output) al processo padre (wait). Le risorse del processo vengono liberate. Un padre può terminare l’esecuzione di processi figli (abort) per diversi motivi: 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 figlio di continuare se suo padre è terminato. Questo fenomeno è detto terminazione a cascata e dipende dal SO. Sistemi Operativi

Processi cooperanti Un processo è indipendente se non può influire su altri processi nel sistema o esserne influenzato. Processi cooperanti possono influire su altri processi o esserne influenzati Vantaggi della cooperazione fra processi Condivisione di informazioni Accelerazione del calcolo Modularità Convenienza Sistemi Operativi

Problema produttore–consumatore E’ 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. Sistemi Operativi

Soluzione con buffer limitato e memoria condivisa Dati condivisi var n; type item = … ; var buffer: array [0..n–1] of item; in, out: 0..n–1; Processo produttore repeat … produce un elemento in nextp while in+1 mod n = out do no-op; buffer [in] := nextp; in := in+1 mod n; until false; Sistemi Operativi

Soluzione con buffer limitato Processo consumatore repeat while in = out do no-op; nextc := buffer [out]; out := out+1 mod n; … consuma l’elemento in nextc until false; La soluzione è corretta, ma lo schema permette di avere al massimo n -1 elementi contemporaneamente contenuti nel buffer. Sistemi Operativi

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: sezioni di codice sezioni dati risorse del sistema operativo L’insieme dei tread e dell’ambiente da essi condiviso è chiamato task. Un processo tradizionale, o heavyweight corrisponde ad un task con un solo thread Sistemi Operativi

Thread In un task con più thread, mentre un thread è blocccato e in attesa, un secondo thread nello stesso task può essere in esecuzione. La cooperazione di più thread nello steso job fornisce un più grande throughput e prestazioni migliorate. Applicazioni che richiedono la condivisione di un buffer comune (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 di kernel (OS/2). Thread a livello di utente: supportato sopra al kernel, per mezzo di chiamate di libreria a livello utente. Approcci ibridi implementano thread sia a livello di kernel che a livello utente (Solaris 2). Sistemi Operativi

Interprocess Communication (IPC) Meccanismo per la comunicazione e sincronizzazione fra processi. Sistema di messaggi – i processi comunicano fra di loro senza far uso di variabili condivise. IPC consente due operazioni: send(messaggio) – la dimensione del messaggio può essere fissa o variabile receive(messaggio) Se P e Q vogliono comunicare, hanno bisogno di: stabilire un canale di comunicazione fra di loro scambiare messaggi per mezzo di send e receive Implementazione del canale di comunicazione fisica (es. memoria condivisa, bus hardware) logica (es. proprietà logiche) Sistemi Operativi

Informazioni di implementazione Come vengono stabiliti i canali (connessioni)? Si può assegnare un canale a più di due processi? Quanti canali possono esserci fra ciascuna coppia di processi comunicanti? Qual è la capacità di un canale? Dimensione del messaggio che può gestire un canale fissa o variabile? Canale monodirezionale o bi-direzionale? Sistemi Operativi

Comunicazione diretta I processi devono “nominare” esplicitamente i loro interlocutori: 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. Un canale è associato esattamente a due processi. Tra ogni coppia di processi comunicanti esiste esattamente un canale. Il canale può essere unidirezionale, ma usualmente è bidirezionale. Sistemi Operativi

Comunicazione indiretta I messaggi vengono inviati a delle mailbox (indicate anche come porte) e da esse ricevuti. Ciascuna mailbox è idendificata con un unico id. 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ù di un processo. Ogni coppia di processi può condividere più canali di comunicazione. I canali possono essere unidirezionali o bidirezionali. Operazioni creare una nuova mailbox inviare e ricevere messaggi attraverso la mailbox distruggere una mailbox Sistemi Operativi

Comunicazione indiretta Condivisione di mailbox P1, P2, e P3 condividono la mailbox A. P1, invia; P2 e P3 ricevono. Chi prende 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 sistema di selezionare arbitrariamente il ricevente. Il sistema può comunicare l’identità del ricevente al trasmittente. Sistemi Operativi

Buffering La coda dei messaggi legati 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: n messaggi. Il trasmittente deve attendere se il canale è pieno. 3. Capacità illimitata – lunghezza infinita. Il trasmittente non attende mai. Sistemi Operativi

Condizioni di eccezione Terminazione del processo Messaggi perduti Messaggi alterati Sistemi Operativi

Thread supportati sotto Solaris 2 Solaris 2 è una versione di UNIX con supporto per thread a livello kernel e utente, con multprocessing simmetrico, e scheduling in tempo reale. LWP – è ad un livello intermedio fra thread di utente e thread di kernel. Requisiti di risorse a seconda dei tipi di thread: Kernel thread: piccola struttura dati e uno stack; il cambiamento di thread non richiede di cambiare le informazioni di accesso alla memoria. Relativamente veloce. LWP: PCB con dati dei registri, informazioni di contabilizzazione e informazioni di memoria. Cambiamento fra LWP è relativamente lento. User–level thread: ha bisogno solamente dello stack e del program–counter; non essendo impiegato il kernel, è più veloce. Il kernel vede solo LWP che supportano thread a livello utente. Sistemi Operativi

Thread di Solaris 2 Sistemi Operativi