Processi.

Slides:



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

STRUTTURA DEL SISTEMA OPERATIVO
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.
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
Massa Laura Mela Enrica
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.
Time Sharing Il termine “Time Sharing” proviene dall'inglese e significa letteralmente “partizione di tempo”. Questa è una tecnica sviluppatasi negli.
1 System Call per Comunicazione tra Processi Pipe.
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.
I processi Concetto di processo Scheduling dei processi
Realizzazione del file system
Interfaccia 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
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
Struttura dei sistemi operativi (panoramica)
I Thread.
I Processi.
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Linguaggi di programmazione
1 Gestione del processore Il modello a processi sequenziali.
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
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.
File system distribuito transazionale con replicazione
Sincronizzazione dei 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
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.
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.
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Informatica Generale Marzia Buscemi
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:
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Il Sistema Operativo Processi e Risorse
Transcript della presentazione:

Processi

Outline Concetto di processo Stato di un processo Scheduling dei processi Cambio di contesto Operazioni sui processi Comunicazioni tra processi Memoria condivisa Scambio di messaggi Comunicazione fra processi remoti

Outline Concetto di processo Stato di un processo Scheduling dei processi Cambio di contesto Operazioni sui processi Comunicazioni tra processi Memoria condivisa Scambio di messaggi Comunicazione fra processi remoti

Definizione di processo - 1 Un SO esegue programmi di varia natura: Sistemi batch: job Sistemi time-sharing: processi utente o task Normalmente si utilizzano i termini job o processo in maniera Intercambiabile Processo è un programma in esecuzione L’esecuzione di un processo deve avvenire in modo sequenziale I programmi sono passivi, i processi attivi I programmi diventano processi quando il loro file eseguibile viene caricato in memoria

Definizione di processo - 2 Un processo include: Una sezione di testo (il codice del programma da eseguire) Una sezione dati (variabili globali) Uno heap (letteralmente mucchio, grande quantità - memoria dinamicamente allocata durante l’esecuzione del task) Lo stack (dati temporanei -parametri per i sottoprogrammi, indirizzi di rientro - e variabili locali) Il program counter Il contenuto dei registri della CPU

Stato di un processo Mentre viene eseguito, un processo è soggetto a transizioni di stato, definite in parte dall’attività corrente del processo ed in parte da eventi esterni, asincroni rispetto alla sua esecuzione: Nuovo (new): Il processo è creato Esecuzione (running): Le istruzioni di un processo sono eseguite Attesa (waiting): Il processo attente che si verifichi qualche evento Pronto (ready): Il processo attende che sia assegnato ad un processore Terminato (terminated): Il processo ha terminato la sua esecuzione

Diagramma di transizione degli stati - 1 Transizione ammesso Lo scheduler a lungo/medio termine ammette il nuovo processo alla contesa per la CPU Transizione dispatch Il dispatcher in seguito al blocco del processo in esecuzione sceglie il processo fra tutti quelli, per essere eseguito Transizione interruzione (o revoca o pre rilascio) …nello scheduling a priorità, avviene quando arriva un processo con priorità maggiore …nei sistemi a partizione di tempo, avviene quando il quanto di tempo è esaurito …avviene al verificarsi di un interrupt esterno

Diagramma di transizione degli stati - 2 Transizione attesa di I/O Richiesta servizio di i/O o attesa di evento Transizione completamento di I/O Servizio completato Transizione uscita Terminazione normale Terminazione anomala quando uso scorretto risorse (limiti memoria)

Blocco di controllo dei processi (PCB) Informazione associata ad ogni processo che contiene: Stato del processo Nome (numero del processo) Contesto del processo Contatore di programma Registri di CPU Informazioni sulla gestione della memoria Informazioni di contabilizzazione delle risorse Tempo di utilizzo della CPU, limiti di tempo Informazioni sullo stato dell’I/O File aperti, dispositivi I/O assegnati Memorizzata in un’area di memoria accessibile solo al SO

Commutazione della CPU fra processi

Outline Concetto di processo Stato di un processo Scheduling dei processi Cambio di contesto Operazioni sui processi Comunicazioni tra processi Memoria condivisa Scambio di messaggi Comunicazione fra processi remoti

Scheduling: code di processi In un sistema multi-programmato più processi possono essere eseguiti contemporaneamente per massimizzare l’utilizzo della CPU Lo scheduler dei processi ha il compito di selezionare il processo da mandare in esecuzione Code: Coda dei job: l’insieme di tutti i processi presenti nel sistema Ready queue (coda dei processi pronti): l’insieme di tutti i processi che si trovano in memoria e pronti per essere mandati in esecuzione Coda ai dispositivi: l’insieme dei processi in attesa dell’I/O da un dispositivo Durante la sua vita un processo migra nelle diverse code

Ready queue e code ai dispositivi di I/O

Diagramma di accodamento

Scheduler Gli scheduler si dividono generalmente in due tipi: Scheduler a lungo termine (job scheduler) Seleziona quale processo deve essere prelevato dalla memoria di massa ed inserito nella coda dei processi pronti Scheduler della CPU (CPU scheduler) Seleziona quale è il prossimo processo da mandare in esecuzione sulla CPU Lo scheduler della CPU è invocato molto più frequentemente, ad esempio una volta ogni 100 millisecondi Deve essere molto veloce altrimenti si sprecano cicli di CPU Lo scheduler a lungo termine è invocato meno frequentemente, ad esempio ogni secondo o minuto Controlla il grado di multiprogrammazione ovvero il numero di processi presenti in memoria I processi possono essere descritti come: Processi I/O bound Il tempo è speso in prevalenza in attesa di I/O da un dispositivo Processi CPU bound Il tempo è speso in prevalenza in computazione e quindi sulla CPU Uno scheduler a medio termine è impiegato per eliminare momentaneamente processi dalla memoria per ridurre il grado di multiprogrammazione Il meccanismo è chiamato avvicendamento dei processi in memoria (swapping) Il processo viene rimosso dalla memoria per poi essere ricaricato in memoria (scheduler a lungo termine)

Cambio di contesto: context switch Il cambio di contesto (context switch) è il momento in cui la CPU passa all’esecuzione di un altro processo Il sistema deve salvare lo stato del processo (rappresentato dal suo PCB) corrente e caricare lo stato del prossimo processo Salva e carica i PCB Il cambio di contesto deve avvenire velocemente perché è pura fase di overhead Ovvero il sistema non fa nulla di utile in quel momento 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

Outline Concetto di processo Stato di un processo Scheduling dei processi Cambio di contesto Operazioni sui processi Comunicazioni tra processi Memoria condivisa Scambio di messaggi Comunicazione fra processi remoti

Creazione di processi La creazione dei processi inizia da un processo padre che crea dei processi figli che a loro volta creano altri processi formando un albero di processi Risorse: Padre e figlio condividono tutte le risorse Il figlio condivide solo un sottoinsieme delle risorse Padre e figlio non condividono risorse Esecuzione: Padre e figlio sono eseguiti in maniera concorrente Il padre attende la fine del figlio Lo spazio di indirizzamento: Il figlio è un duplicato esatto del padre Il figlio carica un programma nel suo spazio di memoria Generalmente un processo è identificato e gestito attraverso un identificativo di processo (process identifier - pid)

Un albero di processi

Creazione di processi in UNIX/Linux La system call fork() crea un nuovo processo Il processo figlio è una copia identica del padre Il figlio può utilizzare la exec() per sostituire lo spazio di memoria del processo originale con un nuovo programma

Terminazione di processi Un processo termina quando termina l’esecuzione della sua ultima istruzione ed il processo invoca la chiamata exit() che compie le azioni: Restituisce dati (output) al processo padre (attraverso la system call wait()) Dealloca le risorse del processo Un processo padre può terminare l’esecuzione di un processo figlio nei seguenti modi (abort()): Il figlio ha ecceduto nell’uso delle risorse allocate Il compito assegnato al figlio non è più richiesto Il processo padre termina e di conseguenza anche il figlio viene terminato In alcuni sistemi operativi questa operazione di terminazione di tutti i figli a partire dal padre è chiamata terminazione a cascata

Outline Concetto di processo Stato di un processo Scheduling dei processi Cambio di contesto Operazioni sui processi Comunicazioni tra processi Memoria condivisa Scambio di messaggi Comunicazione fra processi remoti

Comunicazione fra processi I processi di un Sistema Operativo possono essere Indipendenti Ogni processo non può influire ne subire l’influenza di un altro processo Cooperanti Un processo può influire o essere influenzato dall’esecuzione di un altro processo La presenza o meno di dati condivisi determina univocamente la natura del processo Vantaggi della cooperazione fra processi Condivisione di informazioni: ambienti con accesso concorrente a risorse condivise Accelerazione del calcolo: possibilità di elaborazione parallela (in presenza di più CPU) Modularità: funzioni distinte che accedono a dati condivisi La comunicazione fra processi viene chiamata IPC (interprocess communication)

Meccanismi per IPC Affinché i processi possano cooperare necessitano di un meccanismo per la comunicazione tra processi (IPC - interprocess communication) I meccanismi fondamentali sono: Memoria condivisa: massima efficienza nella comunicazione Richiede l’intervento del kernel solo per l’allocazione della memoria Gli accessi successivi sono gestiti (/arbitrati) dai processi Scambio di messaggi: utile per trasmettere piccole quantità di dati, nessuna conflittualità, utilizzo di system call

Memoria condivisa Un processo alloca parte del suo spazio di indirizzamento Costituisce la memoria condivisa I processi cooperanti annettono 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

Scambio di messaggi I processi comunicano fra loro senza far uso di variabili condivise Meccanismo per la comunicazione fra processi particolarmente utile in ambiente distribuito Il meccanismo di scambio dei messaggi prevede due primitive di comunicazione: send(message) receive(message) Se due processi P e Q vogliono comunicare Stabiliscono un canale di comunicazione tra di loro Inviano e ricevono messaggi tra loro tramite send/receive

Questioni implementative In fase di progettazione occorre decidere: 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? Esistono due tipologie realizzative: Comunicazione diretta Comunicazione indiretta

Comunicazione diretta Nella comunicazione diretta i processi devono conoscere la reciproca identità Le primitive sono definite nel seguente modo: send(P, message) – invia un messaggio al processo P receive(Q, message) – riceve un messaggio dal processo Q Le caratteristiche della comunicazione diretta sono: I collegamenti sono stabiliti automaticamente Un canale è associato esattamente a due processi Esiste un canale tra ogni coppia di processi Il link deve essere uni‐direzione ma solitamente è bi-direzionale

Comunicazione indiretta - 1 I messaggi vengono inviati/ricevuti da mailbox (porte) Ciascuna mailbox è identificata con un id unico I processi possono comunicare solamente se condividono una mailbox Proprietà dei canali di comunicazione: Tra una coppia di processi si stabilisce una comunicazione se e solo se condividono una mailbox 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

Comunicazione indiretta - 2 Le operazioni previste nella comunicazione indiretta sono: Crea una nuova porta Invia e ricevi un messaggio attraverso una porta Cancella una porta Le primitive di comunicazione sono definite nel seguente modo: send(A, message) – invia un messaggio alla porta A receive(A, message) – ricevi un messaggio dalla porta A

Comunicazione indiretta - 3 Un porta può essere condivisa tra più processi: P1, P2, ane P3 condividono la porta A P1 invia un messaggio P2 e P3 leggono il messaggio dalla porta A Chi dei due riceverà il messaggio? Il Sistema Operativo si incarica di scegliere un solo processo a cui consegnare il messaggio. La scelta sarà comunicata al Mittente Per evitare quanto sopra: Si permette un solo canale tra due processi Si permette a un solo processo alla volta di eseguire una operazioni di ricezione

Sincronizzazione La comunicazione tra processi può essere Sincrona (bloccante) Asincrona (non‐bloccante) Nella comunicazione sincrona Invio blocca il mittente finché il destinatario non ha ricevuto il messaggio Ricezione blocca il destinatario nell’attesa della ricezione del messaggio Nella comunicazione asincrona il processo invia il messaggio e riprende la sua esecuzione il destinatario legge un messaggio oppure un valore nullo

Code di messaggi (Buffering) I messaggi scambiati tra processi risiedono all’interno di un buffer di memoria Il buffer è normalmente una coda di messaggi La coda dei messaggi può essere implementata in diversi modi: Capacità zero – 0 messaggi Il mittente deve attendere che il destinatario prenda il messaggio (rendezvous) Capacità limitata – la coda ha lunghezza n Il mittente attende se la coda è piena Capacità illimitata ‐ la coda ha lunghezza infinita Il mittente non attende mai

Outline Concetto di processo Stato di un processo Scheduling dei processi Cambio di contesto Operazioni sui processi Comunicazioni tra processi Memoria condivisa Scambio di messaggi Comunicazione fra processi remoti

Comunicazioni nei sistemi distribuiti Socket Chiamate di procedure remote (Remote Procedure Call - RPC) Invocazione di metodi remoti (Remote Method Invocation - RMI, Java)

Socket Una socket è definita come l’estremità (end-point) di un canale di comunicazione Ogni socket è identificata da un indirizzo IP concatenato ad un numero di porta Esempio: la socket 161.25.19.8:1625 si riferisce alla porta 1625 sull’host 161.25.19.8 La comunicazione si stabilisce fra coppie di socket (una per ogni processo) 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 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

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 (Remote Procedure Calls) 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 In Java RMI L’invocazione di metodi remoti è una funzione del linguaggio Java simile alla RPC L’RMI permette ad un processo Java residente su una data JVM l’invocazione di un metodo su un oggetto remoto, dove per remoto si intende un oggetto residente su una diversa macchina virtuale