[发明专利]一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统有效
申请号: | 201710512828.9 | 申请日: | 2017-06-29 |
公开(公告)号: | CN107368362B | 公开(公告)日: | 2020-10-30 |
发明(设计)人: | 徐海峰 | 申请(专利权)人: | 上海阅文信息技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 上海金盛协力知识产权代理有限公司 31242 | 代理人: | 郑鸣捷 |
地址: | 201203 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 对于 磁盘 读写 数据 多线程 进程 处理 方法 系统 | ||
本发明公开了一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统。该方法包括:步骤1:创建多个处理线程/多个处理进程并对每个处理线程/处理进程进行标识;步骤2:为每个处理线程/处理进程分配一个单独的文件或者是同一个文件中的某一段文件块,保证处理线程/处理进程单一地处理被分配到文件或文件块;步骤3:主socket接收磁盘操作请求,根据接收到请求具有的线程标识/进程标识,将操作分配到其相关的处理线程/进程,然后由相关的线程/进程进行处理。本发明提供的磁盘写入方案全程无锁,无需采用CAS增加CPU的能耗,提高了磁盘写入的效率。
技术领域
本发明公开了一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统,主要涉及磁盘读写领域。该方法创建多个处理线程/处理进程,并为每个处理线程/处理进程设置相应的标识,保证处理线程/处理进程单一地处理对应于各自文件或文件块的操作请求,来提高磁盘读写的效率。本发明提供的磁盘写入方案全程无锁,无需采用CAS增加CPU的能耗,提高了磁盘写入的效率。
背景技术
在磁盘读写这一方面,为了提高读写的速度/效率,通常采用多线程/多进程处理对磁盘的操作。而采用多线程/多进程处理针对磁盘操作带来的一个问题是需要解决并发导致的数据版本错乱问题。通常的做法都是在各个线程/进程中,对于同一块数据进行加入互斥锁的方式来解决。后来随着计算机的发展,CPU的技术也一直在进步,CPU的制造商又加入了CAS的方式来解决因为加互斥锁带来的排队性能损耗。但是CAS本质上其实是使用CPU的空转或者说自旋来不断的尝试处理数据,以此来用CPU的能耗换取更快的处理。这些技术的背后或多或少的都带有一些问题,不是性能不足就是对硬件的CPU要求更高。为此,进一步提高多线程/多进程读写数据的效率成为业界内一个热门并且难以解决的问题。归根结底的问题在于因为多线程/多进程读写需要额外采取措施解决并发导致的数据版本错乱问题,为此带来附加的性能损耗/能耗。
图1显示传统的采用互斥锁来解决多线程/多进程磁盘读写导致的版本错乱的技术方案。该方案中主socket请求接收到请求后,会将请求交给后续的线程/进程进行处理,然后请求会一直被传递下去,直到到达写入或者读取阶段,因为文件块就一个,而又有多个线程/多个进程同时进行操作,所以在操作的时候,必须在每个线程/进程中都加一个互斥锁来保证读取数据的唯一性和准确性,而没有抢到锁的线程/进程将会被强行休眠/置于等待互斥锁的状态。即保证任何时刻只有一个线程/进程在进行读写,其他线程/进程处于休眠或者等待的状态。
图2显示另一种传统的多线程/多进程磁盘读方案。该方案是将处理IO的线程/IO进程(真正用于实现磁盘操作的线程)合并为一个,这里加锁的点不在于处理IO线程/进程上,而是从网络处理线程/进程到IO线程/IO进程的步骤中,对比于图1所述的方案,仅仅是把加锁的提前了、依然需要加锁处理。原理还是因为多线程对应单线程/多进程对单进程,如果不采用加锁处理,不管IO线程/IO进程是使用排队还是使用队列,还是无法解决同时并发导致版本错乱的问题。
上面提到的现有技术方案,最基本的技术缺点是不管怎么变化,都使用到了互斥锁。它的症结其实都是在于多线程/多进程对于单一资源同时处理的时候,如果不加锁则无法保证多线程/多进程的顺序性。系统只允许拿到钥匙的线程/进程进行处理,但是互斥锁的加入会将没有拿到锁的线程/进程强制休眠/处于等待状态,当线程/进程从休眠到被唤醒又需要系统额外的做2次内核和用户态的上下文交换,所以系统整体的性能将会被整个的拖慢。对于以上传统的技术方案,也有可能会在写入IO或者发送信息到处理IO线程/IO进程的时候使用无锁算法,比如CAS算法,但是这种算法是通过不断的尝试获取资源,空转CPU来实现的,虽然也是无锁算法,但是CPU资源消耗严重,在系统繁忙的时候会让CPU持续的飙高。
发明内容
为了解决现有技术中多线程写读需要额外采取措施解决并发导致的数据版本错乱问题,带来附加的性能损耗/能耗技术问题。本发明提供一种磁盘读写数据的多线程/多进程无锁处理方法。该方法包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海阅文信息技术有限公司,未经上海阅文信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710512828.9/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置