di software in grado di gestire tutte le risorse hardware di un elaboratore, nel nostro caso progettato secondo il modello di Von Neumann. S Parte fondamentale ed indispensabile di un sistema operativo è il kernel (nucleo del sistema) che a seconda della tipologia gestisce le risorse hardware e permette l’interazione tra routine di sistema e software applicativi che le richiedono (System Call) Sistema operativo e kernel
presenza di un unico grande file binario che comprende tutte le primitive di sistema e che risulta essere a stretto contatto con l’hardware del computer. Un kernel monolitico mette a disposizione una serie di funzioni che fungono da interfaccia con la parte del software applicativo a livello utente e le risorse fisiche del pc.Tutte le componenti software di un kernel monolitico condividono lo stesso spazio di memoria e sono compatte tra di loro, per questo motivo nel momento di aggiungere dei driver al sistema bisogna ricompilare l’intero kernel visto che non è modulare. Kernel monolitico
completamente diversa dal un kernel monolitico, in quanto esso utilizza un approccio strettamente modulare. Dunque le varie primitive di sistema che il kernel monolitico offriva tutte compatte in un unico blocco, il microkernel lo fa utilizzando un insieme di moduli detti servers che implementano queste funzioni primitive di sistema e comunicano tra loro tramite lo scambo di messaggi.Questo comporta che il possibile mancato funzionamento di un server non comprometta il blocco dell’intero sistema, come invece avveniva nel kernel monolitico. Microkernel
di tipologie kernel diverse: monolitico e microkernel.In un certo periodo si cercò la necessità di realizzare un sistema performante (monolitico) e allo stesso tempo stabile e modulare (microkernel). Infatti venne utilizzato l’approccio modulare dei servers del microkernel implementandoli a basso livello (a livello kernel). I primi a fare ciò furono Microsoft e Apple, i cui sistemi tutt’ora sono basati su kernel ibridi (Windows NT e XNU). Kernel ibrido
davvero diverso dai kernel “classici” che conosciamo. Esso è detto anche sistema “verticale” proprio perchè si basa su un approccio diverso alle risorse.L’Exokernel è estremamente compatto e ha come obiettivo quello di far decidere allo sviluppatore quali risorse hardware utilizzare.I kernel tradizionali utilizzano un livello di astrazione hardware (HAL) dove l’utente non sa se viene chiesta memoria dove essa è fisicamente allocata oppure se viene utilizzato il disco il settore specifico utilizzato. L’obiettivo di un’exokernel è proprio quello di permettere ad una applicazione quale settore di disco utilizzare fornendo un interfaccia davvero a basso livello, con aumento esponenziale delle prestazioni. Exokernel
è il modo in cui vengono organizzati i dati nella memoria di massa. Esistono diversi tipi di file System e viene scelto in base alle prestazioni dell’elaboratore, dimensione del supporto di memorizzazione, tipo di sistema operativo, ecc… S I file system più comuni sono: FAT,EXT2,NTFS,HSF,HSF+ FAT12
è un FAT12. Essendo un file system abbastanza semplice e di facile comprensione è stato utilizzato per supporti fisici come i floppy disk da 1.44 Mb. Sarà necessario comprendere il funzionamento del file system dando uno sguardo alla struttura della memoria e di come viene gestita, ovvero a come sono organizzati I primi settori di disco FAT12
settore da un boot Sector utilizzato per il bootstap del sistema e conseguente caricamento del kernel in memoria.Poi ci sono le FAT (file allocation Table), successivamente troviamo la root directory grazie alla quale in fase di bootstrap il bootloader cercherà il file del kernel e lo caricherà in memoria. Infine un ultima parte che è riservata ai dati veri e propri contenuti nel device di memorizzazione. FAT12
compito del sistema operativo è quello di convertire I dati memorizzati nei settori di disco in pagine di memoria che sono visualizzate come segue FAT12
sistema operativo e la sua funzione è quella di andare a cercare nel disco il file del kernel da caricare in memoria e da mandare in esecuzione. Tutto comincia in fase di accensione dove l’indirizzo del PC punta all’area di memoria ovvero la coppia di registri CS:IP = F000:FFF0h che corrisponde alla entry point del BIOS. Il BIOS dopo aver controllato tutte le periferiche e terminato il suo processo lancia l’interrupt 19H (noto come interrupt di bootstrap). Caricamento kernel
floppy come drive di boot e caricherà il contenuto del suo primo settore di disco (boot sector) in memoria RAM nella locazione 0:07C0h.Il primo byte dovrà contenere già un istruzione eseguibile per poter avviare il caricamento del kernel. Il compito del bootloader adesso è quello di settare alcuni parametri importanti e di cominciare a leggere il contenuto della root directory nella quale sarà presente il nome del kernel da caricare. Una volta individuato il file esso avrà alcune informazioni, come il primo cluster del file del kernel. Caricamento kernel