next up previous contents
Nächste Seite: Prozeßebene Aufwärts: Allgemeine DDE Funktionalität Vorherige Seite: kmem   Inhalt

Synchronisation und Scheduling

Linux Spinlocks und Semaphore werden auf die Implementierungen des L4 Environment abgebildet -- L4-Semaphore und L4-Locks. Das Sperren von Interrupts zur Synchronisation ist natürlich nicht passend für das DDE.

Hier ist der Ansatz aus [HHW98] viel interessanter, bei dem die cli()/sti() Paare auf eine Implementierung mit Sperren abgebildet werden. Der interrupt_lock wird bei einem Aufruf von cli() angefordert und bei sti() wieder freigegeben. Damit verhält sich das ,,Sperren von Unterbrechungen`` wie ein globaler Mutex und emuliert sehr gut die Originalumgebung.

Der interrupt_lock ist hierbei treiberlokal, d.h. in jedem Treiber-Server existiert eine solche Sperre. Das ist möglich, da alle Aktionen, bei denen Unterbrechungen wirklich ausgeschaltet sein müssen, vom Omega0-Teil des I/ O Servers gekapselt werden und nur die Synchronisations-Funktion emuliert werden muß.

Bei dem Entwurf der weiterführenden Synchronisations- und Scheduling-Mechanismen muß wieder nach den beiden Ebenen im Gerätetreiber unterschieden werden:



Unterabschnitte

Christian Helmuth 2001-12-11