Page 113 - 《软件学报》2021年第7期
P. 113

石剑君  等:操作系统内核并发错误检测研究进展                                                         2031


                                   Table 1    Comparison of concurrency bug detection for OS kernels
                                         表 1   操作系统内核并发错误检测方法对比分析
                   类别      名称       技术手段    错误类型  内核版本及模块        检测算法          检测结果           检测速度
                         RacerX [63]    数据流分析  并发错误   Linux kernel   Lokset 锁集  18 个死锁,13 个数据竞争, 2~14 分/1.8MLOC
                                                       v2.5.62           其中 12 个误报
                                                     Linux kernel        Linux kernel 3.17.2 中检
                                                       v3.17.2           测到 215 个并发 SAC 错
                                   混合数据流 并发 SAC      Linux kernel                         108 分/7.3MLOC-
                              [64]
                          DSAC                                         误,15 个误报;Linux
                                     分析      错误        v4.11.1                            129 分/9.4MLOC
                                                   驱动程序、文件               kernel 4.11.1 中发现 340
                                                   系统、网络模块               个 SAC 错误,20 个误报
                                                                                          单机:72 小时
                                   符号执行、             Linux kernel   相对 Lockset            /4.5MLOC
                         RELAY [33]         数据竞争                         53 个数据竞争
                                   数据流分析               v2.6.15     锁集                     并行化后:5 小时
                                                                                          /4.5MLOC
                   静态         [35]                 Linux kernel v4.0,  符号对
                   检测    WHOOP      符号执行    并发错误      驱动程序      Lockset 锁集  发现 45 个并发错误   144.5s/7.2KLOC
                        aComment [66]    代码注释   并发错误   Linux kernel      12 个并发错误,其中 3 个 整个 Linux kernel
                                                                         误报               需要 265 分钟
                                                     Linux kernel
                                                      v2.6.30.4
                         COBET [68]    模式匹配   并发错误   文件系统、驱动            10 个新的并发错误       48.85s/100KLOC
                                                   程序、网络模块
                                                                         Linux kernel 3.14 中发现
                                                   Linux kernel v3.14    559 个错误,33 个误报;
                                    基于内核  并发 UAF                基于摘要的                     23 分/11.2KLOC
                              [25]
                         DCUAF                     Linux kernel v4.19    Linux kernel 4.19 中发现
                                    代码特性     错误       驱动程序      Locset 锁集  679 个 UAF 错误,39 个   28 分/16.6KLOC
                                                                         误报
                        DataCollider [77]    动态调试   数据竞争  Windows 7 kernel     发现 25 个数据竞争,其中  小于 1.3x 的开销
                                                                         12 个已被修复
                                                     Linux kernel
                              [78]
                         DRDDR      动态调试    数据竞争                        发现 2 个良性数据竞争  小于 1.1x 的开销
                                                      文件系统
                                                                         在 Wrapfs 中发现 49 个数
                                                                         据竞争,其中 2 个已被确
                                            数据竞争     Linux kernel        认,45 个是良性数据竞争,
                         Redflag [72]    动态二进制  原子性   文件系统、     Lockset 锁集 2 个是误报;在 Btrfs 中发  2.65x 的插桩和日
                                     插桩                                                   志记录开销
                                             违例       驱动程序               现 8 个良性数据竞争;在
                                                                         Noveau 中发现 11 个误报
                                                                         的数据竞争
                                                     Linux kernel        在 Linux kernel 3.3.1 中发
                                                       v3.3.1
                   动态     DILP [74]    动态二进制  数据竞争   Linux v4.16.9   Lockset 锁集  现 13 个数据竞争;在  平均 7.2x 的开销
                   检测                插桩                                  Linux kernel 4.16.9 中发
                                                      驱动程序               现 25 个数据竞争
                         LockDoc [89]    动态二进制  并发错误   Linux kernel                     291 分/5.7MLOC
                                     插桩
                                                                         发现 190 个并发错误,
                                                     Linux kernel        其中 76 个误报,53 个良性
                          SKI  [81]    系统化调度  并发错误  v2.6.28–v3.13.5                            
                                                      文件系统               数据竞争,24 个恶性数据
                                                                         竞争
                         Landslide [79]    系统化调度  数据竞争   Pebbles kernel      用于课程教学,未发现        
                                                                         真正内核数据竞争
                                                     Linux kernel        发现了 23 个数据竞争,  7 天的模糊测试,96
                                   模糊测试、              v5.4-rc5   Lockset 锁集
                         KRACE [86]         数据竞争                         其中 9 个恶性数据竞争,  小时的数据竞争
                                    动态插桩              文件系统      和 HB 关系
                                                    btrfs,ext4,VFS       11 个良性数据竞争       检测
                                                     Linux kernel        发现了 30 个恶性数据
                   动静    Razzer [45]    指向分析、  数据竞争   v4.16-rc3         竞争,其中 16 个被开发    整个 Linux kernel
                   结合               模糊测试                                                  需要 7 天
                                                      -v4.18rc3          人员确认
                   形式    CertiKOS [42]    定理证明   并发错误   CertiKOS                              
                    化          [56]                Linux kernel v2.6
                   验证   MOKERT      模型检验    并发错误      文件系统              发现了 1 个数据竞争            
   108   109   110   111   112   113   114   115   116   117   118