La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe SEMINARIO DI SISTEMI OPERATIVI IL BOOTSTRAP.

Presentazioni simili


Presentazione sul tema: "Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe SEMINARIO DI SISTEMI OPERATIVI IL BOOTSTRAP."— Transcript della presentazione:

1 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe SEMINARIO DI SISTEMI OPERATIVI IL BOOTSTRAP Docente:M. Guarracino Studenti:A. Fioremat: 566/1174 G. De Nicolamat: 566/1175 Università Degli Studi di Napoli Federico II Facoltà di MM.FF.NN. Corso in Informatica

2 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe ARGOMENTI TRATTATI Il BOOTSTRAP: COSA ACCADE PRIMA DI CARICARE IL KERNEL CARICAMENTO DEL KERNEL LA start_kernel() I SOTTOSISTEMI DEL KERNEL LINIZIALIZZAZIONE DEI SOTTOSISTEMI IL FORMATO ELF 1/15

3 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe Ci chiediamo qual è linsieme delle operazioni che rendono un groviglio di metallo e silicio in una potente macchina da calcolo? I passi essenziali sono 4: Segnale di reset; Caricamento del BIOS; Caricamento ed esecuzione del boot-loader; Caricamento ed esecuzione del kernel; LAVVIO DEL SISTEMA 2/15

4 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe Cosa accade quando viene premuto il tasto power di un PC? Viene generato un impulso elettrico, la CPU in risposta inizia ad eseguire istruzioni in modo predeterminato. I processori X86 (famiglia intel) si trasformano in un processore a 16 bit che può indirizzare al massimo 1 Mb di memoria. Ed iniziano ad eseguire listruzione dallindirizzo 0xffff0 cioè appena sotto il limite di 1Mb, allo scopo di caricare il BIOS. Il BIOS (Basic Input-Output System) è un insieme di istruzioni residenti in una memoria nvram (non volatile ram) generalmente una PROM, chiamata in gergo CMOS. Essa permette di stabilire qualè il dispositivo di avvio dal quale caricare il boot-loader. Inoltre, il BIOS si preoccupa di inizializzare anche le periferiche PCI o ISA nel caso in cui il kernel debba essere caricato da remoto. Il BOOT-LOADER quale LILO oppure GRUB è un programma che si preoccupa di caricare il kernel linux in memoria, e predispone alcuni parametri hardware necessari al suo funzionamento. La sua dimensione può variare a seconda che faccia parte del kernel oppure no. Il nucleo (KERNEL) del sistema linux o di un qualsiasi sistema operativo è un programma privilegiato che interagisce direttamente con larchitettura del calcolatore e gestisce tutte le risorse del sistema. LAVVIO DEL SISTEMA 3/15

5 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe 0x1000 T0T0 0x7c000 T1T1 T2T2 0x10000 T3T3 0x x T4T4 T6T6 T7T7 T5T5 0x0 Il primo passo sarà quello di descrivere il diagramma; sulle ascisse verrà rappresentato il tempo, mentre sulle ordinate le celle di memoria. I rispettivi colori rappresenteranno i vari programmi che saranno caricati in memoria. Il loro significato e riportato nel riquadro superiore. Come abbiamo gia detto quando viene generato il segnale di reset, il processore si trasforma in una CPU a 16 bit capace di indirizzare al massimo 1 Mb di memoria. Ciò deriva dal fatto che la procedura, che andremo a descrivere, è stata ideata per la prima volta per macchine con processore 386 con 1Mb di memoria. Si è conservata anche per processori superiori per motivi di compatibilità. Allistante T 0 il reset avvia la CPU ad eseguire istruzioni sotto la sfoglia del Mb allo scopo di portare in memoria il BIOS. Esso viene caricato nella parte iniziale della memoria fino al indirizzo 0x7c00 e durante la sua esecuzione si stabilisce quale dispositivo deve essere preso in considerazione per caricare le informazioni successive (loader e kernel). Tale scelta e influenzabile dallutente tramite la configurazione del BIOS. Allistante T 2, partendo dallindirizzo 0x7c00, viene caricato un settore di 512 byte che rappresentano per 448 byte il boot- loader e per i restanti 64 byte, la tabella delle partizioni. Tale settore risiede nella parte iniziale del dispositivo di avvio che nel caso dellhard disk nel MBR(Master Boot Record). Infatti ogni disco rigido possiede un MBR e per ogni sua partizione può possedere un boot sector dove può risiedere un boot-loader secondario. Va in esecuzione il boot-loader, che effettua una scansione della tabella delle partizioni per identificare quale di essa è quella attiva, caricando in memoria il contenuto del suo boot sector allindirizzo 0x Da questo indirizzo fino a 0x90200 carica il contenuto del boot sector (nel caso particolare di Linux viene caricato il file bootsect.S contenete informazioni importanti per il sistema) che permette di identificare il codice necessario alla decompressione del kernel nonché il kernel stesso. Lesecuzione passa a bootsect.S. Allistante T 4, a partire dallindirizzo 0x90200 vengono caricati i file setup.S e video.S. Il loro ruolo è quello di prelevare dal BIOS informazioni sul sistema, come la mappa di memoria, per renderle disponibili al kernel secondo un formato prestabilito. Allistante T 5, infine non resta che caricare in memoria bassa (da 0x10000 a 0x90000) il kernel compresso. Allistante T 6, il codice di setup (setup.S video.S), una volta prelevate le informazioni dal BIOS, attiva la modalità protetta della CPU, uscendo quindi dalla compatibilità 8086 e abilitando la gestione di tutta la memoria disponibile. Libera la memoria dal BIOS e posiziona, allinizio della memoria, il kernel compresso. Allistante T 7 e T 8, inizia cosi lesecuzione del kernel vero e proprio tramite il codice contenuto nel file head.S, tramite il quale viene richiamato anche il decompressore del kernel. Lesecuzione di tale codice azzera il contenuto di memoria BSS (segmento di memoria atto a contenere le variabili non inizializzate di un processo), predispone le strutture dati per la paginazione e abilità la MMU per poi mandare in esecuzione la funzione start_kernel, definita in init/main.c 0xA0000 T8T8 I/O space Area di memoria non visibile Area di memoria visibile Spazio di I/O BIOS Boot-loader setup Kernel compattato Kernel scompattato Locazione in esecuzione Boot sector LAVVIO DI UN SISTEMA 4/15

6 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe LA start_kernel La funzione start_kernel: Prima funzione eseguita in codice C, madre di tutte le funzioni; Richiama setup_arch che chiama a sua volta la funzione parse_option per lacquisizione dei parametri del kernel tramite linea di comando; Attiva le funzionalità base del sistema: caricamento della tabella degli interrupts; lattivazione del timer degli interrupts; linizializzazione della console; linizializzazione del gestore della memoria. Inizializza i sottosistemi del kernel; Genera il processo init con PID 1 il padre di tutti i processi. 5/15

7 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe Un kernel è un oggetto molto complesso. La sua complessità deriva dal fato che deve funzionare su numerosi tipi di macchine. Processori diversi, protocolli di rete diversificati, bus di comunicazione di vario tipo, sono solo alcuni esempi di cosa contribuisce ad incrementare la complessità di un kernel, man mano che passa il tempo e si scoprono nuove tecnologie. Architettura hd 1Architettura hd 2 SO UTENTE 1UTENTE 2 kernel sottosistemi I SOTTOSISTEMI DEL KERNEL 6/15

8 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe Il codice di un kernel Linux, è diviso ordinatamente in sottosistemi; Ogni sottosistema offre funzionalità ad alto livello alle istanze che invece sono destinate a comunicare con le periferiche a basso livello; Sottosistemi del kernel sono, ad esempio, SCSI, IDE, PCI, USB. Sottosistema USB IS1IS2ISn P1P2Pn funzionalità comunicazione I SOTTOSISTEMI DEL KERNEL 7/15

9 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe Un sottosistema USB ad esempio, implementa: Protocollo di comunicazione del bus; Inserimento e rimozione a caldo delle periferiche; La gestione delle situazioni di errore. Allo stesso tempo prevede due interfaccie: Una verso il basso nella direzione dei driver per permettere loro di integrarsi nellarchitettura software; Laltra a basso livello verso i controllori per permettere al sottosistema di poggiare su diverse architetture. Sottosistema USB driver interfaccia periferiche controllore interfaccia hardware I SOTTOSISTEMI DEL KERNEL 8/15

10 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe Nellavvio di un sistema sorge il problema dellinizializzazione dei sottosistemi; laggiunta di un modulo non crea problemi a sistema già avviato poiché tutte le componenti dellambiente operativo sono già avviate; lavvio del kernel può avvenire solo se i suoi sottosistemi sono avviati nellordine corretto. LINIZIALIZZAZIONE DEI SOTTOSISTEMI User Space Kernel Proper USBSCSI CONTROLLER PROTOCOLLO UHCIEHCImousediskAHA1AIC7STSD Sistema ideale User Space Kernel Proper USB CONTROLLERPROTOCOLLO SCSI CONTROLLERPROTOCOLLO UHCImousedisk Ch ipset AIC7SD Sistema reale PCI CONTROLLERSLOT INPUT 9/15

11 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe 1.Soluzione adottata da Linux inizialmente. Chiamata sequenziale delle funzioni di inizializzazione dei moduli, nellordine in cui comparivano nel codice. approccio piuttosto semplicistico; adatto a sistemi con pochi componenti; poco manutenibile con la crescita delle periferiche supportate; chiamate protette da una serie di #ifdef. 2.Seconda soluzione adottata. Introduzione di. Ogni modulo può dichiarare le proprie funzioni di inizializzazione; Automatizzazione dellesecuzione delle funzioni di inizializzazione; Il corretto avvio del sistema dipendeva ancora dallordine in cui i file apparivano nel Makefile. LINIZIALIZZAZIONE DEI SOTTOSISTEMI 10/15

12 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe 3.Soluzione attuale. Introdotta in Linux-2.4 in uso in Linux-2.6. Meccanismo delle initcalls: la funzione di inizializzazione di ogni modulo viene dichiarata come initcall in modo che un suo puntatore e il suo codice oggetto vengano inserite nelle relative sezioni ELF; Uno dei vantaggi di questa tecnica è quello di evitare che il kernel venga compilato ogni volta che viene aggiunto un nuovo dispositivo; Si evita la lunga lista di chiamate alle funzioni di inizializzazione (lista di #ifdef); Il kernel diventa indipendente dallimplementazione delle funzioni dei moduli. LINIZIALIZZAZIONE DEI SOTTOSISTEMI 11/15

13 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe La funzione start_kernel chiama la funzione do_initcalls allo scopo di scorrere la lista dei puntatori per invocare le funzioni di inizializzazione; La versione 2-6 del kernel stabilisce un ordinamento tra le varie funzioni di inizializzazione; Sono definite 7 classi di initcalls. Lordinamento relativo alle varie chiamate è garantito dal linker script usato per creare vmlinux (immagine del kernel), allinterno della quale sono definite le 7 classi di initcalls. Core; Postcore; Arch; Subsys; Fs; Device; Late. LINIZIALIZZAZIONE DEI SOTTOSISTEMI 14/15

14 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe ELF acronimo di Execution and Linking Format. Formato di memorizzazione di moduli oggetto o moduli eseguibili; Prevede suddivisione in sezioni per moduli oggetto; Prevede suddivisione in segmenti per moduli eseguibili; libelf, libreria di gestione dei moduli memorizzati in formato ELF; Entrambi i formati presentano una parte fissa che contiene informazioni importanti per laccesso alle altre parti del file: ELF header; IL FORMATO ELF 12/15

15 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe ELF header descrive il tipo di file oggetto (relocatable, executable, shared, core); Il tipo di architettura; La versione di ELF in uso; Program Header Table È una tabella che descrive i segmenti o le informazioni relative a come creare limmagine di un processo eseguibile; Section Esistono vari tipi di sezioni (1…n) descritte nella section header table; Contengono codice eseguibile, informazioni sui link dinamici, dati, dati per il debugg…; Usate per creare limmagine eseguibile di un processo. Segment Consente di raggruppare varie sezioni correlate Vari tipi di segmenti: segmento contenente dati, codice eseguibile, ecc… Section Header Table Tabella utilizzata per trovare le sezioni nel file oggetto; Memorizza informazioni sulle sezioni (nome, dimensione, tipo ecc…). IL FORMATO ELF ELF header Program header table (optional) Section 1 … Section n … … Section header table Link view ELF header Program header table Segment 1 … Segment n … … Section header table (optional) Execute view 13/15

16 Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe RIFERIMENTI Linux magazine marzo Linux magazine maggio Linux device drivers 15/15


Scaricare ppt "Sistemi Operativi Mod.B: BOOTSTRAP DI UN SISTEMA OPERATIVO LINUX BASEDAUTORI: Fiore Armando De Nicola Giuseppe SEMINARIO DI SISTEMI OPERATIVI IL BOOTSTRAP."

Presentazioni simili


Annunci Google