1.本发明实现一种在应用系统中用于存储器装置的数据结构、一种相应的存储器装置以及一种设备。
2.在处理大的数据量的一些系统上,数据的复制可能占据高的比例的系统资源并且由此成为一项成本高的事情。
3.在用于驾驶员辅助和至少部分地自动化的驾驶的当今的系统中,每秒处理数gb。因此,如果在最大程度上避免数据的复制,则可以在这里节省呈计算资源形式的有价值的系统资源。
4.为了满足安全性要求,通信网络必须有弹性地设计,以便防止全部损坏。因此,必须发展出一些策略来管理有限的资源。
背景技术:5.在具有多个计算内核或者不同实施语境(例如,根据osek规范(osek-os)的操作系统中的任务)的系统上,通常使用通信中间件,所述通信中间件确保数据在软件的并行的部分之间的一致的传递。这样的通信中间件提供如下方法以供使用:利用所述方法,数据的生产者可以(使得)借助于中间件将这些数据向一个或者多个消费者传递。
6.已知为了避免待传递的数据的复制而使用“零拷贝”方式。根据“零拷贝”方式的通信中间件根据两步骤的方式传递数据。在第一步骤中,生产者请求用于保存要通过通信中间件传递的数据的存储器空间。在第二步骤中,将所请求的存储器空间提供给那个或者那些消费者用于读出要传递的数据。
7.在将要传递的数据向通信中间件移交时,典型地,将为此而使用的存储器空间的“所有权”向中间件传递。在由生产者保存和由消费者读出期间,为此而使用的存储器空间的“所有权”位于相应的使用者(生产者、消费者)处。
8.在此,“所有权”理解为,只有相应的进程(生产者、消费者、必要时中间件)具有对存储器空间的专有的访问(用于写入或者读取)。
9.在汽车领域中,已知autosar标准,该autosar标准此外提供根据“零拷贝”方式的通信方法。
技术实现要素:10.在使用者(生产者、消费者)(换言之,使用者进程)是存储器空间(换言之,存储器单元)的所有者并且在此期间该使用者进程不正常地(换言之,错误地)终止的情形下,可能发生所谓的存储器漏泄。
11.这是因为已使用的存储器单元由于使用者进程的不正常地终止而不再被释放。对通信中间件,存储器单元显示为被占用。这导致在存储器装置中的被阻塞的存储器单元,所述存储器单元不再可以被访问并且所述存储器单元没有被通信中间件或者操作系统清理(换言之,又被提供用于使用)。
12.如果使用者进程请求大量的存储器空间来传递大的数据量,则这些情形(在所述情形中出现存储器漏泄)可能导致整个系统故障。
13.在此背景下,本发明实现一种在应用系统中用于存储器装置的数据结构,其中,存储器装置具有存储器单元。
14.数据结构的特征在于管理结构。该管理结构设置用于,持有指向存储器单元的指针对象(换言之,引用(referenz)或者指针(英语:pointer))。
15.现在,借助于本发明的数据结构可能的是:当被占用的存储器单元是被不正常地终止的使用者进程占用时,清理这些被占用的存储器单元。
16.使用者进程是否被不正常地终止可以例如借助于对于本领域技术人员而言已知的心跳程序(heartbeat-verfahren)来识别。
17.如果识别出使用者进程的不正常地终止,则可以通过本发明的数据结构的管理结构根据在那里所持有的存储器装置在被占用的存储器单元上识别出并且释放这些存储器单元。
18.由此可以提高应用系统的弹性。
19.在当前情况下,应用系统可以理解为由一定数量的应用程序(也就是说,部分地使用共同的硬件的自动化流程)组成的系统。在此,共同的硬件的一部分可以是共同地使用的存储器装置。应用系统可以设置用于,至少部分自动化地、优选高度自动化地运行车辆。
20.存储器装置可以涉及共同地使用的存储器装置。
21.在当前情况下,共同地使用的存储器装置(英语:shared memory)可以理解为物理的存储器的一部分,该部分被应用系统的多个进程使用。
22.在此,共同地使用的存储器装置可以被使用于进程间通信。
23.可以借助于共同地使用的存储器装置以简单的方式和方法实施在多个进程之间的高性能的数据通信。
24.在当前情况下,存储器单元可以理解为存储器装置的可以被辨识、优选定义准确地被辨识的一部分。在此,辨识典型地通过存储器地址进行。这可以涉及一种例如仅在使用者进程的语境下有效的虚拟的存储器地址或者涉及一种例如在系统范围内有效的物理的存储器地址。也可设想一种其他的、可能定义准确的标志,该标志适合用于辨识存储器单元。
25.在当前情况下,应用系统可以理解为由一定数量的应用程序(也就是说,部分地使用共同的硬件的自动化流程)组成的系统。在此,共同的硬件的一部分可以是共同地使用的存储器装置。应用系统可以设置用于,至少部分自动化地、优选高度自动化地运行车辆。
26.按照根据本发明的数据结构的一种实施方式,该数据结构这样设置:当存储器单元被应用系统的使用者进程请求时,构造指针对象。
27.在当前情况下,指针对象的构造可以理解为,为指针对象分配存储器空间并且将对指针对象的目标的相应指示(verweis)保存在存储器空间中。在此,对目标的指示可以以标志的形式、例如以目标的存储器空间的起始地址的形式存在。
28.按照根据本发明的数据结构的一种实施方式,该数据结构这样设置:当存储器单元被使用者进程释放时,析构指针对象。
29.在当前情况下,指针对象的析构可以理解为释放用于指针对象的存储器空间。
30.按照根据本发明的数据结构的一种实施方式,数据结构这样设置:当使用者进程不正常地终止时,释放存储器单元。
31.在当前情况下,使用者进程的不正常地终止可以理解为使用者进程的有错误的或者提前的终止。一方面,如果对于进程的过早地中断存在着进程内部的原因,则可能发生不正常的终止。对于此的原因可能是存储器超限、失败的存储器分配等等。或者另一方面对于进程的过早地中断存在着进程外部的原因。这里,也可能存在着多种多样的原因。
32.按照根据本发明的数据结构的一种实施方式,该数据结构对于每个使用者进程具有相应的管理结构。
33.这种实施方式具有这样的优点:可以以简单的方式和方法实施由相应的使用者进程所占用的存储器单元的清理,因为仅需迭代相关的使用者进程的相应的管理结构,以便释放所有被该使用者进程所占用的存储器单元。
34.按照根据本发明的数据结构的一种实施方式,管理结构被保存在共同地使用的存储器装置中。
35.该实施方式具有以下优点:使用者进程(生产者、消费者)和必要时应用系统的中央的管理进程可以是分隔开的进程并且与之相应地可以在不同的进程语境下运行。然而,由于管理结构或者相应的管理结构在共同地使用的存储器装置中的保存,所有进程可以在需要时访问管理结构。
36.本发明的一个另外的方面是一种存储器装置。该存储器装置具有根据本发明的数据结构。
37.存储器装置可以涉及共同地使用的存储器装置。
38.本发明的一个另外的方面是一种设备。该设备具有根据本发明的存储器装置。
39.该设备可以例如涉及一种用于机器的控制仪。在此,可设想,机器涉及一种车辆。在此,此外可设想,车辆涉及至少部分自动化地运行的车辆。
40.在当前情况下,车辆可以理解为一种移动的交通工具,该移动的交通工具可以使用于运输人员(客运交通)、货物(货运)或者工具(机器或者辅助工具)。视应用情况而定地,谈及:
[0041]-陆上交通工具;
[0042]-水运工具;
[0043]-飞行器。
附图说明
[0044]
随后,参照绘图更详尽地解释本发明的实施方式。
[0045]
附图示出:
[0046]
图1示出具有“零拷贝”方式的方法的流程图;
[0047]
图2示出根据本发明的数据结构的方框图;
[0048]
图3示出与根据本发明的数据结构相关的方法的流程图。
具体实施方式
[0049]
图1示出具有“零拷贝”方式的方法100的流程图。该曲线图从生产者10的角度和从
消费者11的角度对于数据描绘方法100。
[0050]
在步骤111中,生产者10请求存储器单元215(见图2)。请求111可以通过应用系统的通信中间件进行。
[0051]
在请求成功的情况下,生产者10获得指向所请求的存储器单元215的指针对象20(换言之,引用)。在请求成功时,将存储器单元215的所有权传递到生产者10上并且中间件失去这种所有权。
[0052]
在步骤112中,生产者10将要传递的数据写入所请求的存储器单元215中。
[0053]
在步骤113中,生产者10向那个消费者或者那些消费者11发送存储器单元215。发送可以通过应用系统的通信中间件进行。在此,发送基于生产者10的请求进行。在此,又将关于存储器单元215的所有权向中间件传递。
[0054]
如果消费者11被告知存储器单元215的接收。
[0055]
该信息可以通过应用系统的通信中间件进行。然后,在步骤121中,消费者11请求所接收到的存储器单元。
[0056]
在请求成功的情况下,消费者11同样地接收指向所请求的存储器单元215的指针对象20。在请求成功时,将存储器单元的所有权传递到消费者11上并且中间件失去这种所有权。
[0057]
在步骤122中,消费者11从存储器单元215读出所接收到的数据。
[0058]
在步骤123中,消费者11释放所请求的存储器单元215,也就是说,典型地,析构消费者11的指向存储器单元215的指针对象20。在此,释放基于消费者11的请求而发生。在此,又将关于存储器单元215的所有权向中间件传递。由此,存储器单元215可供另外的消费者并且必要时也又可供生产者10或者另外的生产者使用。通过中间件,存储器单元215也可以被清理或者另外地使用。
[0059]
图2示出根据本发明的数据结构200的方框图。
[0060]
数据结构200具有管理结构203,该管理结构这样设置,以便持有指向存储器单元215的指针对象20。
[0061]
数据结构200的管理在通信中间件中在后台例如“零拷贝”方式地运行。
[0062]
在这里,可设想,由中间件为每个使用者进程201(也就是说,每个生产者10/发送者或者消费者11/接收者)分别施加一个管理结构203,因为由此可以将被列入其中的所有的存储器单元隐式地分配给相应的使用者进程201。
[0063]
在此,管理结构203持有指向由使用者进程201使用的存储器单元215的指针对象20。
[0064]
此外,方框图示出用于管理数据结构200的中央服务202。在此,中央服务202可以承担不同的任务。一方面,中央服务可以设置用于,实施与使用者进程201相关的心跳程序。通过这样的方法,中央服务202可以识别出,使用者进程201是否和何时不正常地终止。
[0065]
在使用者进程201不正常地终止的情况下,中央服务202可以使用管理结构203,以便例如通过那个或者那些在管理结构203中所持有的指针对象20辨识出在存储器装置210中的那个被不正常地终止的使用者进程201所使用的存储器单元215并且在必要时进行清理或者释放,也就是说,又提供给应用系统中的另外的使用者以供使用。
[0066]
在此,存储器单元215的辨识可以通过在存储器单元215的存储器中的地址或者引
用的其他形式来进行,因为它可以定义准确地分配。
[0067]
可设想,中央服务202具有适合于搜索和在必要时移除在管理结构203中的单个的条目的方法。
[0068]
图3示出与根据本发明的数据结构200相关的方法300的流程图。
[0069]
在步骤310中,生产者10请求存储器单元,以便用数据待传递的数据写入该存储器单元。在所请求的存储器单元215被移交给生产者10之前,首先,在步骤311中,通过通信中间件请求存储器单元。接着,在步骤312中,检验所请求的存储器单元215是否有效。
[0070]
在所请求的存储器单元215有效的情况下,在步骤313中,构造指向该存储器单元的指针对象20。在步骤314中,该指针对象20被保存在数据结构200的管理结构203中并且在那里被持有。
[0071]
在所请求的存储器单元215不是有效的情况下,可以通过步骤315输出错误。
[0072]
在此,请求的步骤310可以多次地重复。
[0073]
在存储器单元215的所有权已移交给生产者10之后,在步骤320中,生产者10使用存储器单元215来将要传递的数据写入存储器单元215中。
[0074]
在此,所有权的移交可以例如通过将指向存储器单元215的指针对象20移交给生产者10来进行。在此,被移交的指针对象20涉及在管理结构203中所持有的指针对象20的副本,而生产者10占有存储器单元215的所有权。
[0075]
在写入终止之后,生产者10通过通信中间件请求存储器单元215的发送330。
[0076]
为此,根据所示出的实施方式,在步骤331中,由生产者10从管理结构203中移除指向所使用的存储器单元20的指针对象20。接着,在步骤332中,存储器单元的发送借助于通信中间件进行。
[0077]
在此,可设想,步骤331不是由生产者10实施,而是由通信中间件与存储器单元215的发送相关联地实施。