1 System Call ancora Vediamo passo passo come funziona una SC.

Slides:



Advertisements
Presentazioni simili
Memoria Virtuale in Linux
Advertisements

CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
Introduzione Cosa è un Sistema Operativo? Una breve storia
Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Dalla scrittura all’esecuzione
Procedure In assembler.
Il Sistema Operativo.
Elaboratore e Sistemi Operativo
Massa Laura Mela Enrica
Gestione del processore
Gestione del processore
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
Sistemi Operativi - C Susanna Pelagatti
Domande di riepilogo sulla gestione del processore
Chiamate a Procedure. Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura.
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.
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
Threads: Sistemi Operativi I Corso di Laurea in Ingegneria Informatica
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Gestione delle subroutine
Struttura dei sistemi operativi (panoramica)
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
1 Gestione del processore Il modello a processi sequenziali.
memoria gestita staticamente:
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.
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
Esercizio 18 – Le eccezioni Creare un trap-handler che gestisca opportunamente le eccezioni 7 (Bus error durante accesso ad area dati/stack ) e 12 (overflow)
Architettura degli elaboratori
I vettore interruzioni
Sottoprogramma Un blocco di istruzioni, come ad esempio lanello di ritardo, può costituire un sottoprogramma (subroutine) a sé stante, richiamabile dal.
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VII Il compilatore e le sue opzioni Programmazione di Calcolatori: il compilatore e le sue.
Seconda Università degli Studi di Napoli Facoltà di Economia Corso di Informatica Prof.ssa Zahora Pina.
Passaggio di parametri per indirizzo
Introduzione al linguaggio assembly del microprocessore a parte
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
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.
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.
Allievi Elettrici - AA Le funzioni ricorsive in C
Programmazione Assembly
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Sistemi Elettronici Programmabili
1 Amministrazione dei processi nel sistema operativo Unix (Bach: the Design of the Unix Operating System (cap: 6, 7, 8)
1 Sommario degli argomenti  Sistemi operativi: DOS, Unix/Linux,Windows  Word processors: Word  Fogli elettronici: Excel  Reti: TCP/IP, Internet, ftp,
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Chiamate di sistema Introduzione Errori : perror() Chiamate che lavorano su file.
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
FUNZIONI: IL MODELLO A RUN-TIME 1) creazione di una nuova attivazione (istanza) del servitore 2) allocazione di memoria per i parametri e per le variabili.
Esercizio 14 – chiamata di una procedura Il codice deve: Passare due parametri alla procedura ‘salva’ Questa procedura deve salvare i due parametri nel.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
Esercizi.
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
Convenzioni chiamate a procedure Riassunto Pratico.
Cos’è un sistema operativo ?
Informatica Generale Marzia Buscemi
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (1) Supporto hardware alle procedure Passaggio.
Fabio Garufi - TAADF Tecniche Automatiche di Acquisizione Dati Sistemi operativi.
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (2) Convenzioni di uso dei registri Utilizzo.
© 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:

1 System Call ancora Vediamo passo passo come funziona una SC

2 Text Data Stack Area vuota Traduzione in assembler delle funzioni che compongono il programma Variabili globali Pila di FRAME, uno per ogni chiamata di funzione da cui non abbiamo ancora fatto ritorno Spazio di indirizzamento Come è organizzata la memoria accessibile ad un programma in esecuzione ?

3 Come funziona lo stack

4 Possibile allocazione del codice (parte testo) in RAM RAM CALL Fun1 main program Fun1 … CALL Fun2 … Fun2 RETURN

5 Possibile allocazione dello stack RAM CALL Fun1 main Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP

6 Situazione iniziale processore RAM CALL Fun1 main F1 … CALL Fun2 … F2 RETURN indirizzi Contenuto iniziale SP 4000 PC SP RAM indirizzi Proc

7 Sto per eseguire: CALL RAM CALL Fun1 … CALL Fun2 … RETURN indirizzi Contenuto iniziale SP 4101 PC SP RAM indirizzi Proc

8 Ho eseguito: CALL RAM CALL Fun1 … CALL Fun2 … RETURN indirizzi Contenuto iniziale SP 4500 PC SP RAM indirizzi Proc 4101

9 Sto per eseguire:CALL RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP 4601 PC SP RAM indirizzi Proc 4101

10 RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc Ho eseguito:

11 Fun2 termina: sto per eseguire RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc

12 Ho eseguito: RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP 4601 PC SP RAM indirizzi Proc 4101

13 Sto per eseguire: CALL RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP 4651 PC SP RAM indirizzi Proc 4101

14 RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc Ho eseguito: CALL

15 Fun2 termina: sto per eseguire RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc

16 Ho RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP 4651 PC SP RAM indirizzi Proc 4101

17 Fun1 termina: sto per eseguire RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP 4701 PC SP RAM indirizzi Proc 4101

18 Ho eseguito: RAM CALL Fun1 Fun1 … CALL Fun2 … Fun2 RETURN indirizzi Contenuto iniziale SP 4101 PC SP RAM indirizzi Proc

19 …e i parametri? I parametri possono essere passati in vario modo –registri generali (convenzione fra chiamante e chiamato) –memoria centrale –stack (più comune)

20 Chiamata sto per eseguire RAM Fun1 Fun2 RETURN … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP 4598 PC SP RAM indirizzi Proc

21 Chiamata sto per eseguire RAM Fun1 Fun2 RETURN … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP 4599 PC SP RAM indirizzi Proc par1

22 Chiamata sto per eseguire RAM Fun1 Fun2 RETURN … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP 4600 PC SP RAM indirizzi Proc par1 par2

23 Chiamata sto per eseguire RAM Fun1 Fun2 RETURN … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP 4601 PC SP RAM indirizzi Proc par1 par2 par3

24 Chiamata ho eseguito RAM Fun1 Fun2 RETURN … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc par1 par2 par3 4601

25 Chiamata sto per eseguire RAM … Fun1 Fun2 RETURN … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc par1 par2 par3 4601

26 Chiamata ho eseguito RAM … Fun1 Fun2 RETURN … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP 4601 PC SP RAM indirizzi Proc par1 par2 par3

27 Chiamata elimino il RAM … Fun1 Fun2 RETURN … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 ADD #3 SP indirizzi Contenuto iniziale SP 4602 PC SP RAM indirizzi Proc

28 …e le variabili locali ? I compilatori di molti linguaggi (es C) allocano le variabili locali (cioè quelle "definite ed usabili solo dentro” la funzione) sulla pila –vengono allocate con delle PUSH all’inizio –vengono rimosse prima di uscire vediamo un semplice esempio...

29 Chiamata sto per eseguire RAM … Fun1 Fun2 … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP 4598 PC SP RAM indirizzi Proc PUSH i PUSH j ADD #2 SP RETURN

30 Chiamata ho eseguito RAM Fun1 Fun2 … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc par1 par2 par PUSH i PUSH j ADD #2 SP RETURN

31 Esecuzione ho eseguito RAM Fun1 Fun2 … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc par1 par2 par PUSH i PUSH j ADD #2 SP RETURN i

32 Esecuzione ho eseguito RAM Fun1 Fun2 … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc par1 par2 par PUSH i PUSH j ADD #2 SP RETURN i j

33 Esecuzione sto per eseguire RAM Fun1 Fun2 … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc par1 par2 par PUSH i PUSH j ADD #2 SP RETURN i j

34 Esecuzione ho eseguito RAM Fun1 Fun2 … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 indirizzi Contenuto iniziale SP PC SP RAM indirizzi Proc par1 par2 par PUSH i PUSH j ADD #2 SP RETURN

35 Esecuzione ho eseguito RAM Fun1 Fun2 … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 ADD #3 SP indirizzi Contenuto iniziale SP 4601 PC SP RAM indirizzi Proc par1 par2 par3 PUSH i PUSH j ADD #2 SP RETURN

36 Chiamata elimino il RAM … Fun1 Fun2 RETURN … PUSH par1 PUSH par2 PUSH par3 CALL Fun2 ADD #3 SP indirizzi Contenuto iniziale SP 4602 PC SP RAM indirizzi Proc

37 Come avviene una system call

PC SP RGen PSW DisabIntKernel-User Mode RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi

PC SP RGen PSW DisabIntKernel-User Mode RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Spazio indirizzamento di B testo dati stack

PC SP RGen PSW DisabIntKernel-User Mode ProcessControlBlock di B ProcessIdentifier (pid) Stato Priorita Program Counter Registri Generali SP PSW Informazioni memoria (es. Base, Limite) Kernel stack Informazioni sui file in uso Stato system call in esecuzione RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi

PC SP RGen PSW DisabIntKernel-User Mode ProcessControlBlock di B Stato = RUNNING Program Counter = ?? Registri Generali = ?? SP = ?? PSW = ?? Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB

42 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

43 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

PC SP RGen PSW DisabIntKernel-User Mode ProcessControlBlock di B Stato = RUNNING Program Counter = ?? Registri Generali = ?? SP = ?? PSW = ?? Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB

PC SP RGen PSW DisabIntKernel-User Mode RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Stack Utente di B stack nbytes &buffer fd Kernel Stack ProcB

46 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

PC SP RGen PSW DisabIntKernel-User Mode Dopo esecuzione Stato = RUNNING Program Counter = ?? Registri Generali = ?? SP = ?? PSW = ?? Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB

PC SP RGen PSW DisabIntKernel-User Mode RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Stack Utente di B stack nbytes &buffer fd Kernel Stack ProcB 8404

49 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 Rx 5 read(fd, buffer, nbytes) (4) Passo 5 : Inizia l’esecuzione della read() : –caricamento del codice della system call in un registro fissato Rx 0 AddrMax X

PC SP RGen PSW DisabIntKernel-User Mode Inserisco il codice della read (25) in un registro generale fissato Stato = RUNNING Program Counter = ?? Registri Generali = ?? SP = ?? PSW = ?? Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx

51 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

PC SP RGen PSW DisabIntKernel-User Mode TRAP: (hw) Disabilita le interruzioni Stato = RUNNING Program Counter = ?? Registri Generali = ?? SP = ?? PSW = ?? Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx

PC SP RGen PSW DisabIntKernel-User Mode TRAP: (hw) Salva PC / PSW sullo stack Stato = RUNNING Program Counter = ?? Registri Generali = ?? SP = ?? PSW = ?? Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx

PC SP RGen PSW DisabIntKernel-User Mode RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Stack Utente di B stack nbytes &buffer fd Kernel Stack ProcB 8404 UsrPSW 9002

PC SP RGen PSW DisabIntKernel-User Mode TRAP: (hw) Salta al dispatcher in kernel mode Stato = RUNNING Program Counter = ?? Registri Generali = ?? SP = ?? PSW = ?? Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx

56 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 la 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

PC SP RGen PSW DisabIntKernel-User Mode Dispatcher: (ASS) Salva PC/PSW nel PCB, POP sulla pila utente (incrementa SP) Stato = RUNNING Program Counter = 9002 Registri Generali = ?? SP = ?? PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx

PC SP RGen PSW DisabIntKernel-User Mode RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Stack Utente di B stack nbytes &buffer fd Kernel Stack ProcB 8404

PC SP RGen PSW DisabIntKernel-User Mode Dispatcher: (ASS) Salva SP e Registri Gen nel PCB Stato = RUNNING Program Counter = 9002 Registri Generali = 25,RGen SP = PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx

PC SP RGen PSW DisabIntKernel-User Mode Dispatcher: (ASS) Prepara kernel stack e riabilita interruzioni Stato = RUNNING Program Counter = 9002 Registri Generali = 25,RGen SP = PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx

PC SP RGen PSW DisabIntKernel-User Mode Dispatcher: (ASS) Seleziona la SC (25) e salta al codice del gestore (indirizzo TabSC[25]=2100) Stato = RUNNING Program Counter = 9002 Registri Generali = 25,RGen SP = PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx TabellaSC Codice gestore

PC SP RGen PSW DisabIntKernel-User Mode Gestore: esegue azioni richieste dalla SC Stato = RUNNING Program Counter = 9002 Registri Generali = 25,RGen SP = PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB XX Rx TabellaSC Codice gestore

63 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 l’indirizzo dell’istruzione successiva alla TRAP (Y), riabilita interruzioni 0 AddrMax X Y

PC SP RGen PSW DisabIntKernel-User Mode Gestore: (ASS) Disabilita interruzioni, Ripristina stack utente, Stato = RUNNING Program Counter = 9002 Registri Generali = 25,RGen SP = PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB XX Rx TabellaSC Codice gestore

PC SP RGen PSW DisabIntKernel-User Mode Gestore: (ASS) Ricarica registri processore Stato = RUNNING Program Counter = 9002 Registri Generali = 25,RGen SP = PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx TabellaSC Codice gestore

PC SP RGen PSW DisabIntKernel-User Mode Gestore: (hw) Ricarica PC-PSW, modalità utente riabilita interruzioni Stato = RUNNING Program Counter = 9002 Registri Generali = 25,RGen SP = PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx TabellaSC Codice gestore

67 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

PC SP RGen PSW DisabIntKernel-User Mode ProcessoB: esegue Stato = RUNNING Program Counter = 9002 Registri Generali = 25,RGen SP = PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx TabellaSC Codice gestore

PC SP RGen PSW DisabIntKernel-User Mode RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Stack Utente di B stack nbytes &buffer fd Kernel Stack ProcB

PC SP RGen PSW DisabIntKernel-User Mode ProcessoB: libera la pila Stato = RUNNING Program Counter = 9002 Registri Generali = 25,RGen SP = PSW = userPSW Informazioni memoria (Base, Limite) = 8000,4000 Kernel stack = 15000,1000 Stato SC = ?? RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Kernel Stack ProcB 25 Rx TabellaSC Codice gestore

PC SP RGen PSW DisabIntKernel-User Mode RAM Dispatcher Processo A Processo B Processo C Base Limite 100 SOentry Tabella dei processi Stack Utente di B stack Kernel Stack ProcB

72 Fine!