Architecture d'un programme en technologie Up ! Virtual Technical Machine
Up ! Virtual Technical Machine...
Spécificités de l'architecture d'un programme compilé en C / C++...
Architecture d'un programme interprété par Up ! Engine...
Up ! Virtual Technical Machine
Les programmes en technologie Up ! Virtual Technical Machine peuvent être dérivés en des programmes exécutables compilés pour une architecture spécifique (génération de sources C / C++ par Up ! C / C++ Generator) ou des programmes interprétables par Up ! Engine émulant le processeur virtuel Up ! P32.
Quelle que soit la cible de génération retenue, l'architecture est relativement identique. Elle est illustrée par le schéma ci-dessous :
Le programme repose sur une machine virtuelle technique dénommée Up ! Virtual Technical Machine. Celle-ci a pour but de lisser toutes les différences entre les systèmes d'exploitation supportés. Ainsi, elle tient compte notamment :
- Des caractéristiques du système de fichiers : lecteurs ou partitions, hiérarchie des répertoire ou bibliothèques-fichiers-membres, séparateur de répertoire, etc.
- De l'environnement : variables environnement, registres ou fichiers ini, etc.
- Des processeurs 16 bits, 32 bits, 64 bits qu'ils soient Risc ou Cisc.
- De la gestion de la mémoire physique : allocation, initialisation, alignement, Little Endian / Big Endian, etc.
- De la gestion des processus : lancement d'un exécutable, propriétés d'un processus, synchronisation des threads, etc.
- Des différences entre les Application Programme Interfaces (API) offerte par le système d'exploitation.
La machine virtuelle lisse également aussi toutes les différences entre les interfaces hommes-machines :
- Macintosh.
- Motif.
- Windows.
Le module Up ! Kernel de Up ! Virtual Technical Machine gère les objets standards employés par les programmes Up ! Application System. Vu d'en dehors de Up ! Virtual Machine, ces objets sont identiques quelques soient leur implémentation. Celle-ci peut être :
- Volatile.
Les objets sont détruits suite à l'arrêt du programme.
- Persistent.
Les objets sont conservés dans des fichiers suite à l'arrêt du programme. Lorsque le programme est relancé, ils peuvent être rechargés.
- Statique.
Les objets sont toujours présents en mémoire.
- Mobile.
Les objets sont paginés dans des fichiers d'échange lorsque la mémoire physique est saturée.
- Privé.
Les objets ne peuvent être qu'exploités par le programme.
- Protégé.
Les objets peuvent être exploités par plusieurs programmes s'exécutant sur une unique machine.
- Public.
Les objets peuvent être exploités par plusieurs programmes sur différentes machines.
Up ! Virtual Machine est le socle qui garantit la portabilité des programmes écrits en Ups et leur exécution identique d'une plate-forme à l'autre.
Revenir en haut de la page...
Spécificités de l'architecture d'un programme compilé en C / C++
Les modules natifs de Up ! Application System regroupant les Application Programme Interfaces (API) spécifiques à chaque plate-forme (Up ! System, Up ! Window) interagissent directement avec les couches de bas niveau des systèmes d'exploitation en se conformant aux standards du marché (Posix par exemple).
Si une Application Programme Interface (API) est non normalisée, elle est généralement non employée ou réécrite.
Up ! Kernel étant du code compilé optimisé et robuste aux erreurs, cela permet d'avoir à la fois des programmes performants et fiables.
Revenir en haut de la page...
Architecture d'un programme interprété par Up ! Engine
Up ! Engine est un programme en technologie Up ! Virtual Technical Machine exécutable particulier. Il existe donc une version de ce programme par plate-forme dont le fonctionnement est identique quelle que soit la plate-forme.
Up ! Engine charge les modules constituants le programme au démarrage de celui-ci. Pour les modules natifs, ils sont chargés par Up ! Module et Up ! Engine construit une table de translation entre les appels utilisés par un module de code semi-compilé et les appels natif cible.
Pour les modules semi-compilés au format Up ! P32, Up ! Engine crée autant de modules et de composants natifs qu'il existe de modules et de composants semi-compilés. Les segments de données sont identiques à ceux des modules natifs ; les segments de codes sont construits à partir notamment d'Application Programme Interfaces (API) propres à Up ! Virtual Machine par translation de l'assembleur du processeur virtuel Up ! P32.
Ainsi, la vitesse d'exécution d'un programme interprété par Up ! Engine est honorable et sa consommation mémoire n'est guère supérieure à celle du programme natif équivalent.
Revenir en haut de la page...