BS-Hausaufgabe 1, CGA_Screen Hardware-Cursor

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

BS-Hausaufgabe 1, CGA_Screen Hardware-Cursor
Hallo zusammen,

bei der Hausaufgabe 1 zur Vorlesung Betriebssysteme sollen wir ja unter anderem die Klasse CGA_Screen implementieren, welche wahlweise entweder den Hardware-Cursor des CGA-Adapters oder einen selbst implementierten Software-Cursor zur Ausgabe (z.B. in der Funktion CGA_Screen::print()) verwendet.

Bei der Implementierung sollen ja mehrere CGA-Screens auf disjunkten Teilen des Bildschirms parallel (aber zunächst noch nicht thread-safe) arbeiten können.
Müssen wir auch den Fall berücksichtigen, dass mehrere CGA-Screens den Hardware-Cursor gleichzeitig verwenden wollen, oder darf das immer nur ein CGA-Screen? Theoretisch könnte der Benutzer ja auch mehrere CGA-Screens mit useCursor=true erzeugen.
(Falls es alle können sollten müssten wir ja den Zustand des Hardware-Cursors trotzdem nochmal intern sichern, da dieser dann zwischen 2 print()-Aufrufen von einem anderen CGA-Screen verschoben werden kann. Mehrere CGA-Screens kommen sich auf jeden Fall ordentlich in die Quere, wenn sie alle versuchen, den Hardware-Cursor zu benutzen)

Darf also immer nur ein CGA-Screen den Hardware-Cursor benutzen (Konstruktorparameter useCursor=true) oder müssen wir davon ausgehen, dass mehrere CGA-Screens das gleichzeitig versuchen und sich dabei natürlich ordentlich in die Quere kommen?

Vielen Dank im Voraus für die Antworten.

Mit freundlichen Grüßen,
AndreasN


Ich glaube mich zu erinnern, dass das mit dem Cursor nicht die Schwierigkeit der Aufgabe darstellen sollte und sich über die Nebenläufigkeit keine großen Gedanken gemacht werden muss. Ich hab das damals nicht threadsicher programmiert aber nie verwendet und es wurde auch nicht in der Abnahme geprüft.

Im einfachsten Fall stellst du einfach händisch sicher, dass nur ein Screen den Hardwarecursor verwendet.


Du hast den wichtigsten Teil der Aufgabe erfüllt: Du hast das Problem erkannt und darüber nachgedacht. :wink: