[发明专利]一种内核多线程直接存储驱动实现方法有效
申请号: | 201510185822.6 | 申请日: | 2015-04-20 |
公开(公告)号: | CN104778138B | 公开(公告)日: | 2018-03-06 |
发明(设计)人: | 王仕明;徐智勇;傅承毓 | 申请(专利权)人: | 中国科学院光电技术研究所 |
主分类号: | G06F13/24 | 分类号: | G06F13/24 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 610209 *** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种内核多线程直接存储驱动实现方法,此方法主要用于提高存储系统存储速度及速度稳定性,实现了连续的高速DMA存储,相对传统数据存储驱动实现方法,所有数据操作都在内核中,避免了将大量数据通过copy_to_user函数从内核空间拷贝到用户空间,避免了频繁的在内核模式和用户模式之间的切换,另外内核线程拥有较高的优先级,从而使得数据的传输速度更稳定、速度更快、实时性更强;将多次DMA的数据缓存到一个大内存,避免了频繁向硬盘写入小文件,提高了硬盘存储速度。 | ||
搜索关键词: | 一种 内核 多线程 直接 存储 驱动 实现 方法 | ||
【主权项】:
一种内核多线程直接存储驱动实现方法,其特征在于:包括如下步骤:步骤一、应用程序在文件存储路径文件中写入默认路径,然后置DDMACR即设备DMA状态控制器准备开始存储位为1,准备开始存储数据,FPGA检测到此位为1后开始准备数据,当数据达到一次DMA数据量时,置DDMACR数据准备好位为1,应用程序调用ioctl函数查询此位,数据准备好后开始DMA,应用程序进入睡眠状态;步骤二、在驱动初始化时申请两个DMA缓存区并设置好DMA写操作初始值,同时初始化两个内核线程,一个写文件线程,一个开始下次DMA线程;在此步骤中,使用pci_alloc_consistent()函数或__get_free_pages(unsigned int flags,unsigned int order)函数申请两个DMA缓冲区并重映射,sema_init()初始化开始下次DMA信号量和写文件信号量,在驱动中由kthread_create()创建写文件线程和开始下次DMA线程,然后kthread_bind()绑定到特定CPU核心,最后wake_up_process()运行线程;也可由kthread_run()创建线程并直接运行;步骤三、DMA完成时,进入中断处理程序,清中断后,通过指针交换,切换DMA内核缓冲区,然后释放开始下次DMA信号量和写文件信号量;在此步骤中根据标识状态交换下个周期读出数据的DMA缓存区和写入数据的DMA缓存区,并对标识状态取反;步骤四、开始下次DMA线程收到开始下次DMA信号量后,检测数据准备好位,为真时启动下次DMA;此步骤中轮询数据准备好位,为真时调用ioctl函数写DMA开始位,启动下次DMA;步骤五、写文件线程申请两个大缓存,收到写文件信号量时,将已完成DMA缓冲区的数据缓存到一个大的内核缓存中,大缓存大小是DMA缓存的N倍,大缓存满时,切换到另一个大缓存;此步骤中根据标识状态将DMA缓存数据写入其中一个大缓存中并对写入次数计数,当大于N时切换到另一个大缓存并对标识状态取反;步骤六、已满大缓存由内核线程写入到默认路径下依自定义格式所建文件中,当存储达到指定次数M后,关闭文件并新建另一个文件;此步骤中第一次进入线程时用filp_open(filename,O_RDWR,0644)打开存储默认路径位置,fs=get_fs();保存线程原来寻址范围,set_fs(KERNEL_DS);扩大线程寻址范围至内核空间,调用filp‑>f_op‑>read()读取默认路径,set_fs(fs)设置寻址范围为原值,filp_close关闭默认路径文件;步骤六按自定义规则filp=filp_open(filename,O_CREAT|O_RDWR|O_NONBLOCK,0644)新建并非阻塞打开新建文件,fs=get_fs();保存线程原来寻址范围,set_fs(KERNEL_DS);扩大线程寻址范围至内核空间,根据标识状态将已满大缓存数据写入文件中并记录写入次数,写入函数调用内核态写文件函数如vfs_write()和filp‑>f_op‑>write(),当写入次数达到M次后,set_fs(fs)设置寻址范围为原值,filp_close关闭文件,重复步骤六。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院光电技术研究所,未经中国科学院光电技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510185822.6/,转载请声明来源钻瓜专利网。
- 上一篇:一种移动终端页面信息的查看方法和装置
- 下一篇:一种内存管理方法及系统