本文首先简单介绍了 CMPI(Common Manageability Programming Interface) 规范与 Open Pegasus, 说明了 CMPI 规范中对多线程及内存管理方面的要求,然后以 Open Pegasus 中的实现为例,分析了为实现上述要求所需要的关键数据结构,最后全文进行了总结。
CMPI(Common Manageability Programming Interface) 是由 Open Group(www.opengroup.org) 维护的一套规范。其中定义了一系列基于C语言的编程接口。基于这些编程接口, CMPI 隔离了 CIMOM(CIM Object Manager, 又称 Management Broker )和 CIM Provider (又称 Management Instrumentation, 以下简称 Provider )中的相关实现,从而使 Provider 的开发和运行不再依赖于某种特定的 CIMOM。 因此无需重新编译链接, Provider 可以发布到任何一种支持 CMPI 的 CIMOM 中。
Open Pegasus(www.openpegasus.org, 以下简称 Pegasus )是一个开源的企业级的 CIMOM。它实现了对 CMPI 规范的支持。本文就以 Pegasus (2.7.1版)为例,研究了 CMPI 实现中的多线程内存管理的问题。
本文讨论的默认平台为 Linux。
CMPI 需要同时解决的两个问题就是其所驱动的 Provider 代码的线程安全与可重入性以及 CMPI 对象的内存管理。
CMPI 规范要求 CMPI 的实现是线程安全以及是可重入的。这是因为通常 CIMOM 为了同时响应多个 CIM 的请求,会为每个 CIM 请求生成一个线程。这

本文探讨了CMPI(Common Manageability Programming Interface)的内存管理和线程安全特性,特别是在Open Pegasus中的实现。CMPI为CIM Provider提供线程安全和可重入的接口,并规定CMPI对象的内存分配由其自身管理。在Open Pegasus中,通过特定的数据结构实现了多线程环境下的内存管理,包括CMPIContext对象和使用clone方法管理的CMPI对象。
最低0.47元/天 解锁文章
1197

被折叠的 条评论
为什么被折叠?



