視窗應用程式檢查點與錯誤回復機制之實作
9
0
0
全文
(2) 統架構作一番的介紹。第三章,對軟體容 錯 技 術 - -檢 查 點 的 實 作 技 術 作 介 紹 。 第 四 章,除了對本論文的實作方法作介紹之 外,對檢查點實作、錯誤回復機制、及掃 描所需要儲存記憶體空間的方法都作詳細 的說明。第五章,對本論文的實作研究作 結論,同時對未來可能的改良與研究方向 提出一些建議。. 2. Windows作 業 系 統 架 構 W ind o ws 經 過 許 久 的 發 展,已 經 從 最 初 功 能 十 分 有 限 的 16 位 元 作 業 系 統 演 變 成了現在的介面親切、管理方便、功能強 大 的 作 業 系 統 家 族 , 如 W ind o ws 2 0 0 0 、 W ind o ws XP 。 它 之 所 以 有 這 麼 大 的 發 展 、 除了微軟公司強大的商業推動力量之外, W ind o ws NT 本 身 的 技 術 因 素 也 是 重 要 的 原因,尤其是它自身的系統架構所具有的 可擴充性、可執行性、穩定性、相容性和 效 率 提 升,正 是 這 些 特 性 讓 W i nd o ws 不 斷 得以進步。 本章將從作業系統設計的角度介紹 W ind o ws NT 所 具 有 的 基 本 系 統 架 構 和 執 行原理。. 2.1.1 Window s NT 的 組 成 W ind o ws 作 業 系 統 大 致 上 延 襲 著 標 準作業系統的架構,整個作業系統可分為 內 核 層 和 外 殼 層 , 其 實 就 是 圖 2 -1 中 的 核 心 模 式( Ker n el Mo d e)和 使 用 者 模 式( U ser Mo d e)。 粗 線 以 下 是 W ind o ws NT 的 核 心 模式元件,它們都在統一的核心位址空間 中執行。 核心模式元件包括以下內容: 1. 核 心 ( Ker ne l) : 包 括 了 最 低 階 的 作 業系統功能,例如執行緒排程、中斷 和異常排程、多處理器同步等,同時 它 也 提 供 了 主 管 程 式 ( Ex ec ut i ve) 來 執行高階結構的一組程式和基本物 件。 2.. 主管程式:包括了基本的作業系統服 務,例如記憶體管理器、行程和執行 緒 管 理 、 安 全 控 制 、 I/O 以 及 行 程 間 的 通 訊 ( I P C) 。. 3.. 硬 體 抽 象 層 ( Har d war e Ab s tr a ct io n La yer, H AL ): 將 核 心 、 設 備 驅 動 程 式以及主管程式跟硬體分隔開來,使 得 W ind o ws 作 業 系 統 得 以 實 現 跨 越 硬 體平台的限制。. 4.. 設 備 驅 動 程 式 ( De vi ce Dr i ve r ) : 包 括檔案系統和硬體設備驅動程式等, 其中硬體設備驅動程式將使用者的 I /O 函 式 呼 叫 轉 換 為 對 特 定 硬 體 設 備 的 I /O 請 求 。. 5.. 圖形引擎:包含了圖形使用者介面 ( Gr ap hi ca l U ser I nt er f ace, G UI ) 的 基本函式。. 2.1 Windows NT 作 業 系 統 模 型 W ind o ws NT 透 過 硬 體 機 制 執 行 核 心 模 式( Ker n el Mo d e)以 及 使 用 者 模 式( U ser Mo d e)兩 種 權 限 分 別 。 當 作 業 系 統 為 前 者 時 , CP U 處 於 特 權 模 式 ( P r iv il e ged Mo d e), 可 以 執 行 任 何 指 令 , 並 且 可 以 改 變 狀 態;而 在 後 者 時,C P U 處 於 非 特 權 模 式,只能執行非特權指令。一般來說,作 業系統中那些比較重要的程式碼都執行在 核心模式,而使用者程式一般都在使用者 模式下執行。當使用者程式使用了特權指 令,作業系統就能借助硬體提供的保護機 制限制使用者程式的控制權,必作出相對 應 的 處 理 。 [28] W ind o ws NT 的 系 統 架 構 如 圖 2 -1 所. 示。. 圖 2 -1 粗 線 上 部 的 方 塊 代 表 了 使 用 者 模式,它們是在私有位址空間中執行,使 用者模式下有四種基本類型的行程: 1. 系 統 支 援 行 程 ( S ys te m S up p o r t P r o ces s):例 如 登 入 行 程 W I N LO GO N 和 會 話 管 理 器 SM S S, 它 們 不 是 W ind o ws NT 的 服 務 , 不 由 服 務 控 制 器啟動。 2.. 服 務 行 程( Ser v ice P r o c es s): 它 們 是 W ind o ws NT 的 服 務 , 例 如 事 件 日 誌 服務。. 3.. 環 境 子 系 統 ( En v ir o n m en t S ub s ys t e m): 它 們 向 應 用 程 式 提 供 執 行環境(作業系統功能呼叫介面), 2.
(3) W ind o ws NT 有 四 個 環 境 子 系 統 , W in3 2 、 P OSI X、 OS /2 1 .2 和 Sec ur it y。 其 中 以 W i n3 2 子 系 統 為 中 心 , 提 供 OS /2 1 .2 及 P OSI X 兩 個 子 系 統 作 相 容 性 對 應 的 轉 換。而 Sec ur it y 子 系 統 則 是 為 W i n3 2 子 系 統 提 供 身 分認證的機制。 4.. 應 用 程 式 ( Us er Ap p l ic atio n) : 它 們 是 W in3 2 、 W i nd o ws 3 .1 、 MS - DO S、 P OSI X 或 O S /2 1 .2 這 五 種 類 型 之 一。此層也就是一般使用者的應用程 式執行時所在的位置,在這一層運作 的應用程式必須依賴各個子系統提供 的 AP I 函 式 來 使 用 系 統 所 提 供 的 各 項資源。. 2.1.2 Window s NT 的 可 攜 性 W ind o ws NT 的 設 計 目 標 之 一 就 是 能 夠在各種硬體系統架構上執行,它用兩種 方法執行了對硬體結構和平台的可攜性。 第一個方法是分層的設計,依賴於處 理器系統架構或平台的系統底層部分被隔 離在單獨的模組之中,系統的高層可以被 遮罩在各種不同的硬體平台之外。提供作 業 系 統 可 攜 性 的 兩 個 關 鍵 元 件 是 H AL 和 核心,依賴於系統架構的功能(如執行緒 描述表切換)在核心中執行,在相同系統 架 構 中 , 因 電 腦 而 異 的 功 能 則 在 H AL 中 執行。 第 二 個 方 法 是 W i nd o ws NT 幾 乎 全 部 使 用 高 階 語 言 寫 成 - -主 管 程 式 、 應 用 程 式 和 設 備 驅 動 程 式 都 是 用 C 語 言 編 寫 的,圖 形 子 系 統 部 份 和 使 用 者 介 面 是 用 C+ +編 寫 的。只有那些必須和系統硬體直接交換訊 息的作業系統部分(如中斷陷阱處理程 式),或效能極度敏感(如描述表切換) 的部分是用組合語言編寫的,組合語言代 碼 主 要 分 佈 在 核 心 及 H AL 中 。. 3. 軟 體 容 錯 技 術 所謂的軟體容錯技術,所指的是利用 一組軟體來偵測作業系統或硬體方面所無 法處理的錯誤以及從錯誤的情況加以還 原。為什麼軟體容錯會比硬體容錯複雜 呢?主要的原因在於軟體錯誤狀態種類繁 多、集 合 眾 多 元 件,使 得 考 量 的 因 素 增 多 。 軟體系統通常動輒牽扯數百萬的互動式計 算元件,同時軟體系統所結合的一些性 質,在軟體系統中要達到完美的設計,是 很困難的;而要做到錯誤偵測更有其難 度。本章將討論軟體容錯的技術,以及軟 體容錯的優點,並對本論文實作所採用的. 方法,加以詳細的介紹。. 3.1 軟 體 容 錯 機 制 現今科技生活中,對於應用程式軟體 容錯能力的需求越來越大,有容錯能力的 應用程式,可以去偵測到錯誤,並且能從 應用程式底層硬體及作業系統所無法解決 的錯誤回復回正常狀態。 近年來,越來越多廣為人們使用的應 用 程 式 陸 續 出 現 在 W i nd o ws NT 上 , 因 此 軟 體 容 錯 越 趨 重 要 , 實 作 在 W i nd o ws NT 上 的 容 錯 軟 體 一 般 稱 之 為 NT - S wi FT ( So ft war e I mp l e me n te d Fa u lt T o ler an ce) 。 而 這 些 軟 體 提 供 了 完 整 錯 誤 偵測及回復、檢查點運算、事件紀錄與重 現 、 通 訊 錯 誤 回 復 、 遞 增 資 料 備 份 以 及 IP 封 包 的 重 送 等 。 [2][3][4][11][12][20]. 3.2 檢 查 點 容 錯 機 制 檢查點是容錯中的一種機制,它最主 要的功能,在於能夠允許使用者去保存目 前執行中行程在任何時間點上的狀態資 訊,當有錯誤發生時,能透過上回最後一 次作檢查點時的狀態資訊,回復到正常執 行 的 狀 態 。 [1][2][3][4][5] 檢查點的容錯方式除了可以不用針對 個別的程式邏輯或使用者操作方式作錯誤 的檢查與預防外,在對硬體故障所引發的 錯誤回復需求上也有異地復原的解決方 案 。 [6][12]. 3.2.1 Window s 平 台 上 檢 查 點 資 料 收 集 從檢查點的應用方式來看,大多數的 相關研究有兩種不同的實作機制。第一 種 , 先 建 立 好 檢 查 點 函 式 庫 ( C he c kp o i n t Lib r ar y) , 供 程 式 開 發 時 在 加 入 檢 查 點 的 功 能 ; 第 二 種 , 採 用 攔 截 AP I ( I n ter cep t AP I ) 的 技 術 , 直 接 對 執 行 中 的 程 式 植 入 檢查點運算的功能。這兩種實作技術在應 用層面上雖有不同,但核心部分卻都是一 樣的,主要的目的都是在收集並且儲存目 前正在執行中程式的檢查點資訊。而本文 所採納的方法是屬於檢查點函式庫這個方 法。. 3.3 應 用 程 式 的 行 程 在作業系統中一個正在執行中的程 式 , 我 們 一 般 稱 之 為 行 程 ( P r o ces s) [ 7 ] [ 2 8 ],而 在 W i nd o ws 作 業 系 統 中 一 個 一 般的使用者行程所會用到的系統資源大概 有以下幾個大項: ◆ 記 憶 體:行 程 擁 有 自 己 獨 立 的 32 位 元 3.
(4) 定址空間。 ◆ 執行緒:一個行程中可以有多個執行 緒共用行程資源。 ◆ 檔案與目錄:行程中開啟讀或寫的檔 案資源。 ◆ 視 窗 物 件:如 視 窗 圖 示、視 窗 功 能 表 、 視窗對話框等。 ◆ 通 訊 物 件 : 如 So c k e t、 P ip e 等 。 ◆ 輸出輸入裝置:如印表機裝置。 ◆ 同 步 共 用 物 件 : 號 誌 ( Se ma p ho r e) 、 互 斥 ( Mu te x) 等 系 統 物 件 。 以 上 的 系 統 資源除了記憶體空間是程式載入為行程的 時候就由系統配置之外,其餘資源的取得 都要由行程透過系統函式的叫用才能取 得。. 3.4 行 程 的 記 憶 體 空 間 行 程 在 W i nd o ws 作 業 系 統 中 獨 占 線 性 的 32 位 元 定 址 空 間 , 但 更 精 確 的 說 法 是 3 2 位 元 的 虛 擬 記 憶 體 空 間 。 W i nd o ws 的記憶體管理採用的方式為: 1. 需 求 分 頁 ( De ma nd P a g in g ) : 以 4 Kb yte s 為 分 頁 單 位 , 行 程 記 憶 體 分 頁的實體配置位置交由虛擬記憶體管 理模組管理,在有需要的時候由磁碟 的記憶體交換區取出記憶體分頁,將 其載入實體記憶體中供行程使用。 2. 虛 擬 記 憶 體 ( Vir t ual M e mo r y) : 藉 由使用磁碟上的記憶體交換區,提供 行程大於實體記憶體容量的虛擬定址 空間作運算。 3. 3 2 位 元 行 程 定 址 空 間 ( 3 2 -b it Ad d r e ss i n g Sp ac e): 在 行 程 中 支 援 完 整 的 4 GB 定 址 空 間,其 中 低 位 址 空 間 中 的 2 GB 供 使 用 者 行 程 使 用,而 高 位 址 空 間 中 的 2 GB 則 保 留 給 核 心 模 組 使用。 就 W ind o ws 作 業 系 統 中 行 程 所 使 用 的 2 GB 虛 擬 記 憶 體 空 間 而 言,檢 查 點 運 算 要 實 作 的 部 分 就 是 要 在 這 個 2 GB 的 記 憶 體空間中找出需要儲存的記憶體區塊。由 於 W ind o ws 中 對 於 每 一 個 記 憶 體 區 塊 皆 紀錄有該區塊的狀態與使用資訊,我們將 在 實 作 中 還 會 作 更 詳 細 的 說 明 。 圖 3 .1 所 示 為 W i n3 2 記 憶 體 管 理 階 層 圖 。 [8][28][29]. 3.5 Windows虛 擬 記 憶 體 空 間 的 配 置與保護 虛擬記憶體的主要功能是在位址空間 中保留一個區域、從分頁檔中為該區域安 排一塊實體記憶體、並為該實體記憶體設 定其保護屬性。要利用記憶體必須先將其 配置一塊空的記憶體,首先呼叫 Vir t ual Al lo cE x ( ) 函 式 配 置 一 塊 區 域 ( Re g io n) , 一 塊 區 域 是 以 一 個 配 置 間 隔 邊 界( Allo cat io n gr a n u l ar it y b o u nd ar y)為 起 點 , 也 就 是 6 4 KB 為 範 圍 。 如 圖 3 .2 所 示 。 一 個 區 域 的 大 小 是 一 個 頁 面 ( P age) 大 小 的 倍 數 , 在 W i nd o ws NT 中 也 就 是 4 KB 的 倍 數 。 例 如 , 若 你 想 要 保 留 一 個 1 0 KB 的 位 址 空 間 區 域,系 統 會 自 動 幫 你 配 置 成 1 2 KB 。 [ 9 ] [ 2 9 ]. 要使用一個已經保留的記憶體區域之 前,必須要先配置一塊實體記憶體。要知 道記憶體的配置情況,可以透過 Vir t ual Q uer yE x ( ) 函 式 來 查 詢 , 並 設 定 記 憶體屬性,之後再將實體記憶體映射至這 已保留的區域,這部分的設定一樣可以透 過 Vir t ual Al lo cE x ( ) 函 式 來 完 成。當 不 再 使 用 記 憶 體 時 , 必 須 使 用 Vir t ual Fr e eE x( ) 函 式來將配置的記憶體釋放掉,指定 MEM_ RE LE ASE 則 記 憶 體 狀 態 會 變 為 可 用 的 ( F RE E ); 指 定 M E M _ D E C O M M I T , 則記憶體狀態會變為保留的 ( RE SE R VE ) 。 屬於某行程的記憶體會很明確地被自 己私有位址空間所保護。除此之外, W ind o ws 也 藉 由 虛 擬 記 憶 體 硬 體 來 提 供 記憶體的保護,這些保護的做法會隨著處 理器而改變,例如在一個行程位址空間中 4.
(5) 的程式碼區段可能會被使用者模式下的執 行緒改為唯讀及被修改成受保護的。 [14][15][29] W ind o ws 所 提 供 的 記 憶 體 保 護 有 以 下 幾種,當我們配置或保護一塊記憶體中頁 面 時,可 以 選 擇 其 中 一 項 來 指 定 存 取 權 限。 P AGE_ E XE CUT E,允 許 執 行 有 提 交 實體記憶體的頁面區域; P AGE_ E XE CUT E_ RE A D, 允 許 執 行、讀取有提交實體記憶體的頁面 區域; P AGE_ E XE CUT E_ RE A DW R I T E , 允許執行、讀取、寫入有提交實體 記憶體的頁面區域; P AGE_ E XE CUT E_ W RI T ECOP Y,允 許執行、讀取、寫入有提交實體記 憶體映像檔程式碼頁面的區域,此 頁 面 可 以 共 享 為 r ead -o n - wr i te及 co p y-o n - wr ite; P AGE_ N O AC C ES S, 不 允 對 有 提 交 實體記憶體的頁面區域作任何存 取; P AGE_ RE AD ON LY,只 能 允 許 讀 取 有提交實體記憶體的頁面區域, P AGE_ RE ADW RI T E , 允 許 讀 取 、 寫入有提交實體記憶體的頁面區 域; P AGE_ W RI T EC OP Y, 對 有 提 交 實 體記憶體的頁面區域給予 co p y-o n - wr ite 的 保 護 。. 4. 檢 查 點 錯 誤 回 復 實 作 由 W ind o ws NT 作 業 系 統 架 構 得 知 , 要對於一個應用程式作檢查點的運算可以 有兩種切入方式,一種從核心模式切入, 另一種是從使用者模式切入。 這兩種方式的運算邏輯完全不同,所 需要的條件也各不一樣,但是其中有一項 考量十分關鍵,那就是安全。從核心模式 下切入時就必須跳過主管程式中安全控制 的權限,直接在系統服務製作一個裝置驅 動模組來實施檢查點的運算。這個意思就 是 說 檢 查 點 的 操 作 在 特 權 模 式( P r i vi le ged Mo d e)下 , 因 此 對 於 實 作 中 各 部 分 的 安 全 性檢驗與查核必須由此實作負責處理。如 此 的 做 法 除 了 很 難 評 估 會 對 W i nd o ws 系 統的整體安全與一致性有什麼樣的影響之. 外,對 於 W i nd o ws 系 統 中 權 限 與 安 全 機 制 維護工作會造成沉重的負擔,也容易使得 原本要作的檢查點運算目的失焦。因此採 用使用者模式的檢查點運算就可以免去這 些負擔,只要把檢查點運算的實作焦點放 在執行檢查點運算時期相關資料的處理即 可 。 [19][23]. 4.1 實 作 環 境 實作檢查點錯誤還原系統時,在程式 語言方面使用了C 語言,編輯器使用 MS V C( Mic r o so f t ® V is ua l C/ C+ +), 開 發 環 境 為 MS VS( Mi cr o so f t® Vi s ua l St ud io 6 .0 ),作 業 平 台 為 Micr o so ft ® W i nd o ws XP P r o fe s sio n al。 [ 2 3 ] [ 2 4 ] [ 2 5 ] [ 2 6 [ 2 7 ] [ 2 9 ] [ 3 0 ]. 4.2 實 作 方 法 W in C kp 的 實 作 方 法 主 要 透 過 使 用 W in3 2 AP I 來 建 構 整 個 架 構 , W i n C kp 也 大 量 使 用 了 W i n3 2 函 式,而 這 些 函 式 可 以 讓一個行程去改變另一個行程的狀態。. 4.2.1 檢 查 點( Checkpointing)與 回 復 ( Rollback) 在 W in C kp 這 個 專 案 中 , 我 們 透 過 Cr e ateP r o ce ss ( ) 此 函 式 來 啟 動 應 用 程 式 。 啟動應用程式之後,若要對此應用程式執 行檢查點運算,必須先暫停所有執行緒, 且必須將目前狀態的資訊存到一個檔案 中 , 而 這 個 檔 案 在 實 作 中 名 為 ckp lo g。 在作回復運算期間,也必須先暫停所 有的執行緒,然後再透過之前對其作檢查 點 運 算 所 存 放 的 檔 案 ( ckp lo g) 恢 復 之 前 的 狀 態 資 訊 , 最 後 , W i n C kp 才 會 重 設 ( Re se t)執 行 緒 內 文( T hr ead C o n t e x t ), 再恢復執行緒的執行。 W in C kp 會 在 目 標 程 式( 指 應 用 程 式 ) 注入檢查點運算的執行緒,而這個執行緒 所負責的部分就是將系統函式相關的資訊 保存到一個穩定的儲存體內,而在返回或 錯誤回復時,也能將這些系統函式的功能 重 現 ( Rep la y) 。 [ 1 8 ] [ 1 9 ]. 4.2.2 執 行 緒 (Threads) 執 行 W i nC kp 的 行 程 與 執 行 應 用 程 式 的 行 程 是 獨 立 且 不 同 的 。 在 NT 系 統 系 列 中,允許一個行程去取得及設定不同行程 內執行緒的執行緒內文。要取得一個執行 緒 內 文 , 必 須 使 用 GetT hr e ad Co nte x t( ) 來 獲得;而要去改變及回存執行緒內文,必 須 透 過 Se tT hr e ad Co n te x t( ) 來 設 定 。 [ 2 1 ]. 4.2.3 記 憶 體 (Memory) 5.
(6) W in C kp 會 儲 存 應 用 程 式 的 記 憶 體 資 訊,包括資料、堆積區、堆疊區。要取得 一個行程記憶體映像,必須使用 Re ad P r o ce s sMe mo r y( ) 來 獲 得 ; 而 要 回 存 修改後的記憶體,則必須透過 W r iteP r o c e ss Me mo r y( ) 來 設 定 。 之 前 提 到 一 個 NT 系 統 的 行 程 會 有 大 概 2 GB 的 私 有 位 址 空 間 , 而 範 圍 是 從 0 x0 0 0 1 0 0 0 0 到 0 x7 F FE FF F F, 但 在 這 個 空 間上並不是每個區域都需要被儲存的。必 須 透 過 Vi t ual Q uer yE x ( ) 這 個 系 統 呼 叫 來 一個一個區域的檢查位址空間,只有在讀 取 以 及 寫 入 存 取 是 啟 動 的 ( en ab led ) 及 實 體 儲 存 體 被 提 交 ( co mmi t) 時 , 就 必 須 儲 存 記 憶 體 區 域 。 而 W i nc kp 可 儲 存 每 一 個 記 憶體區域以及 MEM O RY_ B ASI C_ I N F OR M AT I O N 結 構 。 [8][16][28][29]. 來。. 4.3.1 行 程 執 行 緒 的 暫 停 與 繼 續 若要對執行中的應用程式作檢查點運 算之前,必須要能使此行程執行緒暫停 ( S usp e nd ) , 之 後 才 能 做 後 續 的 處 理 。 我們採用的函式是 S usp e nd T hr e ad ( ),它 會 暫 停 一 個 執 行 緒 的 動作,也就是會停止執行應用程式的動 作,而此函式必須傳入此行程執行緒的代 碼,這個代碼是透過 P RO CE S S_ I N FO R M AT I ON 結 構 來 指 定 的。 暫停執行緒,做完行程記憶體與資料 的處理之後,必須恢復執行緒的執行,則 透 過 Re s u meT hr ead ( ) 函 式 來 恢 復 應 用 程 式執行緒的執行。. 4.3.2 執 行 緒 的 狀 態 資 訊 4.2.4 檔 案 ( Files) 為了作檢查點檔案及從檔案回復, W in C kp 使 用 檔 案 儲 存 的 方 法 將 執 行 緒 內 文( T hr ead Co nt e xt)、應 用 程 式 視 窗 資 訊 、 記憶體資訊、以及檢查點資料儲存起來, 將 透 過 C 函 式 中 的 fo p e n( ) 、 f clo se( ) 、 fr e ad ( )、 f wr it e( ) 函 式 來 達 成。 在 實 作 中 , 將有三個檔案分別用來存放這些資訊 ( h wn d lo g、 co n te x tlo g 、 ckp lo g) 。. 在行程執行緒被暫停之後,此時的目 標行程已經完全停止動作,除了要儲存行 程資料、記憶體頁面區域之外,還要將目 前的這個行程中執行緒的執行資訊儲存起 來。 我 們 將 透 過 W i nd o ws 提 供 的 兩 個 系 統 函 式 , 一 個 是 Ge tT h r ead Co nte x t( ), 在 暫停執行緒後用來取得執行資訊;一個是 SetT hr ead Co n te x t( ),在 恢 復 執 行 緒 前 用 來 設定執行緒的執行資訊。. 4.2.5 視 窗 物 件 ( Window Objects) W in C kp 會 去 儲 存 應 用 程 式 的 視 窗 物 件代碼,像是應用程式的視窗、視窗對話 框 等。視 窗 代 碼 與 其 他 GDI 物 件 的 回 復 會 有一個較大的困難點,就是介於這些物件 的相依性,且它們並不能從其他的行程或 核心中隔離出來。 為 了 要 回 復 一 個 視 窗 代 碼 , W i nC kp 首先會啟動一個新的行程,讓這個行程產 生 所 有 相 關 的 視 窗 。 之 後 , W i nC kp 會 在 舊的視窗代碼與新的視窗代碼間產生映 射,在回存到記憶體前,用新的代碼值來 取代檢查點檔案中舊的代碼值。它可適用 W ind o ws 上 的 應 用 程 式 , 如 踩 地 雷 ( wi n mi n e.e x e) 、 接 龍 ( so l. e xe) 、 小 畫 家 等 。 [5][19]. 4.3.3 行 程 記 憶 體 區 塊 的 掃 描 行程在記憶體至少有兩個資料區塊, 分別為堆積區與堆疊區,這兩個區塊內所 存放的內容是行程的變數資料。堆積區中 為行程的全域與靜態變數區;堆疊區中則 是行程的區域變數存放區。除了這兩區之 外,執行時期由系統記憶體管理函式所配 置出來的記憶體區塊則是零散的分佈在行 程的記憶體定址空間中。 因此必須對整個記憶體空間作一次掃 描,將其中屬於資料的記憶體區塊儲存起 來。不過在掃描記憶體之前,要先暫停行 程中的執行緒,否則儲存下來的記憶體資 料區塊可能因為有其他執行緒正在作讀寫 的運算,而造成資料的不一致 ( I nco n s is te n c y) 。. 4.3 檢 查 點 運 算 在 W ind o ws NT 中 , 使 用 者 所 參 考 到 的記憶體定址空間稱之為虛擬記憶體空 間,在之前的章節已經有作過說明。在這 個章節,我們要對應用程式執行緒與記憶 體空間的內容作比較詳細的處理,以便能 在作檢查點運算時,將需要的資料儲存起. 4.3.4 篩 選 記 憶 體 區 塊 的 條 件 對 一 個 行 程 來 說,W i nd o ws 作 業 系 統 下 的 行 程 雖 然 使 用 完 整 的 32位 元 的 定 址 空 間( 4 GB 位 元 組 ), 但 事 實 上 可 供 行 程 使 用 的 定 址 空 間 是 被 限 制 在 0 x0 0 0 1 0 0 0 0 到 0 x7 FF EF F FF( 約 2 GB 位 元 組 ) , 因 此 我. 6.
(7) 們 要 在 這 約 2 GB 的 空 間 中 找 出 需 要 儲 存 的 區 塊,但 並 非 真 的 對 這 2 GB 中 的 每 一 個 B yt e 去 作 搜 尋, 而 是 利 用 了 W i nd o ws 系 統 函 式 Vir t ual Q uer yE x ( ) 來 達 到 我 們 的 目 的。 在 應 用 程 式 行 程 2 GB 記 憶 體 空 間,有 哪些資訊是屬於檢查點在作錯誤還原的必 要資訊呢?很明顯的答案是程式的全域、 靜態以及區域變數。因為這些變數紀錄了 程式在執行時期的行程狀態,能收集這些 變數的的正確資訊是能夠正確還原檢查點 的要素之一。 在 W ind o ws 中 的 行 程 所 配 置 的 記 憶 體被系統切割為許多大小不一的區塊,每 個區塊都有相對應的屬性,這些區塊的資 訊都紀錄在 MEM O RY_ B ASI C_ I N F OR M AT I O N 結 構. 中。 圖 4 .2 W i nd o ws 虛 擬 記 憶 體 空 間 W ind o ws 在 這 2 GB 的 虛 擬 記 憶 體 空 間中採區塊的方式配置,各區塊分別以類 別( T yp e)、狀 態( S tat e)、保 護( P r o tect) 來作區分。 ◆ 類 別 ( T yp e) : 表 示 該 虛 擬 記 憶 體 區 塊 內 資 料 的 屬 性 , 有 I M AGE 、 M AP P ED、 以 及 P RI V A T E 三 種 資 料 屬 性。 ◆ 狀 態 ( St ate) : 表 示 該 虛 擬 記 憶 體 區 塊的實體記憶體配置狀況,有 CO MMI T 、 RES E RVE 、 以 及 F REE 三 種狀況。 ◆ 保 護( P r o tect): 表 示 該 虛 擬 記 憶 體 區 塊被允許的操作方式,有 RE AD ON LY、 RE ADW RI T E 、 EXE CUT E 、 …等 。 只要這三種屬性中的任意一種不同就 不會合併成為一個連續的區塊。更正確的 說法是,即使某一個區塊的尾與另一區塊 的 頭 是 連 續 的 , 但 是 W i nd o ws 系 統 函 式 Vir t ual Q uer yE x ( ) 並 不 會 將 其 當 作 一 個 連. 續 的 區 塊,除 非 這 兩 區 塊 的 三 種 屬 性 一 樣。 需要注意的一點是,在掃描記憶體 時,記 憶 體 區 塊 是 允 許 可 讀 寫( P r o tec t 為 P AGE_ RE ADW RI T E ) , 以 及 有 相 對 應 的 實 體 記 憶 體( St ate為 ME M_ C OM MI T )時, 就必須將此記憶體區塊連同 MEM O RY_ B ASI C_ I N F OR M AT I O N 結 構 儲存起來, 同時利用 Re ad P r o ce s sMe mo r y( ) 來 讀 取 行 程 中 記 憶 體區塊裡的資料,並將之儲存到所開啟的 檔 案 中,這 就 能 將 檢 查 點 的 資 料 儲 存 起 來。. 4.4 錯 誤 還 原 計 算 將執行緒內文、記憶體區塊及寫入記 憶體的資料通通存入到所開啟的檔案中, 這就是檢查點運算負責的功能。而當檢查 點資料儲存成功之後,要如何在開啟的新 行程中將存放的資料複製進來,讓新行程 擁有舊行程作檢查點時的狀態,這就是此 節所要討論的重點。 首先是執行緒的狀態,新執行緒啟動 時,必須先將其動作暫停,再將之前所存 的 內 容 取 出 , 並 利 用 Se tT hr ead Co n te x t( ) 函式來設定新執行緒內文的狀態。其次是 記憶體區塊狀態的復原, 先讀出所儲存 的記憶體資訊, 判斷記憶體的保護必須 為 可 讀 寫 的 ( P r o tec t 為 P AGE_ RE ADW RI T E ) , 讀 取 紀 錄 檔 中 記 憶體的內容,並設定其基底位址,修改記 憶體狀態之後,再將此記憶體內容寫入行 程的記憶體中。 若 無 法 寫 入,先 透 過 Vir t ua lQ u er yE x( ) 函式取得另外一塊記憶體的資訊,再透過 Vir t ual Al lo cE x ( ) 函 式 來 設 定 配 置 記 憶 體 區塊類別為有相對的實體記憶體 ( MEM_ C OMM I T ) , 最 後 再 透 過 W r iteP r o c e ss Me mo r y( ) 函 式 將 其 寫 入 行 程 的記憶體。 若虛擬記憶體並無實體記憶體對應時 ( MEM_ RE SE R VE、 M EM_ F R EE ), 就 必須將其設定成有實體記憶體對應 ( MEM_ C OMM I T ) 。 如 果 狀 態 是 為 保 留 時,可 直 接 透 過 Vir t u al All o cE x( ) 函 式 將 其 配置的類別改為有實體記憶體對應;如果 狀態是為釋放時,就必須將之前所另外配 置的記憶體區塊資訊傳入 Vir t ual Al lo cE x ( ) , 並 將 其 類 別 設 定 為 保 留,之後再將其類別改為有實體記憶體對 應。修改記憶體保護後,也順利寫入行程 的記憶體,最後再將行程執行緒繼續動 作,這就是錯誤回復最主要的部分。. 5. 結 論 與 未 來 展 望 7.
(8) 5.1 結 論 本 論 文 在 W i nd o ws 作 業 系 統 平 台 建 立起一個完整的檢查點運作的基礎模型, 將檢查點運算所需要的功能一一給於明確 的 定 義,並 完 成 了 在 W i nd o ws 平 台 上 實 施 檢查點運算技術的核心功能。經過多個應 用 程 式 的 測 試,幾 乎 所 有 W ind o ws 平 台 上 的應用程式都能透過此實作,達到檢查點 錯誤回復的功能。此實作方法雖與大多數 檢查點技術相去不遠,但卻不必透過複雜 的機制,也能達到一樣的功能。 以本實作的模組架構為基礎,對於要 進一步研究或是其他的實作應用,應該都 有不少的幫助。. 5.2 未 來 展 望 本論文所作的實作,在檢查點資料的 收集方面只針對行程中單一行程執行緒與 記憶體作處理,而在多執行緒、視窗元件 等其他方面的資訊,可以作更進一步實作 研 究 [ 1 8 ] [ 2 1 ];可 結 合 網 路 部 分,以 檔 案 存 放方式,放置在不同主機上,以達到遠端 回復的效果;可以移植到其他較小的作業 系 統 上 , 例 如 W i nC E , 透 過 無 線 網 路 來 達 到行動式檢查點的功能;也可針對檔案存 取作相關的控制應用,例如檔案的加密保 護 、 檔 案 的 壓 縮 /解 壓 縮 。. 參考文獻 [ 1]Al iEbnenas i r ,“Sof t war e Fa u lt -Tol er ance”,Comput erSci ence and E n gi ne er i n g D ep ar t m en t Mi c hi g a n St at e U ni ver s it y U. S. A ht tp : // www. c s e. ms u .ed u / ~c se8 7 0 / Lec t ur e s/ SS2 0 0 5 / ft1 .p d f [ 2 ] P . E mer ald C h u n g, Ye n n u n H ua n g, C ha nd r a K i nt ala , W o e i -J yh Lee, Der o n Lia n g, T i mo t h y K . T sa i, an d C h u n g -Y i h Wang.“N T- S wiF T: S o ft wa re I mp l emen ted Fa u lt To le ra n ce o n Win d o w s NT ”,2n d USE NI X W i nd o ws NT S y mp o si u m, Au g u s t 1998. [ 3 ] Yo u h ui Zha n g, Do n g s he n g W a n g, a nd Wei mi nZheng.“Tra n sp a ren t Ch e ckp o in tin g a n d Ro l l b a ck Re co ve ry Mech a n i sm fo r Win d o w s N T Ap p lica tio n s ”, Ap r i l 2 0 0 1 , p p . 7 8 - 8 5 . [ 4 ] J o h n y Sr o uj i, P a u l S ch u s ter , Ma ur y Bach,andYul i kKuzmi n.“A T ra n sp a ren t Ch e ckp o in t Fa ci li ty o n N T”,2ndUSENI X W ind o ws NT S y mp o s i u m, Au g u s t 3 - 4 , 1998. [ 5 ] P . E mer ald C h u n g, W o ei -J yh Le e, Ye n n u n H ua n g, Der o n L ia n g, a nd. C h u n g - Yi hWang.“Win c kp : a T ra n sp a ren t Ch e ckp o in tin g a n d Ro l l b a ck Re co ve ry To o l fo r Wi n d o ws N T Ap p l ica tio n s”, Fa u lt -T o ler a nt Co mp u ti n g, 1 9 9 9 . D i ge st o f P ap er s. T we nt y- N i n t h An n ua l I n ter na tio n al S y mp o si u m, J u n e 1 9 9 9 , p p . 2 2 0 -2 2 3 . [ 6 ] T o m B o yd a nd P ar t h a Da s g up ta, “Pro ce s s M ig ra t io n : A Gen e ra l i zed Ap p ro a ch U sin g a Vi r tu a li zin g Op e ra tin g S ys tem ”,Di s t r i but edCo mp u ti n g S ys t e ms , 2 0 0 2 . P r o ceed i n gs . 2 2 nd I n ter na tio n al Co n fer e nce o n, 2 -5 J ul y 2 0 0 2 , p p . 3 8 5 -3 9 2 . [ 7]J ef f r eyRi cher ,“P ro ces s ”,Chapt er4,i n Pro g ra m min g Ap p l ica tio n s fo r M ic ro so ft Win d o w s, Fo ur t h Ed i tio n, Mi cr o so f t P r e s s, 1999. [ 8]J ef f r eyRi cher ,“Win 3 2 Me mo ry Arch it ectu r e”,Chapt er13,i nP ro g ra m min g Ap p li ca t io n s fo r Mic ro s o ft Win d o w s, Fo ur t h Ed i tio n, Mi cr o so f t P r e ss , 1 9 9 9 . [ 9]J ef f r eyRi cher ,“Us i n g Vi rtu a l Memo r y in Yo u r O wn Ap p lica tio n s”,C h ap te r 1 5 , i n Pro g ra m min g Ap p l ica tio n s fo r M ic ro so ft Win d o w s, Fo ur t h Ed i tio n, Mi cr o so f t P r e s s, 1999. [ 1 0 ] Da v id A. So lo mo n and Mar k E. Rus s i novi ch. ,“I n s id e M ic ro so ft Wi n d o ws 2 0 0 0 ”,3r dEdi t i on,Mi cr os of tPr es s ,2000. [ 11]J .Gr ayandA.Reut er ,“T ra n sa ct io n Pro c es s in g : Co n c ep t s a n d Te ch n iq u e s”, Mo r ga n Ka u f ma n n P ub li s her s, 1 9 9 3 . [ 1 2 ] H. Ab d e l -s haf ietal ,“E ff ic ien t Us er- Le ve l Th r ea d M ig r a tio n a n d Ch e ckp o in tin g o n Win d o w s NT Clu st er s”, 3 r d US ENI X W i nd o ws NT S y mp o si u m, 1999. [ 1 3 ] J . P la n k, M. B e c k a nd G. Ki n g sl e y, “Li b ckp t: Tra n sp a ren t C h eckp o in tin g Un d e r U NI X ”,1995Us eni xConf er ence. [ 1 4 ] MS D N Lib r ar y- J a n uar y 2 0 0 1 , Micr o so f t Co r p o r a tio n, 2 0 0 1 . [ 1 5 ] MS D N Li br ar y,“M emo ry P ro tec tio n ”, P lat fo r m S DK : M e mo r y Ma na ge me nt . ht tp : // msd n . mi cr o so f t.co m/ l ib r ar y/ d e fa u lt .a sp ? ur l=/ lib r ar y/ e n - u s/ m e mo r y/b a se / me mo r y_ p r o tec tio n. asp [ 1 6 ] MS D N Lib r ar y, “ME M OR Y_ BAS I C_ I NF OR MAT I O N”, P lat fo r m S DK : M e mo r y Ma na ge me nt . ht tp : // msd n . mi cr o so f t.co m/ l ib r ar y/ d e fa u lt .a sp ? ur l=/ lib r ar y/ e n - u s/ m e mo r y/b a se / me mo r y_ b a s ic_ i n f o r ma tio n_ str .asp [ 1 7 ] Mi cr o so f t Fo u nd a ti o n C la ss Lib r ar y, NS DN Ho me , ht tp : // msd n . mi cr o so f t.co m/ l ib r ar y/ d e fa u lt .a sp ? ur l=/ lib r ar y/ e n - u s/ vc mf c 9 8 / h t ml / mf c h m .asp [ 1 8 ] J i n -M i n Y a n g, Da - Fa n g Zh a n g a nd X ue -DongYang,“Us e r- leve l imp lem en ta tio n o f ch eck p o in tin g fo r 8.
(9) mu l tith r ea d ed a p p lica ti o n s o n Win d o w s N T”,Tes tSympos i um,2003. ATS2003. 1 2 t h Asi a n, 1 6 -1 9 No v. 2 0 0 3 , p p . 4 9 6 -4 9 9 . [ 1 9 ] Y. W a n g, Y . H u n g, K. Vo , P . C h u n g andC.Ki nt al a,“Ch e ckp o in t a n d it s a p p lica tio n s”,Pr oceedi ngsoft he25t h I EEE Fa u lt T o ler a n t Co mp u ti n g S y mp o s i u m, P asad e n a, Ca li fo r n ia, p p . 2 2 -3 1 , 1 9 9 5 . [ 2 0 ] Di a ma n ti no Co s ta, J o ao C ar r ei r a a nd J oaoGabr i elSi l va,“Wi n FT: Us in g Off - th e- sh el f Co mp u te r s o n I n d u s tr ia l En vi ro n m en t s”,E mer g i n g tec h no lo gi es a nd Fac to r y Au to ma t io n P r o ceed i n g s, 1 9 9 7 . ETFA ’ 97. ,19976t hI nt er nat i onal Co n fer e nce o n, 9 -1 2 Sep t. 1 9 9 7 , p p . 3 9 -4 4 . [ 2 1 ] T h ua n Q. P ha m, P a n kaj K. G ar g, “Mu lt ith rea d ed p ro g ra m min g w ith Wi n 3 2 ”, P r en tic e H al l P T R, 1 9 9 9 . [ 2 2 ] Se u n g -WooKi m,“I n te rcep tin g S ys te m API Ca l ls ”, ht tp : // www. d e v x.co m/ I n tel / Ar ti cl e/2 1 0 2 3 [ 2 3 ] J o h n so n M. H ar t 著 , 黃 昕 暐 譯 , “ Win 3 2 應 用 程 式 設 計 聖 經 ” , 和 碩 科 技 文 化 有 限 公 司 , 1998 [ 2 4 ] H. M . Dei te l, P . J . Dei te l 著 , 吳 國 樑 譯 , “ C 程 式 設 計 藝 術 -第 三 版 ” , 全 華 科 技 圖 書 股 份 有 限 公 司 , 2001 [ 2 5 ] R ic har d C. Le i ne c k er , T o m Ar c h er , Ke vi n S mi t h , Lar s Kl a n d er , D er r e l B la i n, Gar r e tt P e as e 著,李 奇 譯, “Vi su a l C+ + 6 Bib l e- 基 礎 與 程 式 架 構 篇 ”, 文 魁 資 訊 股 份 有 限 公 司 , 1999 [ 2 6 ] R ic har d C. Le i ne c k er , T o m Ar c h er 著 , 黃 怡 譯 , “V i su a l C ++ 6 B ib l e- 進 階 與 程 式 應 用 篇 ”, 文 魁 資 訊 股 份 有 限 公 司 , 1999 [ 2 7 ] 蔡 明 志 著 , “Wi n 3 2 程 式 設 計 實 務 - 使 用 Vi su a l C ++ ”, 松 崗 電 腦 圖 書 資 料 股 份 有 限 公 司 , 1999 [28] 尤 普 元 , 史 美 林 等 著 , 吳 亞 秀 譯 , “ 作 業 系 統 原 理 - Win d o w s 核 心 剖 析 ” , 全 華 科 技 圖 書 股 份 有 限 公 司 , 2004 [ 2 9 ] 井 民 全 , “ Ad va n ced Win d o w s Pro g ra m min g ” , ht tp : //d eb ut. ci s. n ct u. ed u .t w/ ~c h i n g/ Co ur s e / Ad va n ced C+ + Co ur s e/_ _ P age /W i nd o ws _ P r o gr a m mi n g. h t m [ 3 0 ] 李 海 , “ 問 專 家 - C/ C ++ - Win d o w s API ” , ht tp : // www. c h i na - as k p r o .co m/cp p 1 1 .s h t ml. 9.
(10)
相關文件
進而能自行分析、設計與裝配各 種控制電路,並能應用本班已符 合機電整合術科技能檢定的實習 設備進行實務上的實習。本課程 可習得習得氣壓-機構連結控制
專案導向應用程式開發 階梯程式編輯畫面 狀態的監視與控制 階梯程式助憶碼輔助顯示 階梯程式註解功能
• 點選 Method Editor 來進行方法程式編輯(同樣,也可 在開啟後的視窗中,點選 Form Editor 來切回原視窗). Form
在撰寫網頁應用程式 HTML 的語法當中,以下何者錯誤?(A)<a>是用來製作超連結的標記(Tag) (B)HREF 是一個在<a>與</a>中指定其他
檢視 檢視「 「 「 「輸出 輸出 輸出 輸出」 」 」 」視窗表示 視窗表示 視窗表示 視窗表示 程式碼沒有任何錯誤
在編輯/偵錯視窗 (Editor) 中,善用 “反白 MATLAB 宣告式. → 按下滑鼠右鍵 → 選取
• 透過觀察和實驗 透過觀察和實驗 透過觀察和實驗, 透過觀察和實驗 , , ,強化 強化 強化 強化、 、 、 、修訂 修訂 修訂
微算機原理與應用 第6