besturingsmachines en de interface naar het programma- en datageheugen gekarakteriseerd. Deze
opbouw wordt aangeduid als de processor – architectuur.
Een virtuele machine is een nagebootste microprocessorkern. De gewenste architectuur wordt per
software op een bestaand computersysteem geconstrueerd.
Tegenover het nadeel van een lagere snelheid bij de uitvoering van eenvoudige programma -
aanwijzingen staat een aantal voordelen:
•
het kunnen realiseren van architectuurelementen, die het als basis gebruikte computersysteem
niet biedt
•
optimale aanpassing aan een programmeertaal
•
het eenvoudig overbrengen van de VM op andere computersystemen bij herbruikbaar- heid van
bestaande programma's, zelfs als binaire code
In het besturingssysteem van de C-Control II werkt een door Conrad Electronic ontwikkelde virtuele
machine. Deze is functioneel nauw aan de programmeertaal C2 gekoppeld en biedt de
gebruikersprogramma's eenvoudige toegang tot de systeemresources.
4.4.2 binaire code – vertaler
De C2-compiler produceert uit de programma – brontekst van het gebruikersprogramma een binaire
code. Deze kan in de C-Control II unit geladen worden. Bij de uitvoering van het gebruikersprogramma
wordt de binaire code stap voor stap gelezen en vertaald. D.w.z. voor elke gelezen code wordt een
gedefinieerde operatie uitgevoerd.
De virtuele machine van de C-Control II unit kent vier codevormen – twee 16bit-vormen en twee 32bit-
vormen:
Form Low-byte (low-word)
A
Bevel (0 ... 63)
B
Bevel (64 ... 127)
C
Bevel (128 ... 191)
D
Bevel (192 ... 255)
Aan het waardebereik waarin de bevelcode ligt, herkent de vertaler de bevelvorm. Afhankelijk van de
bevelvorm worden optioneel een byte -parameter en een word -parameter geladen, voor de aan de
codewaarde toegewezen operatie uitgevoerd wordt.
Om een overzicht te geven van alle beschikbare operaties, voert op deze plek te ver en is voor het in
principe begrijpen van de C-Control II unit niet noodzakelijk.
4.4.3 Mulithreading
Een hoofdkenmerk van de C-Control II Unit is de ondersteuning van Multithreading in
gebruikersprogramma's. Verschillende programma – onderdelen kunnen quasi gelijktijdig en van elkaar
onafhankelijk afgewerkt worden. Daardoor kunnen complexe, in de applicatie parallel en asynchroon
verlopende procedures op simpele wijze behandeld worden.
Voorbeeld:
Verschillende digitale ports moeten permanent gecontroleerd worden; bij het voorkomen van een
bepaalde combinatie moet er een impulsvolgorde met vooraf ingevoerde timing afgegeven worden;
gelijktijdig moeten er een paar A/D- kanalen bewaakt worden en bij overschrijding van limietwaarden
moet er een alarm afgaan; van de seri le interface worden in een bepaald ritme dataframes verwacht, die
ge valueerd en beantwoord moeten worden; via de printer moeten meetwaarden afgedrukt worden...
In programma – onderdelen die met andere apparaten communiceren, kunnen er situaties ontstaan,
waarbij er gewacht moet worden tot de communicatiepartner klaar is voor de data – ontvangst. In een
computersysteem met uitsluitend sequenti le verwerking van het programma is het praktisch onmogelijk,
in deze wachttijden op verdere gebeurtenissen te reageren. Zo kan het gebeuren, dat een alarmtoestand
op grond van een te hoge temperatuur niet of niet tijdig herkend wordt, omdat ondertussen het systeem
wacht tot een aangesloten printer klaar is voor gebruik.
Bij de Multithreading van de C-Control II Unit kan een programma opgedeeld worden in maximaal 255
"threads" ("draden"). Aan elke thread wordt door de kern van het besturingssysteem beurtelings een
portie rekentijd toegekend. Hoeveel rekentijd een thread krijgt, kan gestuurd worden door de prioriteit
ervan. Bij prioriteit 0 wordt er direct doorgeschakeld naar de volgende thread. De hoogst mogelijke
prioriteitswaarde is 255. In één omloop voert de binaire code – vertaler voor elke thread maximaal zo vele
operaties uit als er overeenkomen met de desbetreffende prioriteitswaarde. Bij wachtsituaties vindt de
High-byte (low-word)
High-word
-
Byte - parameter
-
Word - parameter
Byte - parameter
Word – parameter
-
-
21