In den letzten Monaten habe ich viel Zeit damit verbracht meiner Masterarbeit zu schreiben. Abgegeben habe ich sie schon im September, aber ich bin erst letzten Freitag dazu gekommen meinen Abschlussvortrag zu halten. Aber das Ergebnis von allem ist, dass ich jetzt einen Masterabschluss habe und mein Informatikstudium nach 5 Jahren beendet habe.

In meiner Arbeit habe ich mich damit beschäftigt wie man in einem eingebetten Echtzeitsystem Wissen über die Interaktion von Betriebssystem und Anwendung extrahieren kann. In der Automobilbranche kommt häufig OSEK als Betriebssystemstandard zu Einsatz. OSEK definiert einen relativ übersichtlichen Satz an Betriebsystemaufrufen.

Um jetzt dieses Interaktionswissen einzufangen, konstruiere ich den Globalen Kontrollflussgraphen für eine einzelne Anwendung. In dem globalen Kontrollflussgraphen sind alle Übergänge von Basisblöcken verzeichnet, wie sie hintereinander auf der realen CPU ausgeführt werden können.

In dem Bild sieht man, dass Task 1, der eine mittlere Priorität hat, einen höher Prioren aktiviert. Nachdem Task 3 an dieser Stelle läuffähig wird, wird er auch auf der Stelle ausgeführt und erst nachdem er sich wieder beendet hat geht es wieder zu Task 1 zurück.

Der Unterschied zum lokalen Kontrollflussgraphen sieht man, an dem ausgegrauten Pfad der direkt vom ActivateTask zum TerminateTask geht. Dieser ist im Task-lokalen Kontrollflussgraphen vorhanden, aber im System-globale Kontrollflussgraphen nicht.

Für weitere Details gibt es: