• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Windows進程凍結(jié)與恢復(fù)方法及其實驗教學(xué)探索

      2009-08-28 09:09:14原倉周王華鋒申雪萍
      計算機教育 2009年14期
      關(guān)鍵詞:進程實驗教學(xué)

      原倉周 王華鋒 申雪萍

      摘要:本文在分析進程凍結(jié)與恢復(fù)所涉及的相關(guān)知識點基礎(chǔ)上,給出了基于WRK(Windows Research Kernel)實現(xiàn)Windows進程凍結(jié)與恢復(fù)的技術(shù)方案。通過將相關(guān)知識點按照相關(guān)性和難度分類,設(shè)計并實施了一種基于研究性學(xué)習(xí)法的教學(xué)方式,使學(xué)生變被動學(xué)習(xí)為主動學(xué)習(xí),提高了綜合分析能力和動手能力,取得了滿意的教學(xué)效果。

      關(guān)鍵詞:WRK;進程;實驗教學(xué)

      中圖分類號:G642 文獻標(biāo)識碼:B

      1引言

      在現(xiàn)代操作系統(tǒng)中,完整的進程概念不僅表示一個運行程序,實際上包括了處理器、內(nèi)存、文件、外設(shè)等程序運行時可能涉及的各種“資源”,當(dāng)然也隱含了運行中的程序如何與內(nèi)核“打交道”的相互調(diào)用問題。因此,圍繞進程的概念展開實驗內(nèi)容的安排有助于學(xué)生系統(tǒng)了解“進程”在各實用操作系統(tǒng)中的具體實現(xiàn)方式,從抽象到具體,經(jīng)過理解消化后,再轉(zhuǎn)化為學(xué)生自己理解的“抽象”,最終達到系統(tǒng)化掌握各知識點的培養(yǎng)目標(biāo)。

      將一個系統(tǒng)中的進程凍結(jié)到外存,或通過網(wǎng)絡(luò)傳輸?shù)絼e的機器,然后在必要的時候再恢復(fù)其運行,需要涉及到除進程調(diào)度之外的幾乎所有操作系統(tǒng)核心知識點,因此不僅適用于對“操作系統(tǒng)”課程的實驗教學(xué),而且可應(yīng)用于進程中間狀態(tài)保存、進程在分布式環(huán)境中遷移以平衡負載等實際應(yīng)用,所以具有很好的教學(xué)和應(yīng)用研究價值。

      將業(yè)界廣泛應(yīng)用的實用操作系統(tǒng)Solaris、Linux和Windows內(nèi)核應(yīng)用于“操作系統(tǒng)”課程實驗已經(jīng)得到了國內(nèi)諸多知名高校的認同。

      由于Windows NT在最初設(shè)計時采用的就是適用于多CPU、大內(nèi)存的1對1線程模型,因此,盡管Linux和Solaris都在新版本中逐步向這一模型靠近,但在模型實現(xiàn)方面都沒有Windows清晰。

      微軟推出的用于教學(xué)和科研目的的WRK(Windows Research Kernel),提供了大部分內(nèi)核源代碼,相應(yīng)配備的Windbg工具,以及配套教學(xué)資料,也為學(xué)習(xí)和研究Windows內(nèi)核提供了強有力的支持。

      本文基于WRK及其相關(guān)的教學(xué)材料,通過將進程凍結(jié)和恢復(fù)時需要解決的問題按內(nèi)容和難度分類,設(shè)計了相關(guān)的實驗?zāi)K和學(xué)習(xí)步驟,使學(xué)生通過研究性學(xué)習(xí)法完成力所能及的實驗內(nèi)容,變被動學(xué)習(xí)為主動學(xué)習(xí),提高了綜合分析能力和動手能力,取得了滿意的教學(xué)效果。

      2技術(shù)方案的設(shè)計

      要將一個已有的進程凍結(jié),可以從用戶態(tài)應(yīng)用程序中調(diào)用系統(tǒng)提供的API完成,也可通過在內(nèi)核中添加自己的系統(tǒng)調(diào)用完成相應(yīng)功能。前者依賴于系統(tǒng)的提供的API,功能相對受限,實驗難度相對容易控制,文獻[9]介紹了一種此類實現(xiàn)方法。我們選擇了后一種方案,相對來說實現(xiàn)比較靈活,但對學(xué)生來說實驗工作量相對較大。

      2.1進程凍結(jié)涉及的內(nèi)容

      進程凍結(jié)時需要處理的內(nèi)容可分為兩大類:一類是進程/線程自身特有的程序和數(shù)據(jù),不涉及別的進程,因此只要按一定的格式保存到外存,然后釋放內(nèi)存資源即可。另一類是共享資源,包括內(nèi)核同步工具、共享數(shù)據(jù)等。對于這類數(shù)據(jù),需要根據(jù)其具體作用分析如何使進程/線程與其“脫鉤”。“脫鉤”有兩個步驟,一是恢復(fù)時共享數(shù)據(jù)/對象的狀態(tài),是直接保存到時恢復(fù),還是到時根據(jù)具體情況創(chuàng)建一個新的對象然后設(shè)置成一定的狀態(tài);二是共享數(shù)據(jù)/對象的用戶數(shù)減1,用戶數(shù)為零時釋放資源。

      第一類私有數(shù)據(jù)主要用于表示進程和線程及其運行上下文,包括EPROCESS、KPROCESS、PEB、ETHREAD、KTHREAD、TEB、VAD、頁表等數(shù)據(jù)結(jié)構(gòu),另外,還包括進程各線程已經(jīng)運行產(chǎn)生的相關(guān)中間數(shù)據(jù),如堆、棧、數(shù)據(jù)段、運行環(huán)境等。如果啟用了交換功能,還要考慮進程在交換空間的數(shù)據(jù)。

      第二類共享數(shù)據(jù)主要包括進程所用到的各種共享內(nèi)核對象,如session、mutex、socket等,也包括共享數(shù)據(jù),DLL映射等信息。這類信息都可通過第一類內(nèi)核對象中的指針找到。

      2.2保存格式與恢復(fù)運行

      設(shè)計保存格式的主要目的是能夠在恢復(fù)時將當(dāng)初保存的數(shù)據(jù)“識別”出來。有兩種辦法。

      第一種是沒有特別的格式表示,恢復(fù)程序按照保存數(shù)據(jù)結(jié)構(gòu)的順序依次讀出即可。這種方式的缺點的要求保存與恢復(fù)一一對應(yīng),只能一個寫入程序?qū)σ粋€讀出程序。在學(xué)生一個人做嘗試實驗時可這樣完成。

      對于需要由多個同學(xué)協(xié)作完成的實驗,顯然不能采用以上方式。為此,我們設(shè)計了借鑒文件系統(tǒng)的實現(xiàn)方式,設(shè)計了一種“通用”的記錄格式。如圖1所示。

      其中單元總長度是整型,占4個字節(jié),表示一個數(shù)據(jù)單元的總的長度;類型名表示本數(shù)據(jù)單元所存儲數(shù)據(jù)的類型,字符串,占10個字節(jié),它通常是結(jié)構(gòu)名稱,如EPROCESS、datapage(數(shù)據(jù)頁)等。數(shù)據(jù)表示單元中要保存的數(shù)據(jù),實際長度可變;數(shù)據(jù)長度也是整型,占4個字節(jié),表示單元內(nèi)數(shù)據(jù)的長度,與單元總長度構(gòu)成一個校驗關(guān)系,也起到隔離單元的作用。

      對于結(jié)構(gòu)和內(nèi)核對象的恢復(fù),只要在識別出結(jié)構(gòu)和對象名稱后,申請一對應(yīng)結(jié)構(gòu),然后調(diào)用相應(yīng)結(jié)構(gòu)的restore方法即可實現(xiàn)恢復(fù)。

      為了方便特定數(shù)據(jù)結(jié)構(gòu)的恢復(fù),針對每個類型的結(jié)構(gòu)編寫統(tǒng)一的save和restore方法。

      在單個結(jié)構(gòu)之上,還按照進程創(chuàng)建函數(shù)CreateProcess中創(chuàng)建各結(jié)構(gòu)和對象的先后順序,定義了一套相關(guān)數(shù)據(jù)結(jié)構(gòu)創(chuàng)建的順序規(guī)則,這樣在保存和恢復(fù)時就確定了各單元數(shù)據(jù)中結(jié)構(gòu)和對象的對應(yīng)關(guān)系。

      在這種情況下,對于由鏈表鏈接的多個元素,也無需特別說明,只要查看鏈表元素前后元素的類型,即可確定是鏈表節(jié)點,還是下一個元素。

      3實驗設(shè)計

      因本實驗內(nèi)容涉及知識面廣,且相互聯(lián)系比較緊湊,因此我們將其定位為“操作系統(tǒng)課程設(shè)計”的一個選擇。在6周左右的時間內(nèi),利用約40個小時左右的時間,完成相關(guān)系列實驗。實驗內(nèi)容按照從易到難的順序組織,開始時的指導(dǎo)材料比較齊備,使學(xué)生易于上手,產(chǎn)生學(xué)習(xí)興趣后主要依靠分析和研究能力實現(xiàn)。具體實驗內(nèi)容規(guī)劃如下。

      (1) 為了使學(xué)生具體相應(yīng)Windows內(nèi)核基礎(chǔ),選擇設(shè)計了一些較為簡練的材料,提供給學(xué)生閱讀。文獻[10]的1、2、3、6、7章是主要閱讀內(nèi)容。

      (2) 利用CRK、TRK提供的相關(guān)材料,指導(dǎo)學(xué)生完成相關(guān)實驗環(huán)境的搭建,練習(xí)使用Windbg,學(xué)會編寫基本的系統(tǒng)調(diào)用。

      (3) 分析CreateProcess,學(xué)習(xí)進程創(chuàng)建基本過程,了解EPROCESS、KPROCESS、PEB、ETHREAD、KTHREAD、TEB、VAD、頁表等數(shù)據(jù)結(jié)構(gòu)。

      (4) 嘗試一個最基本的進程的相關(guān)私有數(shù)據(jù)結(jié)構(gòu)的保存。為了克服最初的困難,恢復(fù)時可利用CreateProcess創(chuàng)建相關(guān)結(jié)構(gòu)后,再嘗試以保存的數(shù)據(jù)將相關(guān)結(jié)構(gòu)和數(shù)據(jù)替換后看能否繼續(xù)正確運行。

      (5) 拋開CreateProcess,看恢復(fù)后能否繼續(xù)運行。

      (6) 在具備了以上基本技能后,可依次展開以下實驗:

      ① 實現(xiàn)使用了堆的進程的保存和恢復(fù)。

      ② 實現(xiàn)使用了文件的進程的保存和恢復(fù)。

      ③ 實現(xiàn)使用了信號量的進程的保存和恢復(fù)。

      ④ 實現(xiàn)使用了共享數(shù)據(jù)的進程的保存和恢復(fù)。

      ⑤ 實現(xiàn)多線程進程的保存和恢復(fù)。

      4實施方法與效果

      考慮到實驗的知識面廣度和難度,以及Windows內(nèi)核分析資料相對比較缺乏的實際情況,為便于討論和研究,采用了團隊的實驗形式。

      每個團隊3~5人,除基礎(chǔ)實驗環(huán)境要求每個人都必要熟悉外,關(guān)于最簡單進程的保存和存儲采用了分塊的形式。比如,4人的小組可一人負責(zé)進程中間數(shù)據(jù)的保存與恢復(fù),一人負責(zé)分析DLL機制并實現(xiàn)其描述方法,一人負責(zé)PEB相關(guān)內(nèi)核對象的分析與實現(xiàn),一人負責(zé)TEB中相關(guān)內(nèi)核對象的分析與實現(xiàn)。

      在學(xué)習(xí)方法方面,對于入門級的內(nèi)容,借用CRK、TRK以及自己整理的相關(guān)文檔,提供詳細的指導(dǎo)材料,而對于入門之后的內(nèi)容,則主要采用研究性學(xué)習(xí)法,只提供實驗的目標(biāo)及簡單的分析思路,具體解決方案則需要學(xué)生通過理解理論課上的內(nèi)容加上對WRK相關(guān)源代碼的分析來自己尋找答案。對于學(xué)習(xí)中的問題和困難,每周固定2~3個小時可與任課教師或助教進行討論。

      在項目進行過程中,允許學(xué)生根據(jù)自身的條件選擇其他實驗,以避免由于難度等問題產(chǎn)生的抵觸情緒。減員多的小組可考慮并組。

      實施結(jié)果表明,本實驗的內(nèi)容和實施方式在調(diào)動學(xué)習(xí)興趣,提高學(xué)習(xí)主動性方面效果明顯。一些在其他課程學(xué)習(xí)中表現(xiàn)一般的同學(xué),在本實驗學(xué)習(xí)中表現(xiàn)優(yōu)秀。對于選擇了本實驗并堅持完成了的同學(xué),在期末筆試中成績幾乎全部為優(yōu)秀。

      實施過程中,也有些同學(xué)反映分析工作量太大,精力不夠從而要求調(diào)換為其他實驗內(nèi)容。針對這種情況,需要考慮如何通過提供書面或課堂的指導(dǎo),適當(dāng)降低分析研究的工作量,以使實驗適應(yīng)盡量多學(xué)生的能力。

      5結(jié)束語

      WRK的出現(xiàn),使得我們有機會將Windows NT的典型1對1線程模型以實驗的方式應(yīng)用到對進程概念的理解上來。本文基于這一思想在WRK上設(shè)計并實施了一套進程的保存和恢復(fù)實驗。

      該實驗采用研究性學(xué)習(xí)的方式克服實用操作系統(tǒng)知識點繁雜的困難,采用分層的方式解決實驗難度較大的問題。實際實施過程表明本實驗達到了滿意的效果。

      參考文獻:

      [1] 邱毓蘭,劉智滿,王卓立,等. Linux操作系統(tǒng)環(huán)境中的進程遷移算法研究[J]. 武漢大學(xué)學(xué)報:自然科學(xué)版,1999,45(03): 276-278.

      [2] 肖紅,邱毓蘭,彭德純. 分布式計算系統(tǒng)中進程遷移的方法[J]. 軟件學(xué)報,1994,5(2):29-36.

      [3] 陳向群. 探索操作系統(tǒng)實踐教學(xué)[J].計算機教育,2008(17):45-47.

      [4] 羅宇,張穎蓓,葉常春. 本科操作系統(tǒng)課程設(shè)置及教學(xué)體會[J]. 計算機教育,2006(1):39-40.

      [5] 宋廣華,李善平,鄭扣根. 邊學(xué)邊干:操作系統(tǒng)課程教學(xué)改革的探索與實踐[J]. 計算機教育,2006(7):27-29.

      [6] 婁久,李秀坤,李治軍. 操作系統(tǒng)實驗課教學(xué)內(nèi)容與模式探討[J]. 計算機教育,2007(2):45-47.

      [7] Abraham Silberschatz,Peter Baer Galvin,Greg Gagne. 操作系統(tǒng)概念(影印版)[M]. 6版. 北京:高等教育出版社,2005: 133-145.

      [8] 彭敏,何炎祥. 基于WRK的Windows操作系統(tǒng)原理實驗教學(xué)探索[J]. 計算機教育,2008(20):38-40.

      [9] Hengming Zou. Windows Curriculum at SJTU[C]. Asia Pacific Windows Core Workshop. Beijing,China. March,2009.

      [10] Mark Russinovich,David Solomon. Microsoft Windows Internals [M]. Microsoft Press. 2005.

      [11] 王春梅,陳慶燕. 研究性學(xué)習(xí)法在操作系統(tǒng)實驗教學(xué)中的應(yīng)用[J]. 福建電腦,2008(06):207,191.

      猜你喜歡
      進程實驗教學(xué)
      關(guān)于基礎(chǔ)教育階段實驗教學(xué)的幾點看法
      小議初中化學(xué)演示實驗教學(xué)
      甘肅教育(2020年4期)2020-09-11 07:42:36
      電容器的實驗教學(xué)
      物理之友(2020年12期)2020-07-16 05:39:20
      對初中化學(xué)實驗教學(xué)的認識和體會
      甘肅教育(2020年8期)2020-06-11 06:10:04
      債券市場對外開放的進程與展望
      中國外匯(2019年20期)2019-11-25 09:54:58
      幾何體在高中數(shù)學(xué)實驗教學(xué)中的應(yīng)用
      基于云計算的計算機實驗教學(xué)探討
      我國高等教育改革進程與反思
      Linux僵死進程的產(chǎn)生與避免
      男女平等進程中出現(xiàn)的新矛盾和新問題
      体育| 沙坪坝区| 温泉县| 株洲市| 客服| 灵山县| 滦南县| 平乐县| 陵川县| 宁都县| 湘乡市| 台前县| 连州市| 福贡县| 盖州市| 黎川县| 泌阳县| 威海市| 池州市| 霞浦县| 隆子县| 苏州市| 祁门县| 山阴县| 沁水县| 廉江市| 吉安市| 漳浦县| 丰镇市| 道真| 富平县| 德庆县| 东平县| 呼和浩特市| 中西区| 玛曲县| 图木舒克市| 北宁市| 天祝| 湖北省| 长阳|