-
Die vorliegende Erfindung schafft eine Datenstruktur für ein Speichermittel in einem Anwendungssystem, ein entsprechendes Speichermittel sowie eine Vorrichtung.
-
In Systemen, auf denen große Datenmengen verarbeitet werden, kann das Kopieren von Daten einen hohen Anteil der Systemressourcen in Beschlag nehmen und dadurch zu einer kostspieligen Angelegenheit werden.
-
In heutigen Systemen für Fahrerassistenz und zumindest teilweise automatisiertes Fahren werden mehrere Gigabytes pro Sekunde verarbeitet. Daher kann hier wertvolle Systemressource in Form von Rechenressource eingespart werden, wenn das Kopieren von Daten weitestgehend vermieden wird.
-
Um Sicherheitsanforderungen zu erfüllen, müssen Kommunikationsnetzwerke resilient ausgelegt werden, um einen Totalausfall zu verhindern. Daher müssen Strategien entwickelt werden, um die beschränkten Ressourcen zu managen.
-
Stand der Technik
-
Auf Systemen mit mehreren Rechenkernen bzw. verschiedenen Kontexten der Ausführung (z. B. Tasks in einem Betriebssystem nach dem OSEK-Spezifikation (OSEK-OS)) kommt häufig eine Kommunikations-Middleware zum Einsatz, die eine konsistente Übertragung der Daten zwischen nebenläufigen Teilen der Software sicherstellt. Eine solche Kommunikations-Middleware stellt Verfahren zur Verfügung, mit denen ein Produzent von Daten diese mittels der Middleware an einen oder mehrere Konsumenten übertragen (lassen) kann.
-
Es ist bekannt zum Vermeiden von Kopien der zu übertragenden Daten einen „zero-copy“-Ansatz zu verwenden. Eine Kommunikations-Middleware nach dem „zero-copy“-Ansatz übertragt Daten nach einem zweischrittigen Ansatz. In einem ersten Schritt fordert der Produzent Speicherplatz zum Ablegen der zu übertragenden Daten über die Kommunikations-Middleware an. In einem zweiten Schritt wird der angeforderte Speicherplatz dem oder den Konsumenten zum Auslesen der zu übertragenden Daten zugeführt.
-
Mit der Übergabe der zu übertragenden Daten an die Kommunikations-Middleware wird typischerweise die „Eigentümerschaft“ für den dazu genutzten Speicherplatz an die Middleware übertragen. Während des Ablegens durch den Produzenten und des Auslesens durch den Konsumenten liegt die „Eigentümerschaft“ des dafür genutzten Speicherplatzes bei dem jeweiligen Benutzer (Produzent, Konsument).
-
Unter „Eigentümerschaft“ wird dabei verstanden, dass nur der jeweilige Prozess (Produzent, Konsument, ggf. Middleware) exklusiven Zugriff (zum Schreiben bzw. Lesen) auf den Speicherplatz hat.
-
Im Automobilbereich ist der AUTOSAR Standard bekannt, der unter anderem Kommunikationsverfahren nach dem „zero-copy“-Ansatz bereitstellt.
-
Offenbarung der Erfindung
-
In Situationen, in denen ein Benutzer (Produzent, Konsument), mit anderen Worten ein Benutzerprozess, Eigentümer eines Speicherplatzes, mit anderen Wort einer Speicherzelle, ist und währenddessen dieser Benutzerprozess abnormal, mit anderen Worten fehlerhaft, beendet wird, kann es zu sog. Speicherlecks kommen.
-
Dies liegt daran, dass die genutzte Speicherzelle aufgrund des abnormalen Beendens des Benutzerprozesses nicht mehr freigegeben wird. Der Kommunikations-Middleware gegenüber wird die Speicherzelle als belegt angezeigt. Dies führt zu blockierten Speicherzellen in dem Speichermittel, auf die nicht mehr zugegriffen werden kann und die nicht von der Kommunikations-Middleware oder dem Betriebssystem aufgeräumt werden, mit anderen Worten, wieder zur Nutzung bereitgestellt werden.
-
Wird von einem Benutzerprozess zur Übertragung großer Datenmengen viel Speicherplatz angefordert, können Situationen, in denen Speicherlecks auftreten, zu einem totalen Systemausfall führen.
-
Vor diesem Hintergrund schafft die vorliegende Erfindung eine Datenstruktur für ein Speichermittel in einem Anwendungssystem, wobei das Speichermittel eine Speicherzelle aufweist.
-
Die Datenstruktur zeichnet sich durch eine Verwaltungsstruktur aus. Diese Verwaltungsstruktur ist dazu eingerichtet, ein Zeigerobjekt, mit anderen Worten, eine Referenz bzw. ein Zeiger (eng. Pointer), auf die Speicherzelle zu halten.
-
Mittels der Datenstruktur der vorliegenden Erfindung ist es nunmehr möglich belegte Speicherzellen aufzuräumen, wenn diese durch einen abnormal beendeten Benutzerprozess belegt sind.
-
Ob ein Benutzerprozess abnormal beendet wurde, kann beispielsweise mittels eines dem Fachmann bekannten Heartbeat-Verfahren erkannt werden.
-
Wurde das Abnormale Beenden eines Benutzerprozesses erkannt, so kann über die Verwaltungsstruktur der Datenstruktur der vorliegenden Erfindung anhand des dort gehaltenen Speichermittels auf die belegte Speicherzelle, die Speicherzelle erkannt und freigegeben werden.
-
Dadurch kann die Resilienz des Anwendungssystems erhöht werden.
-
Unter einem Anwendungssystem kann vorliegend ein System bestehend aus einer Menge von Anwendungsprogrammen, d. h. automatisierten Abläufen, die teilweise auf eine gemeinsame Hardware zurückgreifen verstanden werden. Ein Teil der gemeinsamen Hardware kann dabei ein gemeinsam genutztes Speichermittel sein. Das Anwendungssystem kann eingerichtet sein, um ein Fahrzeug zumindest teilweise automatisiert, bevorzugt hochautomatisiert, zu betreiben.
-
Bei dem Speichermittel kann es sich um ein gemeinsam genutztes Speichermittel handeln.
-
Unter einem gemeinsam genutzten Speichermittel (eng. Shared Memory) kann vorliegend ein Teil eines physikalischen Speichers verstanden werden, der von mehreren Prozessen eines Anwendungssystems genutzt wird.
-
Das gemeinsam genutzte Speichermittel kann dabei zur Interprozesskommunikation genutzt werden.
-
Mittels eines gemeinsam genutzten Speichermittels lässt sich auf einfache Art und Weise eine hoch performante Datenkommunikation zwischen mehreren Prozessen umsetzen.
-
Unter einer Speicherzelle kann vorliegend ein Teil des Speichermittels verstanden werden, der identifiziert, bevorzugt eindeutig identifiziert werden kann. Eine Identifikation erfolgt dabei typischerweise über eine Speicheradresse. Dabei kann es sich um eine virtuelle Speicheradresse handeln, die bspw. nur im Kontext eines Benutzerprozesses gültig ist, oder um eine physikalische Speicheradresse, die bspw. Systemweite gültig ist. Denkbar wäre auch eine andere, ggf. eindeutige, Kennung, die dazu geeignet ist, die Speicherzelle zu identifizieren.
-
Unter einem Anwendungssystem kann vorliegend ein System bestehend aus einer Menge von Anwendungsprogrammen, d. h. automatisierten Abläufen, die teilweise auf eine gemeinsame Hardware zurückgreifen verstanden werden. Ein Teil der gemeinsamen Hardware kann dabei ein gemeinsam genutztes Speichermittel sein. Das Anwendungssystem kann eingerichtet sein, um ein Fahrzeug zumindest teilweise automatisiert, bevorzugt hochautomatisiert, zu betreiben.
-
Nach einer Ausführungsform der Datenstruktur gemäß der vorliegenden Erfindung ist die Datenstruktur derart eingerichtet, das Zeigerobjekt aufzubauen, wenn die Speicherzelle von einem Benutzerprozess des Anwendungssystems angefordert wird.
-
Unter dem Aufbau eines Zeigerobjekts kann vorliegend verstanden werden, Speicherplatz für das Zeigerobjekt zu allokieren und einen entsprechenden Verweis auf das Ziel des Zeigerobjekts in dem Speicherplatz abzulegen. Der Verweis auf das Ziel kann dabei in Form einer Kennung bspw. in Form einer Anfangsadresse des Speicherplatzes des Ziels vorliegen.
-
Nach einer Ausführungsform der Datenstruktur gemäß der vorliegenden Erfindung ist die Datenstruktur derart eingerichtet, das Zeigerobjekt abzubauen, wenn die Speicherzelle von dem Benutzerprozess freigegeben wird.
-
Unter dem Abbauen eines Zeigerobjekts kann vorliegend verstanden werden, den Speicherplatz für das Zeigerobjekt freizugeben.
-
Nach einer Ausführungsform der Datenstruktur gemäß der vorliegenden Erfindung ist die Datenstruktur derart eingerichtet, dass die Speicherzelle freigegeben wird, wenn der Benutzerprozess abnormal beendet wurde.
-
Unter einem abnormalen Beenden eines Benutzerprozesses kann vorliegend ein fehlerhaftes bzw. frühzeitiges Beenden des Benutzerprozesses verstanden werden. Zu einem abnormalen Beenden kann es kommen, wenn einerseits ein Prozess-interner Grund für das vorzeitige Abbrechen des Prozesses vorliegt. Gründe dafür können ein Speicherüberlauf, eine fehlgeschlagene Speicherallokieren etc. sein. Oder andererseits ein Prozess-externer Grund für das vorzeitige Abbrechen des Prozesses vorliegt. Auch hier können mannigfaltige Gründe vorliegen.
-
Nach einer Ausführungsform der Datenstruktur gemäß der vorliegenden Erfindung weist die Datenstruktur für jeden Benutzerprozess eine jeweilige Verwaltungsstruktur auf.
-
Diese Ausführungsform weist den Vorteil auf, dass ein Aufräumen der durch einen jeweiligen Benutzerprozess belegten Speicherzellen auf einfache Art und Weise umgesetzt werden kann, da lediglich über die jeweilige Verwaltungsstruktur des betroffenen Benutzerprozesses iteriert werden muss, um alle von diesem Benutzerprozess belegten Speicherzellen freizugeben.
-
Nach einer Ausführungsform der Datenstruktur gemäß der vorliegenden Erfindung ist die Verwaltungsstruktur in dem gemeinsam genutzten Speichermittel abgelegt.
-
Diese Ausführungsform weist den Vorteil auf, dass die Benutzerprozesse (Produzent, Konsument) und ggf. ein zentraler Verwaltungsprozess des Anwendungssystem getrennte Prozesse sein können und dementsprechend verschiedenen Prozesskontexten laufen können. Durch die Ablage der Verwaltungsstruktur bzw. der jeweiligen Verwaltungsstrukturen in dem gemeinsam genutzten Speichermittel, können dennoch alle Prozess bei Bedarf auf die Verwaltungsstrukturen zugreifen.
-
Ein weiterer Aspekt der vorliegenden Erfindung ist ein Speichermittel. Das Speichermittel weist eine Datenstruktur gemäß der vorliegenden Erfindung auf.
-
Bei dem Speichermittel kann es sich um ein gemeinsam genutztes Speichermittel handeln.
-
Ein weiterer Aspekt der vorliegenden Erfindung ist eine Vorrichtung. Die Vorrichtung weist ein Speichermittel gemäß der vorliegenden Erfindung auf.
-
Bei der Vorrichtung kann es sich bspw. um ein Steuergerät für eine Maschine handeln. Denkbar ist dabei, dass es sich bei der Maschine um ein Fahrzeug handelt. Denkbar ist dabei ferner, dass es sich bei dem Fahrzeug um ein zumindest teilweise automatisiert betriebenes Fahrzeug handelt.
-
Unter einem Fahrzeug kann vorliegend ein mobiles Verkehrsmittel verstanden werden, das dem Transport von Personen (Personenverkehr), Gütern (Güterverkehr) oder Werkzeugen (Maschinen oder Hilfsmittel) dienen kann. Je nach Anwendungsfall wird von:
- - Landfahrzeugen;
- - Wasserfahrzeugen;
- - Luftfahrzeugen
gesprochen.
-
Nachfolgend werden Ausführungsformen der Erfindung anhand von Zeichnungen näher erläutert.
-
Es zeigen:
- 1 zeigt ein Ablaufdiagramm eines Verfahrens mit einem „zero-copy“-Ansatz;
- 2 zeigt ein Blockdiagramm einer Datenstruktur gemäß der vorliegenden Erfindung;
- 3 zeigt ein Ablaufdiagramm eines Verfahrens mit Bezug zu der Datenstruktur gemäß der vorliegenden Erfindung.
-
1 zeigt ein Ablaufdiagramm eines Verfahrens 100 mit einem „zero-copy“-Ansatz. Das Diagramm stellt das Verfahren 100 aus der Perspektive eines Produzenten 10 und aus der Perspektive eines Konsumenten 11 für Daten dar.
-
In Schritt 111 fordert der Produzent 10 eine Speicherzelle 215 (siehe 2) an. Die Anforderung 111 kann über eine Kommunikations-Middleware eines Anwendungssystems erfolgen.
-
Bei erfolgreicher Anforderung erhält der Produzent 10 ein Zeigerobjekt 20, mit anderen Worten eine Referenz, auf die angeforderte Speicherzelle 215. Mit erfolgreicher Anforderung, wird die Eigentümerschaft der Speicherzelle 215 auf den Produzenten 10 übertragen und die Middleware verliert sie.
-
In Schritt 112 schreibt der Produzent 10 die zu übertragenden Daten in die angeforderte Speicherzelle 215.
-
In Schritt 113 versendet der Produzent 10 die Speicherzelle 215 an den oder die Konsumenten 11. Das Versenden kann über die Kommunikations-Middleware des Anwendungssystems erfolgen. Das Versenden geschieht dabei auf Anforderung des Produzenten 10. Dabei wird die Eigentümerschaft über die Speicherzelle 215 wieder an die Middleware übertragen.
-
Wird ein Konsument 11 über den Empfang einer Speicherzelle 215 informiert. Die Information kann über die Kommunikations-Middleware des Anwendungssystems erfolgen. Dann fordert der Konsument 11 in Schritt 121 die empfange Speicherzelle an.
-
Bei erfolgreicher Anforderung erhält der Konsument 11 ebenfalls ein Zeigerobjekt 20 auf die angeforderte Speicherzelle 215. Mit erfolgreicher Anforderung, wird die Eigentümerschaft der Speicherzelle auf den Konsumenten 11 übertragen und die Middleware verliert sie.
-
In Schritt 122 liest der Konsument 11 die empfangenen Daten aus der Speicherzelle 215 aus.
-
In Schritt 123 gibt der Konsument 11 die angeforderte Speicherzelle 215 frei, d. h. typischerweise wird das Zeigerobjekt 20 des Konsumenten 11 auf die Speicherzelle 215 abgebaut. Das Freigeben geschieht dabei auf Anforderung des Konsumenten 11. Dabei wird die Eigentümerschaft über die Speicherzelle 215 wieder an die Middleware übertragen. Dadurch steht die Speicherzelle 215 weiteren Konsumenten und ggf. auch wieder dem Produzenten 10 oder weiteren Produzenten zur Verfügung. Über die Middleware kann die Speicherzelle 215 auch aufgeräumt oder anderweitig verwendet werden.
-
2 zeigt ein Blockdiagramm einer Datenstruktur 200 gemäß der vorliegenden Erfindung.
-
Die Datenstruktur 200 weist eine Verwaltungsstruktur 203 auf, die derart eingerichtet ist, ein Zeigerobjekt 20 auf eine Speicherzelle 215 zu halten.
-
Die Verwaltung der Datenstruktur 200 läuft in einer Kommunikations-Middleware im Hintergrund zu bspw. einem „zero-copy“-Ansatz ab.
-
Denkbar ist hierbei das pro Benutzerprozess 201 (d..h pro Produzent 10 / Sender bzw. Konsument 11 / Empfänger) jeweils eine Verwaltungsstruktur 203 durch die Middleware angelegt wird, weil dadurch implizit alle Speicherzellen, die darin gelistet sind, dem jeweiligen Benutzerprozess 201 zugeordnet werden können.
-
Die Verwaltungsstruktur 203 hält dabei ein Zeigerobjekt 20 auf die Speicherzelle 215, welche von dem Benutzerprozess 201 genutzt wird.
-
Ferner zeigt das Blockdiagramm einen zentralen Dienst 202 zur Verwaltung der Datenstruktur 200. Der zentrale Dienst 202 kann dabei unterschiedliche Aufgaben übernehmen. Zum einen kann der zentrale Dienst dazu eingerichtet sein ein Heartbeat-Verfahren in Bezug auf den Benutzerprozess 201 auszuführen. Durch ein solches Verfahren kann der zentrale Dienst 202 erkennen, ob und wann ein Benutzerprozess 201 abnormal beendet wurde.
-
Im Falle, dass ein Benutzerprozess 201 abnormal beendet wurde, kann der zentrale Dienst 202 die Verwaltungsstruktur 203 nutzen, um bspw. über das bzw. die in der Verwaltungsstruktur 203 gehaltenen Zeigerobjekte 20, die von dem abnormal beendeten Benutzerprozess 201 genutzten Speicherzellen 215 im Speichermittel 210 zu identifizieren und ggf. aufzuräumen bzw. freizugeben, d. h. wieder den weiteren Benutzern in dem Anwendungssystem zur Verfügung zu stellen.
-
Die Identifikation der Speicherzellen 215 kann dabei durch die Adresse oder eine andere Form der Referenz im Speicher der Speicherzelle 215 erfolgen, da diese eindeutig zuordenbar ist.
-
Denkbar ist, dass der zentrale Dienst 202 Verfahren aufweist, die dazu geeignet sind einzelne Einträge in der Verwaltungsstruktur 203 zu suchen und ggf. zu entfernen.
-
3 zeigt Ablaufdiagramm zeigt ein Ablaufdiagramm eines Verfahrens 300 mit Bezug zu der Datenstruktur 200 gemäß der vorliegenden Erfindung.
-
Der Produzent 10 fordert in Schritt 310 eine Speicherzelle an, um sie mit Daten zu übertragenden Daten zu beschreiben. Bevor die angeforderte Speicherzelle 215 dem Produzenten 10 übergeben wird, wird zunächst in Schritt 311 die Speicherzelle über die Kommunikations-Middleware angefordert. Anschließend folgt in Schritt 312 die Prüfung, ob die angeforderte Speicherzelle 215 gültig ist.
-
Im Falle, dass die angeforderte Speicherzelle 215 gültig ist, wird in Schritt 313 ein Zeigerobjekt 20, das auf die Speicherzelle verweist, aufgebaut. Dieses Zeigerobjekt 20 wird in Schritt 314 in der Verwaltungsstruktur 203 der Datenstruktur 200 abgelegt und dort gehalten.
-
Im Falle, dass die angeforderte Speicherzelle 215 nicht gültig ist, kann mit Schritt 315 ein Fehler ausgegeben werden.
-
Der Schritt des Anforderns 310 kann dabei mehrfach wiederholt werden.
-
Nachdem die Eigentümerschaft an der Speicherzelle 215 an den Produzenten 10 übergeben wurde, nutzt der Produzent 10 in Schritt 320 die Speicherzelle 215, um die zu übertragenden Daten in die Speicherzelle 215 zu schreiben.
-
Die Übergabe der Eigentümerschaft kann dabei bspw. durch die Übergabe eines Zeigerobjekts 20 auf die Speicherzelle 215 an den Produzenten 10 erfolgen. Bei dem übergebenen Zeigerobjekt 20 handelt es sich dabei um eine Kopie des Zeigerobjekts 20, das in der Verwaltungsstruktur 203 gehalten wird, während der Produzent 10 die Eigentümerschaft an der Speicherzelle 215 innehat.
-
Nach Beenden des Schreibens fordert der Produzent 10 das Versenden 330 der Speicherzelle 215 über die Kommunikations-Middleware an.
-
Dazu wird gemäß der dargestellten Ausführungsform durch den Produzenten 10 in Schritt 331 das Zeigerobjekt 20 auf die genutzte Speicherzelle 20 aus der Verwaltungsstruktur 203 entfernt. Anschließend erfolgt in Schritt 332 das Versenden der Speicherzelle mittels der Kommunikations-Middleware.
-
Denkbar ist dabei, dass der Schritt 331 nicht von dem Produzenten 10 ausgeführt wird, sondern durch die Kommunikations-Middleware im Zusammenhang mit dem Versenden der Speicherzelle 215.