Memory usage techniques in middleware of a real-time data distribution system
원문보기
IPC분류정보
국가/구분
United States(US) Patent
등록
국제특허분류(IPC7판)
G06F-012/12
G06F-015/167
출원번호
UP-0379986
(2006-04-24)
등록번호
US-7783853
(2010-09-13)
발명자
/ 주소
Rhee, Stephen Jisoo
Dai, Yi
Pardo-Castellote, Gerardo
Joshi, Rajive
출원인 / 주소
Real-Time Innovations, Inc.
대리인 / 주소
Beyer Law Group LLP
인용정보
피인용 횟수 :
3인용 특허 :
36
초록▼
A method of operating real-time middleware associated with at least one node of a data distribution system is provided. At least one pool of a plurality of fixed block size units of memory of the node is allocated (e.g., via an operating system call). Based on loan requests for dynamic memory elemen
A method of operating real-time middleware associated with at least one node of a data distribution system is provided. At least one pool of a plurality of fixed block size units of memory of the node is allocated (e.g., via an operating system call). Based on loan requests for dynamic memory elements on behalf of a user application executing on the node, an indication of at least one of the allocated fixed block size units to be lent is provided. A list of which allocated fixed block size units are being lent from the pool is maintained, including maintaining the list based on return requests, on behalf of the user application executing on the node, of fixed block size units of the pool. Substantially all of the dynamic memory elements of the real-time middleware associated with the node are provided from the at least one pool of allocated fixed block size units based on the loan requests on behalf of the user application.
대표청구항▼
What is claimed is: 1. A method comprising: operating real-time middleware associated with at least one node of a data distribution system to communicate data samples with middleware on the same or on other nodes, where each node is a separate computer, the middleware of the nodes operating using a
What is claimed is: 1. A method comprising: operating real-time middleware associated with at least one node of a data distribution system to communicate data samples with middleware on the same or on other nodes, where each node is a separate computer, the middleware of the nodes operating using a publish-subscribe communication model to provide a publish-subscribe interface for distributing data samples among a plurality of user applications, each user application executing in a separate address space on the same or on other nodes, but having access to a global data space to publish and subscribe the data samples, wherein the data samples in the global data space are accessible to each user application via the middleware of the node, the method further comprising, by the real-time middleware associated with one of the at least one node of the data distribution system: allocating, to the middleware associated with that one node, at least one pool of a plurality of fixed block size units of memory of the node; based on loan requests for dynamic memory elements on behalf of a user application executing on that one node for storing published or subscribed data samples, providing an indication to the user application of at least one of the allocated fixed block size units to be lent on behalf of the user application; and maintaining a list of which allocated fixed block size units are being lent from the pool on behalf of the user application on that one node, including maintaining the list based on return requests relative to fixed block size units of the at least one pool for stored published or subscribed data samples for which a borrowing application is finished using the lent fixed block size units of the at least one pool; wherein the allocating step is executed previous to the loan requests; and substantially all of the dynamic memory elements of the real-time middleware associated with that one node are provided from the at least one pool of allocated fixed block size units based on the loan requests from the user application on that one node for storing published or subscribed data samples. 2. The method of claim 1, wherein: the user application accesses the middleware using an application program interface to provide a memory configuration specification to the middleware; and memory management for the at least one pool of fixed block size units is specified by the middleware in a manner that is based on the memory configuration specification provided to the middleware by the application program interface but that is not visible to the user application. 3. The method of claim 2, wherein: the manner in which the middleware specifies the memory management for the at least one pool of fixed block size includes providing a specification of at least fixed block size and number of units. 4. The method of claim 3, wherein: the specification further includes a specification relative to a growth policy for the at least one pool of fixed block size units of memory. 5. The method of claim 2, wherein: the manner in which the middleware specifies the memory management for the at least one pool of fixed block size units includes receiving a memory management specification from the user application defining memory management functionality; and specifying the memory management by the middleware in the manner that is not visible to the user application includes providing a memory management that is parametrically defined within the middleware based on the memory management specification received from the user application. 6. The method of claim 5, wherein: the middleware includes a plurality of hierarchically organized layers; and each parametric definition of the memory management specification is executed within a particular layer such that a memory management specification resulting therefrom is not visible in layers above that particular layer. 7. The method of claim 6, wherein: the middleware initially interoperates with an operating system of that one node to allocate a pool of the fixed block size units of memory. 8. The method of claim 7, wherein: the allocating step is repeated as appropriate based on a growth policy. 9. The method of claim 1, wherein: the allocating step is repeated as appropriate based on a growth policy. 10. The method of claim 9, wherein: the growth policy specifies a number of additional fixed block size units to allocate for the at least one pool, upon occurrence of a predetermined condition. 11. The method of claim 10, wherein: the predetermined condition includes an amount of fixed block size units available for lending reaching a particular threshold. 12. The method of claim 11, wherein: the particular threshold is zero. 13. A computing system executing the method set forth in claim 1. 14. A method, comprising: communicating data samples by real-time middleware associated with at least one node of a data distribution system to communicate the data samples with middleware on the same or other nodes, where each node is a separate computer, the middleware of the nodes operating using publish-subscribe communication model to provide a publish-subscribe interface for the data samples among a plurality of user applications, each user application executing in a separate address space on the same or on other nodes, but having access to a global data space to publish and subscribe the data samples, wherein the data samples in the global data space are accessible to each user application via the middleware of the computer, the method further comprising, by the real-time middleware associated with one of the at least one node of the data distribution system: storing the data samples in memory of that one node in fixed block size units; maintaining a data sample list, of every data sample for that one node, in memory of that one node in fixed block size units, each entry in the list corresponding to a separate one of the data samples; and maintaining an index data structure including a plurality of instance lists, in memory of that one node in fixed block size units, each instance list corresponding to a separate data-object instance within that one node and each entry of each instance list corresponding to a data sample for the data-object instance to which that instance list corresponds; wherein the memory of fixed block size units is borrowed and returned, as appropriate, to at least one memory buffer pool associated with that one node. 15. The method of claim 14, wherein: a user application executing in the at least one node is a producer or consumer of the data samples; and wherein the user application accesses the middleware using an application program interface to provide a memory configuration specification to the middleware; and memory management for at least one pool of the fixed block size units is specified by the middleware in a manner that is based on the memory configuration specification provided to the middleware by the application program but that is not visible to the user application. 16. The method of claim 15, wherein: the manner in which the middleware specifies the memory management for the at least one pool of fixed block size includes specifying at least fixed block size and number of units. 17. The method of claim 16, wherein: the manner in which the middleware specifies the memory management for the at least one pool of fixed block size further includes a specifying growth policy for the at least one pool of fixed block size units of memory. 18. The method of claim 17, wherein: the growth policy specifies a number of additional fixed block size units to allocate for the at least one pool, upon occurrence of a predetermined condition. 19. The method of claim 18, wherein: the predetermined condition includes an amount of fixed block size units available for lending reaching a particular threshold. 20. The method of claim 19, wherein: the particular threshold is zero. 21. The method of claim 14, wherein that one node is a consumer node; and the method further comprises within that one node, maintaining a staging area of fixed block size units for each remote writer that is providing data samples to that one node; based on a determination that a data sample is to be committed to that one node, operating on the data sample list such that an entry in the data sample list corresponds to the to-be committed data sample; and operating on the instance list corresponding to the data-object instance with which the to-be committed data sample is to be associated, to associate the to-be committed data sample with that data-object instance. 22. The method of claim 21, further comprising: for a particular data sample, determining whether the particular data sample is to be committed to that one node. 23. The method of claim 22, wherein: determining whether the particular data sample is to be committed to that one node includes determining that data samples sequentially prior to the particular data sample have been received by that one node. 24. The method of claim 22, wherein: determining whether the particular data sample is to be committed to that one node includes determining that the sample is one of a plurality of samples, all of which are coherently available in the staging area. 25. The method of claim 21, wherein: operating on the data sample list such that an entry in the data sample list corresponds to the to-be committed data sample, includes associating a fixed block size unit, holding the to-be committed data sample, with the data sample list. 26. The method of claim 25, wherein: associating the fixed block size unit, holding the data sample, with the data sample list includes modifying an entry in the staging area, pointing to the fixed block size unit holding the data sample, to be an entry of the data sample list. 27. The method of claim 26, further comprising: creating an entry in the instance list to be associated with the entry modified from the staging area to be associated with the data sample list. 28. The method of claim 21, wherein: operating on the instance list corresponding to the data-object instance with which the to-be committed data sample is to be associated, to associate the to-be committed data sample with that data-object instance, includes associating a fixed block size unit, holding the to-be committed data sample, with the instance list corresponding to the data-object instance with which the to-be committed data sample is to be associated. 29. The method of claim 28, wherein: associating the fixed block size unit, holding the data sample, with the instance list corresponding to the data-object instance with which the data sample is to be associated includes modifying an entry in the staging area, pointing to the fixed block size unit holding the data sample, to be an entry of the instance list corresponding to the data object instance with which the data sample is to be associated. 30. The method of claim 14, wherein: each entry of each instance list corresponding to a data sample for the data-object instance to which that instance list corresponds includes that entry indicating the entry in the data sample list that holds that data sample. 31. The method of claim 14, wherein: each entry in the instance list has a corresponding entry in the data sample list, such that that entry in the instance list and that entry in the data sample list point to the same data sample. 32. The method of claim 31, wherein: that entry in the instance list and that entry in the data sample list are a single entry that is present in both the instance list and the data sample list. 33. A computing system executing the method as set forth in claim 14. 34. A method of generating real-time middleware code to be associated with at least one node of a data distribution system, the method comprising: generating code to operate the real-time middleware associated with the at least one node of the data distribution system to communicate data samples with middleware on the same node or on other nodes, where each node is a separate computer, the middleware of the nodes operating using publish-subscribe communication model to provide a publish-subscribe interface for the data samples among a plurality of user applications, each user application executing in a separate address space on the same or on other nodes, but having access to a global data space to publish and subscribe the data samples, wherein the data samples in the global data space are accessible to each user application via the middleware of the computer, generating code to cause the real-time middle ware associated with a first node to allocate at least one pool of a plurality of fixed block size units of memory of the node; generating code to cause the first node to, based on loan requests for dynamic memory elements on behalf of a user application executing on the first node for storing published or subscribed data samples, providing an indication to the user application of at least one of the allocated fixed block size units to be lent on behalf of the user application; and generating code to cause the first node to maintain a list of which allocated fixed block size units are being lent from the at least one pool on behalf of the user application on the first node, including maintaining the list based on return requests relative to fixed block size units of the pool for stored published or subscribed data samples for which a borrowing application is finished using the lent fixed block size units of the at least one pool; wherein the code causes the first node to allocate the at least one pool of a plurality of fixed block size units of memory of the node previous to the loan requests; and substantially all of the dynamic memory elements of the real-time middleware associated with the first node are caused to be provided from the at least one pool of allocated fixed block size units based on the loan requests from the user application on the first node for storing published or subscribed data samples; wherein the code is not specific to a particular memory management scheme and the method further comprises causing the code to be executed on a second node without modifying the code. 35. A non-transitory computer readable medium having a computer program tangibly embodied thereon, the computer program configured to cause a computing system to execute a method, comprising: operating real-time middleware associated with at least one node of a data distribution system to communicate data samples with middleware of the same node or other nodes, where each node is a separate computer, the middleware of the nodes operating using publish-subscribe communication model to provide a publish-subscribe interface for the data samples among a plurality of user applications, each user application executing in a separate address space on the same node or in other nodes, but having access to a global data space to publish and subscribe the data samples, wherein the data samples in the global data space are accessible to each user application via the middleware of the computer, the method further comprising, by the real-time middleware associated with one of the at least one node of the data distribution system: allocating, to the middleware associated with that one node, at least one pool of a plurality of fixed block size units of memory of the node; based on loan requests loan requests for dynamic memory elements on behalf of a user application executing on the that one node for storing published or subscribed data samples, providing an indication to the user application of at least one of the allocated fixed block size units to be lent on behalf of the user application; and maintaining a list of which allocated fixed block size units are being lent from the at least one pool on behalf of the user application on that one node, including maintaining the list based on return requests relative to fixed block size units of the pool for stored published or subscribed data samples for which a borrowing application is finished using the lent fixed block size units of the at least one pool; wherein the allocating step is executed previous to the loan requests; and substantially all of the dynamic memory elements of the real-time middleware associated with that one node are provided from the at least one pool of allocated fixed block size units based on the loan requests from the user application on that one node for storing published or subscribed data samples. 36. A tangible computer-readable medium having a computer program tangibly embodied thereon, the computer program configured to cause a computing system to execute a method comprising: communicating data samples by real-time middleware associated with at least one node of a data distribution system to communicate the data samples with middleware of other nodes, where each node is a separate computer, the middleware of the nodes operating using publish-subscribe communication model to provide a publish-subscribe interface for the data samples among a plurality of user applications, each user application executing in a separate address space on the same or on other nodes, but having access to a global data space to publish and subscribe the data samples, wherein the data samples in the global data space are accessible to each user application via the middleware of the computer, the method further comprising, by the real-time middleware associated with one of the at least one node of the data distribution system: storing the data samples in memory of that one node in fixed block size units; maintaining a data sample list, of every data sample for that one node, in memory of that one node in fixed block size units, each entry in the list corresponding to a separate one of the data samples; and maintaining an index data structure including a plurality of instance lists, in memory of that one node in fixed block size units, each instance list corresponding to a separate data-object instance within that one node and each entry of each instance list corresponding to a data sample for the data-object instance to which that instance list corresponds; wherein the memory of fixed block size units is borrowed and returned, as appropriate, to at least one memory buffer pool associated with that one node.
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
이 특허에 인용된 특허 (36)
Agrawal Mukul (Plymouth MN) Orrock James E. (Eden Prairie MN) Patiath Pradip K. (Brooklyn Park MN) Rachor Lloyd A. (Brooklyn Park MN), Advanced equipment control system.
Steinman Jethro F. ; Salpakari Pekka M.,FIX ; Rehikainen Hannu J.,FIX ; Ollikainen Matti H.,FIX ; Chernoquzov Alexander V. ; Narayan Shashank S., Call mechanism for static and dynamic linked functions within an object-oriented controller using heterogeneous development tool sets.
Launey Reuel O. (Arlington VA) Grendler Peter A. (Silver Spring MD) Packham Donald L. (Fort Lauderdale FL) Battaglia James M. (Kettering MD) Levine Howard E. (Adelphi MD), Expandable home automation system.
Burns Harry A. ; Larson Brent H. ; Brown Larry K., Local device and process diagnostics in a process control network having distributed control functions.
O'Rourke,Chris; Housel,Barron C; Batz,Robert M; Klein,Steven C, Method allocation scheme for maintaining server load balancers services in a high throughput environment.
Noss Jeffrey S. (Bay Village OH), Method and apparatus for modification of a prerecorded programmed sequence of motions during execution thereof by a robo.
Shah Mahesh V. ; McDaniel David W. ; Vatteroni James R. ; Jaggers Stephen B. ; Worline Mark E., Method and platform for interfacing between application programs performing telecommunications functions and an operating system.
Bohrer Kathryn Ann ; Carey James E. ; Carlson Brent A.,SEX ; Graser Timothy ; Nilsson Anders,NOX ; Vlissides John M., Method of developing a software system using object oriented technology.
Alex Bernaden, III ; Gaylon M. Decious ; John E. Seem ; Kirk H. Drees ; Jonathan D. West ; William R. Kuckuk, Method of programming and executing object-oriented state machine logic in a controller.
Goiffon David A. ; Hartmann Gerald E. ; Johnson David R., Object management system supporting the use of application domain knowledge mapped to technology domain knowledge.
Nixon Mark ; Havekost Robert B. ; Jundt Larry O. ; Stevenson Dennis ; Ott Michael G. ; Webb Arthur,GBX ; Lucas Mike,GBX, Process control system using a process control strategy distributed among multiple control elements.
Gloudeman Jeffrey J. ; Gottschalk Donald A. ; Rasmussen David E. ; Wainscott ; Jr. Barrett G., Software components for a building automation system based on a standard object superclass.
Beckwith,R. William, System, method, and article of manufacture for using a replaceable component to select a replaceable quality of service capable network communication channel component.
Jun, Hyung Kook; Lee, Soo Hyung; Kim, Kyeong Tae; Kim, Jae Hyuk; Kim, Won Tae; Park, Seung Min, DDS structure with scalability and adaptability and node constituting the same.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.