JXOS/RTSJ
Thierry Baldo
06/12/2004
Résumé
Ce document présente l’implémentation des spécifica-
tions RTSJ (REAL TIME SPECIFICATION FOR JAVA) sur
le système d’exploitation JXOS.
Après une rapide introduction, un chapitre présente
JXOS, un second présente les alternatives actuelles de
RTSJ, un troisième décrit l’implémentation de RTSJ.
1 Introduction
Dans le cadre d’une unité de valeur au CNAM
(CONSERVATOIRE NATIONAL DES ARTS ET
MÉTIERS), j’ai été amené à effectuer un début
d’implémentation de RTSJ (REAL-TIME SPE-
CIFICATION FOR JAVA) sur un noyau en Java,
JXOS.
2 JXOS
2.1 Présentation
JXOS est un système d’exploitation en Java,
distribué sous GPL (Gnu Public Licence). Il est
composé d’un noyau (core) écrit en C et en as-
sembleur (x86) qui gère les opérations de bas-
niveau (commutation de tâches, interruptions,
etc.) et de composants (components) écrits en
Java. L’environnement de développement est Li-
nux.
JXOS a été créé dans l’optique "exécutif d’ex-
ploitation" et non "système d’exploitation géné-
raliste".
Une application est composée de plusieurs do-
maines. Chaque domaine peut être vu comme
une JVM (Java Virtual Machine) indépendante.
Les domaines sont donc isolés les uns des
autres, mais ils peuvent communiquer entre eux
via des portails (Portals). Le mécanisme de por-
tail est comparable au mécanisme de RMI (Re-
mote Method Invocation). Un domaine particu-
lier, le domaine zéro (DomainZero), est le seul
domaine qui propose des portails en C; tous
les autres domaines sont exclusivement écrits en
Java.
Lors de la création de l’exécutif JXOS, une
compilation native est effectuée vers x86 (ou
ARM4). La chaîne de compilation est :
compilation du noyau (C et assembleur)
compilation des composants Java (vers du
Bytecode)
compilation native du Bytecode
Le résultat de la chaîne de compilation est
alors copiable sur disquette, sur disque dur. Le
code peut être téléchargé via TFTP (Trivial File
Transfer Protocol). Un moniteur de débogage
est disponible via une ligne série.
2.2 Comparaison avec un Système d’exploi-
tation classique
Dans JXOS il n’y a pas de passage du mode
utilisateur au mode privilégié. Tout le code
1
s’exécute en mode privilégié. Ce mode de fonc-
tionnement s’appuie sur la vérification et la ro-
bustesse du Bytecode. Un composant Java ne
peut pas effectuer d’opérations privilégiées sans
passer par le noyau. C’est celui-ci qui effec-
tue les opérations privilégiées. Ce modèle ne
s’eloigne finalement pas tant que cela du modèle
traditionnel : mode utilisateur / mode privilégié.
JXOS utilise un adressage "à plat" (Flat Me-
mory) et non segmenté. Chaque programme
peut, théoriquement, accéder à n’importe quelle
partie de la mémoire. Ce modèle repose aussi
sur la vérification du Bytecode.
JXOS ne gère pas le swapping : tout le code
doit être logeable dans la RAM. JXOS peut
donc tourner sans problème sur un système sans
disque.
Les choix précédents impliquent une plus
grande simplicité et une plus grande rapidité
d’exécution dans les parties bas-niveau du sys-
tème d’exploitation.
Ainsi JXOS pourrait tourner de manière sécu-
risée sur des processeurs sans MMU (Memory
Management Unit) ou sans niveau de privilège.
3 Implémentations existentes de
RTSJ
Diverses implémentations de RTSJ existent :
l’implémentation de référence (RI - REFE-
RENCE IMPLEMENTATION) par la société
TimeSys :
elle existe uniquement pour Linux/x86
elle n’est pas optimisée mais elle est com-
plète
elle n’est pas prévue pour le Temps-Réel
dur
jRate est une implémentation libre basée sur
GCC (Gnu Compiler Collection)
elle ne semble pas très maintenue
elle existe uniquement pour Linux/x86
elle compile le Bytecode en code natif
x86
JavamaicaVM a été créée par la société Ai-
cas
elle existe pour VxWorks, QNX, Linux,
etc.
elle tourne sur plusieurs architectures :
x86, ARM, PPC, etc.
elle semble aboutie et optimisée
Plusieurs autres implémentations existent mais
aucune n’est basée sur un noyau en Java, comme
le but de ce projet.
4 Implémentation de RTSJ sur
JXOS
4.1 Présentation de RTSJ
Une présentation de RTSJ par le même auteur
de ce document est disponible à l’URL suivante
http://jxos.free.fr/JavaTempsReel.pdf.
Après une présentation de l’architecture,
quelques points de l’implémentation seront dé-
crits.
4.2 Architecture de l’implémentation
L’architecture globale est présentée dans le
schéma suivant :
L’implémentation consiste en deux parties :
modification du noyau (C / assembleur)
2
ajout de composants Java (packages ja-
vax.realtime et jx.realtime)
L’idée principale de ce projet est de ne modifer
que le minimum dans le noyau et ainsi d’avoir
le maximum de code dans la partie Java.
4.3 Gestion du temps
Sur PC, le circuit qui gère les interruptions
temporelles et le PIT 8254. Afin d’avoir une
très grande granularité et une grande souplesse,
celui-ci est programmé en mode oneshot : à
chaque interruption de l’IRQ 0 (Timer), la pro-
chaine échéance est calculée et le PIT est re-
programmée avec la valeur estimée. L’unité de
stockage des échéances et des périodes des ti-
mers est le celle du TSC (Time Stamp Coun-
ter) et correspond à l’horloge du système. En
prenant cette horloge système comme référence
temporelle on obtient très peu de déviation dans
le temps; chaque déviation est corrigée à l’ité-
ration suivante.
4.4 Les événements asynchrones
Les événements asynchrones (AsyncEvent) et
les handlers (AsyncEventHandler,BoundAsyn-
cEventHandler) sont implémentées exclusive-
ment en Java, ainsi que les temporisateurs (One-
ShotTimer et PeriodicTimer).
4.5 La mémoire à portée (Scoped Memory)
La mémoire à portée (Scoped Memory) a été
implémentée dans la partie C (noyau). Divers al-
gorithmes sont potentiellement utilisables. Ac-
tuellement seul le type LTMemory (Linear Time
Memory) est implémenté.
4.6 L’ordonnancement
Les algorithmes d’ordonnancement (à priori-
tés fixe, Rate Monotonic, etc.) sont écrits en
Java et sont appelés depuis le noyau via un mé-
canisme de callback. Différents ordonnanceurs
peuvent être configurés et utilisés de manière
hierarchique. Ceci offre une grande souplesse
dans la configuration du système.
5 Résultats
Même si le projet n’en est encore qu’au stade
de prototype, il est néanmoins utilisable et offre
déjà de bons résultats :
réveil d’un thread et commutation de
contexte en 4 microsecondes
200 ns de déviation moyenne pour un sys-
tème périodique
6 Liens
Real-Time Java Platform Programming (Peter
C. Dibble), Prentice Hall
http://jxos.free.fr : le site de l’auteur de
ce document où une version de l’implémenta-
tion de RTSJ sur JXOS est disponible
http://www.jxos.org : le site original de
JXOS
http://www.rtsj.org et http://www.
rtj.com : les sites officiels de RTSJ
http://www.timesys.com : l’implémenta-
tion de référence (RI)
http://www.aicas.com : implémentation
JamaicaVM
http://www.cs.wustl.edu/~corsaro/
jRate : implémentation GPL
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !