【技术实现步骤摘要】
用于内核态和用户态通讯的共享内存结构及其应用
本申请涉及通讯技术,尤其涉及一种用于内核态和用户态通讯的共享内存结构、内核态和用户态通讯方法、内核态和用户态通讯装置以及数据存取系统。
技术介绍
共享内存由于其可以有效避免通讯过程中的数据全量拷贝等问题,而被广泛应用于内核态和用户态之间通讯应用中,即内核态和用户态通过共享内存实现通讯。目前,基于共享内存实现内核态和用户态之间通讯的方式通常为:内核态(如内核态进程)在完成共享内存写操作后,通过系统调用来通知用户态(如用户态进程)读取共享内存中的相应数据,用户态根据内核态的通知读取共享内存中的相应数据;另外,用户态是通过信号量或者互斥锁来访问共享内存的,如持有信号量或互斥锁的线程才可以访问共享内存,且在共享内存访问结束后释放其所持有的信号量或互斥锁(如通过调用Syscall等来使线程持有信号量或释放信号量)。专利技术人在实现本申请过程中发现,为了保证通讯过程中的共享内存中的数据同步,内核态必须在完成写操作后才能够通知用户态读取共享内存中的数据,这使得内核态和用户态的读写操作不能够并发执行;另外,内核态在每次完成写操作后均需 ...
【技术保护点】
一种用于内核态和用户态通讯的共享内存结构,包括:所述共享内存被划分为多个内存片;所述多个内存片中的其中一个内存片为存储有用户态状态信息的控制页,且其余内存片为数据页;每一个数据页均包括:第一区域和第二区域,所述第一区域用于存储针对内核态和用户态通讯数据的数据页分配信息以及数据页状态信息,所述第二区域用于存储内核态和用户态的通讯数据。
【技术特征摘要】
1.一种用于内核态和用户态通讯的共享内存结构,包括:所述共享内存被划分为多个内存片;所述多个内存片中的其中一个内存片为存储有用户态状态信息的控制页,且其余内存片为数据页;每一个数据页均包括:第一区域和第二区域,所述第一区域用于存储针对内核态和用户态通讯数据的数据页分配信息以及数据页状态信息,所述第二区域用于存储内核态和用户态的通讯数据。2.根据权利要求1所述的共享内存结构,其中,所述共享内存中的所有数据页形成环形队列。3.根据权利要求1或2所述的共享内存结构,其中,所述控制页中的用户态状态信息为:表征用户态空闲的状态信息、表征用户态繁忙的状态信息或者表征用户态未执行共享内存地址映射的状态信息。4.根据权利要求3所述的共享内存结构,其中,在内核态创建共享内存的过程中,所述共享内存中的控制页中的用户态状态信息被设置为表征用户态未执行共享内存地址映射的状态信息;在用户态执行进程地址空间映射操作后,所述共享内存中的控制页中的用户态状态信息被设置为表征用户态空闲的状态信息;在用户态开始针对数据页执行读写操作时,所述用户态状态信息被设置为表征用户态繁忙的状态信息;在用户态完成数据页中的数据读写操作时,所述用户态状态信息被设置为表征用户态繁忙的状态信息。5.根据权利要求1或2所述的共享内存结构,其中,所述数据页中的数据页状态信息为:表征数据页空闲且允许被内核态分配的状态信息、表征数据页已经被内核态分配且内核态正在写入数据的状态信息、表征数据页允许被用户态读写的状态信息、表征数据页正在被用户态读写的状态信息或者表征数据页允许被内核态分配且用户态忽略该数据页的状态信息。6.根据权利要求5所述的共享内存结构,其中,在内核态为其创建并注册的设备分配共享内存的过程中,所述共享内存中的各数据页中的数据页状态信息被设置为表征数据页空闲且允许被内核态分配的状态信息,使各数据页处于空闲态;在内核态针对需要向用户态传输的数据分配数据页且存在可分配的数据页时,所述可分配的数据页的数据页状态信息被设置为表征数据页已经被内核态分配且内核态正在写入数据的状态信息,使可分配的数据页处于内核态写状态;在内核态将需要向用户态传输的数据写入一个数据页后,该数据页中的数据页状态信息被设置为表征数据页允许被用户态读写的状态信息,使该数据页处于用户态可读写状态;在用户态从一个数据页中读取数据或者向一个数据页中写入数据时,该数据页中的数据页状态信息被设置为表征数据页正在被用户态读写的状态信息,使该数据页处于用户态正在读写状态;在用户态从一个数据页中读取数据完成或者向一个数据页中写入数据完成后,该数据页中的数据页状态信息被设置为表征数据页空闲且允许被内核态分配的状态信息,使该数据页处于空闲态;在内核态针对需要向用户态传输的数据分配数据页且可分配的数据页不足时,所述不足分配的数据页被设置为表征数据页允许被内核态分配且用户态忽略该数据页的状态信息,使该数据页处于空闲忽略态。7.一种内核态和用户态通讯方法,其中,所述方法包括:确定内核态需要向用户态传输的待传输数据所需占用共享内存中的数据页的页数;根据共享内存的数据页中的数据页状态信息以及所述页数确定出共享内存中存在可供分配的数据页的情况下,针对待传输数据执行数据页写操作;在可供分配的数据页中的第一个数据页写完成,且根据共享内存的控制页中的用户态状态信息确定出用户态空闲的情况下,向用户态发送读取数据页中的数据的通知。8.根据权利要求7所述的方法,其中,所述方法还包括:在内核态,创建并注册设备并为所述设备分配共享内存;将所述共享内存中的控制页中的用户态状态信息设置为表征用户态未执行共享内存地址映射的状态信息,并将共享内存中的各数据页中的数据页状态信息均设置为表征数据页空闲且允许被内核态分配的状态信息;在针对所述共享内存执行用户态进程地址空间映射操作的过程中,将共享内存中的控制页中的用户态状态信息设置为表征用户态空闲的状态信息。9.根据权利要求7所述的方法,其中,所述根据共享内存的数据页中的数据页状态信息以及所述页数确定出共享内存中存在可供分配的数据页的步骤包括:按照从内核态当前可分配数据页起始地址到共享内存的环形队列...
【专利技术属性】
技术研发人员:王行宫阝,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。