1 Gestione del processore Il modello a processi sequenziali.

Slides:



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

Meccanismi di IPC Problemi classici di IPC
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
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.
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.
1 Semantica Operazionale di un frammento di Java: lo stato.
Gestione del processore
Gestione della Memoria
Gestione del processore
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
Sistemi Operativi - C Susanna Pelagatti
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Frontespizio Economia Monetaria Anno Accademico
Comandi ai dispositivi di I/O + Si usano due metodi per mandare informazioni a un dispositivo: –Istruzioni specifiche di I/O –I/O mappato in memoria (memory.
Operating System Concepts
Scheduling della CPU Concetti di base Criteri di scheduling
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
eliana minicozzi linguaggi1a.a lezione2
Input/Output.
Struttura dei sistemi operativi (panoramica)
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Università di Trieste Calcolatori Elettronici a.a Omero TuzziL01, Basi 1 Sommario: 1. Concetto di bit. 2. Indirizzi di memoria. 3. Ordinamento.
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
INPUT / OUTPUT. Connessione tra componenti CPU RAM DischiMonitor StampanteTastieraMouse BUS = Interfacce o Controller.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Architettura degli elaboratori
Architettura del calcolatore
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,
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Threads.
Il Software Programmare direttamente la macchina hardware è molto difficile: l’utente dovrebbe conoscere l’organizzazione fisica del computer e il suo.
Gestione della Memoria
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.
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Architettura di una CPU
Il nucleo del Sistema Operativo
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Gestione del processore (Scheduler)
Gestione dei dispositivi di I/O:
Sistemi Elettronici Programmabili
Introduzione Cos’è un sistema operativo ?. Hardware Sistema Operativo Applicazioni È il livello di SW con cui interagisce l’utente e comprende programmi.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
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
L’esecuzione dei programmi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
Cos’è un sistema operativo ?
1 System Call ancora Vediamo passo passo come funziona una SC.
Informatica Generale Marzia Buscemi
INTRODUZIONE AI SISTEMI OPERATIVI. Introduzione Il software può essere diviso un due grandi classi: Il software può essere diviso un due grandi classi:
Gli interrupt Richiesta di attenzione alla cpu. Viene generato un segnale detto di interrupt diretto alla cpu.
Il Sistema Operativo Processi e Risorse
Transcript della presentazione:

1 Gestione del processore Il modello a processi sequenziali

2 Nei computer attuali, ci sono molte attività attive contemporaneamente (sia di SO che di utente) –es : stampa in corso + Word + cd player … Programmare un insieme di attività che interagiscono in maniera del tutto incontrollata ed arbitraria è un compito proibitivo –es : scrivere un programma che tenga conto della possibilità di venire interrotto da altri dopo lesecuzione di ogni comando….

3 Il modello a processi sequenziali (2) Il modello a processi sequenziali : è un modello concettuale che permette di esprimere in modo semplice più attività contemporanee –ogni attività è incapsulata in un processo e viene programmata come se utilizzasse il calcolatore in modo esclusivo –linterazione fra processi avviene solo con linvocazione di un numero (limitato e fissato) di meccanismi di cooperazione (di IPC -- Inter Process Communication)

4 Il modello a processi sequenziali (3) Con questo modello tutto il software che gira su un calcolatore è organizzato come un insieme di processi sequenziali cooperanti –es : un comando richiesto alla shell provoca lattivazione di un processo che esegue il comando –es : ps voi fornisce informazioni sui processi attivi in un sistema Unix/Linux, sono decine!

5 Lo scheduler Lo scheduler (di basso livello) è la parte del SO che si preoccupa di ripartire il processore fra i processi in maniera trasparente –es : 3 processi P1, P2, P3, vengono mandati in esecuzione ciclicamente Quanto ms Eseguo P1Eseguo P2 Eseguo P3 Periferica clock Eseguo P1 Interruzione : lo scheduler riprende il controllo e decide chi eseguire nel quanto successivo tempo

6 Cosè un processo ? Un processo è un programma in esecuzione completo del suo stato (spazio di indirizzamento, registri, file aperti…) Come si crea un processo ? –Richiedendo al SO lesecuzione di una o più chiamate di sistema es : fork - exec in Unix es : CreateProcess in API Win32 Esempi di attivazione : –linvocazione di un comando, il doppio click su unicona, il lancio di un eseguibile … –inizializzazione del sistema

7 Terminazione di un processo Un processo termina : –Quando esegue una istruzione assembler di terminazione –Quando effettua una operazione illecita es. cerca di accedere alla memoria privata di altri processi –Quando cè un errore che non gli permette di proseguire (es. overflow, etc) In tutti questi casi il processore ricomincia automaticamente ad eseguire il sistema operativo ad un indirizzo prefissato

8 Interruzione momentanea di un processo Un processo in esecuzione può cedere il processore al SO nei due casi seguenti: –quando il processo stesso esegue una chiamata di sistema per richiedere un servizio da parte del SO –quando arriva una interruzione hw Esaminiamo in dettaglio i due casi

9 Gestione del processore Come un processo utente cede il controllo al SO: System call e interruzioni

10 Cosa sono le system call? Sono funzioni che permettono di invocare servizi di competenza del SO –es. scrittura di file, stampa su video … Sono disponibili in una libreria predefinita (tipicamente in C) Vengono invocate come normali funzioni –es. invocazione della chiamata di sistema read fornita da Unix/Linux per leggere i file read (fd, buffer, nbytes);

11 Cosa sono le system call? (2) La implementazione delle SC è però diversa da quella delle normali funzioni –sono scritte direttamente in assembler e utilizzano la istruzione TRAP –la TRAP permette di passare da stato utente a stato supervisore/kernel saltare ad un indirizzo predefinto allinterno del sistema operativo –il processo rimane in esecuzione (con accesso al suo spazio di indirizzamento) solo esegue una funzione del sistema operativo in stato kernel

12 Cosa sono le system call? (3) Ma esattamente cosa accade quando viene invocata una system call ? –Vediamo in dettaglio come funziona una chiamata a read (fd, buffer, nbytes);

13 Chiamata a read(fd, buffer, nbytes) Spazio kernel (sistema op.) Spazio utente DISPATCH System Call Handler Smistatore (dispatch) Gestore della chiamata di sistema Tabella di corrispondenza Codice della funzione di libreria read() Codice della chiamata a read() da parte del programma utente Incrementa SP (Stack Pointer) CALL read Push di fd Push di &buffer Push di nbyte RETURN (ritorno al programma chiamante) TRAP al kernel Metti il codice della read() nel registro 0 AddrMax

14 Spazio kernel (sistema op.) Spazio utente DISPATCH System Call Handler Codice della funzione di libreria read() Codice della chiamata a read() da parte del programma utente Incrementa SP (Stack Pointer) CALL read Push di fd Push di &buffer Push di nbyte RETURN (ritorno al programma chiamante) TRAP al kernel Metti il codice della read() nel registro 1,2,3 read(fd, buffer, nbytes) (2) Passi 1,2,3 : si ricopia il valore dei parametri sullo stack 0 AddrMax

15 Spazio kernel (sistema op.) Spazio utente DISPATCH System Call Handler Codice della funzione di libreria read() Codice della chiamata a read() da parte del programma utente Incrementa SP (Stack Pointer) CALL read Push di fd Push di &buffer Push di nbyte RETURN (ritorno al programma chiamante) TRAP al kernel Metti il codice della read() nel registro 4 read(fd, buffer, nbytes) (3) Passo 4 : chiamata di read() –salto alla prima istruzione di read() + push indirizzo di ritorno (X) sullo stack 0 AddrMax X

16 Spazio kernel (sistema op.) Spazio utente DISPATCH System Call Handler Codice della funzione di libreria read() Codice della chiamata a read() da parte del programma utente Incrementa SP (Stack Pointer) CALL read Push di fd Push di &buffer Push di nbyte RETURN (ritorno al programma chiamante) TRAP al kernel Metti il codice della read() nel registro 5 read(fd, buffer, nbytes) (4) Passo 5 : Inizia lesecuzione della read() : –caricamento del codice della system call in un registro fissato Rx 0 AddrMax X

17 Spazio kernel (sistema op.) Spazio utente DISPATCH System Call Handler Codice della funzione di libreria read() Codice della chiamata a read() da parte del programma utente Incrementa SP (Stack Pointer) CALL read Push di fd Push di &buffer Push di nbyte RETURN (ritorno al programma chiamante) TRAP al kernel Metti il codice della read() nel registro 6 read(fd, buffer, nbytes) (5) Passo 6 : Esecuzione TRAP –passaggio in kernel mode, disabilita le interruzioni, salva PC sullostack, salto al codice dello smistatore 0 AddrMax X Y

18 Spazio kernel (sistema op.) Spazio utente DISPATCH System Call Handler Codice della funzione di libreria read() Codice della chiamata a read() da parte del programma utente Incrementa SP (Stack Pointer) CALL read Push di fd Push di &buffer Push di nbyte RETURN (ritorno al programma chiamante) TRAP al kernel Metti il codice della read() nel registro 7-8 read(fd, buffer, nbytes) (6) Passo7-8: Seleziona della SC secondo il codice in Rx, salva stato processore nella tabella dei processi, assegna a SP indirizzo della kernel stack, riabilita interruzioni, esegui codice handler 0 AddrMax X Y

19 Spazio kernel (sistema op.) Spazio utente DISPATCH System Call Handler Codice della funzione di libreria read() Codice della chiamata a read() da parte del programma utente Incrementa SP (Stack Pointer) CALL read Push di fd Push di &buffer Push di nbyte RETURN (ritorno al programma chiamante) TRAP al kernel Metti il codice della read() nel registro 9 read(fd, buffer, nbytes) (7) Passo 9 : Ritorno alla funzione di libreria –disabilita interruzioni, ripristina user mode, ripristina stato processore, carica PC con lindirizzo dellistruzione successiva alla TRAP (Y), riabilita interruzioni 0 AddrMax X Y

20 Spazio kernel (sistema op.) Spazio utente DISPATCH System Call Handler Codice della funzione di libreria read() Codice della chiamata a read() da parte del programma utente Incrementa SP (Stack Pointer) CALL read Push di fd Push di &buffer Push di nbyte RETURN (ritorno al programma chiamante) TRAP al kernel Metti il codice della read() nel registro 10 read(fd, buffer, nbytes) (8) Passi : Ritorno al codice utente (nel modo usuale) –PC = X, SP viene incrementato per eliminare il frame della read() 0 AddrMax 11 X

21 Gestione del Processore Interruzioni

22 Classi di interruzioni Program –si è verificata una situazione anomala: overflow, underflow, tentativi di accesso ad aree di memoria al di fuori dello SI Timer –inviata regolarmente dal dispositivo hw I/O –segnala il completamento di una operazione –segnala varie situazioni anomale

23 Classi di interruzioni (2) Hardware failure –es. situazione erronea nella memoria Nella discussione seguente ci concentriamo sulle interruzioni da periferiche, le altre sono gestite allo stesso modo

24 Interruzione di un processo Come funzionano le interruzioni di I/O –ogni periferica può richiedere attenzione inviando un segnale di interruzione usando le linee di controllo del bus –alla fine dellesecuzione di ogni istruzione assembler il processore controlla la presenza di una interruzione –se linterruzione è presente il controllo passa ''automaticamente'' al sistema operativo vediamo più in dettaglio …..

25 Struttura di un semplice PC RAM (memoria centrale) Processore bus Linee dati, indirizzi e controllo Controller di I/O Controller di I/O Controller di I/O Controller di I/O schermo dischi mouse modem indirizzi Sequenza di parole (un array …) Valore da trasferire Dove trasferirlo Direzione di trasferimento, unità coinvolte Linee di interruzione PC PSW SP

26 Interruzioni (1) Esempio : La CPU richiede una operazione al controllore del disco CPU Interrupt controller Disk controller Disk drive 1

27 Interruzioni (2) Passo 2 : Quando il controllore ha finito : –causa uninterruzione asserendo una linea del bus che gli è stata assegnata CPU Interrupt controller Disk controller Disk drive 2

28 Interruzioni (3) Passo 3 : Se IC può gestire linterruzione : –imposta il segnale di interruzione per la CPU (2) –imposta sulle linee indirizzo del bus, un numero (X) che specifica il dispositivo di cui sta servendo linterruzione (1) CPU Interrupt controller Disk controller Disk drive (1) (2) X (numero del dispositivo)

29 Interruzioni (4) Passo 4 : Il processore interrompe il flusso di esecuzione corrente e manda in esecuzione il gestore delle interruzioni di tipo X, vediamo come... (a) CPU Interrupt controller Disk controller Disk drive Interrupt Handler Istruzione successiva Istruzione corrente X (numero del dispositivo) Vettore delle interruzioni

30 Interruzioni (4) Passo 4 : 4.1 (hw) si rileva il segnale di interruzione presente, il contenuto di PC/PSW viene salvato sulla pila, si passa in modo kernel, si disabilitano le interruzioni 4.2 (hw) lindirizzo del dispositivo (il valore X sul bus) viene usato come indice nel vettore delle interruzioni Interrupt Handler Istruzione successiva Istruzione corrente Vettore delle interruzioni X ind1 Il contenuto della posizione X del vettore delle interruzioni è lindirizzo della prima istruzione del gestore delle interruzioni di tipo X (ind1) e viene caricato nel PC.

31 Interruzioni (5) Passo 4 : 4.3 (sw) Il gestore prende il controllo e svolge le operazioni necessarie a) (assembler) il contenuto dei registri del processore viene salvato (in una struttura del SO riservata a quel processo: PCB o Tabella dei Processi (TP)) Interrupt Handler Istruzione successiva Istruzione corrente Vettore delle interruzioni

32 Interruzioni (6) Passo 4 : 4.3 (sw) Il gestore prende il controllo e svolge le operazioni necessarie b) (assembler) rimuove dallo Stack linformazione salvata dallhw e la salva sempre nella TP c) (assembler) salva il contenuto di SP in TP e setta SP in modo che punti a uno stack temporaneo nel kernel Interrupt Handler Istruzione successiva Istruzione corrente Vettore delle interruzioni

33 Interruzioni (7) Passo 4 : 4.3 (sw) Il gestore prende il controllo e svolge le operazioni necessarie d) (assembler) si riabilitano le interruzioni Interrupt Handler Istruzione successiva Istruzione corrente Vettore delle interruzioni

34 Interruzioni (7) Passo 4 : 4.3 (sw) Il gestore prende il controllo e svolge le operazioni necessarie d) (C) effettua il lavoro specifico del tipo di interruzione verificato, tipicamente : salva i dati del controller segnala il fatto un processo in attesa del verificarsi di quellevento es. sblocca il driver Interrupt Handler Istruzione successiva Istruzione corrente Vettore delle interruzioni e) (C) viene chiamato lo scheduler

35 Interruzioni (8) Passo 5 : 4.4 Quando il scheduler ha deciso quale processo mandare in esecuzione (di solito non quello interrotto) a) (assembler) viene ripristinato il valore dei registri generali, PC/PSW etc, si ritorna in modo utente. In pratica, si esegue listruzione successiva a quella interrotta Interrupt Handler Istruzione successiva Istruzione corrente Vettore delle interruzioni

36 Gestione del processore Stati di un processo Implementazione del modello a processi

37 Pronto (ready) Bloccato (blocked) In esecuzione (running) Il processore lo sta eseguendo Può proseguire ma è in attesa che lo scheduler gli assegni il processore È in attesa che venga terminata una richiesta effettuata (system call) Stati di un processo Come si passa da uno stato allaltro ?

38 Pronto Bloccato In esecuzione Stati di un processo (2) Lo scheduler ha deciso di mandare in esecuzione proprio questo processo

39 Pronto Bloccato In esecuzione Stati di un processo (3) Il processo ha eseguito una SC e il servizio non può essere completato

40 Pronto Bloccato In esecuzione Stati di un processo (4) Il servizio richiesto è stato completato –es : è arrivata una interruzione dal dispositivo,...

41 Pronto Bloccato In esecuzione Stati di un processo (5) Lo scheduler ha deciso di assegnare il processore ad un altro processo

42 Pronto Bloccato In esecuzione Stati di un processo (6) Le altre due transizioni tipicamente non hanno senso

43 Implementazione di processi (1) Le informazioni relative a tutti i processi attivi ad un dato istante sono mantenute nella Tabella dei processi: –un array di strutture (record) –una struttura per ogni processo terminologia : la singola struttura può essere denominata anche PCB, noi useremo la terminologia corrente Unix/Linux e chiameremo tabella dei processi anche la singola struttura

44 Implementazione di processi (2) La TP contiene tutte le informazioni sul processo diverse dal suo spazio di indirizzamento –valore PC, SP, PSW, registri generali significativo solo quando il processo non è in esecuzione –stato (pronto, bloccato …) –informazioni relative ai file che il processo sta utilizzando

45 Implementazione di processi (3) La TP contiene tutte le informazioni sul processo diverse dal suo spazio di indirizzamento (cont.) –informazioni relative alla RAM occupata dal processo es : valore dei registri base e limite … –altre informazioni dipendenti dal particolare SO es. quantità di tempo CPU utilizzato di recente (algoritmi di scheduling), informazioni legate a meccanismi di IPC (es. segnali Unix)

46 Implementazione di processi (4) Cambio di contesto (context switch) : è ciò che accade quando un processo passa in esecuzione –il processore deve caricare i propri registri interni con le informazioni relative al nuovo processo da mandare in esecuzione –lhw che realizza rilocazione e protezione deve essere aggiornato es : registri base e limite, i sistemi attuali usano meccanismi più sofisticati

47 Implementazione di processi (5) Cambio di contesto (context switch) : è ciò che accade quando un processo passa in esecuzione (cont.) –la cache deve essere invalidata e ricaricata con le informazioni relative al processo in esecuzione –varie tabelle e liste interne al SO devono essere aggiornate

48 Implementazione di processi (6) Il cambio di contesto è una operazione molto costosa! –Il costo in sistemi reali è dellordine del millisecondo! –Quindi lo scambio non può essere effettuato troppo spesso (20-200ms in sistemi reali Unix Linux)