Autore Topic: Prex, un RTOS minimale  (Letto 3385 volte)

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Prex, un RTOS minimale
« il: 05 Giugno 2011, 02:11:03 »
Mi è capitato di studiare i sorgenti di questo piccolo sistema operativo

http://prex.sourceforge.net/

Si tratta sostanzialmente di un sistema operativo Real Time, compatibile POSIX, multithreaded, molto leggero (gira addirittura su un GameBoy) e adatto per i processori ARM, PowerPC e x86.

La particolarità di questo sistema è il doppio memory model, funziona in pratica con e senza MMU.

Funzionamento con MMU
Ogni processo ha il suo address space separato, ad ogni context switch avviene anche la riprogrammazione della MMU e il flush del TLB. Non implementa memoria virtuale e/o paginazione, ma sarebbe abbastanza triviale implementarlo data la struttura del kernel.

Funzionamento senza MMU
Ogni processo viene rilocato ad un indirizzo fisico come se fosse una libreria, non essendoci MMU ogni processo può influire sugli altri, simile per certi versi al memory model di AROS / AmigaOS.

Ero riuscito a modificare questo secondo memory model in modo tale da sfruttare la MPU (Memory Protection Unit), per bloccare gli accessi in scrittura sullo spazio degli altri processi. In questo modo la memoria condivisa consente il passaggio dei messaggi IPC, ma impedisce la scrittura diretta (evitando quindi dei crash di sistema). Per scrivere sullo spazio di un altro processo bisognava lanciare una IPC al processo destinatario, e tale scrittura sarebbe avvenuta soltanto in caso di risposta affermativa del processo ricevente (tramite un message handler apposito).
Successivamente a questo esperimento iniziai a programmare un mio kernel che implementasse nuove funzioni, rifatto comunque da zero e con un'API differente, ispirata più a Windows che a POSIX.
Forse un giorno metterò online qualcosa di "cliccabile", ma questa è roba per nerd hardcore...  :banana-linedance:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

AmigaCori

  • Visitatore
Re: Prex, un RTOS minimale
« Risposta #1 il: 05 Giugno 2011, 02:35:28 »
Mi permetto di aggiungere un'immagine presa dal tuo link che mi ha fatto esclamare ca....:scared-yipes:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: Prex, un RTOS minimale
« Risposta #2 il: 05 Giugno 2011, 02:38:14 »
il mio OS era più fico ancora... sul DS, grazie al touchscreen, avevo fatto pure la tastiera virtuale a scomparsa stile Android  :ugeek:  :violin:
Stavo anche iniziando a programmare una API grafica accelerata tramite l'hardware 3D del DS, per disegnare la GUI... ma interruppi il progetto prima di completare questa parte.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: Prex, un RTOS minimale
« Risposta #3 il: 05 Giugno 2011, 02:50:04 »
Argh...  :angry-screaming:  ho appena riguardato il mio vecchio codice... :confusion-confused:


faccio prima a riscriverlo da capo  :lol:

Reminder: MAI riguardare il codice di progetti scritti 3 anni prima, soprattutto se nel frattempo la propria tecnica è migliorata di molto...  :character-willie:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

AmigaCori

  • Visitatore
Re: Prex, un RTOS minimale
« Risposta #4 il: 05 Giugno 2011, 02:51:36 »
Tu non sei normale  :D

E magari andava meglio del router box-less?  :laughing-rollingred:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: Prex, un RTOS minimale
« Risposta #5 il: 05 Giugno 2011, 03:00:58 »
mmmh.... bella domanda, dovremmmo fare un confronto  :auto-dirtbike:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Tags: