几个基本概念辨析:流敏感,路径敏感和上下文敏感
(從這篇日志開始,恢復博客園的同步更新)
這篇日志沒有什么技術含量,只是總結幾個基本概念。在軟件分析中,我們經常會遇到流敏感(flow-sensitive),路徑敏感(path-sensitive)和上下文敏感(context-sensitive),這幾個概念都主要出現在Data Flow Analysis中(或data flow的變型,如Taint Analysis等)。
簡單來說,流敏感(flow-sensitive)指的是考慮程序語句執行的順序,例如在數據流分析中的指針別名(Pointer Alias)分析中,一個非流敏感指針別名分析可能得出“變量x和y可能會指向同一位置”,而流敏感指針別名分析得出的結論類似于“在執行第20條指令后,變量x和y可能會指向同一位置” 。所以,一個非流敏感指針別名分析不考慮控制流,并認為所發現的別名在程序所有位置均成立。
路徑敏感(path-sensitive)指的是依據條件分支語句的不同謂詞,計算不同的分析信息,也就是說,路徑敏感將跟蹤程序控制流的每一個分支,以記錄兩個分支路徑的不同程序狀態。相應的,非路徑敏感并不考慮分支之間的區別。簡單的路徑敏感存在“路徑爆炸”(path explosion)或“無窮搜索空間”(infinite search space)的問題。
上下文敏感(context-sensitive)指的是在過程間分析(?Interprocedural Analysis)時,考慮函數調用的上下文信息。
以上內容主要參考了Data Flow Analysis的維基百科頁面和部分論文及書籍。
轉載于:https://www.cnblogs.com/quyu/archive/2013/02/14/2912638.html
總結
以上是生活随笔為你收集整理的几个基本概念辨析:流敏感,路径敏感和上下文敏感的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学分析(Tom M.Apostol)
- 下一篇: Windows Server 2008