Was gemacht wird mit einem Semaphor ist einfach: Systemprogrammierung. Rund um den Einsatz eines Semaphors spannt sich ein Verwaltungsprogramm, z.B. ein Spooler (Druckauftragsabarbeitungsprogramm).
Wenn Du selbst Semaphore benutzt, betätigst Du Dich also als Systemprogrammierer - nicht zu verwechseln mit Assemblerprogrammierer.
Du musst also Routinen schaffen, die der Semaphorgesetzmäßigkeit des Verkehrsregelns nachgelagert sind, also Straßen (wie für Autos), Garagen (wie für Autos) etc., etc.
Semaphore sind also die Verkehrsampeln und Verkehrsregeln zugleich durch Constraints (also Zusammenhänge) die mit den Semaphoren paarweise auftreten.
Es gibt zwei Arten von Semaphoren:
Den Mutex (mutual exclusive) und dem alternierenden Semaphor mit Hilfsmittel Warteschlange, der Prozessumreihungen durchführt, das was in Windows und Linux usw. die Grundlage für Prozessverwaltung darstellt - dem "präemptiven Multitasking" ... im Gegensatz zu kooperativem Multitasking wie es Windows 3.11 darstellt.
Es musste in Windows 3.11 unbedingt die gesamte Windows Funktion verlassen werden UND eine neue Windows 3.11 API Funktion (außerdem noch alles in 16bit Adressraum gehalten) aufgerufen werden, bevor ein anderes Programm weiterarbeiten durfte bzw. konnte, weil erst dann festgestellt wurde durch Windows 3.11, daß die Zeitspanne für diesen Prozess bereits verkonsumiert wurde.
Mutual heisst 'beiderseitig', exclusive heißt 'ausschließlich'.
Was das ganze tatsächlich bedeutet ist:
Stillschweigendes Sperren oder Binärer Vorrangszugriff.
D.h. ein Semaphor dient der Kapselung von Ressourcezugriffen und damit dem Sicherstellen von nachvollziehbaren Systemzuständen, nicht jedoch Applikationszuständen, dafür sind wiederum file locks und memory locks in erster Linie und eben nicht Semaphore zuständig.
|