Organizzazione di un SO monolitico Applicazioni Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del Gestore delle processore / Gestore della periferiche/ Scheduler(s) memoria dispositivi File system Hw 1 Processo (Def.) : Processi programma in esecuzione completo del suo stato (spazio di indirizzamento, contenuto dei registri, file aperti ) Il concetto di processo è centrale nella organizzazione di ogni SO Tipicamente ad ogni istante ci sono molti processi attivi contemporaneamente (tutto o parte dello spazio di indirizzamento dei processi attivi è residente in memoria centrale) 2 1
Modello (parziale) di riferimento di un S.O. Reside ente Dispatcher System calls Interrupt Handlers I/O drivers idente Non resi Processi utente Daemon Processo 1 Processo 2 Memoria centrale Processo n Periferiche Dal programma al processo Programma Passo 1 : compilazione e creazione del file eseguibile Compilatore Eseguibile È un file binario che * contiene tutte le informazioni necessarie all esecuzione del programma da parte del processore * ha un formato che dipende dal SO che deve curarne l esecuzione * è memorizzato su disco 4 2
Formato del file eseguibile Un esempio : il formato ELF di Linux File a.out Magic number Altre info Ampiezza BSS I- segment segment Numero che contraddistingue il file come eseguibile Ampiezza area di memoria occupata dalle variabili globali NON inizializzate Variabili globali inizializzate Codice del programma (assemblato) 5 Caricamento di un programma Eseguibile Passo 2 : creazione dello spazio di indirizzamento e caricamento di tale spazio in memoria centrale Loader Spazio di indirizzamento È l immagine della memoria visibile al programma durante la sua esecuzione 6 3
Spazio di indirizzamento Come è organizzata la memoria accessibile ad un programma in esecuzione? 2 32-1 Pila di FRAME, uno per ogni chiamata di funzione da cui non abbiamo ancora fatto ritorno Variabili globali Traduzione in l.m. delle funzioni che compongono il programma 7 Spazio di Indirizzamento (programma C) 8 4
Spazio di indirizzamento (2) Spazio di indirizzamento tipico (caso del linguaggio C) 2 32-1 Direzione di crescita dello stack Contenuti tipici di un FRAME : - variabili locali della funzione - indirizzo di ritorno (indirizzo dell istruzione successiva a quella che ha effettuato la chiamata alla funzione) - copia dei parametri di chiamata 9 Spazio di indirizzamento (3) Spazio di indirizzamento tipico (caso del linguaggio C) 2 32-1 All inizio dell esecuzione lo contiene solo il FRAME per la funzione main Successivamente : * ogni volta che viene chiamata una nuova funzione viene inserito un nuovo frame nello stack * ogni volta che una funzione termina viene eliminato il frame in cima dello stack e l esecuzione viene continuata a partire dall indirizzo di ritorno 1 5
Spazio di indirizzamento (4) Spazio di indirizzamento tipico (caso del linguaggio C) 2 32-1 heap Direzione di crescita dello heap Spazio di memoria dedicato ai dati globali a tutte le funzioni. Diviso in statico per i dati la cui dimensione è nota a tempo di compilazione e dinamico (heap) 11 Spazio di Indirizzamento (5) L eseguibile contiene tutte le informazioni per creare la configurazione iniziale dello spazio di indirizzamento (loading) File a.out FRAME per la funzione main 2 32-1 Magic number Altre info Ampiezza BSS I- segment BSS-segment I- segment segment 12 6
Esecuzione di un programma attivazione del programma, ovvero caricamento nel PC dell indirizzo della prima istruzione da eseguire nell area testo A questo punto il programma ha il controllo del processore Il Sistema Operativo potrà tornare in esecuzione solo se si verifica uno dei seguenti eventi : -- arrivo di una interruzione hw -- terminazione del programma -- invocazione esplicita di un servizio tramite una System Call 13 Il modello a processi sequenziali Nei computer attuali, ci sono molte attività attive contemporaneamente (sia di SO che di utente) es : stampa in corso + Word processor + cd player 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 l interazione fra processi avviene solo con l invocazione di un numero (limitato e fissato) di meccanismi di cooperazione (di IPC) 14 7
Condivisione della RAM Tipicamente la RAM contiene lo spazio di indirizzamento di più processi : es. organizzazione tipica della memoria negli SO degli anni 7 (es IBM 36) AmpiezzaRAM - 1 Spazio processo 3 Una possibile organizzazione della RAM con più processi attivi contemporaneamente Spazio processo 2 Spazio processo 1 Sistema Operativo Area riservata, non accessibile in modalità utente 15 Condivisione della RAM (problemi) Problemi legati alla condivisione della RAM : (1) protezione dello spazio di indirizzamento di processi diversi Spazio processo 3 Spazio processo 2 Il processo 2 non deve poter accedere agli indirizzi di RAM al di fuori della sua area Spazio processo 1 Sistema Operativo 16 8
Condivisione della RAM (problemi) Problemi legati alla condivisione della RAM : (2) problema della rilocazione base2 Spazio processo 3 Spazio processo 2 Spazio processo 1 Il compilatore/linker assume che lo spazio di indirizzamento parta dall indirizzo Ma, P2 è caricato ad un indirizzo base2!= max Sistema Operativo 17 Condivisione della RAM (problemi) Necessità di un meccanismo di rilocazione : Indirizzi di istruzioni e dati devono essere incrementati (rilocazione) di base2 Spazio processo 3 max base2 Spazio processo 2 base2 + X X Spazio processo 1 Sistema Operativo 18 9
Condivisione della RAM (soluzione hw) Indirizzo iniziale del programma in RAM Risolve il problema della rilocazione base PC + + Addizionatore Indirizzo (alla memoria) limite Comparatore Fault (accesso oltre il limite) Ampiezza dello spazio di indirizzamento Risolve il problema della protezione 19 Creazione di un processo Come si crea un processo? Inizializzazione del sistema Richiesta da parte di un processo al SO per la creazione di un altro processo (attraverso chiamate di sistema) es : fork - exec in Unix es : CreateProcess in API Win32 L invocazione da parte di un utente di un comando o di un applicazione ( il doppio click su un icona, il lancio di un eseguibile ) L inizio di un job batch (ad esempio job che vengono attivati ad una particolare ora del giorno) 2 1