[发明专利]IO多路复用方法、介质、设备和操作系统有效
申请号: | 202110879896.5 | 申请日: | 2021-08-02 |
公开(公告)号: | CN113342554B | 公开(公告)日: | 2022-01-04 |
发明(设计)人: | 张畋;毛熠璐 | 申请(专利权)人: | 阿里云计算有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F11/30 |
代理公司: | 北京太合九思知识产权代理有限公司 11610 | 代理人: | 刘戈;孙明子 |
地址: | 310012 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | io 多路复用 方法 介质 设备 操作系统 | ||
本发明实施例提供一种IO多路复用方法、介质、设备和操作系统,处于内核态的监听线程接收应用进程的调用请求,调用请求中包括多个内核对象的标识。监听线程创建多个内核对象分别对应的代理信息,并将代理信息对应地绑定到多个内核对象上,每个内核对象对应的代理信息中包括事件内核对象,通过创建的事件内核对象阻塞监听线程。事件触发线程对目标内核对象触发被触发的事件标识对应的事件后,通过目标内核对象绑定的事件内核对象唤醒监听线程。监听线程获取目标内核对象被触发的事件标识,向应用进程发送目标内核对象的标识和被触发的事件标识。通过该方案可以实现操作系统中多个内核对象的IO多路复用。
技术领域
本发明涉及操作系统技术领域,尤其涉及一种IO多路复用方法、介质、设备和操作系统。
背景技术
IO 多路复用是一种同步IO模型,实现一个线程可以监听多个文件描述符(Filedescriptor或称文件句柄),一旦某个文件描述符就绪(一般是读就绪或者写就绪),就能够通知应用进程进行相应的读写操作。传统的IO多路复用机制采用select、poll、epoll等函数来实现。
在一些操作系统中,通过虚拟文件系统(Virtual File System,简称VFS)的机制将所有底层屏蔽掉,用户可以通过统一的接口来实现对不同文件的操作,对于每一个文件需要一个引用来指示,此时文件描述符应用而生。文件描述符,在形式上是一个非负整数,实际上它是一个索引值,指向一个文件。当应用进程打开一个现有文件或者创建一个新文件时,内核向该应用进程返回一个文件描述符。对于文件的大部分操作都是通过这个描述符来操作的,例如读(read)、写(write)等操作。
使用select、poll、epoll等函数实现的IO多路复用机制属于传统的IO多路复用机制,仅适用于socket连接和采用VFS机制(比如接入到VFS的块设备、字符设备)的应用场景,具有应用局限性。
发明内容
本发明实施例提供一种IO多路复用方法、介质、设备和操作系统,用以突破传统的IO多路复用机制仅可对socket连接和基于VFS驱动的设备有效的局限,在内核对象的层面提供IO多路复用技术,实现内核组件的IO多路复用机制。
第一方面,本发明实施例提供一种IO多路复用方法,应用于处于内核态的监听线程,该方法包括:
接收应用进程的调用请求,所述调用请求中包括多个内核对象的标识;
创建所述多个内核对象分别对应的代理信息,其中,每个内核对象对应的代理信息中包括事件内核对象;
将所述多个内核对象分别对应的代理信息对应地绑定到所述多个内核对象上;
通过创建的所述事件内核对象阻塞所述监听线程;
响应于事件触发线程对所述监听线程的唤醒,获取目标内核对象被触发的事件标识,其中,所述事件触发线程对所述目标内核对象触发所述被触发的事件标识对应的事件后,通过所述目标内核对象绑定的所述事件内核对象对所述监听线程进行唤醒,所述目标内核对象是所述多个内核对象中的任一个;
向所述应用进程发送所述目标内核对象的标识和所述被触发的事件标识。
第二方面,本发明实施例提供一种IO多路复用装置,对应于处于内核态的监听线程,该装置包括:
接收模块,用于接收应用进程的调用请求,所述调用请求中包括多个内核对象的标识;
处理模块,用于创建所述多个内核对象分别对应的代理信息,将所述多个内核对象分别对应的代理信息对应地绑定到所述多个内核对象上,其中,每个内核对象对应的代理信息中包括事件内核对象;以及,通过创建的所述事件内核对象阻塞所述监听线程;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里云计算有限公司,未经阿里云计算有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110879896.5/2.html,转载请声明来源钻瓜专利网。