-
题名基于无锁数据结构的FIFO队列算法
被引量:8
- 1
-
-
作者
王俊昌
王振
付雄
-
机构
南京邮电大学计算机学院
江苏省大数据安全与智能处理重点实验室
-
出处
《计算机工程》
CAS
CSCD
北大核心
2018年第8期315-320,共6页
-
基金
国家自然科学基金(61602264)
-
文摘
现代商用多核处理器缺少硬件支持的处理核间通信机制,多个处理核间必须通过加锁保护的共享内存传递数据。为此,设计一种基于软件的无锁队列作为核间通信机制,通过无锁数据结构提高软件队列的性能。当数据到达速率较低时,队列自适应地减小队列长度,从而占用较小的内存空间,进而更好地利用处理器高速缓存;当数据到达速率较高时,队列自适应地增加队列长度,以避免数据丢失。实验结果表明,在数据到达速率变化较大的实际应用场景中,该队列较FastForward、MCRingBuffer和B-Queue队列具有更高的数据处理性能。
-
关键词
无锁数据结构
多核处理
流水线并行
自适应调整
CPU核间通信
-
Keywords
lock-free data structure
multi-core processing
pipeline parallelism
self-adjustment
CPU core-to-core communication
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名供动态无锁数据结构使用的资源窃取型无锁内存池
被引量:1
- 2
-
-
作者
刘恒
杨小帆
-
机构
重庆大学计算机学院
-
出处
《计算机应用研究》
CSCD
北大核心
2012年第10期3772-3775,共4页
-
文摘
动态内存管理的问题对无锁动态数据结构的性能尤为关键,因为多线程环境下的动态内存管理涉及开销较高的同步操作。提出一种构建用于动态无锁数据结构的内存池的方法来减少动态内存使用和与之相伴的动态内存管理开销。该方法通过平衡线程的动态内存消耗来减小内存开销,利用本方法构建的内存池基于线程私有的支持节点窃取的无锁循环队列。本方法具有以下优点:a)用本方法构建的内存池是无锁的;b)能够平衡线程的堆内存消耗;c)可以方便地与动态无锁数据结构集成。实验结果显示,用该方法构造的资源窃取型内存池扩展性较强,且能够在高负载下有效降低无锁数据结构的堆内存消耗和操作执行时间;平衡算法在很大程度上决定内存消耗量,内存池在高负载下的扩展性也受到它所用的数据结构自身多线程访问性能的影响。
-
关键词
资源窃取
无锁内存池
无锁
动态无锁数据结构
-
Keywords
resource stealing
iock-free memory pool
lock-free
dynamic-sized lock-free data structures
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名并行计算机系统中的计数算法研究
被引量:3
- 3
-
-
作者
王俊昌
高亮
李涛
-
机构
南京邮电大学计算机学院
南京邮电大学江苏省大数据安全与智能处理重点实验室
-
出处
《南京邮电大学学报(自然科学版)》
北大核心
2017年第6期81-89,共9页
-
基金
国家自然科学基金(61602264)
国家博士后自然科学基金(2017M611882)
南京邮电大学引进人才科研启动基金(NY215044)资助项目
-
文摘
计数算法是计算机程序设计中的基础算法。然而,传统计数算法在新兴的多核并行计算机系统中存在计数效率低下以及计数不准确的问题。文中首先对这些问题进行深入量化分析,之后提出了一种适用于并行计算机系统的确定性高速计数算法。该算法采用对计数器数据先进行快照再进行统计计数的方法,有效避免了计数算法中读者线程与写者线程之间的相互干扰,保证了计数数据的准确性;同时,通过采用无锁链表队列存储计数数据快照,实现了并发读取情况下的无阻塞计数统计,保证了计数算法的效率。实验论证和性能分析结果表明:在新一代的多核并行计算机中,本计数算法计数效率高且计数准确,综合性能优于现有算法。
-
关键词
无锁数据结构
计数算法
最终一致性
-
Keywords
lock-free data structures
counting algorithm
eventual consistency
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名面向多线程程序的内存安全运行时验证
被引量:4
- 4
-
-
作者
陈韬
王明明
-
机构
南京航空航天大学计算机科学与技术学院
-
出处
《计算技术与自动化》
2019年第2期102-107,共6页
-
基金
江苏省普通高校研究生科研创新计划项目(SJZZ16_0062)
-
文摘
Linux操作系统、嵌入式系统、航电系统、通信系统等一般都是用C/C++语言进行编写。因为C语言具有偏底层硬件、移植性强、执行效率高等优秀特性。但是随着多核并行机的出现,许多语言也开始支持多线程编程。由于C语言本身存在着对内存访问时,不对内存边界进行检查的问题,从而造成软件系统相关的可靠性和安全性问题。对多线程C语言程序来说,由于多线程程序的不确定性,使得运行时验证多线程C程序的内存安全问题变得更加困难。通过使用基于改进的指针运行时验证技术、多核多线程技术、并行计算、无锁数据结构技术、源代码插桩技术方法,并结合开源工具Clang编译器实现原型工具Movec对多线程C程序的支持。该工具实现了对多线程C程序内存安全问题的运行时验证。然后通过Mibench和SARD测试用例进行实验,验证了该工具对多线程C程序进行运行时验证的有效性。
-
关键词
多线程
多核
无锁数据结构
运行时验证
源代码插桩
编程语言
-
Keywords
multi thread
multicore
unlocked data structure
runtime verification
source code piling
programming language
-
分类号
TP316.2
[自动化与计算机技术—计算机软件与理论]
-