SEMINARIO DI SISTEMI OPERATIVI

Slides:



Advertisements
Presentazioni simili
1 Introduzione ai calcolatori Parte II Software di base.
Advertisements

Introduzione Cosa è un Sistema Operativo? Una breve storia
Gestione della memoria centrale
Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
CONOSCIAMO IL WINDOWS '95.
1 Approfondimenti su Linux. Corso di SISTEMI OPERATIVI Dipartimento di Informatica e Scienze dellInformazione 2 La storia Il sistema operativo Linux è
Elaboratore e Sistemi Operativo
1 Come si avvia un computer... Dove è contenuto il SO ? Come si attiva?
Realizzazione del file system
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Le prestazioni (velocità) di un singolo disco sono limitate dalla tecnologia usata, -per aumentare le prestazioni si può pensare di far operare in parallelo.
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.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
1.7 Risorse di sistema Comprendere le risorse di sistema Gestire le risorse di sistema.
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE.
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.
INTRODUZIONE Il termine Informatica deriva dalla fusione dei termini INFORmazione autoMATICA si intende indicare la scienza che ha il compito di raccogliere,
Il sistema operativo Vito Perrone
Espressioni condizionali
La macchina di von Neumann
Informatica per medici
CORSO OPERATORE AVANZATO
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Il Calcolatore Elettronico
PRESENTAZIONE di RICCARDO
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
STRUTTURA GENERALE DI UN ELABORATORE
Software e sistema operativo 19-22/5/08 Informatica applicata B Cristina Bosco.
Introduzione al linguaggio assemby del microprocessore a parte
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
Architettura del calcolatore
Il Sistema Operativo (1)
Unità centrale di processo
prof. Antonella Schiavon ottobre 2009
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
1 Il Sistema Operativo: Esempio n Le operazioni effettuate sembrano abbastanza semplici ma … n Provocano una serie di eventi in cui vengono coinvolte sia.
STRUTTURA DI UN COMPUTER
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
Autori:  Gazzola Alex  Cassol Simone  Kawkab Wassim Data: 14/04/2014 Classe: 3° INF.
SISITEMI MONOPROGRAMMATI E MULTI PROGRAMMATI
Il nucleo del Sistema Operativo
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Corsi di Laurea in Biotecnologie
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 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Alcuni esempi di dispositivi Disco rigido, RAID, video.
Sistema operativo Il sistema operativo è un insieme di programmi che gestiscono tutte le componenti hardware e software di un calcolatore. Spesso si può.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l’ambiente e il territorio Il software di base Stefano Cagnoni e Monica Mordonini.
UNIVERSITÀ DI BERGAMO FACOLTÀ DI INGEGNERIA UNIVERSITÀ DI BERGAMO FACOLTÀ DI INGEGNERIA UNIVERSITÀ DI BERGAMO FACOLTÀ DI INGEGNERIA Dispositivi per il.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
Esercizi.
Concetti di base Computer, HW e SW
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
ISIA Duca degli Abruzzi a.s. 2010/2011 prof. Antonella Schiavon
INTRODUZIONE AI SISTEMI OPERATIVI. Introduzione Il software può essere diviso un due grandi classi: Il software può essere diviso un due grandi classi:
I Sistemi Operativi. Che cosa sono? Il sistema operativo è un software di base che fa funzionare il computer. I Sistemi operativi più importanti sono:
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
Tipi di Computer MainframeSupercomputerMinicomputerMicrocomputerHome Computer Personal Computer WorkstationMicrocontrollori Sistemi Barebone.
Il modello di Von Neumann
Il computer RAM: Unità di misura MByte e GByte MHz Processore: Unità di misura Singolo o multiprocessore 32/64 bit velocità GHz Mouse tastiera video stampante.
Vengono detti memorie di massa tutti i supporti (dischi e nastri) su cui vengono registrati dati, documenti e programmi che si vogliono conservare, sono.
Transcript della presentazione:

SEMINARIO DI SISTEMI OPERATIVI Università Degli Studi di Napoli Federico II Facoltà di MM.FF.NN. Corso in Informatica SEMINARIO DI SISTEMI OPERATIVI IL BOOTSTRAP Docente: M. Guarracino Studenti: A. Fiore mat: 566/1174 G. De Nicola mat: 566/1175

ARGOMENTI TRATTATI Il BOOTSTRAP: 1/15 Il BOOTSTRAP: COSA ACCADE PRIMA DI CARICARE IL KERNEL CARICAMENTO DEL KERNEL LA start_kernel() I SOTTOSISTEMI DEL KERNEL L’INIZIALIZZAZIONE DEI SOTTOSISTEMI IL FORMATO ELF

L’AVVIO DEL SISTEMA 2/15 Ci chiediamo qual è l’insieme 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;

L’AVVIO DEL SISTEMA 3/15 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 l’istruzione dall’indirizzo 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 l’architettura del calcolatore e gestisce tutte le risorse del sistema.

L’AVVIO DI UN SISTEMA I/O space 4/15 BIOS Boot-loader setup Kernel compattato Kernel scompattato Locazione in esecuzione Boot sector Area di memoria non visibile Area di memoria visibile Spazio di I/O 0x100000 I/O space 0xA0000 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 all’indirizzo 0x90000. 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. L’esecuzione passa a bootsect.S. All’istante T2, partendo dall’indirizzo 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 dell’hard 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. All’istante T4 , a partire dall’indirizzo 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. All’istante T0 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 dall’utente tramite la configurazione del BIOS. All’istante T7 e T8, inizia cosi l’esecuzione del kernel vero e proprio tramite il codice contenuto nel file head.S, tramite il quale viene richiamato anche il decompressore del kernel. L’esecuzione 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 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à. All’istante T6 , 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, all’inizio della memoria, il kernel compresso. All’istante T5, infine non resta che caricare in memoria bassa (da 0x10000 a 0x90000) il kernel compresso. 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. 0x90000 0x10000 0x7c000 0x1000 0x0 T0 T1 T2 T3 T4 T5 T6 T7 T8

LA start_kernel La funzione start_kernel: 5/15 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 l’acquisizione dei parametri del kernel tramite linea di comando; Attiva le funzionalità base del sistema: caricamento della tabella degli interrupts; l’attivazione del timer degli interrupts; l’inizializzazione della console; l’inizializzazione del gestore della memoria. Inizializza i sottosistemi del kernel; Genera il processo init con PID 1 il padre di tutti i processi.

I SOTTOSISTEMI DEL KERNEL 6/15 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 1 Architettura hd 2 SO UTENTE 1 UTENTE 2 kernel sottosistemi

I SOTTOSISTEMI DEL KERNEL 7/15 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 IS1 IS2 ISn P1 P2 Pn funzionalità comunicazione

I SOTTOSISTEMI DEL KERNEL 8/15 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 nell’architettura software; L’altra a basso livello verso i controllori per permettere al sottosistema di poggiare su diverse architetture. Sottosistema USB driver interfaccia periferiche controllore hardware

L’INIZIALIZZAZIONE DEI SOTTOSISTEMI 9/15 Nell’avvio di un sistema sorge il problema dell’inizializzazione dei sottosistemi; l’aggiunta di un modulo non crea problemi a sistema già avviato poiché tutte le componenti dell’ambiente operativo sono già avviate; l’avvio del kernel può avvenire solo se i suoi sottosistemi sono avviati nell’ordine corretto. User Space Kernel Proper USB SCSI CONTROLLER PROTOCOLLO UHCI EHCI mouse disk AHA1 AIC7 ST SD Sistema ideale User Space Kernel Proper USB CONTROLLER PROTOCOLLO SCSI UHCI mouse disk Ch ipset AIC7 SD Sistema reale PCI SLOT INPUT

L’INIZIALIZZAZIONE DEI SOTTOSISTEMI 10/15 Soluzione adottata da Linux inizialmente. Chiamata sequenziale delle funzioni di inizializzazione dei moduli, nell’ordine 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. Seconda soluzione adottata. Introduzione di <linux/init.h>. Ogni modulo può dichiarare le proprie funzioni di inizializzazione; Automatizzazione dell’esecuzione delle funzioni di inizializzazione; Il corretto avvio del sistema dipendeva ancora dall’ordine in cui i file apparivano nel Makefile.

L’INIZIALIZZAZIONE DEI SOTTOSISTEMI 11/15 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 dall’implementazione delle funzioni dei moduli.

L’INIZIALIZZAZIONE DEI SOTTOSISTEMI 14/15 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. L’ordinamento relativo alle varie chiamate è garantito dal linker script usato per creare vmlinux (immagine del kernel), all’interno della quale sono definite le 7 classi di initcalls. Core; Postcore; Arch; Subsys; Fs; Device; Late.

IL FORMATO ELF ELF acronimo di Execution and Linking Format. 12/15 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 l’accesso alle altre parti del file: ELF header;

IL FORMATO ELF ELF header Program Header Table Section Segment 13/15 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 l’immagine 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 l’immagine 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…). 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

RIFERIMENTI Linux magazine marzo 2004 15/15 Linux magazine marzo 2004 www.linuxdidattica.org/docs/linuxmagazine/rubini_39.html Linux magazine maggio 2004 www.linuxdidattica.org/docs/linuxmagazine/rubini_41.html Linux device drivers www.oreilly.com/catalog/linuxdrive2/chapter/book www.linuxdidattica.org/docs/linuxmagazine/rubini_38.html www.cs.ucdavis.edu/~haungs/paper/node11.html