DE102022112547A1 - Übergabe von Daten zwischen Steuerprozessen - Google Patents

Übergabe von Daten zwischen Steuerprozessen Download PDF

Info

Publication number
DE102022112547A1
DE102022112547A1 DE102022112547.5A DE102022112547A DE102022112547A1 DE 102022112547 A1 DE102022112547 A1 DE 102022112547A1 DE 102022112547 A DE102022112547 A DE 102022112547A DE 102022112547 A1 DE102022112547 A1 DE 102022112547A1
Authority
DE
Germany
Prior art keywords
data
consumer
producer
memory area
management
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022112547.5A
Other languages
English (en)
Inventor
Manuel Fehlhammer
Jan Schlosser
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bayerische Motoren Werke AG
Original Assignee
Bayerische Motoren Werke AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bayerische Motoren Werke AG filed Critical Bayerische Motoren Werke AG
Priority to DE102022112547.5A priority Critical patent/DE102022112547A1/de
Priority to PCT/EP2023/061546 priority patent/WO2023222375A1/de
Publication of DE102022112547A1 publication Critical patent/DE102022112547A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Verarbeitungssystem (100) umfasst eine Verarbeitungseinrichtung (110) zur Ausführung von Prozessen, die einen Erzeuger (125), einen ersten (130) und einen zweiten Verbraucher (135) umfassen, und einen Speicher (115). Der Speicher (115) umfasst einen ersten Speicherbereich (205), auf den der Erzeuger (125) und der erste Verbraucher (130) zugreifen können; einen zweiten Speicherbereich (210), auf den der Erzeuger (125) und der zweite Verbraucher (135) zugreifen können; und einen dritten Speicherbereich (215), auf den der Erzeuger (125), der erste (130) und der zweite Verbraucher (135) zugreifen können. Der Erzeuger (125) ist dazu eingerichtet, ein Datenobjekt (225) im dritten Speicherbereich (240) anzulegen und die Verbraucher (130, 135) sind dazu eingerichtet, ausschließlich lesend auf Datenobjekte (225) im dritten Speicherbereich (240) zuzugreifen.

Description

  • Die vorliegende Erfindung betrifft die Übergabe von Daten zwischen Steuerprozessen. Insbesondere betrifft die Erfindung die sichere Übergabe zwischen unterschiedlich vertrauenswürdigen Steuerprozessen an Bord eines Fahrzeugs.
  • An Bord eines Fahrzeugs ist ein Verarbeitungssystem vorgesehen, auf dem unterschiedliche Steuerprozesse ablaufen können. Beispielsweise kann ein Erzeugerprozess Daten bereitstellen, etwa auf der Basis von Messungen, und einer oder mehrere Verbraucherprozesse können die Daten weiterverarbeiten.
  • Damit die Prozesse möglichst unabhängig voneinander laufen können, ist es üblich, jedem Prozess einen exklusiv durch ihn nutzbaren Speicherbereich zuzuweisen. Das Übergeben von Daten vom Erzeuger an einen Verbraucher erfolgt dann durch Kopieren der Daten. Sollte ein Verbraucher falsch arbeiten und beispielsweise empfangene Daten zerstören, so hat dies keine Auswirkung auf einen anderen Prozess. So können auch unterschiedlich vertrauenswürdige Verbraucherprozesse mit denselben Daten versorgt werden. Ein erster, vertrauenswürdiger Prozess kann beispielsweise eine Steuerung des Fahrzeugs durchführen, während ein zweiter, nicht vertrauenswürdiger Prozess, eine Komfort- oder Zusatzfunktion steuern kann. Ein fehlerhaftes Verhalten des zweiten Prozesses kann dadurch eine Funktionssicherheit des ersten Prozesses nicht beeinträchtigen.
  • Sollen die Daten einer größeren Anzahl Verbraucher zugeführt werden, so sind entsprechend viele Kopien der Daten zu erstellen. Ein Speicheraufwand für die Prozesse kann dadurch insgesamt hoch sein und ein Aufwand zum Bewegen der Daten kann groß sein. Eine Verzögerung zwischen dem Bereitstellen der Daten und dem Zeitpunkt, zu dem der letzte Verbraucher die Daten erhält, kann groß sein. Eine Verarbeitungseinrichtung, welche die Prozesse ausführt, kann durch das Kopieren der Daten stark belastet sein.
  • Es wurde vorgeschlagen, Daten von einem Erzeuger an mehrere Verbraucher bereitzustellen, indem ein gemeinsam genutzter Speicherbereich für die Prozesse geschaffen wird und mehrere Prozesse gleichzeitig auf denselben Daten arbeiten. In einem Umfeld mit unterschiedlich vertrauenswürdigen Prozessen kann dabei jedoch die Trennung zwischen den Prozessen unvollständig sein, so dass ein fehlerhaft arbeitender, weniger vertrauenswürdiger Prozess einen korrekt arbeitenden, vertrauenswürdigen Prozess stören kann, sodass die Funktionssicherheit des Fahrzeugs gefährdet sein kann.
  • Der vorliegenden Erfindung liegt die Aufgabe zu Grunde, eine verbesserte Technik zur Übergabe von Daten zwischen Steuerprozessen an Bord eines Fahrzeugs bereitzustellen. Die Erfindung löst diese Aufgabe mittels der Gegenstände der unabhängigen Ansprüche. Unteransprüche geben bevorzugte Ausführungsformen wieder.
  • Nach einem ersten Aspekt der vorliegenden Erfindung umfasst ein Verarbeitungssystem eine Verarbeitungseinrichtung zur Ausführung von Prozessen, die einen Erzeuger, einen ersten und einen zweiten Verbraucher umfassen, und einen Speicher. Der Speicher umfasst einen ersten Speicherbereich, auf den der Erzeuger und der erste Verbraucher zugreifen können; einen zweiten Speicherbereich, auf den der Erzeuger und der zweite Verbraucher zugreifen können; und einen dritten Speicherbereich, auf den der Erzeuger, der erste und der zweite Verbraucher zugreifen können. Der Erzeuger ist dazu eingerichtet, ein Datenobjekt im dritten Speicherbereich anzulegen und die Verbraucher sind jeweils dazu eingerichtet, auf Datenobjekte im dritten Speicherbereich ausschließlich lesend zuzugreifen. Dabei erfolgt eine Verwaltung eines Datenobjekts zwischen dem Erzeuger und dem ersten Verbraucher mittels eines Verwaltungsobjekts im ersten Speicherbereich und eine Verwaltung eines Datenobjekts zwischen dem Erzeuger und dem zweiten Verbraucher mittels eines Verwaltungsobjekts im zweiten Speicherbereich.
  • Durch Verwenden gemeinsam nutzbarer Speicherbereiche (shared memory) können Daten mit sehr kurzer Verzögerung und sehr hoher Bandbreite von einem Erzeuger an zwei oder mehr Verbraucher bereitgestellt werden. Die Daten müssen nicht vervielfältigt werden (zero copy), sodass ein Verwaltungsaufwand stark reduziert sein kann.
  • Ein Zugriff eines ersten Verbrauchers auf ein zweites Verwaltungsobjekt oder eines zweiten Verbrauchers auf ein erstes Verwaltungsobjekt kann verhindert werden. Da die Verwaltung des Datenobjekts für den ersten und den zweiten Verbraucher über verschiedene Verwaltungsobjekte erfolgt, kann eine gegenseitige Störung der Verbraucher vermieden werden. Da für die Verwaltungsobjekte bevorzugt gemeinsame genutzte Speicherbereiche verwendet werden, kann die Verwaltung des Datenobjekts schnell und sicher erfolgen. Komplexe Strukturen zur Steuerung des gemeinsamen Zugriffs können nicht erforderlich sein.
  • Ein Verbraucher ist bevorzugt dazu eingerichtet, ein Datenobjekt vor dem Zugriff im zugeordneten Verwaltungsobjekt zu belegen und nach dem Zugriff freizugeben. Ein Verbraucher kann bevorzugt nur lesend auf das Datenobjekt zugreifen.
  • Ein erster Verbraucher kann die Belegung eines Datenobjekts im Verwaltungsobjekt im ersten Speicherbereich anzeigen und ein zweiter Verbraucher die Belegung im korrespondierenden Verwaltungsobjekt im zweiten Speicherbereich. Es ist besonders bevorzugt, dass die Datenobjekte bezüglich ihres Erstellungszeitpunktes eine eindeutige Reihenfolge bilden. Dazu kann jedes Datenobjekt einen Zeitstempel tragen, der im Verwaltungsobjekt hinterlegt sein kann. Ein Verbraucher kann eine vorbestimmte Maximalzahl Datenobjekte belegen, wobei ein Datenobjekt durch mehrere Verbraucher gleichzeitig belegt sein kann. Haben alle Verbraucher ihre Belegung gelöst, so kann das Datenobjekt verworfen werden.
  • Der Erzeuger ist bevorzugt dazu eingerichtet, ein Datenobjekt im dritten Speicherbereich in Abhängigkeit des zugeordneten Verwaltungsobjekts im ersten und zweiten Speicherbereich zu verwerfen. Dadurch kann der durch das Datenobjekt im dritten Speicherbereich belegte Platz freigegeben werden. Ein zugeordnetes Verwaltungsobjekt kann nicht freigegeben werden, sondern durch einen Zustand bzw. Inhalt anzeigen, dass das Datenobjekt neu belegt werden kann.
  • Datenobjekte und Verwaltungsobjekte können jeweils eine vorbestimmte Größe aufweisen. So kann ein durch ein verworfenes Objekt freiwerdender Platz durch ein entsprechendes neues Objekt eingenommen werden. Beispielsweise können Datenobjekte oder Verwaltungsobjekte nach Art eines Vektors oder eines Datenfelds abgelegt sein. Ein Vektor kann beispielsweise in der Programmiersprache C++ vom Typ std: : vector und ein Datenfeld vom Typ std: : array sein.
  • Jedem Verbraucher kann eine Anzahl maximal belegbarer Datenobjekte zugeordnet sein, wobei die Speicherbereiche so bemessen sind, dass mehr als die höchste Anzahl maximal belegbarer Daten- bzw. Verwaltungsobjekte aufgenommen werden können. Können also N Datenobjekte gleichzeitig belegt werden, so ist bevorzugt Platz für wenigstens N+1 Datenobjekte, wenigstens N+1 Verwaltungsobjekte im ersten Speicherbereich und wenigstens N+1 Verwaltungsobjekte im zweiten Speicherbereich vorgesehen. So kann sichergestellt werden, dass der Erzeuger auch dann noch ein Datenobjekt anlegen kann, wenn noch alle bestehenden Datenobjekte belegt sind. In diesem Fall kann geprüft werden, ob einer der Verbraucher mehr Datenobjekte belegt als ihm zugeordnet sind.
  • Es ist bevorzugt, dass der zweite Verbraucher beendet wird, falls er mehr als eine vorbestimmte Anzahl Datenobjekte belegt. Diese Anzahl entspricht bevorzugt der ihm zugeordneten Anzahl maximal belegbarer Datenobjekte. Eine übermäßige Belegung von Datenobjekten kann bestimmt werden, wenn der Erzeuger keinen freien Platz findet, um ein Datenobjekt anzulegen.
  • In einer weiteren Ausführungsform sind mehrere erste und/oder mehrere zweite Verbraucher vorgesehen. Wird eine übermäßige Belegung von Datenobjekten festgestellt, so können in dieser Ausführungsform alle aktiven zweiten Verbraucher beendet werden. Ein erster Verbraucher wird bevorzugt nicht von außen beendet.
  • Es ist weiter bevorzugt, dass der zweite Verbraucher weniger vertrauenswürdig als der Erzeuger und der erste Verbraucher ist. Weiter bevorzugt sind der Erzeuger und der erste Verbraucher bezüglich ihrer Funktionen geprüft und weiter bevorzugt zertifiziert. Der zweite Verbraucher hingegen kann auf einer weniger hohen Stufe oder gar nicht geprüft oder zertifiziert sein.
  • Sollte ein zweiter Verbraucher beendet werden, so kann er in einer Ausführungsform erneut gestartet werden, ohne eine Funktionssicherheit eines umgebenden Systems zu beeinträchtigen. Eine Fehlfunktion des Erzeugers oder des ersten Verbrauchers kann durch deren Zertifikation bereits ausgeschlossen sein. Ein vertrauenswürdiger Prozess kann für die Betriebs- oder Ausführungssicherheit eines umgebenden Systems relevant sein und wird daher auch als sicherheitskritisch oder kritisch bezeichnet. Ein System, in welchem unterschiedlich kritische Prozesse miteinander interagieren, wird auch „mixed criticality system“ genannt.
  • In einer anderen Ausführungsform kann auch der Erzeuger weniger vertrauenswürdig als wenigstens einer der Verbraucher sein. In diesem Fall kann auf applikativer Ebene sichergestellt werden, das inkorrekte oder falsch formatierte Daten im Datenobjekt nicht zur Verletzung eines Sicherheitszieles führt.
  • Die Konsistenz des Datenobjekts im dritten Speicherbereich ist bevorzugt dadurch gesichert, dass nur der Erzeuger schreibend auf das Datenobjekt zugreift, und dies auch nur dann, wenn das Datenobjekt nicht durch einen der Verbraucher zum Lesen belegt ist. Ein Zugriff eines Prozesses auf ein Verwaltungsobjekt im ersten oder zweiten Speicherbereich erfolgt bevorzugt ausschließlich mittels einer atomaren Operation. Beispielsweise kann in der Programmiersprache C++ für diesen Zweck ein Datentyp std: : atomic verwendet werden.
  • Durch Verwenden einer atomaren Operation kann das Aufrufen einer potenziell aufwendigen Betriebssystem-Funktion vermieden werden. Auch eine höhere Operation wie ein Semaphor, ein Spinlock oder ein Mutex müssen hierfür nicht implementiert werden. Ein Zugriff auf die Verwaltungsobjekte kann so schnell und sicher nebenläufig erfolgen.
  • Es ist besonders bevorzugt, dass der Erzeuger Messdaten bereitstellt, die auf der Basis von Abtastungen eines Sensors bestimmt sind. Der Sensor kann dazu eingerichtet sein, eine physikalische Größe im Bereich eines Fahrzeugs abzutasten. Insbesondere kann der Sensor dazu eingerichtet sein, ein Umfeld des Fahrzeugs abzutasten. Das Verarbeitungssystem befindet sich bevorzugt ebenfalls an Bord des Fahrzeugs.
  • Nach einem weiteren Aspekt der vorliegenden Erfindung umfasst ein Fahrzeug ein hierin beschriebenes Verarbeitungssystem. Das Fahrzeug kann insbesondere ein Kraftfahrzeug umfassen. In einer Ausführungsform ist der erste Verbraucher dazu eingerichtet, das Fahrzeug bezüglich empfangener Datenobjekte zu steuern.
  • Die vorliegende Erfindung umfasst in einem weiteren Aspekt ein Verfahren zum Bereitstellen von Datenobjekten von einem Erzeuger an einen ersten und zweiten Verbraucher, die als Prozesse in einem Verarbeitungssystem ablaufen, wobei das Verarbeitungssystem einen ersten Speicherbereich, auf den der Erzeuger und der erste Verbraucher zugreifen können, einen zweiten Speicherbereich, auf den der Erzeuger und der zweite Verbraucher zugreifen können und einen dritten Speicherbereich, auf den der Erzeuger, der erste und der zweite Verbraucher zugreifen können, beinhaltet. Das Verfahren umfasst Schritte des Anlegens eines Datenobjekts im dritten Speicherbereich durch den Erzeuger; des Anlegens je eines Verwaltungsobjekts für das Datenobjekt im ersten und im zweiten Speicherbereich durch den Erzeuger; und des Zugreifens auf das Datenobjekt durch einen der Verbraucher. Dabei erfolgt der Zugriff des Verbrauchers auf das Datenobjekt mittels eines zugeordneten Verwaltungsobjekts im ersten und/oder zweiten Speicherbereich.
  • Das Verfahren ist bevorzugt dazu eingerichtet, teilweise oder vollständig mittels eines hierin beschriebenen Verarbeitungssystems ausgeführt zu werden. Dazu kann das Verarbeitungssystem eine Verarbeitungseinrichtung umfassen, die einen programmierbaren Mikrocomputer oder Mikrocontroller umfasst. Das Verfahren kann in Form eines Computerprogrammprodukts mit Programmcodemitteln vorliegen. Das Computerprogrammprodukt kann auch auf einem computerlesbaren Datenträger abgespeichert sein. Merkmale oder Vorteile des Verfahrens können auf die Vorrichtung übertragen werden.
  • Die Erfindung wird nun mit Bezug auf die beigefügten Zeichnungen genauer beschrieben, in denen:
    • 1 ein Verarbeitungssystem an Bord eines Fahrzeugs;
    • 2 eine beispielhafte Übergabe von Daten von einem Erzeuger an mehrere Verbraucher; und
    • 3 ein Ablaufdiagramm eins Verfahrens (300)
  • illustriert.
  • 1 zeigt ein Verarbeitungssystem 100 an Bord eines Fahrzeugs 105. Das Verarbeitungssystem 100 umfasst eine Verarbeitungseinrichtung 110, einen Speicher 115 und einen optionalen Sensor 120. Das Fahrzeug 105 umfasst bevorzugt einen Personenkraftwagen oder einen Lastkraftwagen. Der Sensor 120 kann dazu eingerichtet sein, ein Umfeld des Fahrzeugs 105 abzutasten. In einer Ausführungsform umfasst der Sensor 120 eine Kamera, einen Radarsensor oder einen LiDAR-Sensor. Sensordaten, die durch den Sensor 120 bereitgestellt werden, können umfangreich und häufig sein.
  • Auf der Verarbeitungseinrichtung 110 können mehrere Prozesse ablaufen, die einen Erzeuger 125, einen ersten Verbraucher 130 und einen zweiten Verbraucher 135 umfassen. Der Erzeuger 125 ist dazu eingerichtet, Daten an die Verbraucher 130, 135 bereitzustellen. Daten können insbesondere auf der Basis einer Abtastung des Sensors 120 bereitgestellt werden. Der Speicher 115 kann durch die Verarbeitungseinrichtung 110 verwaltet werden. Ihn ihm kann in üblicher Weise ein Speicherbereich gebildet werden, auf den exklusiv nur von einem einzigen Prozess 125 - 135 zugegriffen werden kann. Es ist auch möglich, einen gemeinsamen Speicherbereich (shared memory) zu definieren, auf den mehrere vorbestimmte Prozesse 125 - 135 voneinander unabhängig zugreifen können. Ein gemeinsamer Speicherbereich erscheint für einen Prozess üblicherweise eingeblendet in einen nur ihm zur Verfügung stehenden Adressraum. Adressen in einem gemeinsamen Speicherbereich können für verschiedene Prozesse verschieden erscheinen.
  • Der Erzeuger 125 und ein erster Verbraucher 130 können vertrauenswürdig sein, beispielsweise weil sie nach einer vorbestimmten Spezifikation auf Korrektheit oder Verfügbarkeit geprüft sind. Im vorliegenden Beispiel erfüllen der Erzeuger 125 und der erste Verbraucher 130 die ISO 26262 Spezifikation entsprechend der Stufe ASIL B. Der zweite Verbraucher 135 ist jedoch nicht vertrauenswürdig; es muss davon ausgegangen werden, dass er eine vergleichbare Spezifikation nicht erfüllt. In einer Ausführungsform ist der zweite Verbraucher 135 nicht bezüglich Korrektheit oder Verfügbarkeit geprüft, sodass er nur eine Spezifikation der Stufe ASIL QM erfüllt, die für alle ungeprüften Elemente gilt. Beispielsweise kann der zweite Verbraucher 135 eine Komfortfunktion wie eine automatische Abdunkelung einer tönbaren Sichtscheibe an Bord des Fahrzeugs 105 durchführen.
  • Der erste Verbraucher 130 kann eine sicherheitsrelevante Aufgabe an Bord des Fahrzeugs 105 erfüllen, die eine Steuerung des Fahrzeugs 105 in Querrichtung und/oder Längsrichtung umfassen kann. Dabei kann die Steuerung auf der Basis von Daten erfolgen, die durch den Erzeuger 125 bereitgestellt sind. Sollte die Funktion des ersten Verbrauchers 130 gefährdet werden, so kann auch eine Betriebs- oder Funktionssicherheit des Fahrzeugs 105 kompromittiert werden. Daher ist sicher zu stellen, dass der zweite Verbraucher 135 die korrekte Ausführung oder die Betriebsfähigkeit des Erzeuger 125 und/oder des ersten Verbrauchers 130 nicht stört.
  • Gleichzeitig sollen die vom Erzeuger 125 bereitgestellten Daten allen Verbrauchern 130, 135 rasch bereitgestellt werden, auch wenn es sich um sehr viele Verbraucher 130, 135 handelt. Mittels des hierin vorgeschlagenen Konzepts können durch gemeinsame Benutzung von Speicherbereichen durch unterschiedliche Prozesse 125, 130, 135 Daten sowohl schnell bereitgestellt (geringe Latenz) als auch vielen Verbrauchern 130, 135 verfügbar gemacht werden (große Bandbreite).
  • 2 zeigt eine beispielhafte Übergabe von Daten von einem Erzeuger 125 an mehrere Verbraucher 130, 135. Im Speicher 115 sind ein erster Speicherbereich 205, ein zweiter Speicherbereich 210 und ein dritter Speicherbereich 215 vorgesehen. Der Erzeuger 125 kann auf den ersten Speicherbereich 205 und den zweiten Speicherbereich 210 jeweils lesend oder schreibend zugreifen. Ein Zugriff auf den dritten Speicherbereich 215 ist nur schreibend möglich. Der erste Verbraucher 130 kann nur lesend auf den ersten Speicherbereich 205 und den zweiten Speicherbereich 215 zugreifen. In ähnlicher Weise kann der zweite Verbraucher 135 nur lesend auf den zweiten Speicherbereich 210 und den dritten Speicherbereich 215 zugreifen. Darüber hinaus kann ein Betriebssystem 220 vorgesehen sein, um Signale oder Nachrichten zwischen den Prozessen 125 bis 135 auszutauschen.
  • Der Erzeuger 125 kann ein Datenobjekt 225 anlegen, indem er es an eine freie Stelle im dritten gemeinsamen Speicherbereich 215 schreibt. Zusätzlich schreibt der Erzeuger 125 ein zum Datenobjekt 225 korrespondierendes erstes Verwaltungsobjekt 230 in den ersten Speicherbereich 205 und ein ebenfalls korrespondierendes zweites Verwaltungsobjekt 235 in den zweiten Speicherbereich 210. Schreiboperationen auf die Speicherbereiche 205, 210 sind bevorzugt atomar.
  • Ein Verwaltungsobjekt 230, 235 kann verschiedene Informationen bezüglich des Datenobjekts 225 tragen. In einer bevorzugten, hierin beschriebenen Ausführungsform umfasst ein Verwaltungsobjekt 230 bzw. 235 einen Zeitstempel (timestamp), einen Belegungszähler (use_count) und einen Status (status). Der Belegungszähler kann von einem Verbraucher 130, 135 inkrementiert werden, wenn dieser das Datenobjekt 225 belegt, und dekrementiert, wenn er das Datenobjekt 225 frei gibt. Der Status kann einen von mehreren vorbestimmten Werten annehmen. Ein erster Wert (DATA) kann anzeigen, dass das Datenobjekt 225 gültig ist. In diesem Fall können der Zeitstempel und der Belegungszähler ebenfalls gültig sein. Ein zweiter Wert (EMPTY) kann anzeigen, dass das Datenobjekt 225 leer ist. Ein dritter Wert (WRITE _ACTIVE) kann anzeigen, dass aktuell auf das Datenobjekt 225 schreibend durch den Erzeuger 125 zugegriffen wird. Der Zeitstempel und der Belegungszähler können dabei ungültig sein. Weitere Werte für weitere Zustände können ebenfalls definiert sein.
  • Ein erster Verbraucher 130 oder ein zweiter Verbraucher 135 kann auf das Datenobjekt 225 zugreifen, nachdem er dessen Status im Verwaltungsobjekt 230 bzw. 235 überprüft und gegeben falls geändert hat. In entsprechender Weise kann der Erzeuger 125 den Status eines Datenobjekts 225 überprüfen, indem er die Verwaltungsobjekte 230, 235 liest. Beispielsweise kann ein Datenobjekt 225 frei gegeben werden, falls beide Belegungszähler der Verwaltungsobjekte 230, 235 null betragen und der Status in beiden Verwaltungsobjekten 230, 235 in obigem Beispiel den ersten Wert trägt. Der Erzeuger 125 kann das Datenobjekt 225 frei geben, indem er dessen Status in beiden Verwaltungsobjekten 230, 235 auf den zweiten Wert setzt.
  • 3 zeigt ein Ablaufdiagramm eines Verfahrens 300 zur Übergabe von Daten zwischen Prozessen 125 bis 135. Das Verfahren 300 umfasst einen ersten Teil mit Schritten 305 bis 330, der durch den Erzeuger 135 ausgeführt wird, einen zweiten Teil in den Schritten 340 bis 360, der durch den ersten Verbraucher 130 ausgeführt wird, und einen dritten Teil mit Schritten 370 bis 390, der durch den zweiten Verbraucher 135 ausgeführt wird. Der zweite und der dritte Teil korrespondieren zueinander. Unterbrochene Linien zeigen funktionale Zusammenhänge an.
  • In einem Schritt 305 kann der Erzeuger 125 Sensordaten erfassen. In einem Schritt 310 kann er eine freie Speicherstelle im dritten Speicherbereich 215 zur Aufnahme eines Datenobjekts 225 bestimmen. Dazu kann der Erzeuger 125 anhand der Verwaltungsobjekte 230, 235 bestimmen, welches Datenobjekt 225 bereits von allen Verbrauchern 130, 135 gelesen oder verarbeitet wurde, sodass die korrespondierende Speicherstelle überschrieben werden kann. Ein Datenobjekt 225 kann erst dann überschrieben werden, wenn beide zugeordneten Verwaltungsobjekte 230, 235 anzeigen, dass kein Verbraucher 130, 135 mehr lesend darauf zugreift.
  • Sollte keine freie Speicherstelle gefunden werden, kann die Suche wiederholt werden, bis eine vorbestimmte maximale Wiederholzahl erreicht ist. Ist dann immer noch keine Speicherstelle frei, so ist davon auszugehen, dass einer der Verbraucher 130, 135 sich außerhalb seiner Spezifikationen verhalten und mehr Datenobjekte 225 belegt hat als vorbestimmt. In diesem Fall kann der Erzeuger 125 den zweiten Verbraucher 135 beenden. Sollten mehrere zweite Verbraucher 135 aktiv sein, so können alle beendet werden. Ein zweiter Verbraucher 135 kann auch von der weiteren Teilnahme des hierin beschriebenen Verfahrens 300 ausgeschlossen werden, indem er nicht weiter von Daten benachrichtigt wird und/oder Nachrichten von ihm ignoriert werden.
  • In einem Schritt 315 kann das Datenobjekt 225 im dritten Speicherbereich 215 angelegt bzw. mit Sensordaten gefüllt werden. In einem Schritt 320 kann das erste Verwaltungsobjekt 230 und in einem Schritt 325 das zweite Verwaltungsobjekt 235 in den Speicherbereichen 205, 210 angelegt bzw. beschrieben werden. Genauer gesagt können die Verwaltungsobjekte 230, 235 geschrieben werden, um den Status des Datenobjekts 225 auf den dritten Wert zu setzen, bevor das Datenobjekt 225 geschrieben wird. Ferner kann ein Zeitstempel, der sich auf das Datenobjekt 225 bezieht, in den Verwaltungsobjekten 230, 235 hinterlegt werden. Die Belegungszähler können auf null gesetzt werden und der Status kann auf den ersten Wert gesetzt werden. Anschließend können die Verbraucher 130, 135 über das Betriebssystem 220 von dem neuen Datenobjekt 225 informiert werden. Alternativ können die Verbraucher 130, 135 periodisch auf neu eingetroffene Datenobjekte 225 prüfen (polling).
  • Im zweiten Teil kann der erste Verbraucher 130 in einem Schritt 340 eine Benachrichtigung auf das Vorliegen eines neuen Datenobjekts 225 erhalten. Die Benachrichtigung kann einen Zeitstempel des neuen Datenobjekts 225 umfassen. In einem Schritt 345 der erste Verbraucher 130 das zum Zeitstempel passende erste Verwaltungsobjekt 230 und über dieses das neue Datenobjekt 225 bestimmen. Dann kann er in einem Schritt 350 den Belegungszähler im ersten Verwaltungsobjekt 230 inkrementieren, um das Datenobjekt 225 zu belegen.
  • Das Datenobjekt 225 ist nun für den ersten Prozess 130 vor dem Löschen oder dem Überschreiben geschützt. In einem Schritt 355 kann der erste Verbraucher 130 das Datenobjekt 225 lesen, bevor er es in einem Schritt 360 durch Dekrementieren des Belegungszählers im ersten Verwaltungsobjekt 230 wieder frei gibt.
  • Der zweite Verbraucher 135 kann Schritte des dritten Teils ausführen, die paarweise zu Schritten des zweiten Teils korrespondieren. Allerdings greift der zweite Verbraucher 135 nicht auf das erste Verwaltungsobjekt 230, sondern auf das zweite Verwaltungsobjekt 235 zu.
  • Das Freigeben des Datenobjekts 225 in den Schritten 360, 390 bewirkt, dass der Erzeuger 125 im Schritt 310 ein nicht mehr benötigtes Datenobjekt 225 identifizieren kann. Auf die beschriebene Weise kann die Speicherstelle dann für ungültig erklärt werden und für die Aufnahme eines neuen Datenobjekts 235 bereitgestellt werden.
  • Im Folgenden wird eine beispielhafte Implementation der vorgeschlagenen Technik näher im Detail erläutert.
  • Es ist bevorzugt, dass Datenobjekte 225 und Verwaltungsobjekte 230, 235 aneinander angrenzend in einem Speicherbereich abgelegt werden. Mehrere Datenobjekte 225 bzw. Verwaltungsobjekte 230, 235 können jeweils aneinander angrenzend in den Speicherbereichen 205 - 215 abgelegt werden. Insbesondere wenn alle Datenobjekte 225 bzw. alle Verwaltungsobjekte 230 oder 235 gleiche Größen aufweisen, kann dafür eine effiziente Datenstruktur verwendet werden, beispielsweise ein Array oder ein Vektor. Eine Zuordnung zwischen einem Datenobjekt 225 und einem Verwaltungsobjekt 230, 235 kann über einen gleichlautenden Index erfolgen.
  • Jedem Verbraucher 130, 135 kann eine maximale Anzahl belegbarer Datenobjekte 225 zugeordnet sein. Um einen Zustand zu vermeiden, bei dem der Erzeuger 125 empfangene Daten nicht schreiben kann, sollte die Anzahl Speicherplätze für Datenobjekte 225 um wenigstens 1 größer sein als die größte Anzahl maximal durch einen der Verbraucher 130, 135 belegbaren Datenobjekte 225. Beträgt diese Anzahl N, so liegt der Speicherbedarf im dritten Speicherbereich 215 bei (N + 1) * (Größe eines Datenobjekts 225).
  • Algorithmus des Erzeugers 125
  • Möchte der Erzeuger 125 (vgl. Schritt 310 im Verfahren 300) ein Datenobjekt 225 schreiben, so muss er einen freien Speicherplatz bzw. Index dafür finden. Der folgende Pseudo-Code erläutert, wie der Erzeuger 125 auf die Verwaltungsobjekte 230, 235 zugreift, um einen Index zu finden, an dem ein neues Datenobjekt 225 geschrieben werden kann.
  • In den Code Beispielen bezeichnet control_data [ ] ein Verwaltungsobjekt 230, 235. Das Verwaltungsobjekt 230, 235 hat mehrere Elemente, von denen eines mittels eines Index [i] ausgewählt werden kann. Jedes Element hat als Felder einen Zeitstempel timestamp, einen Belegungszähler use_count und einen Status status. Die Felder eines Elements sind bevorzugt so beschaffen, dass ein atomarer Zugriff darauf möglich ist. In einem 64-Bit System kann das Element daher nicht mehr als 64 Bit umfassen. In einem 32-Bit System kann es eine Größe von 32 Bit nicht überschreiten. Der Status kann beispielhaft die Werte DATA, EMPTY oder WRITE_ACTIVE annehmen (siehe oben).
 int FindSlotForSampleUpdate() {

 int index = -1;
 index = FindIndex _State_Empty();
 if (index != -1){
    control _data[index] .state = WRITE_ACTIVE;
    return index;
 }
 unsigned int curRepetition = 1;
 unsigned int maxRepetions = <configurable value>;
 while(curRepetition <= maxRepetions)
 {
    index =
 FindIndex_State_DATA_UseCountZero_SmallestTimestamp();
    if (index != -1)
    {
       if (SetStateWritingExpectedUseCountO(index))
       {
       return index;
      }
     }
     repetitionCount++;
    }
    return -1;
 }
  • Der gezeigte Algorithmus nutzt drei Hilfsfunktionen, die wie folgt arbeiten:
    • FindIndex_State_Empty () iteriert durch control_data [] und bestimmt, ob control_data [i] . state == EMPTY ist. In diesem Fall gibt die Funktion i zurück, andernfalls -1. Der Zugriff auf das Feld „Status“ muss nicht atomar durchgeführt werden, da nur der Erzeuger 125 dieses Feld beschreiben kann.
  • FindIndex_State_DATA_UseCountZero_SmallestTimestamp () iteriert durch control_data [] und bestimmt, ob folgende Bedingungen erfüllt sind:
    • control_data[i] .state == DATA und
    • control_data[i] .use_count == 0 und
    • control_data [i] . timestamp == <kleinster Wert aller Zeitstempel (timestamp) in control_data [] >
  • Wird ein Index gefunden, für den die Bedingungen gelten, gibt die Funktion i zurück, andernfalls -1.
  • SetStateWritingExpectedUseCountO (index) aktualisiert control_data [i] mittels einer atomaren compare_exchange Operation. Dann wird die atomare compare_exchange Funktion auf control_data [index] aufgerufen. Dabei wird folgender Verwaltungswert erwartet: {state = DATA, timestamp = tmpTimestamp, use_count = 0} und folgender Verwaltungswert erwünscht: {state = WRITE_ACTIVE, timestamp = 0, use_count = 0}. Falls die compare_exchange Operation erfolgreich ist, wird TRUE zurückgegeben. Andernfalls wird FALSE zurückgegeben, sodass der Algorithmus erneut durchlaufen wird, falls nicht eine vorbestimmte Maximalzahl Durchläufe erreicht ist.
  • Der Algorithmus kann nicht-blockierend, insbesondere wait-free, sein und nur atomare Operationen zur Synchronisation mit beliebigen Verbrauchern 130, 135 verwenden, die gleichzeitig auf control_data [] zugreifen.
  • Wiederholungen
  • Der beschriebene Algorithmus läuft erneut von vorn (control_data [0]) durch, falls kein gültiger Index gefunden werden konnte, der beschrieben bzw. überschrieben werden kann. Das erneute Durchlaufen kann erforderlich sein, auch wenn keiner der Verbraucher 130, 135 die ihm zugeordnete Maximalzahl an Belegungen überschritten hat. Dies kann beispielsweise selbst dann der Fall sein, wenn die Bedingung, dass die Summe aller use_count kleiner als SampleStorage_Need ist, erfüllt ist.
  • Ein Verbraucher 130, 135 könnte das Feld use_count eines Elements des Verwaltungsobjekts 230, 235 von 0 auf 1 ändern, das der Erzeuger 125 beim Durchlaufen des Verwaltungsobjekts 230, 235 in FindSlotForSampleUpdate () noch nicht überprüft hat, und ein anderer Verbraucher 130, 135 könnte annähernd gleichzeitig das Feld eines anderen Elements des Verwaltungsobjekts 230, 235, das der Erzeuger 125 gerade überprüft hat, von 1 auf 0 ändern.
  • Im vorliegenden Algorithmus ist ein maximaler bzw. pessimistischer Wert maxRepetitions vorgegeben, um sicher zu stellen, dass eine deterministische Abbruchbedingung vorliegt. Ein Verbraucher 130, 135, der korrekt umgesetzt ist, kann nur in use_count Verwaltungsobjekten 230, 235 den Belegungszähler use_count inkrementieren, falls der zugeordnete Zeitstempel größer als der Zeitstempel zur Zeit des letzten Inkrementierens ist. Unter dieser Vorbedingung wird jeder Verbraucher 130, 135 zu irgendeinem Zeitpunkt nicht in der Lage sein, die Belegungszähler use_count eines Elements eines Verwaltungsobjekts 230, 235 zu inkrementieren, wenn der Erzeuger 125 blockiert ist, ein neues Datenobjekt 225 anzulegen.
  • Algorithmus der Verbraucher 130, 135
  • Verbraucher 130, 135 können zu beliebigen Zeitpunkten (in Abhängigkeit einer Applikationslogik) überprüfen, ob seit der letzten Überprüfung neue Datenobjekte 225 bereitgestellt wurden. Alternativ kann eine Benachrichtigung durch das Betriebssystem 220 erfolgen. Im Fall neuer Daten wird der use_count von Verwaltungsobjekten 230, 235 mit dem Status DATA (erster Wert) und dem kleinsten Zeitstempel, der noch größer als der Zeitstempel zur Zeit der letzten Überprüfung durch den Verbraucher 130, 135 ist, inkrementiert.
  •  int UseNextSample(timestamp_type lastSearchTimestamp) 
    
    
    
    
     {
    
      timestamp_type previousTimestamp;
      unsigned int curRepetition = 1;
      unsigned int maxRepetions = <configurable value>;
      std::pair<int, ControlDataType> result =
     FindSmallestTimestampAfter(lastSearchTimestamp);
      if (result.first != -1) {
        while(curRepetition < maxRepetions) {
          if (IncrementUseCount(result.first, result.second))
          {
            return result.first
          }
          else {
            previousTimestamp = result.second.timestamp;
            result.second = ATOMIC_LOAD(control_data [result.first]);
            if (previousTimestamp == result.second.timestamp) {
               curRetry++;
             } else {
              return -1;
          }
         }
        }
       }
      }
     return -1;
     }
  • Dieser Algorithmus nutzt zwei Hilfsfunktionen, die sich wie folgt verhalten.
  • FindSmallestTimestampAfter (timestamp_type reference) iteriert durch Verwaltungsobjekte 230, 235 control_data [ ] und findet aus allen Elementen dasjenige mit dem Status DATA und dem kleinsten Zeitstempel, der noch größer als der übergebene Referenz-Zeitstempel reference ist. Wird ein passender Index gefunden, so wird dessen Index und Wert zurückgegeben, andernfalls ein Index von -1.
  • IncrementUseCount (index, ControlDataType expected) versucht, den Belegungszähler use_count des Verwaltungsobjekts 230, 235 control_data [index] zu inkrementieren. Der erwartete Wert ist im Parameter expected angegeben. Der gewünschte Wert ist {state = DATA, timestamp = expected.timestamp, use_count = expected.use_count + 1}.
  • Wiederholungen
  • Da das use_count Feld eines Verwaltungsobjekts 230, 235 von verschiedenen Verbraucher 130, 135 ausgehandelt wird, indem sie use_count nebenläufig inkrementieren und dekrementieren, könnte eine Wiederholung der atomaren compare_exchange Operationen erforderlich sein. Auch hier kann ein sinnvoller Wert von maxRepetitions auf der Basis einer bekannten Anzahl Verbraucher 130, 135 bestimmt werden, die im Verarbeitungssystem 100 vorgesehen sind.
  • Erweiterung des Algorithmus für Mixed Criticality
  • Wie oben beschrieben ist, wirkt der vertrauenswürdige (ASIL B) Erzeuger 125 mit zwei Verwaltungsobjekten 230, 235 in verschiedenen gemeinsam genutzten Speicherbereichen 205, 210 zusammen. Der FindSlotForSampleUpdate Algorithmus kann dann wie folgt angepasst werden:
    • - Die Suche nach einem Index eines freien oder zu überschreibenden Datenobjekts 225 erfolgt im Verwaltungsobjekt 230, das im shared memory Objekt 205 liegt, auf den der vertrauenswürdige (ASIL-B) Erzeuger 125 und der vertrauenswürdige erste (ASIL-B) Verbraucher 130 Zugriff haben.
    • - Wurde ein gültiger Index i gefunden (und control_data [i] . state auf WRITE_ACTIVE gesetzt), so wird das korrespondierende Element mit demselben Index im shared memory Objekt des zweiten Verbrauchers 135 in Erwartung, dass control_data [i] . use_count == 0 gilt, atomar auf WRITE_ACTIVE gesetzt.
    • - Ist diese Erwartung nicht erfüllt, so wird control_data [i] . state im Verwaltungsobjekt 230 wieder auf DATA zurückgesetzt und der Suchprozess beginnt im Verwaltungsobjekt 230 mit einem zusätzlichen Suchkriterium für den Zeitstempel. Der Zeitstempel muss dann größer als beim vergangenen Durchlauf der Suche sein, um die Suche fortzusetzen.
  • Der Algorithmus kann wie folgt in Pseudo-Code ausgedrückt werden:
  •  int FindSlotForSampleUpdateMixedASIL() {
      int index;
      timestamp_type startTimestamp = 0;
      unsigned int curRepetition = 1;
      unsigned int maxRepetions = <configurable value>;
      while(curRepetition <= maxRepetions)
      {
        std::pair<int, ControlDataType> result =
                      FindSlotForSampleUpdate(startTimestamp);
        if (result.first!= -1) {
           if (SetStateWriteActive(result.first, result.second))
         {
           return result.first;
          }
           else
           {
             RevertSlotState(result.first, result.second) ;
             startTimestamp =
     control_data_asil_b[result.first] .timestamp;
           }
        }
        else {
           startTimestamp = 0;
    
           curRepetition++;
         }
       }
     return -1; 
    
    
    
    
     }
  • Drei dabei verwendete Hilfsfunktionen verhalten sich wie folgt:
    • FindSlotForSampleUpdate (timestamp_type) arbeitet im Wesentlichen wie oben beschrieben, aber mit folgenden drei Änderungen:
      • - Die Suche wird stets im Verwaltungsobjekt 230, das sich der (vertrauenswürdige) Erzeuger 125 und der (vertrauenswürdige) erste Verbraucher 130 teilen, durchgeführt.
      • - Es werden nur Elemente untersucht bzw. berücksichtigt, deren Zeitstempel größer als der übergebene Parameter timestamp ist.
      • - die Funktion gibt nicht nur den Index, sondern auch den Wert des betreffenden Verwaltungsobjekts 230, 235 zurück, BEVOR der Status auf WRITE_ACTIVE aktualisiert wurde.
  • Se-tStateWriteActive (indez, ControlDataType expected) versucht, mittels atomarer compare_exchange Operationen den Status von control_data [index] im shared memory Objekt des (nicht vertrauenswürdigen) zweiten Verbrauchers 135 auf WRITE_ACTIVE zu setzen. Der erwünschte Wert ist {state = WRITE_ACTIVE, timestamp = 0, use_count = 0}. Falls die compare_exchange Operation erfolgreich ist, wird TRUE zurückgegeben. Andernfalls wird FALSE zurückgegeben, was zu einer Wiederholung führt, falls nicht eine vorbestimmte Anzahl maximaler Wiederholungen erreicht ist.
  • RevertSlotState (index, ControlDataType value) setzt den Wert von control_data [index] im shared memory Objekt des (vertrauenswürdigen) Erzeugers 125 in einer atomaren Operation auf value zurück.
  • Bezugszeichen
  • 100
    Verarbeitungssystem
    105
    Fahrzeug
    110
    Verarbeitungseinrichtung
    115
    Speicher
    120
    Sensor
    125
    Erzeuger (ASIL B)
    130
    erster Verbraucher (ASIL B)
    135
    zweiter Verbraucher (ASIL QM)
    205
    erster Speicherbereich
    210
    zweiter Speicherbereich
    215
    dritter Speicherbereich
    220
    Betriebssystem
    225
    Datenobjekt
    230
    erstes Verwaltungsobjekt
    235
    zweites Verwaltungsobjekt
    300
    Verfahren (300)
    305
    Sensordaten erfassen
    310
    freie Speicherstelle bestimmen
    315
    Datenobjekt anlegen
    320
    erstes Verwaltungsobjekt anlegen
    325
    zweites Verwaltungsobjekt anlegen
    330
    Verbraucher informieren
    340
    Benachrichtigung erhalten
    345
    Verwaltungsobjekt bestimmen
    350
    Datenobjekt belegen
    355
    Datenobjekt bearbeiten
    360
    Datenobjekt freigeben
    370
    Benachrichtigung erhalten
    375
    Verwaltungsobjekt bestimmen
    380
    Datenobjekt belegen
    385
    Datenobjekt bearbeiten
    390
    Datenobjekt freigeben

    Claims (12)

    1. Verarbeitungssystem (100), wobei das Verarbeitungssystem (100) folgendes umfasst: - eine Verarbeitungseinrichtung (110) zur Ausführung von Prozessen, wobei die Prozesse einen Erzeuger (125), einen ersten (130) und einen zweiten Verbraucher (135) umfassen; - einen Speicher (115) mit einem ersten Speicherbereich (205), auf den der Erzeuger (125) und der erste Verbraucher (130) zugreifen können; einem zweiten Speicherbereich (210), auf den der Erzeuger (125) und der zweite Verbraucher (135) zugreifen können; und einem dritten Speicherbereich (215), auf den der Erzeuger (125), der erste (130) und der zweite Verbraucher (135) zugreifen können; - wobei der Erzeuger (125) dazu eingerichtet ist, ein Datenobjekt (225) im dritten Speicherbereich (215) anzulegen; - und die Verbraucher (130, 135) dazu eingerichtet sind, auf Datenobjekte (225) im dritten Speicherbereich (215) ausschließlich lesend zuzugreifen; - wobei eine Verwaltung eines Datenobjekts (225) zwischen dem Erzeuger (125) und dem ersten Verbraucher (130) mittels eines Verwaltungsobjekts (230, 235) im ersten Speicherbereich (205) und eine Verwaltung des Datenobjekts (225) zwischen dem Erzeuger (125) und dem zweiten Verbraucher (135) mittels eines Verwaltungsobjekts (230, 235) im zweiten Speicherbereich (210) erfolgt.
    2. Verarbeitungssystem (100) nach Anspruch 1, wobei ein Verbraucher (130, 135) dazu eingerichtet ist, ein Datenobjekt (225) vor dem Zugriff im zugeordneten Verwaltungsobjekt (230, 235) zu belegen und nach dem Zugriff freizugeben.
    3. Verarbeitungssystem (100) nach Anspruch 2, wobei der Erzeuger (125) dazu eingerichtet ist, ein Datenobjekt (225) im dritten Speicherbereich (215) in Abhängigkeit des zugeordneten Verwaltungsobjekts (230, 235) im ersten und zweiten Speicherbereich (210) zu verwerfen.
    4. Verarbeitungssystem (100) nach einem der vorangehenden Ansprüche, wobei jedem Verbraucher (130, 135) eine Anzahl maximal belegbarer Datenobjekte (225) zugeordnet ist; und wobei die Speicherbereiche (205 - 215) so bemessen sind, dass mehr als die höchste Anzahl maximal belegbarer Daten- bzw. Verwaltungsobjekts (230, 235) aufgenommen werden können.
    5. Verarbeitungssystem (100) nach einem der vorangehenden Ansprüche, wobei der zweite Verbraucher (135) beendet wird, falls er mehr als eine vorbestimmte Anzahl Datenobjekte (225) belegt.
    6. Verarbeitungssystem (100) nach einem der vorangehenden Ansprüche, wobei mehrere erste (130) und/oder mehrere zweite Verbraucher (135) vorgesehen sind.
    7. Verarbeitungssystem (100) nach einem der vorangehenden Ansprüche, wobei der zweite Verbraucher (135) weniger vertrauenswürdig als der Erzeuger (125) und der erste Verbraucher (130) ist.
    8. Verarbeitungssystem (100) nach einem der vorangehenden Ansprüche, wobei ein Zugriff eines Prozesses (125 - 135) auf ein Verwaltungsobjekt (230, 235) im ersten (230) oder zweiten Speicherbereich (235) ausschließlich mittels einer atomaren Operation erfolgt.
    9. Verarbeitungssystem (100) nach einem der vorangehenden Ansprüche, wobei der Erzeuger (125) Messdaten bereitstellt, die auf der Basis von Abtastungen eines Sensors (120) bestimmt sind.
    10. Fahrzeug (105), umfassend ein Verarbeitungssystem (100) nach einem der vorangehenden Ansprüche.
    11. Verfahren (300) zur Bereitstellung von Datenobjekten (225) von einem Erzeuger (125) an einen ersten (130) und einen zweiten Verbraucher (135), die als Prozesse in einem Verarbeitungssystem (100) ablaufen, wobei das Verarbeitungssystem (100) einen ersten Speicherbereich (205), auf den der Erzeuger (125) und der erste Verbraucher (130) zugreifen können, einen zweiten Speicherbereich (210), auf den der Erzeuger (125) und der zweite Verbraucher (135) zugreifen können, und einen dritten Speicherbereich (215), auf den der Erzeuger (125), der erste (130) und der zweite Verbraucher (135) zugreifen können, umfasst; wobei das Verfahren (300) folgende Schritte umfasst: - Anlegen (325) eines Datenobjekts (225) im dritten Speicherbereich (240) durch den Erzeuger (125); - Anlegen (320, 325) je eines Verwaltungsobjekts (230, 235) für das Datenobjekt (225) im ersten und im zweiten Speicherbereich (235) durch den Erzeuger (125); und - Zugreifen (355, 385) auf das Datenobjekt (225) durch einen der Verbraucher (130, 135); - wobei der Zugriff des Verbrauchers (130, 135) auf das Datenobjekt (225) unter Verwaltung mittels eines zugeordneten Verwaltungsobjekts (230, 235) im ersten (230) und/oder zweiten Speicherbereich (235) erfolgt.
    12. Verfahren (300) nach Anspruch 11, wobei einer der Verbraucher (130, 135) das Datenobjekt (225) durch Ändern des zugeordneten Verwaltungsobjekt (230, 235) belegt; auf das Datenobjekt (225) zugreift; und das Datenobjekt (225) durch Ändern des Verwaltungsobjekts (230, 235) freigibt.
    DE102022112547.5A 2022-05-19 2022-05-19 Übergabe von Daten zwischen Steuerprozessen Pending DE102022112547A1 (de)

    Priority Applications (2)

    Application Number Priority Date Filing Date Title
    DE102022112547.5A DE102022112547A1 (de) 2022-05-19 2022-05-19 Übergabe von Daten zwischen Steuerprozessen
    PCT/EP2023/061546 WO2023222375A1 (de) 2022-05-19 2023-05-02 Übergabe von daten zwischen steuerprozessen

    Applications Claiming Priority (1)

    Application Number Priority Date Filing Date Title
    DE102022112547.5A DE102022112547A1 (de) 2022-05-19 2022-05-19 Übergabe von Daten zwischen Steuerprozessen

    Publications (1)

    Publication Number Publication Date
    DE102022112547A1 true DE102022112547A1 (de) 2023-11-23

    Family

    ID=86383101

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102022112547.5A Pending DE102022112547A1 (de) 2022-05-19 2022-05-19 Übergabe von Daten zwischen Steuerprozessen

    Country Status (2)

    Country Link
    DE (1) DE102022112547A1 (de)
    WO (1) WO2023222375A1 (de)

    Family Cites Families (3)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US6519686B2 (en) * 1998-01-05 2003-02-11 Intel Corporation Information streaming in a multi-process system using shared memory
    US20190370074A1 (en) * 2019-08-15 2019-12-05 Intel Corporation Methods and apparatus for multiple asynchronous consumers
    US11537453B2 (en) * 2020-03-30 2022-12-27 Target Brands, Inc. Multithreaded lossy queue protocol

    Non-Patent Citations (2)

    * Cited by examiner, † Cited by third party
    Title
    Anonymous: How to have shared read-only access to a memory mapped file. stackoverflow.com. 26.06.2014<https://stackoverflow.com/questions/24435260/how-to-have-shared-read-only-access-to-a-memory-mapped-file>(recherchiert am 8.4.2023)
    Gaztanaga, Ion: Sharing Memory Between Processes. 2012.<https://www.boost.org/doc/libs/1_54_0/doc/html/interprocess/sharedmemorybetweenprocesses.html>In: <web.archive.org> am 9.7.2013(recherchiert am 8.4.,2023)

    Also Published As

    Publication number Publication date
    WO2023222375A1 (de) 2023-11-23

    Similar Documents

    Publication Publication Date Title
    DE3854368T2 (de) Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.
    DE3127349C2 (de)
    DE69022709T2 (de) Synchronisationsbefehl für Mehrprozessornetz.
    DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
    DE4423559A1 (de) Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher
    DE3606211A1 (de) Multiprozessor-computersystem
    DE3805107A1 (de) Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers
    DE69031782T2 (de) Verfahren zum Ersetzen von Speichermodulen in einem Computersystem und Computersystem zur Durchführung des Verfahrens
    DE102013014172A1 (de) Schutz globaler register in einem multithreaded-prozessor
    DE69016978T2 (de) Sicheres Datenschnellschreibverfahren für Massenspeichereinrichtung und ein dieses Verfahren ausführendes Computersystem.
    DE3750045T2 (de) Unterbrechungssteuerungsvorrichtung für eine virtuelle Maschine mit einer Vielzahl von Verarbeitungseinheiten.
    DE102022112547A1 (de) Übergabe von Daten zwischen Steuerprozessen
    DE102023115340A1 (de) Verarbeitungsverfahren und dienstendgerät einer gemeinsam genutzten einrichtung
    DE3855718T2 (de) Ubertragungssystem zwischen Prozessoren in einem Nachrichtenverarbeitungssystem mit Übertragung zwischen Ausführungsprozessoren während Übertragung zwischen anderen Prozessoren
    EP0265636A1 (de) Multiprozessor mit mehreren mit Cache-Speichern ausgerüsteten Prozessoren und einem gemeinsamen Speicher
    DE69909400T2 (de) Verfahren zur Steuerung eines Cache-Speichers in einem Multiprozessorsystem und Multiprozessorsystem
    DE3787213T2 (de) Verzögerungsverwaltungsverfahren und -vorrichtung.
    DE2750126B2 (de)
    DE69127592T2 (de) Dialogverfahren zwischen den Prozessoren eines Systems, System zu seiner Durchführung und zu seinem Einsatz für die Verteilung von Prozessen auf Prozessoren
    EP0970426B1 (de) Abhängigkeitssteuerung für überlappende speicherzugriffe
    DE102018123563B4 (de) Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor
    DE3542436A1 (de) Datenflussprozessorsystem
    DE102017007022A1 (de) Programmierbare Steuervorrichtung
    EP0613077B1 (de) Verfahren zur Reset-Erzeugung in Datenverarbeitungsanlagen
    EP1429254B1 (de) Interrupt-Behandlung in einem CAN-Knoten

    Legal Events

    Date Code Title Description
    R163 Identified publications notified