Home
 
 
Linux



Firewall >

QoS >

PowerPC >

PHP & Interbase >

 

 

Amiga

 


Storia >
Os 3.9 >
Amiga DE >

 

 

Autore

 


Autore:
Masetti Marco

email:
marcomas@libero.it

ultimo aggiornamento:
Venerdì, 19 Febbraio 2003

 

 
 
 
 
 
 
 

Amiga: AmigaDE e TAO

 

 ELATE RTOS (Real Time Operating System)

 

Per gli utenti Amiga comunque l'interesse maggiore riguarda Elate, il S.O. real time che è alla base dell'AmigaDE.

Elate è stato realizzato sempre da TAO e comprende tutte le funzioni classiche offerte dai sistemi operativi: filesystem, scheduling real time, gestione della memoria, librerie di alto livello.

Offre codice completamente portabile che come abbiamo visto è realizzato in VP e le seguenti caratteristiche:

  • Indipendenza dal codice (al momento un programma scritto in VP o JAVA può essere eseguito su uno dei seguenti processori supportati: ARM 6/7, StrongARM, Thumb, x86 (486, pentium, athlon, …) Coldfire, Motorola M-core, Motorola PowerPC, Hitachi SH ¾ (Sega Dreamcast), Mips R3000/R4000/R5000, Nec V850).
  • Basato su oggetti
  • Load-balancing (distribuzione "automatica" dei processi nella rete)
  • Multithreading (esecuzioni di più thread di un processo in contemporanea)
  • Multitasking (esecuzione in contemporanea di più processi)
  • Esecuzioni programmi/processi in parallelo anche su processori eterogenei (es. su un PPC e su un x86)
  • Dynamic binding (caricamento di parti di un'applicazione (tool) solo quando necessario per evitare spreco di risorse)
  • Kernel minimale, compatto, veloce e portabile. Il kernel può essere portato senza ottimizzazioni particolari verso altra piattaforma in poco più di due-tre settimane. E' possibile anche creare un kernel in base alle proprie esigenze, es. da 12KB per dispositivi a batteria).
  • Un porting completo su altra piattaforma può richiedere appena tre mesi di lavoro.

Questo RTOS è stato sviluppato per poter sfruttare tutte le potenzialità offerte dal VP, in particolare le dimensioni ridotte del codice e l'elevata portabilità. Queste caratteristiche permettono finalmente di esplorare anche soluzioni che prevedano l'utilizzo della potenza di calcolo resa disponibile ad esempio da tutte le macchine presenti in una rete locale, anche se con hardware, architettura completamente differenti, senza necessità di modifica del codice e ricompilazioni "manuali".

Elate non implementa la memoria condivisa, si basa invece su un sistema di messaggi (asincrono o sincroni) che consente ai vari oggetti di comunicare tra loro, inoltre non è necessaria una gestione centralizzata date le dimensioni ridotte del kernel (12K) che consentono di renderlo presente su più macchine (e data l'elevata portabilità, di qualsiasi architettura supportata), di servire direttamente i processi/oggetti locali e di gestire la comunicazione con gli altri kernel.

Nel momento in cui un processo richiederà un determinato tool questo sarà caricato, compilato ed eseguito, se lo stesso tool necessiterà dell'utilizzo di un'ulteriore tool anche questo sarà caricato, compilato ed eseguito. Per questo motivo i tool sono stati realizzati in modo compatto, proprio per evitare i tempi lunghi di caricamento tipici degli eseguibili "classici" e per consentire una compilazione immediata. Il tool inoltre resterà disponibile in memoria a disposizione di tutte le applicazioni che ne abbiano bisogno e se non più necessario rimosso.

Per quanto riguarda lo sviluppo del codice è possibile utilizzare il linguaggio più familiare tra:

  • Java
  • Assembler
  • C
  • C++

Per i programmi in C/C++ sono disponibili i compilatori gcc che generano automaticamente il listato assembler VP. In questo caso bisognerà comunque seguire la filosofia dello sviluppo di tool (procedure/metodi) compatti che svolgono una determinata funzione. Infatti più i tool sono compatti e maggiore sarà la velocità di caricamento e traduzione. Quindi utilizzando l'assemblatore asm si genererà il codice VP (con suffisso .00).

 

Una volta ottenuto il codice VP è possibile avviare l'applicazione realizzata:

 

Per ottenere comunque il codice più ottimizzato e veloce possibile  si può utilizzare direttamente il VP assembler, che poi in realtà è più vicino ad un linguaggio di alto livello (es. C) che non ad un linguaggio Assembler vero e proprio, infatti implementa tutti i costrutti tipici di questi linguaggi (repeat...until, while...endwhile, loop...endloop, ...).

Ad esempio il classico helloworld si potrebbe scrivere in questo modo:

.include 'taort'

tool 'demo/example/helloworld',VP,F_MAIN,8192,0

     ent -;-

     printf messaggio       ; stampa messaggio "Hello world!"

     qcall lib/exit,(0:-)   ; chiamata del tool di uscita

     ret

toolend

data

messaggio:

    dc.b "Hello world!\n",0

.end

Il listato una volta salvato con suffisso asm può essere dato in pasto all'assembler asm che genererà il file hello.00 pronto per essere tradotto.

E' possibile anche realizzare diverse versioni di un tool realizzato in modo che sfrutti i set di istruzioni ottimizzate di alcuni processori (es. MMX, 3Dnow!, SSE, Altivec, …) in modo che siano poi utilizzate automaticamente dal traduttore.

Elate inoltre può essere eseguito, oltre che standalone, anche "sopra" un altro S.O., sotto forma di finestra. Al momento i S.O supportati sono: Windows (95/98/NT/CE), Linux, QNX, DOS, OS-9, …).

 

 

 

Immagine da redloop (linux)

 

Immagine da www.amiga.com (windows)

 

 

E' quindi possibile utilizzare Elate per accedere a intent JTE pur mantenendo e utilizzando ad esempio lo stack TCP/IP del sistema operativo ospitante.

Naturalmente le società interessate allo sviluppo sono molte: Amiga, NEC, LinkUp, Sun, Arm, JVC, Motorola, Grundig, Sony, Fujitsu, Lineo …

 

 

<<-  Indietro        1 2 3 4      Avanti  ->>