CN104123194A - 内核态与用户态的通信结构及通信方法 - Google Patents
内核态与用户态的通信结构及通信方法 Download PDFInfo
- Publication number
- CN104123194A CN104123194A CN201410338030.3A CN201410338030A CN104123194A CN 104123194 A CN104123194 A CN 104123194A CN 201410338030 A CN201410338030 A CN 201410338030A CN 104123194 A CN104123194 A CN 104123194A
- Authority
- CN
- China
- Prior art keywords
- kernel
- state
- user
- communication
- storehouse
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种内核态与用户态的通信结构,该结构包含:通信连接的内核态与用户态;内核态包含:内核对象驱动模块,通信连接该内核对象驱动模块的内核对象模块;用户态包含:与内核对象驱动模块通信连接的库,通信连接该库的应用程序。本发明代理应用中所有通信,提供统一的接口给应用程序和内核驱动使用,内核态和用户态模块在相互通信时,不再调用原linux系统提供的通信接口,而采用本模块提供的统一接口,完成模块化设计,提供更好的底层支持,利于大规模管理和开发。
Description
技术领域
本发明涉及一种操作系统内的通信技术,具体涉及一种内核态与用户态的通信结构及通信方法。
背景技术
Linux系统提供了一种比较高级的内存空间管理机制,即每个进程拥有自己独立的4GB的虚拟内存空间,其中0-3GB属于用户空间,而3-4GB属于内核空间。在这种机制下,不同的用户空间如果不进行进程间通信是无法进行内存直接访问的,同样,内核数据和用户的数据也无法进行直接访问,而必须借助与其他手段。这种机制的优点在于保持每个进程的独立性,即单个的进程崩溃或者内存访问错误不会影响到其他进程,更不会让系统内核崩溃。
Linux操作系统提供了几种基本的内核态与用户态的通信方式,如:
1、基于copy_from_user和copy_to_user的内存共享;
2、netlink套接字。
但上述现有技术具有如下缺点:
1)层次太低,缺少封装,不利于大规模层次化的软件开发。直接利用linux系统提供的共享内存等方法,的确也可以实现内核与用户态的通信,但是由于层次太低,代码难以维护,尤其当通信的内容过多时,不利于大规模软件开发。
2)不利于统一的管理和维护。当通信出现问题需要排查时,会很困难,需要检查工程中所有的通信点。
发明内容
本发明提供一种内核态与用户态的通信结构及通信方法,代理应用中所有通信,提供统一的接口给应用程序和内核驱动使用,完成模块化设计,提供更好的底层支持,利于大规模管理和开发。
为实现上述目的,本发明提供一种内核态与用户态的通信结构,其特点是,该结构包含:通信连接的内核态与用户态;
内核态包含:内核对象驱动模块,通信连接该内核对象驱动模块的内核对象模块;
用户态包含:与内核对象驱动模块通信连接的库,通信连接该库的应用程序。
上述内核对象驱动模块下通信连接有若干内核对象模块;该内核对象驱动模块为其所连接的若干内核对象模块提供统一的与用户态通信的接口。
上述内核对象驱动模块包含有注册的收方向数据处理接口和数据发送接口。
上述库下通信连接有若干应用程序;该库对其所连接的若干应用程序提供统一的与内核态通信的接口。
上述库包含注册的收方向数据处理接口和数据发送接口。
一种上述内核态与用户态的通信结构的通信方法,其特点是,该方法包含:
分别建立内核对象驱动模块和库;
将内核对象驱动模块注册到内核态,库注册到用户态;其中内核对象驱动模块与库的服务字符串一致;
内核态与用户态之间通过内核对象驱动模块和库实现交互。
上述内核对象驱动模块在内核对象模块前初始化;启动一内核进程,实时循环阻止监听来自用户态的信息,并将用户态的信息分发给各个内核对象模块。
上述通信方法还包含内核对象驱动模块的调试方法,若发生故障,即输出有故障的内核态的信息。
上述库在应用程序前进行初始化,启动一线程,实时循环阻止监听来自内核态的信息,将来自内核态的信息分发给各个应用程序。
上述通信方法还包含库的调试方法,若发生故障,即输出有故障的用户态的信息。
本发明内核态与用户态的通信结构及通信方法和现有技术的通信技术相比,其优点在于,本发明代理应用中所有通信,提供统一的接口给应用程序和内核驱动使用,内核态和用户态模块在相互通信时,不再调用原linux系统提供的通信接口,而采用本模块提供的统一接口,完成模块化设计,提供更好的底层支持,利于大规模管理和开发。
附图说明
图1为本发明内核态与用户态的通信结构的结构示意图;
图2为本发明内核态与用户态的通信方法的方法流程图。
具体实施方式
以下结合附图,进一步说明本发明的具体实施例。
如图1所示,本发明公开一种linux系统中内核态1(kernel space)与用户态2(user space)的通信结构,该结构包含:通信连接的内核态1与用户态2。
其中,内核态1包含:内核对象(ko,kernel object)驱动模块11和通信连接该内核对象驱动模块11的若干内核对象模块12。内核对象驱动模块11用于向其他的内核对象模块提供统一的与用户态2通信的接口,并承担内核态1下的调试和维护。内核对象驱动模块11必须在其他内核对象模块12之前进行初始化。
内核态1的实现主要包括以下几个内容:
1)基于效率的考虑,底层技术实现依赖于字符设备的设备驱动程序中对设备的I/O通道进行管理的函数(ioctl)来实现字符通信。
2)内核对象驱动模块11的初始化将启动一个内核进程,用于不断阻止监听来自用户态2的信息,并负责将来自用户态2的信息分发给内核态其他的内核对象模块12。
3)内核对象驱动模块11将提供一组回调接口(即注册的收方向数据处理接口),用于内核对象模块12注册到内核对象驱动模块11,从而实现数据接收,不同的内核对象模块12在注册时用不同的字符串来区分。
4)内核对象驱动模块11将提供一个数据发送接口,用于内核对象模块12往用户态发送数据。
上述注册的收方向数据处理接口和数据发送接口为内核态下内核对象驱动模块11提供给其他内核对象模块12调用,通过这两个接口,其他内核对象模块12可以和用户态2下的进程通信。
内核对象驱动模块11中的核心进程工作伪码包含:循环阻塞收取来自用户态2下的数据,根据收到数据的目的不同,分发到不同的内核对象模块12中去。内核对象驱动模块11的实现还包括了调试手段,如果出现故障,可以打印出是哪个内核对象模块12出了问题。
用户态2包含:与内核对象驱动模块11通信连接的一组已编译的库21(.a或.o文件),以及通信连接该库21的若干应用程序22。该库21向用户态2下的应用程序22提供统一的接口,用于用户应用程序22与内核态1的通信,并承担用户态2下的调试和维护。
用户态的实现主要包括以下几个内容:
1)底层技术实现依赖于字符设备的ioctl来实现字符通信。
2)库21的初始化将启动一个线程,用于不断阻止监听来自内核态1的信息,并负责将来自内核态1的信息分发给其他应用程序22。
3)库21将提供一组回调接口(即注册的收方向数据处理接口),用于其他应用程序22注册到库21用于接收数据,不同的应用程序22在注册时用不同的字符串来区分,该字符必须与内核态1下发送的字符一致。
4)库21将提供一个数据发送接口,用于其他应用程序22往内核态1发送数据。
上述注册的收方向数据处理接口和数据发送接口为用户态2下库21提供给其他用户态2应用模块22调用,通过这两个接口,其他用户态应用模块22可以和内核态1下的进程通信。
用户态2线程的运作流程与内核态1大致一致。库21的核心进程工作伪码包含:循环阻塞收取来自内核态1下的数据,根据收到数据的目的不同,分发到不同的应用程序22中去。库21的实现还包括了调试手段,如果出现故障,可以打印出是哪个应用程序22出了问题。
如图2所示,本发明还公开一种内核态与用户态的通信结构的通信方法,该方法包含:
步骤1、分别建立内核对象驱动模块和库。
具体为分别实现本应用在内核态与用户态的字符信息处理代码:
内核态:Function_kernel(char* buffer, int length);
用户态:Function_user(char* buffer, int length)。
步骤2、将内核对象驱动模块注册到内核态,库注册到用户态;其中内核对象驱动模块与库的服务字符串一致。
具体实现如下:
内核态:Proxy_ku_service_register(“example_proxy”,Function_kernel );
用户态:Proxy_uk_service_register(“example_proxy”,Function_user)。
步骤3、内核态与用户态之间通过内核对象驱动模块和库实现交互。
指令实现为:
内核态:Proxy_ku_send(“example_proxy”, char* buffer, int length);
用户态:Proxy_uk_send(“example_proxy”, char* buffer, int length)。
在完成上述过程后,所有的内核态和用户态模块在相互通信时,不再调用原linux系统提供的通信接口,而采用本模块提供的统一接口。
其中Function_kernel、Function_user两个数据处理函数负责处理接收到的数据,而Proxy_ku_send、Proxy_uk_send负责发送数据,而底层的实现对用户完全透明,被内核态与用户态的通信结构的内核对象驱动模块或库接管,应用程序不再关心实现和调试。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
Claims (10)
1.一种内核态与用户态的通信结构,其特征在于,该结构包含:通信连接的内核态(1)与用户态(2);
内核态(1)包含:内核对象驱动模块(11),通信连接该内核对象驱动模块(11)的内核对象模块(12);
用户态(2)包含:与内核对象驱动模块(11)通信连接的库(21),通信连接该库(21)的应用程序(22)。
2.如权利要求1所述的内核态与用户态的通信结构,其特征在于,所述内核对象驱动模块(11)下通信连接有若干内核对象模块(12);该内核对象驱动模块(11)为其所连接的若干内核对象模块(12)提供统一的与用户态(2)通信的接口。
3.如权利要求1或2所述的内核态与用户态的通信结构,其特征在于,所述内核对象驱动模块(11)包含有注册的收方向数据处理接口和数据发送接口。
4.如权利要求1所述的内核态与用户态的通信结构,其特征在于,所述库(21)下通信连接有若干应用程序(22);该库(21)对其所连接的若干应用程序(22)提供统一的与内核态(1)通信的接口。
5.如权利要求1或4所述的内核态与用户态的通信结构,其特征在于,所述库(21)包含注册的收方向数据处理接口和数据发送接口。
6.一种如权利要求1至5所述内核态与用户态的通信结构的通信方法,其特征在于,该方法包含:
分别建立内核对象驱动模块和库;
将内核对象驱动模块注册到内核态,库注册到用户态;其中内核对象驱动模块与库的服务字符串一致;
内核态与用户态之间通过内核对象驱动模块和库实现交互。
7.如权利要求6所述的内核态与用户态的通信结构的通信方法,其特征在于,所述内核对象驱动模块在内核对象模块前初始化;启动一内核进程,实时循环阻止监听来自用户态的信息,并将用户态的信息分发给各个内核对象模块。
8.如权利要求7所述的内核态与用户态的通信结构的通信方法,其特征在于,所述通信方法还包含内核对象驱动模块的调试方法,若发生故障,即输出有故障的内核态的信息。
9.如权利要求6所述的内核态与用户态的通信结构的通信方法,其特征在于,所述库在应用程序前进行初始化,启动一线程,实时循环阻止监听来自内核态的信息,将来自内核态的信息分发给各个应用程序。
10.如权利要求9所述的内核态与用户态的通信结构的通信方法,其特征在于,所述通信方法还包含库的调试方法,若发生故障,即输出有故障的用户态的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410338030.3A CN104123194A (zh) | 2014-07-16 | 2014-07-16 | 内核态与用户态的通信结构及通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410338030.3A CN104123194A (zh) | 2014-07-16 | 2014-07-16 | 内核态与用户态的通信结构及通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104123194A true CN104123194A (zh) | 2014-10-29 |
Family
ID=51768615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410338030.3A Pending CN104123194A (zh) | 2014-07-16 | 2014-07-16 | 内核态与用户态的通信结构及通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104123194A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657088A (zh) * | 2015-02-06 | 2015-05-27 | 深圳市锐明视讯技术有限公司 | 一种硬盘坏块信息的获取方法及装置 |
CN104657149A (zh) * | 2015-03-13 | 2015-05-27 | 浪潮集团有限公司 | 一种存储系统的管理模块的软件框架实现方法 |
CN105260246A (zh) * | 2015-11-10 | 2016-01-20 | 中国建设银行股份有限公司 | 应用系统调用方法和装置 |
CN106055453A (zh) * | 2016-06-01 | 2016-10-26 | 北京百度网讯科技有限公司 | 设备监测方法和装置 |
CN106775487A (zh) * | 2016-12-27 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种多路径存储故障的处理方法和装置 |
CN107168784A (zh) * | 2017-05-15 | 2017-09-15 | 中科创达软件股份有限公司 | 基于多核系统的程序紧急启动方法及装置 |
CN107577539A (zh) * | 2016-07-05 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 用于内核态和用户态通讯的共享内存结构及其应用 |
CN108810087A (zh) * | 2018-04-28 | 2018-11-13 | 北京优帆科技有限公司 | 一种存储服务器的连接方法、系统及设备 |
CN111683109A (zh) * | 2020-08-17 | 2020-09-18 | 烽火通信科技股份有限公司 | 一种微服务架构 |
CN112231007A (zh) * | 2020-11-06 | 2021-01-15 | 中国人民解放军国防科技大学 | 基于用户态与内核态驱动协同处理框架的设备驱动方法 |
CN112463662A (zh) * | 2020-12-16 | 2021-03-09 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
WO2023134411A1 (zh) * | 2022-01-17 | 2023-07-20 | 闻泰通讯股份有限公司 | 信息传输方法、终端设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428226A (zh) * | 2013-08-30 | 2013-12-04 | 天津汉柏汉安信息技术有限公司 | 一种用户态与内核通信的方法与系统 |
CN103593189A (zh) * | 2013-11-14 | 2014-02-19 | 昆明理工大学 | 一种嵌入式Linux下用户态驱动程序的实现方法 |
CN103744687A (zh) * | 2013-11-15 | 2014-04-23 | 曙光信息产业(北京)有限公司 | 输入/输出端口的访问方法和装置 |
-
2014
- 2014-07-16 CN CN201410338030.3A patent/CN104123194A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428226A (zh) * | 2013-08-30 | 2013-12-04 | 天津汉柏汉安信息技术有限公司 | 一种用户态与内核通信的方法与系统 |
CN103593189A (zh) * | 2013-11-14 | 2014-02-19 | 昆明理工大学 | 一种嵌入式Linux下用户态驱动程序的实现方法 |
CN103744687A (zh) * | 2013-11-15 | 2014-04-23 | 曙光信息产业(北京)有限公司 | 输入/输出端口的访问方法和装置 |
Non-Patent Citations (1)
Title |
---|
刘军卫等: "用户态驱动框架的研究与实现", 《计算机系统应用》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657088B (zh) * | 2015-02-06 | 2018-01-23 | 深圳市锐明技术股份有限公司 | 一种硬盘坏块信息的获取方法及装置 |
CN104657088A (zh) * | 2015-02-06 | 2015-05-27 | 深圳市锐明视讯技术有限公司 | 一种硬盘坏块信息的获取方法及装置 |
CN104657149A (zh) * | 2015-03-13 | 2015-05-27 | 浪潮集团有限公司 | 一种存储系统的管理模块的软件框架实现方法 |
CN105260246A (zh) * | 2015-11-10 | 2016-01-20 | 中国建设银行股份有限公司 | 应用系统调用方法和装置 |
CN106055453A (zh) * | 2016-06-01 | 2016-10-26 | 北京百度网讯科技有限公司 | 设备监测方法和装置 |
CN107577539B (zh) * | 2016-07-05 | 2021-03-16 | 阿里巴巴集团控股有限公司 | 用于内核态和用户态通讯的共享内存结构及其应用 |
CN107577539A (zh) * | 2016-07-05 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 用于内核态和用户态通讯的共享内存结构及其应用 |
CN106775487A (zh) * | 2016-12-27 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种多路径存储故障的处理方法和装置 |
CN107168784A (zh) * | 2017-05-15 | 2017-09-15 | 中科创达软件股份有限公司 | 基于多核系统的程序紧急启动方法及装置 |
CN108810087A (zh) * | 2018-04-28 | 2018-11-13 | 北京优帆科技有限公司 | 一种存储服务器的连接方法、系统及设备 |
CN111683109A (zh) * | 2020-08-17 | 2020-09-18 | 烽火通信科技股份有限公司 | 一种微服务架构 |
CN112231007A (zh) * | 2020-11-06 | 2021-01-15 | 中国人民解放军国防科技大学 | 基于用户态与内核态驱动协同处理框架的设备驱动方法 |
CN112231007B (zh) * | 2020-11-06 | 2022-08-19 | 中国人民解放军国防科技大学 | 基于用户态与内核态驱动协同处理框架的设备驱动方法 |
CN112463662A (zh) * | 2020-12-16 | 2021-03-09 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
CN112463662B (zh) * | 2020-12-16 | 2024-04-05 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
WO2023134411A1 (zh) * | 2022-01-17 | 2023-07-20 | 闻泰通讯股份有限公司 | 信息传输方法、终端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104123194A (zh) | 内核态与用户态的通信结构及通信方法 | |
DE102020120102A1 (de) | Globale dauerhafte Speicherleerung | |
US8521929B2 (en) | Virtual serial port management system and method | |
DE102020125046A1 (de) | Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle | |
Putnam et al. | A reconfigurable fabric for accelerating large-scale datacenter services | |
CN103150279B (zh) | 一种主机与基板管理控制器共享设备的方法 | |
DE112020006859T5 (de) | Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb | |
US8874681B2 (en) | Remote direct memory access (‘RDMA’) in a parallel computer | |
US9767067B2 (en) | Baseboard management systems and methods with distributed intelligence for multi-node platforms | |
CN102110196B (zh) | 并行运行多用户操作系统间的数据安全传输方法及系统 | |
US8495655B2 (en) | Messaging in a parallel computer using remote direct memory access (‘RDMA’) | |
DE102020133738A1 (de) | Firmware-update-techniken | |
DE112016005910T5 (de) | Architechtur für Software-Definierten Interconnect-Switch | |
DE102020116195A1 (de) | Leistungsmanagement für neu-treiber-vorrichtungen | |
DE102018006797A1 (de) | Kohärente Speichereinrichtungen über PCIe | |
US20090307396A1 (en) | Hypervisor to I/O Stack Conduit in Virtual Real Memory | |
CN104094231A (zh) | 用于支持无限带网络中的虚拟机的动态迁移的系统和方法 | |
DE112013003248T5 (de) | Steuern einer physischen Verbindung von einem ersten Protokoll unter Verwendung einer erweiterten Funktionsstruktur eines zweiten Protokolls | |
DE112013005090T5 (de) | Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit | |
DE102018127751A1 (de) | Einheitlicher Adressraum für mehrere Verbindungen | |
CN103455380A (zh) | 多进程通信系统及其建立和通信方法 | |
DE102022107778A1 (de) | Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung | |
CN1904842A (zh) | 一种cmos参数的设置维护装置及方法 | |
WO2023174146A1 (zh) | 卸载卡命名空间管理、输入输出请求处理系统和方法 | |
CN105468429A (zh) | 一种高效虚拟化集群管理方法和集群节点 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20141029 |
|
WD01 | Invention patent application deemed withdrawn after publication |