導航:首頁 > 數據處理 > 數據流是什麼課程

數據流是什麼課程

發布時間:2023-09-13 04:17:54

『壹』 【課程筆記】南大軟體分析課程4——數據流分析基礎(課時5/6)

關於這一節 zcc 的筆記已經夠完美了,我就直接在他基礎上記錄了。

上節課是介紹了3種數據流分析迭代演算法,本節課將從數學理論的角度來討論數據流分析,加深對數據流分析演算法的理解。

本質 :常見的數據流迭代演算法,目的是通過迭代計算,最終得到一個穩定的不變的解。

定義1 :給定有k個節點(基本塊)的CFG,迭代演算法就是在每次迭代時,更新每個節點n的OUT[n]。

定義2 :設數據流分析的值域是V,可定義一個 k-元組 : (OUT[n 1 ], OUT[n 2 ], ... , OUT[n k ])。是集合 (V 1 V 2 ... V k ) (冪集,記為V k )的一個元素,表示每次迭代後k個節點整體的值。

定義3 :每一次迭代可看作是V k 映射到新的V k ,通過轉換規則和控制流來映射,記作函數F:V k V k 。

迭代演算法本質 :通過不斷迭代,直到相鄰兩次迭代的 k-元組 值一樣,演算法結束。

不動點 :當X i = F(X i )時,就是不動點。

問題

定義 :給定偏序集(P, ), 是集合P上的二元關系,若滿足以下性質則為偏序集:

例子

定義 :給定偏序集(P, ),且有P的子集S⊆P:

最小上界 :least upper bound(lub 或者稱為join),用⊔S表示。上確界?

定義:對於子集S的任何一個上界u,均有⊔S⊑u。

最大下界 :greatest lower bound(glb 或者稱為meet),用⊓S表示。下確界?

定義:對於子集S的任何一個下界l,均有l⊑⊓S。

若S只包含兩個元素,a、b(S = {a, b})那麼上界可以表示為a⊔b,下界可以表示為a⊓b。

都是基於上下確界來定義的。

定義 :給定一個偏序集(P,⊑),∀a,b∈P,如果存在a⊔b和a⊓b,那麼就稱該偏序集為格。偏序集中的 任意兩個元素 構成的集合均 存在最小上界和最大下界 ,那麼該偏序集就是格。

例子

定義 :給定一個偏序集(P,⊑),∀a,b∈P:
當且僅當a⊔b存在(上確界),該偏序集叫做 join semilatice;

當且僅當a⊓b存在(下確界),該偏序集叫做 meet semilatice

定義 :對於格點 (S, ) (前提是格點)的任意子集S,⊔ S 上確界和⊓S下確界都存在,則為全格complete lattice。

例子

符號 : = P ,叫做top; = P,叫做bottom。

性質 :有窮的格點必然是complete lattice。全格一定有窮嗎? 不一定,如實數界[0, 1]。

定義 :給定一組格,L 1 =(P 1 , 1 ),L 2 =(P 2 , 2 ),... ,L n =(P n , n ),都有上確界 i 和下確界 i ,則定義格點積 L n = (P, ):

性質 :格點積也是格點;格點都是全格,則格點積也是全格。

數據流分析框架(D, L, F) :

數據流分析可以看做是 迭代演算法 格點 利用 轉換規則 meet/join操作

目標問題:迭代演算法一定會停止(到達不動點)嗎?

(1)單調性

定義 :函數f: L L,滿足∀x,y∈L,x⊑y⇒f(x)⊑f(y),則為單調的。

(2)不動點理論

定義 :給定一個 完全lattice(L,⊑) ,如果f:L→L是 單調 的,並且 L有限

那麼我們能得到最小不動點,通過迭代:f(⊥),f(f(⊥)),...,f k (⊥)直到找到最小的一個不動點。

同理 我們能得到最大不動點,通過迭代:f(⊤),f(f(⊤)),...,fk(⊤)直到找到最大的一個不動點。

(3)證明

不動點的存在性;

最小不動點證明。

問題 :我們如何在理論上證明 迭代演算法有解 有最優解 何時到達不動點 ?那就是將迭代演算法轉化為 不動點理論 。因為不動點理論已經證明了,單調、有限的完全lattice,存在不動點,且從⊤開始能找到最大不動點,從⊥開始能找到最小不動點。

目標 :證明迭代演算法是一個 完全lattice(L, ) ,是 有限 的, 單調 的。

根據第5小節,迭代演算法每個 節點(基本塊)的值域 相當於一個 lattice ,每次迭代的 k個基本塊的值域 就是一個 k-元組 。k-元組可看作 lattice積 ,根據格點積性質:若L k 中每一個lattice都是完全的,則L k 也是 完全 的。

迭代演算法中,值域是0/1,是有限的,則lattice有限,則L k 也有限。

函數F:BB中轉換函數f i :L → L + BB分支之間的控制流影響(匯聚是join / meet 操作,分叉是拷貝操作)。

總結 :迭代演算法是完全lattice,且是有限、單調的,所以一定有解、有最優解。

定義 lattice高度 —從lattice的top到bottom之間最長的路徑。

最壞情況迭代次數 :設有n個塊,每次迭代只有1個BB的OUT/IN值的其中1位發生變化(則從top→bottom這1位都變化),則最多迭 ( n × h ) 次。

說明 :may 和 must 分析演算法都是從不安全到安全(是否安全取決於safe-aprroximate過程),從准確到不準確。

以 Reaching Definitions分析為例:

以available expressions分析為例:

迭代演算法轉化到lattice上,may/must分析分別初始化為最小值 和最大值 ,最後求最小上界/最大下界。

目的 :MOP(meet-over-all-paths)衡量迭代演算法的精度。

定義 :最終將所有的路徑一起來進行join/meet操作。

路徑P = 在cfg圖上從entry到基本塊s i 的一條路徑(P = Entry → s 1 → s 2 → ... → s~i )。

路徑P上的轉移函數F p :該路徑上所有語句的轉移函數的組合f s1 ,f s2 ,... ,f si-1 ,從而構成F P 。

MOP :從entry到s i 所有路徑的F P 的meet操作。本質—求這些值的最小上界/最大下界。

MOP准確性 :有些路徑不會被執行,所以不準確;若路徑包含循環,或者路徑爆炸,所以實操性不高,只能作為理論的一種衡量方式。

對於以上的CFG,抽象出itter和MOP公式。

證明

結論 :所以,MOP更准確。若F滿足分配律,則迭代演算法和MOP精確度一樣 F ( x ⊔ y )= F ( x )⊔ F ( y )。一般,對於控制流的join/meet,是進行集合的交或並操作,則滿足分配律。

問題描述 :在程序點p處的變數x,判斷x是否一定指向常量值。

類別 must分析 ,因為要考慮經過p點所有路徑上,x的值必須都一樣,才算作一定指向常量。

表示 :CFG每個節點的OUT是pair(x, v)的集合,表示變數x是否指向常數v。

(1)D:forward更直觀

(2)L:lattice

變數值域 :所有實數。must分析,所以 是UNDEF未定義(unsafe), 是NAC非常量(safe)。

meet操作 :must分析, 。在每個路徑匯聚點PC,對流入的所有變數進行meet操作,但並非常見的交和並,所以 不滿足分配律

(3) F轉換函數

OUT[s] = gen U (IN[s] - {(x, _})

輸出 = BB中新被賦值的 U 輸入 - BB中相關變數值已經不是f常量的部分。

對所有的賦值語句進行分析(不是賦值語句則不管,用val(x)表示x指向的值):

(4) 性質 :不滿足分配律

可以發現,MOP更准確。F(X Y) F(X) F(Y),但是是單調的。

本質 :對迭代演算法進行優化,採用隊列來存儲需要處理的基本塊,減少大量的冗餘的計算。

軟體分析——數據流分析2

『貳』 數據流是什麼怎麼弄

您好,數據流計算機
【解釋】: 由數據來驅動操作的電子計算機。機內所存儲的程序指令不需順序執行,當所需的操作數據完備時就立即執行。當多個操作同時滿足條件時,它們可並行執行而不受程序指令順序的限制,從而大大提高了計算機的運行速度。
1、確定系統的輸入輸出
由於系統究竟包括哪些功能可能一時難於弄清楚,可使范圍盡量大一些,把可能有的內容全部都包括進去。此時,應該向用戶了解「系統從外界接受什麼數據」、「系統向外界送出什麼數據」等信息,然後,根據用戶的答復畫出數據流圖的外圍。
2、由外向里畫系統的頂層數據流圖
首先,將系統的輸人數據和輸出數據用一連串的加工連接起來。在數據流的值發生變化的地方就是一個加工。接著,給各個加工命名。然後,給加工之間的數據命名。最後,給文件命名。
3、自頂向下逐層分解,繪出分層數據流圖
對於大型的系統,為了控制復雜性,便於理解,需要採用自頂向下逐層分解的方法進行,即用分層的方法將一個數據流圖分解成幾個數據流圖來分別表示。

閱讀全文

與數據流是什麼課程相關的資料

熱點內容
昆侖通態上傳程序怎麼保存 瀏覽:430
總代理產品有哪些 瀏覽:151
什麼是區塊鏈技術動畫介紹 瀏覽:656
抖音作品如何解綁小程序 瀏覽:686
如何成為技術精湛硬體工程師 瀏覽:868
高粱酒代理商如何做 瀏覽:343
棗庄紅木市場為什麼不景氣 瀏覽:136
漫遊對話怎麼查找不到信息 瀏覽:466
全民數據是什麼呀 瀏覽:598
刑事案普通程序得多久 瀏覽:634
坦克兵哪個專業技術最強 瀏覽:805
眼鏡數據檢測多少錢 瀏覽:785
滿五唯一交易的錢怎麼處理 瀏覽:833
水晶原石在街上怎麼交易 瀏覽:1000
如何走進場外交易市場 瀏覽:830
金十數據官網是哪個省 瀏覽:288
交易貓號主改密碼了怎麼辦 瀏覽:517
本地民事代理怎麼處理 瀏覽:247
為什麼花生代理老是斷連接 瀏覽:355
歐弗蘭怎麼代理 瀏覽:788