Sehr schön, dann würde ich sagen, fangen wir mal an.
Wir hatten letzte Woche aufgehört mit den Synchronisationsprotokollen und haben uns da zwei Verfahren schon angeguckt.
Ich weiß noch jemand, welche die waren, zwei Stück, die wir schon durchgenommen haben.
Ist es zu hell? Warte mal. Das vorderste ist die Frage, welches das ist.
Okay, also wir haben uns letzte Woche mit Synchronisation beschäftigt, also die Frage,
wie man kritische Abschnitte in Echtzeitsystemen koordinieren kann.
Zwei Verfahren haben wir schon, hat noch jemand eine Idee?
Jetzt muss ich die alle nochmal erzählen. Also, wenn euch das nicht langweilt.
Noch irgendjemand eine Idee? Was haben wir uns letzte Woche angeguckt?
Ja? Genau, also.
Antwort war, nicht präemptive kritische Abschnitte, also non-preemptive critical sections im Englischen und die Prioritätswerbung waren die zwei Verfahren, die wir uns angeguckt haben.
Hat noch jemand eine Idee, was von diesen beiden Verfahren die Vor- und Nachteile waren?
Andersrum gefragt, warum beschäftigen wir uns die Woche nochmal mit dem Thema?
Das ist eine ganz beliebte Prüfungsfrage.
Okay, also NPCS, noch einmal zur Erinnerung, bedeutet, wir belegen einen kritischen Abschnitt und wenn wir das tun, dann schalten wir die Verdrängung ab.
Das heißt, wir planen ein, aber wir lasten nicht mehr ein.
Das bedeutet, mit dem Betreten des kritischen Abschnitts sperren wir alle anderen aus.
Auch Tasks, die keinen direkten Zusammenhang mit diesem Betriebsmittel, mit diesem kritischen Abschnitt haben.
Das heißt, unbeteilige Dritte werden ausgesperrt. Das ist ein Problem von dem NPCS.
Was schön ist, ist, wir vermeiden eine sehr unangenehme Eigenschaft, die man generell bei Synchronisation hat, nämlich Deadlocks.
Also Deadlocks können bei einem NPCS nicht auftreten, denn wenn wir den kritischen Abschnitt belegen, dann schalten wir die Einlastung aus,
also sprich, wir können nicht mehr verdrängt werden.
Wenn wir jetzt so ein Szenario haben, wo sich zwei Tasks um zwei Betriebsmittel kloppen, also Betriebsmittel A und B, und der eine fordert erst A an und dann B und der andere erst B und dann A,
dann könnte es normalerweise zu einem Deadlock führen.
Im Fall von NPCS macht das nichts aus, denn wenn wir den kritischen Abschnitt belegen und jetzt zum Beispiel A anfordern,
dann können wir nicht mehr verdrängt werden, wir bekommen automatisch auch B und es kann eben zu keiner Verklemmung kommen.
Das ist das Schöne an dem Verfahren, das heißt, es ist sehr, sehr einfach, es vermeidet die Verklemmungen,
es hat halt eben dieses Problem, dass wir unbeteilig die Dritte aussperren.
Wir können insbesondere auch nicht durch höhere Priorität verdrängt werden, es geht halt einfach nicht mehr.
Das heißt, es ist dann ein gutes Verfahren, wenn wir kurze kritische Abschnitte haben und wenn die allermeisten,
oder sollen wir eine große Zahl von Aufgaben im System kritische Abschnitte auch benutzen,
denn dann würden sie ja sowieso im Konfliktfall unter der Blockadezeit leiden müssen.
Gut, dann haben wir uns die Prioritätsvererbung angeschaut, was ja an sich erstmal charmantes Verfahren ist.
Also was war die Idee? Naja, wir haben den Konfliktfall, das heißt, ein Hochpriorer möchte das Betriebsmittel von einem Niederprioren haben.
Kann er natürlich nicht haben, wenn es belegt ist, das ist ja unteilbar, das haben wir ja geklärt,
also wir können den nicht aus dem kritischen Abschnitt rauskegeln, aber wir wollen, dass der möglichst schnell da durchläuft.
Also vererben wir die Priorität, das heißt, der Hochprior vererbt seine Priorität an den Niederprioren
und der kann dann letztendlich schneller oder mit höherer Priorität durch diesen kritischen Abschnitt laufen.
Da war jetzt das Problem, also wir sperren unbeteilig die Dritte nicht mehr aus, das ist der Vorteil,
das Problem ist aber, wir haben die Verklemmungen wieder, die gehen, also kann passieren,
verhindert dieses Verfahren nicht und wir haben das Problem der transitiven Blockung gehabt.
Also diese Geschichte mit, selbst bei Aufgaben, die jetzt nicht direkt Betriebsmittel teilen, sondern über mittelbare Abhängigkeiten Betriebsmittel zusammenhängen,
das heißt, ich teile mir Betriebsmittel 1 mit Task A und B, Betriebsmittel 2 zwischen B und C und so weiter,
dann kann es passieren, dass der Hochprior seine Priorität an den Mittelprioren vererbt,
der wiederum diese geerbte Priorität weiter vererben wird durch solche Betriebsmittelabhängigkeiten
und dass es dann eben passieren kann, dass diese hohe Priorität bei irgendeinem Niederprioren-Task landet,
der eigentlich damit mit dem, was der Hochpriori haben will, überhaupt nichts zu tun hat, nennt man transitive Blockung.
Das heißt, diese mögliche Blockadezeit, die kann sich, wenn es solche Abhängigkeitsmuster gibt, muss nicht sein,
aber wenn es die gibt, dann kann sich die halt ganz schön massiv aufblähen.
Vielleicht an der Stelle nochmal ein Punkt, der auch immer sehr prüfungsrelevant ist,
Presenters
Zugänglich über
Offener Zugang
Dauer
01:27:29 Min
Aufnahmedatum
2019-01-17
Hochgeladen am
2019-01-17 23:59:03
Sprache
de-DE
Durch die Kopplung an die Realzeit, sind Echtzeitsysteme per Definition in die (reale) Umwelt eingebettet. Hier dienen sie typischerweise der Steuerung und Regelung von physikalischen Prozessen, wie beispielsweise dem Airbag eines Fahrzeugs.
Die Entwicklung eines Echtzeitsystems schliesst typischerweise Experten aus verschiedenen Bereichen mit ein. Die Veranstaltung nähert sich der Thematik zwar aus der Sicht der Informatik, ist jedoch grundsätzlich interdisziplinär ausgelegt und richtet sich sowohl an Studierende der Informatik als auch an diejenigen anderer Studiengänge mit einem anwenungsorientierten Bezug wie beispielsweise Mechatronik, Elektrotechnik, I&K, CE, Maschinenbau und Medizintechnik (siehe Vorraussetzungen).
Entsprechend weit spannt sich auch das Themengebiet Echtzeitsysteme auf. Abhängig von der Betrachtungsebene spricht man allgemein von eingebetteten Systemen oder, um den regelungstechnischen Anteil hervorzuheben, von Cyber-Physical Systems. Die Veranstaltung Echtzeitsysteme nimmt hierbei den Standpunkt der Systemsoftware (Echtzeitbetriebssystem) ein und erlaubt dadurch einen querschneidenden Einblick in die gesamte Welt der Echtzeitsystementwicklung. Die Vorlesung vermittelt dabei die notwendigen Grundkenntnisse, Techniken und Mechanismen für die Entwicklung von Echtzeit(betriebs)systemen und schafft damit eine gemeinsame Grundlage für alle Beteiligten.
Ziel der Veranstaltung ist neben einem fundierten theoretischen Überblick auch die tiefgehende Vermittlung von praktischem Wissen und Fähigkeiten, welche als Basis für eine erfolgreiche industrielle bzw. wissenschaftliche Anwendung dienen können.