CN101231600A - 通用的高效率的计算机进程间通讯机制 - Google Patents
通用的高效率的计算机进程间通讯机制 Download PDFInfo
- Publication number
- CN101231600A CN101231600A CNA2008100146489A CN200810014648A CN101231600A CN 101231600 A CN101231600 A CN 101231600A CN A2008100146489 A CNA2008100146489 A CN A2008100146489A CN 200810014648 A CN200810014648 A CN 200810014648A CN 101231600 A CN101231600 A CN 101231600A
- Authority
- CN
- China
- Prior art keywords
- equipment
- communication
- module
- write
- processes
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000004891 communication Methods 0.000 title claims abstract description 42
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明的通用的高效率的计算机进程间通讯机制,通过模拟设备的形式,灵活的实现多进程间通讯,打破了传统的基于开发语言API接口实现的进程间通讯机制,适用于不同开发语言实现的软件下的进程间通讯,降低了进程间通讯的复杂度,提高了软件运行效率,且具有很高的通用性。可以实现多个进程间的高效并发通讯,能够满足数百个进程同时进行通讯;也可以实现1对多的通讯模式,而且在架构内部实现了锁机制,如果设备的队列缓冲区中没有数据,那么进程或线程将一直阻塞在这里,直到有数据到来后,系统会自动唤醒该进程,不需要程序周期性的查看数据情况,降低了CPU利用率,在进程通讯控制上更为易用和高效。
Description
1、技术领域
本发明涉及计算机进程间通讯领域,具体涉及一种通用于各种编程语言所作程序之间的、高效率的进程间通讯机制。
2、技术背景
当前,传统的进程间通讯方法,都需要专门的API支持,该API接口一般是C或C++,但如果要实现不同开发语言所作程序间的进程间通讯,就需要调用各自开发语言所对应的特定接口模块,如Java程序与C/C++程序之间的进程间通讯,需要调用相应的JNI(Java Native Interface Java本地编程接口)接口。
这种特定的接口与具体开发语言之间是紧耦合关系,只能适用于特定开发语言所作程序之间的进程间通讯,不具备通用性。而对于大多数开发语言,它们之间甚至缺乏这样的特定接口,几乎无法完成他们之间的进程间相互通讯。在需要多种编程语言共同完成的软件上,进程间通讯也就变得难以实现,开发目标也难以实现。
为了解决不同开发语言所作程序间的进程间通讯,提高软件开发的灵活性。我们提出一种通用的,适用于多种开发语言所作程序之间的高效率进程间通讯机制。
3、发明内容
本方法区别于传统的基于开发语言特定API接口的进程间通讯机制。本方法是以虚拟字符设备为核心,通过虚拟设备这一桥梁,利用各种开发语言的通用的设备读写操作机制,实现不同开发语言所作软件之间的高效进程间通讯,打破了特定API接口与相应开发语言之间的紧耦合,达到灵活通用的目的。
该机制的体系结构包括:虚拟字符设备,虚拟设备读写模块。其中:
虚拟字符设备是该机制的核心,负责在系统下实现虚拟字符设备,并作为进程间通讯的媒介;
虚拟设备读写模块主要负责不同编程环境下的进程间通讯数据的获取和发送;
本发明的有益效果是:在机制的架构内部实现了自锁机制,不需要程序周期性的查看数据情况,降低了CPU利用率,在进程通讯控制上更为易用和高效。本发明的机制不需要特定API接口限制,即可方便快捷的实现不同开发语言所作程序间的进程间通讯,降低了软件进程间通讯的复杂度,提高了软件开发的自由度,进而在总体上可以有效控制软件开发成本,因而具有非常广阔的应用前景。
4、附图说明
附图1为通用高效率的计算机进程间通讯机制示意图;
5、实施方式
下面参照附图1对本发明的内容以一个具体实例来描述实现这一方法的过程。
正如发明内容中所描述的,本发明的体系结构主要包括:
虚拟字符设备和虚拟设备读写模块。
其中:虚拟字符设备是该机制的核心,负责在系统下实现虚拟字符设备,并作为进程间通讯的媒介;虚拟设备读写模块主要负责不同编程环境下的进程间通讯数据的获取和发送;
虚拟字符设备的实现方式描述如下:在操作系统下编写相应的字符设备驱动,一般一个内核模块实现一个设备,在设备模块种可以同时实现了两个字符设备,这两个设备的类型完全一样,分别称这两个字符设备分别为Left Device和RightDevice,对这两个设备的读写操作完全符合通用API,即通过open打开设备,获得设备的读写权限,通过read和write对设备进行读写。每个设备有16个同样大小的缓冲区,每个设备可以生成256个同类型的设备,完成最多可以在512个进程间同时使用的进程间通讯的模块。
如果有两个进程使用该模块进行通讯,一个进程打开一个Left Device,另一个进程打开Right Device(当然,打开的设备的子设备号是相同的)。例如:一个进程A打开“/dev/lcvipcmodL0”设备用于进程间通讯,那么与进程A进行进程间通讯的进程B必须打开“/dev/lcvipcmodR0”设备,这样才可以进程通讯,这样的设备称为一对设备。由于该模块支持阻塞和非租塞调用,并支持poll和select多端口监听系统调用,可以结合线程和子进程选择一种操作模式。当一个进程向Left Device写数据时,实际上在模块的内部代码中将数据保存到了RightDevice的队列缓冲区,向Right Device写数据时,实际上是保存到了Left Device的队列缓冲区中,然后唤醒在相应的设备上监听、睡眠的进程,进程被唤醒后就可以将数据读出。
虚拟设备读写模块的实现方式描述如下:虚拟设备的读写在系统层面与普通文件读写完全一致,只需要调用开发语言相应的文件读写API即可完成。
Claims (1)
1.通用的高效率的计算机进程间通讯机制,其特征在于该机制的体系结构包括:虚拟字符设备和虚拟设备读写模块;其中:
虚拟字符设备是该机制的核心,负责在系统下实现虚拟字符设备,并作为进程间通讯的媒介;
虚拟设备读写模块主要负责不同编程环境下的进程间通讯数据的获取和发送;
在体系结构中,虚拟字符设备的实现方式描述如下:在操作系统下编写相应的字符设备驱动,一个内核模块实现一个设备模块,在设备模块中同时设置两个类型完全一样字符设备,分别称这两个字符设备分别为Left Device和Right Device,对这两个设备的读写操作完全符合通用API,即通过open打开设备,获得设备的读写权限,通过read和write对设备进行读写,每个设备有16个同样大小的缓冲区,每个设备生成256个同类型的设备,完成最多在512个进程间同时使用的进程间通讯的模块;
有两个进程使用该模块进行通讯,一个进程打开一个Left Device,另一个进程打开RightDevice,打开的设备的子设备号是相同的,由于该模块支持阻塞和非租塞调用,并支持poll和select多端口监听系统调用,结合线程和子进程选择一种操作模式,当一个进程向Left Device写数据时,实际上在模块的内部代码中将数据保存到了Right Device的队列缓冲区,向RightDevice写数据时,实际上是保存到了Left Device的队列缓冲区中,然后唤醒在相应的设备上监听、睡眠的进程,进程被唤醒后将数据读出;
虚拟设备读写模块的实现方式描述如下:虚拟设备的读写在系统层面与普通文件读写完全一致,只需要调用开发语言相应的文件读写API即可完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100146489A CN101231600A (zh) | 2008-02-25 | 2008-02-25 | 通用的高效率的计算机进程间通讯机制 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100146489A CN101231600A (zh) | 2008-02-25 | 2008-02-25 | 通用的高效率的计算机进程间通讯机制 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101231600A true CN101231600A (zh) | 2008-07-30 |
Family
ID=39898100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100146489A Pending CN101231600A (zh) | 2008-02-25 | 2008-02-25 | 通用的高效率的计算机进程间通讯机制 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101231600A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807162A (zh) * | 2010-03-25 | 2010-08-18 | 青岛海信电器股份有限公司 | 降低嵌入式软件系统模块耦合度的方法和嵌入式软件系统 |
CN101403982B (zh) * | 2008-11-03 | 2011-07-20 | 华为技术有限公司 | 一种多核处理器的任务分配方法和系统 |
CN101593125B (zh) * | 2009-07-02 | 2012-03-14 | 上海交通大学 | 使用监控线程对二进制翻译程序执行流程动态监控的方法 |
-
2008
- 2008-02-25 CN CNA2008100146489A patent/CN101231600A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101403982B (zh) * | 2008-11-03 | 2011-07-20 | 华为技术有限公司 | 一种多核处理器的任务分配方法和系统 |
US8763002B2 (en) | 2008-11-03 | 2014-06-24 | Huawei Technologies Co., Ltd. | Method, system, and apparatus for task allocation of multi-core processor |
CN101593125B (zh) * | 2009-07-02 | 2012-03-14 | 上海交通大学 | 使用监控线程对二进制翻译程序执行流程动态监控的方法 |
CN101807162A (zh) * | 2010-03-25 | 2010-08-18 | 青岛海信电器股份有限公司 | 降低嵌入式软件系统模块耦合度的方法和嵌入式软件系统 |
CN101807162B (zh) * | 2010-03-25 | 2013-08-07 | 青岛海信电器股份有限公司 | 降低嵌入式软件系统模块耦合度的方法和嵌入式软件系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9864627B2 (en) | Power saving operating system for virtual environment | |
EP2003548B1 (en) | Resource management in multi-processor system | |
US6324684B1 (en) | Processor having real-time execution control for debug functions without a debug monitor | |
US20150095682A1 (en) | Techniques for tracing wakelock usage | |
CN101681191B (zh) | 在电能转换期间的数字信号处理器调试 | |
CN102724035B (zh) | 一种加密卡的加解密方法 | |
CN107844189A (zh) | 一种降低黑屏耗电的方法、系统、终端及计算机可读存储介质 | |
CN102902589A (zh) | 一种集群mic作业的管理及调度方法 | |
CN108304267A (zh) | 高可靠低资源开销的多源数据引接方法 | |
CN101727423B (zh) | 可重配置fpga上可抢占硬件多任务系统及其实现方法 | |
CN101231600A (zh) | 通用的高效率的计算机进程间通讯机制 | |
CN101341471B (zh) | 动态高速缓存管理的设备和方法 | |
CN109507991A (zh) | 一种双轴伺服控制平台调试系统及方法 | |
CN103077081B (zh) | 资源调整的方法及装置 | |
CN109558217B (zh) | 数据处理脚本程序运行方法以及数据处理容器 | |
CN109426643A (zh) | Usb接口请求调度方法、装置及设备 | |
CN101349975B (zh) | 一种在嵌入式操作系统上实现中断底半部机制的方法及装置 | |
CN111443898A (zh) | 基于优先级队列与有限状态机的流程式控制软件设计方法 | |
CN115981893A (zh) | 消息队列任务处理方法、装置、服务器及存储介质 | |
CN101458671B (zh) | 外设访问控制方法、装置与系统 | |
US6920513B2 (en) | Bus management techniques | |
CN106354486A (zh) | nand flash设备管理的方法和系统 | |
CN102662730B (zh) | 并行多核虚拟机的原子指令模拟方法及虚拟机装置 | |
EP2709003B1 (en) | Loopback structure and data loopback processing method for processor | |
US7130986B2 (en) | Determining if a register is ready to exchange data with a processing element |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080730 |