!1.2 Prozesssynchronisation SPOOL: Druckersystem Kommand: {{{lp}}}, welches die Aufträge an den Daemon {{[lpd}}} uebergibt. Und der gibt weiter an den Drucker (z.B. /dev/lp). !!Beispiel einfache Implementierung einer SPOOL Warteliste #bild1 Wenn mehrere Prozesse drucken wollen, muessen sie alle auf die Pointer next_in und next_out und auf die Druckliste zugreifen koennen. Skript @ 1-18 zeigt, dass durch den (schwer reproduzierbaren) Prozesswechsel Fehler auftreten. In diesem Fall ueberschreibt Prozess A den Druckauftrag von Prozess B. Ursache dafuer ist eine "Race Condition", welche durch den Prozesswechsel innerhalb eines kritischen Abschnitts entsteht. !!Loesungsansaetze siehe Skript - Maskieren bedeutet, dass im priviligierten Modus keine/sehr wenige Unterbrechungen zugelassen werden. Das kann verheerende Folgen haben, wenn folgende Interrupts maskiert werden: - Timer: Betriebssystem kann sich nicht mehr zwischenschalten - Termination Interrupt: Externe Hardwareereignisse werden nicht mehr erkannt (Keyboard, USB-Stick) - Programmfehler: Es wird nicht erkannt, wenn Programmfehler auftreten -> schlecht