8.2.8.3
Automatische Prioritätsänderung durch Semaphor-Besitz
Semaphor-Besitz
Um zu verhindern, dass eine semaphor-anfordernde Task durch eine semaphor-besitzende
Task mit niedrigerer Priorität blockiert wird, wird die besitzende Task bis zum Rücksetzen
des Semaphors mit der gleichen Priorität versehen wie die anfordernde Task. Nach der
Rückgabe des Semaphors erhält die in der Priorität angehobene Task wieder die Priorität
die sie vor der Erhöhung hatte.
Die Wiederherstellung der alten Priorität erfolgt nicht, wenn zum Zeitpunkt des Rücksetzens
des Semaphors eine andere Priorität vorliegt, als durch die Prioritätsänderung bewirkt
wurde. Hier wird angenommen, dass zwischenzeitlich eine bewusste Änderung der Priorität
mit
8.2.9
Speicheraufteilung
Lokale und globale Bereiche
Die Daten des Betriebssystems werden in lokale und globale Bereiche aufgeteilt. Beide
Bereiche müssen auf Page-Grenzen (4k Byte) liegen. Der globale Bereich enthält alle Daten,
die für alle Prozessorkerne gleich sind. Die lokalen Bereiche gibt es für jeden Prozessorkern
separat. Dies wird erreicht, indem in der Pagetabelle von jedem Prozessorkern
unterschiedliche physikalische Seiten für den lokalen Bereich eingetragen werden.
8.2.10
E/A-Anforderung
RmIO
E/A Anforderungen mit dem Aufruf
Treiber und der Interrupthandler werden nur vom Prozessorkern 0 ausgeführt. Damit ist
sichergestellt, dass die vorhandenen Treiber (BYT, CRT, 3964, FD0, HD0, RAM, EMEM,
USBMEM) ohne Änderungen laufen. Wird eine E/A Anforderung auf dem Prozessorkern 1
ausgeführt, so wird die Anforderung in die SRB-Queue (S-Zustand) des Prozessorkerns 0
eingereiht und der Prozessorkern 0 mit einem Interrupt informiert. Der Prozessorkern 0 führt
die E/A Anforderung sofort aus, falls momentan kein Interrupt und keine weiteren S-
Zustände zur Bearbeitung anstehen.
Es werden also alle HW-Interrupts immer vom Prozessorkern 0 ausgeführt. Dies gilt auch für
die nachladbaren Treiber (z.B. LAN-Treiber).
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01
durchgeführt wurde.
RmSetTaskPriority
Betriebssystem-Eigenschaften von RMOS3
laufen immer auf dem Prozessorkern 0 ab, d.h. der
RmIO
8.2 Multiprocessing unter RMOS3
89