Programmazione sistemi operativi

di il
6 risposte

Programmazione sistemi operativi

Buonasera a tutti. Mi ha sempre incuriosito l'idea di scrivere un sistema operativo. Volevo sviuppare qualcosina, ninete di troppo impegnativo, non voglio certo imitare gli OS commerciali poichè non mi interessa sviluppare interfacce grafiche avanzate, sistemi di sicurezza ecc, ma capire come a partire dall'hardware del pc "morto"(intendo dire porpio morto, senza bios/firmware), ottenere qualcosa che riceva input da tastiera e mouse e stampare sullo schermo (non serve avere tutti i dispostitivi, una volta capito come si gestiscono questi). Quindi l'idea è avere una sorta di promt dei comnadi come interfaccia, un semplice file system, e poi tutta la faccenda di: gestione degli interrupt, gestione dei dispositivi e implementazione dei driver, gestione delle periferiche hard disk, scheda di rete, gestione della memoria, allocazione e allocazione di essa ecc. Non intendo dotare di troppa roba, solo l'essenziale.
Premetto di aver studiato un libro sui sistemi operativi e di aver compreso il funzionamento di ogni sua parte. Ciò che infatti potrei fare è un programma che simuli un sistema operativo, ma come ho scritto sopra vorrei fare qualcosa di vero, creare un bootloader, caricare il sistema sul disco e farlo eseguire da un pc "vuoto". A questo punto lo scoglio che i trovo a dover superare è questo: come realizzo tutta programmazione a basso livello? Ho programmato in C, ma sempre ad alto livello (per quanto si potesse fare) e usato le classiche librerie standard, questo per dire che non ho mai comandato al bus della sheda video di stampare sullo schermo una stringa o programmare il driver di una scheda di rete. Ora mi trovo a dover fare questo e altro. E' fin troppo interessante per lasciar stare l'ardua impresa, ma per quanto possa aver imparato sui sistemi operativi, non sono in grado di realizzare ciò.
Chiedo a voi quali consigli avreste da darmi, quali fonti/libri consultare per poter imparare a lavorare a basso livello. Grazie in anticipo

6 Risposte

  • Re: Programmazione sistemi operativi

    Qualcosa trovi in rete, cerca minix o altri...

    Esistono anche i sorgenti di msdos da qualche parte

    Ma devi partire da un bios/firmware in ogni caso altrimenti non puoi caricarlo in memoria il tuo os
  • Re: Programmazione sistemi operativi

    Grazie per il riferimento. Da quel che ho capito minix è un sistema scritto per scopo didattico anche se è comunque complesso e articolato, dallo stesso Tanenbaum che ha scritto un libro sui sistemi operativi(che io non ho), forse nel suo libro spiega alcune parti del sistema?
  • Re: Programmazione sistemi operativi

    C'è FreeRTOS che va bene per imparare, il kernel minimo ha solo 3 moduli. Ti compri una board di tuo gradimento tra quelle supportate, tipo una Tower della Freescale o una Nucleo dell'ST. Oppure usi uno degli altri OS supportati dalle board, che però solitamente sono molto complessi
    Iniziare da PC è troppo complicato. Poi, comunque, non ti aspettare che sia chissà cosa fare un driver PC di una scheda. Ha senso solo se lavori in quella particolare azienda che fa le schede
  • Re: Programmazione sistemi operativi

    Booster ha scritto:


    Buonasera a tutti. Mi ha sempre incuriosito l'idea di scrivere un sistema operativo. Volevo sviuppare qualcosina, ninete di troppo impegnativo, non voglio certo imitare gli OS commerciali poichè non mi interessa sviluppare interfacce grafiche avanzate, sistemi di sicurezza ecc, ma capire come a partire dall'hardware del pc "morto"(intendo dire porpio morto, senza bios/firmware), ottenere qualcosa che riceva input da tastiera e mouse e stampare sullo schermo (non serve avere tutti i dispostitivi, una volta capito come si gestiscono questi). Quindi l'idea è avere una sorta di promt dei comnadi come interfaccia, un semplice file system, e poi tutta la faccenda di: gestione degli interrupt, gestione dei dispositivi e implementazione dei driver, gestione delle periferiche hard disk, scheda di rete, gestione della memoria, allocazione e allocazione di essa ecc. Non intendo dotare di troppa roba, solo l'essenziale.
    Premetto di aver studiato un libro sui sistemi operativi e di aver compreso il funzionamento di ogni sua parte. Ciò che infatti potrei fare è un programma che simuli un sistema operativo, ma come ho scritto sopra vorrei fare qualcosa di vero, creare un bootloader, caricare il sistema sul disco e farlo eseguire da un pc "vuoto". A questo punto lo scoglio che i trovo a dover superare è questo: come realizzo tutta programmazione a basso livello? Ho programmato in C, ma sempre ad alto livello (per quanto si potesse fare) e usato le classiche librerie standard, questo per dire che non ho mai comandato al bus della sheda video di stampare sullo schermo una stringa o programmare il driver di una scheda di rete. Ora mi trovo a dover fare questo e altro. E' fin troppo interessante per lasciar stare l'ardua impresa, ma per quanto possa aver imparato sui sistemi operativi, non sono in grado di realizzare ciò.
    Chiedo a voi quali consigli avreste da darmi, quali fonti/libri consultare per poter imparare a lavorare a basso livello. Grazie in anticipo
    Ti capisco, cio sbattuto la testa in un sacco di teoria da sapere per realizzare il OS all'università, circa 6 mesi esami da 12 crediti. E' un impresa se non sai un minimo di elettronica. Anche solo per scrivere un profilo "information Hardware" dovresti scrivere in C le parti dei driver ma lo standand C/C++ non ti fornisce tutto cio. i fornisce solo se "ricevi da tastiera" e "manda su video il carattere". Ho trovato difficile e non ci sono riuscito a scrivere anche solo le informazioni hardware del computer.

    Perchè tu come faresti con il linguaggio C/C++? occorre conoscere l'elettronica ma non ne sono sicuro. Allora ho abbandonato l'idea di scriverne uno mio. Richiede per essere un minimo completo un sacco di tempo e devi gia essere esperto nella programmazione nel senso avere le idee chiare cosa programmare e come.
  • Re: Programmazione sistemi operativi

  • Re: Programmazione sistemi operativi

    oregon ha scritto:


    Queste mi sembrano ovvietà per la scrittura di un OS
    Pensa che, per me, sarebbero ovvietà per la scrittura per qualsiasi tipo di software...
Devi accedere o registrarti per scrivere nel forum
6 risposte