Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Osiris Operating System

Diego
April 01, 2015

Osiris Operating System

Basic x86 Assembly routine that loads a small kernel file into RAM memory and calls kernel function to print a string to the screen

Diego

April 01, 2015
Tweet

More Decks by Diego

Other Decks in Programming

Transcript

  1. S Osiris Operating System Operating system 16 bit with file

    system FAT12 developed by Diego Mariani
  2. Concetti base S  Per sistema operativo si intende un insieme

    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
  3. Tipologie di kernel S  Un kernel monolitico è costituito dalla

    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
  4. Tipologie di kernel S  Un microkernel è strutturato in maniera

    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
  5. Tipologie di kernel S  Un kernel ibrido nasce dalla fusione

    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
  6. Tipologie di kernel S  Un exokernel è un sistema operativo

    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
  7. Tipologie di kernel S  Questa tipologia di kernel non è

    ancora stata implementata al livello commerciale ma è sviluppata solo da alcune università (MIT) Exokernel
  8. File System S  Il file System di un sistema operativo

    è 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
  9. File System S  Il file system utilizzato in Osiris Os

    è 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
  10. File System S  Il FAT12 è composto per il primo

    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
  11. File System S  Esempio di root directory di un FAT12.Il

    compito del sistema operativo è quello di convertire I dati memorizzati nei settori di disco in pagine di memoria che sono visualizzate come segue FAT12
  12. Bootloader S  Il bootloader è la prima componente di un

    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
  13. Bootloader S  L’interrupt di bootstrap configura nel nostro caso il

    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