亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        原倉周 王華鋒 申雪萍

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

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

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

        1引言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        對于需要由多個同學(xué)協(xié)作完成的實(shí)驗,顯然不能采用以上方式。為此,我們設(shè)計了借鑒文件系統(tǒng)的實(shí)現(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í)際長度可變;數(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方法即可實(shí)現(xiàn)恢復(fù)。

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

        在單個結(jié)構(gòu)之上,還按照進(jìn)程創(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é)點(diǎn),還是下一個元素。

        3實(shí)驗設(shè)計

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

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

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

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

        (4) 嘗試一個最基本的進(jìn)程的相關(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ù)正確運(yùn)行。

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

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

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

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

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

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

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

        4實(shí)施方法與效果

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

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

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

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

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

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

        5結(jié)束語

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

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

        參考文獻(xiàn):

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

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

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

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

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

        [6] 婁久,李秀坤,李治軍. 操作系統(tǒng)實(shí)驗課教學(xué)內(nèi)容與模式探討[J]. 計算機(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)原理實(shí)驗教學(xué)探索[J]. 計算機(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)實(shí)驗教學(xué)中的應(yīng)用[J]. 福建電腦,2008(06):207,191.

        猜你喜歡
        進(jìn)程實(shí)驗教學(xué)
        關(guān)于基礎(chǔ)教育階段實(shí)驗教學(xué)的幾點(diǎn)看法
        小議初中化學(xué)演示實(shí)驗教學(xué)
        甘肅教育(2020年4期)2020-09-11 07:42:36
        電容器的實(shí)驗教學(xué)
        物理之友(2020年12期)2020-07-16 05:39:20
        對初中化學(xué)實(shí)驗教學(xué)的認(rèn)識和體會
        甘肅教育(2020年8期)2020-06-11 06:10:04
        債券市場對外開放的進(jìn)程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        幾何體在高中數(shù)學(xué)實(shí)驗教學(xué)中的應(yīng)用
        基于云計算的計算機(jī)實(shí)驗教學(xué)探討
        我國高等教育改革進(jìn)程與反思
        Linux僵死進(jìn)程的產(chǎn)生與避免
        男女平等進(jìn)程中出現(xiàn)的新矛盾和新問題
        人成午夜免费大片| 国产成人av三级在线观看韩国| 日韩一区二区三区人妻免费观看| 大地资源网在线观看免费官网 | 国产一区二区三区口爆在线| 亚洲成在人线视av| 亚洲国产av玩弄放荡人妇系列| 大学生被内谢粉嫩无套| 国产裸体AV久无码无遮挡| 青青草手机在线免费视频| 国产精品国产午夜免费福利看| 成人全视频在线观看免费播放| 阴唇两边有点白是怎么回事| 精品国品一二三产品区别在线观看 | 日本国产一区二区在线观看| 一本色道久久亚洲综合| 欧洲vat一区二区三区| 四虎国产精品永久在线无码| 国产一区二区三区高清视频| 激情视频在线观看好大| 婷婷伊人久久大香线蕉av| 国产高颜值大学生情侣酒店| 色综合久久久久综合999| 国产成版人性视频免费版| 亚洲天堂av在线网站| 亚洲精品久久久久成人2007| 乱码午夜-极国产极内射 | 在线va免费看成| 无码伊人久久大蕉中文无码| 亚洲精品美女中文字幕久久| 九九在线中文字幕无码| 亚洲自偷自拍熟女另类| 亚洲AV无码一区二区一二区色戒 | 天天综合色中文字幕在线视频| 国产精品一区二区三区在线蜜桃 | 久久老熟女乱色一区二区| 国产精品内射久久一级二| 国产av无码专区亚洲av中文| 无码精品一区二区三区超碰| 亚洲av毛片一区二区久久| 免费看片的网站国产亚洲|