Guten Abend,
Das Problem an präemptivem Multitasking ist einerseits, was passiert wenn zwei Tasks die gleiche Ressource anfordern, bzw. auf das gleiche warten?
In meinem Fallbeispiel gibt es zwei Tasks die immer gerne Zeichen von der Tastatur erhalten moechten.
Task A ruft nun get_key auf.
Task B kommt zum Zug
Task B ruft auch get_key auf -> Booom!
Eine Taste wird gedrueckt
Problem Nr 1.)
Rufen zwei Tasks die gleiche Funktion auf, greifen sie auf die gleichen Adressen zu (int i; in get_key ist ja immer an der gleichen Stelle)
Problem Nr 2.)
Wer bekommt die Taste?
get_key muss auf IRQ1 warten. Der Tastaturtreiber soll dem Scheduler also sagen, dass der aufrufende Task erst wieder gescheduled werden soll, wenn der Tastenanschlag da ist? (Ein Tastaturtreiber???)
Ich konnte mir noch keine Loesung die 100%ig passt zusammen denken, und waere daher dankbar fuer eine kleine Unterstuetzung
Das Problem an präemptivem Multitasking ist einerseits, was passiert wenn zwei Tasks die gleiche Ressource anfordern, bzw. auf das gleiche warten?
In meinem Fallbeispiel gibt es zwei Tasks die immer gerne Zeichen von der Tastatur erhalten moechten.
Task A ruft nun get_key auf.
Task B kommt zum Zug
Task B ruft auch get_key auf -> Booom!
Eine Taste wird gedrueckt
Problem Nr 1.)
Rufen zwei Tasks die gleiche Funktion auf, greifen sie auf die gleichen Adressen zu (int i; in get_key ist ja immer an der gleichen Stelle)
Problem Nr 2.)
Wer bekommt die Taste?
get_key muss auf IRQ1 warten. Der Tastaturtreiber soll dem Scheduler also sagen, dass der aufrufende Task erst wieder gescheduled werden soll, wenn der Tastenanschlag da ist? (Ein Tastaturtreiber???)
Ich konnte mir noch keine Loesung die 100%ig passt zusammen denken, und waere daher dankbar fuer eine kleine Unterstuetzung


Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
) hat.
Daraus schliesse ich, eine Funktion im Kernel darf keinen Polling enthalten sonst geht Multitasking kaputt. Das einzige was geht sind wirklich Messages irgendwie zu verschicken.