国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

對現(xiàn)代操作系統(tǒng)的思考

2011-12-31 00:00:00張鋼何小敏鐘靈劉洪濤
計(jì)算機(jī)教育 2011年21期


  文章編號:1672-5913(2011)21-0074-04 中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A
  基金項(xiàng)目:廣東省大學(xué)生創(chuàng)新實(shí)驗(yàn)項(xiàng)目(1184510037);廣東工業(yè)大學(xué)高教研究基金項(xiàng)目(2009C01)。
  作者簡介:張鋼,男,講師,研究方向?yàn)闄C(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、知識發(fā)現(xiàn)、高級計(jì)算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)。
  
  摘 要:當(dāng)前,高等院校的操作系統(tǒng)教學(xué)過程主要是基于傳統(tǒng)的操作系統(tǒng)基本原理而進(jìn)行的,與現(xiàn)代操作系統(tǒng)的發(fā)展不相適應(yīng),在教學(xué)過程中很難讓學(xué)生理解當(dāng)前操作系統(tǒng)發(fā)展的挑戰(zhàn)和今后的發(fā)展方向。本文對現(xiàn)代操作系統(tǒng)的特性進(jìn)行分析,闡述其在教學(xué)過程中的必要性和重要性,并介紹使用微軟公司的Singularity項(xiàng)目進(jìn)行操作系統(tǒng)教學(xué)的經(jīng)驗(yàn)。實(shí)踐表明,Singularity系統(tǒng)架構(gòu)清晰簡潔,很好地體現(xiàn)了現(xiàn)代操作系統(tǒng)的理念,適用于高等院校的操作系統(tǒng)教學(xué)。
  關(guān)鍵詞:現(xiàn)代操作系統(tǒng);Singularity;教學(xué)實(shí)踐
  
  
  隨著軟件開發(fā)技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,操作系統(tǒng)作為軟件和應(yīng)用的承載平臺(tái),承擔(dān)著越來越重要的任務(wù),也面臨著越來越大的挑戰(zhàn)。操作系統(tǒng)有將近40年的歷史,雖然目前主流使用的操作系統(tǒng)功能強(qiáng)大,能夠支持各種軟件的運(yùn)行,但遠(yuǎn)遠(yuǎn)達(dá)不到完美的程度,相反,隨著計(jì)算機(jī)軟件的日益復(fù)雜和網(wǎng)絡(luò)化應(yīng)用程度的提高,操作系統(tǒng)表現(xiàn)出越來越多的問題,主要表現(xiàn)在以下幾個(gè)方面[1-2]。
  1) 可靠性。現(xiàn)代操作系統(tǒng)十分脆弱,系統(tǒng)經(jīng)過一段時(shí)間的使用之后速度變得越來越慢,使用一段時(shí)間之后就需要重裝。對一些非專業(yè)用戶而言,為了裝一個(gè)軟件而導(dǎo)致整個(gè)系統(tǒng)不能使用的情況很常見。
  2) 安全性。病毒、木馬等程序在操作系統(tǒng)的控制范圍內(nèi)得到運(yùn)行,但它們卻破壞了整個(gè)系統(tǒng)。
  3) 系統(tǒng)配置問題。以Windows為例,DLL錯(cuò)誤、注冊表表項(xiàng)錯(cuò)誤、Windows啟動(dòng)配置錯(cuò)誤等問題很常見,操作系統(tǒng)本身不能把自身的配置保持在一個(gè)穩(wěn)定且一致的狀態(tài)。
  4) 程序隔離問題。操作系統(tǒng)的內(nèi)存管理中每個(gè)進(jìn)程都有獨(dú)立的運(yùn)行空間,它們之間的通信只能通過特定的機(jī)制(管道、消息、共享數(shù)據(jù)區(qū)等)進(jìn)行,但經(jīng)常會(huì)出現(xiàn)一個(gè)程序的運(yùn)行失敗導(dǎo)致整個(gè)操作系統(tǒng)崩潰,或是某些特殊的程序(如木馬程序)能跨越進(jìn)程的數(shù)據(jù)空間非法訪問其他進(jìn)程的數(shù)據(jù)。
  但與此同時(shí),高等院校的操作系統(tǒng)教學(xué)仍然停留在以操作系統(tǒng)的五大管理功能(處理器管理、存儲(chǔ)器管理、文件管理、設(shè)備管理、作業(yè)管理)為核心內(nèi)容的教學(xué)上,主要進(jìn)行操作系統(tǒng)理論和基本原理的教學(xué)。我們發(fā)現(xiàn),現(xiàn)代操作系統(tǒng)的這些問題幾乎不能從現(xiàn)有的教學(xué)內(nèi)容中找到答案,在學(xué)習(xí)的過程中,學(xué)生一方面會(huì)認(rèn)為這種理論學(xué)習(xí)與日常操作系統(tǒng)的使用脫節(jié);另一方面學(xué)生可能會(huì)更加疑惑,這些常見問題是否是操作系統(tǒng)的基本原理本身有問題所導(dǎo)致的。
  必須指出的是,傳統(tǒng)的五大核心管理功能仍然是操作系統(tǒng)的核心,而所出現(xiàn)的問題實(shí)際上是源自過于復(fù)雜的軟件環(huán)境和程序開發(fā)語言,操作系統(tǒng)為了滿足應(yīng)用的多樣性,犧牲了很大部分的安全控制和系統(tǒng)整體性控制。
  我們認(rèn)為,在高等院校的操作系統(tǒng)教學(xué)中,在進(jìn)行操作系統(tǒng)基本理論教學(xué)的同時(shí),應(yīng)該增加講授復(fù)雜軟件和網(wǎng)絡(luò)環(huán)境下操作系統(tǒng)所面臨困難的內(nèi)容,以及現(xiàn)有的解決方案,這樣做有以下兩個(gè)方面的好處。
  1) 加深學(xué)生對操作系統(tǒng)基本原理的理解,同時(shí)讓理論與操作系統(tǒng)的日常使用問題銜接。必須指出,操作系統(tǒng)的基本理論是沒有問題的,增加的講授內(nèi)容能夠加深學(xué)生對基本理論的理解并能引起有深度的思考。
  2) 高等院校同時(shí)也培養(yǎng)學(xué)生的科研能力,通過增加現(xiàn)代操作系統(tǒng)內(nèi)容的講授,讓學(xué)生明白在當(dāng)前復(fù)雜的軟件和網(wǎng)絡(luò)環(huán)境中操作系統(tǒng)所面臨的困難以及可能的解決辦法,可以培養(yǎng)學(xué)生研究操作系統(tǒng)的興趣,并打下一定的理論基礎(chǔ)。
  因此,我們在操作系統(tǒng)的教學(xué)中引入了一個(gè)現(xiàn)代操作系統(tǒng)研究項(xiàng)目,通過分析該項(xiàng)目,向?qū)W生講授現(xiàn)代操作系統(tǒng)對于所面臨的困難有怎樣的解決思路、當(dāng)前已經(jīng)做了哪些工作,以及將來的發(fā)展方向。同時(shí),在該操作系統(tǒng)研究項(xiàng)目上利用其源代碼,把整個(gè)操作系統(tǒng)的實(shí)驗(yàn)遷移到其框架中進(jìn)行。
  1 Singularity項(xiàng)目
  Singularity項(xiàng)目[3]是微軟公司的一個(gè)操作系統(tǒng)研究項(xiàng)目,旨在使用高級程序設(shè)計(jì)語言創(chuàng)建一個(gè)有良好健壯性與可靠性的操作系統(tǒng)。Singularity是一個(gè)研究性質(zhì)的項(xiàng)目,只有非常簡潔的核心代碼適合進(jìn)行教學(xué)和研究。Singularity最主要的優(yōu)點(diǎn)在于程序并不直接編譯成機(jī)器代碼運(yùn)行,而是先映射到操作系統(tǒng)的一個(gè)抽象指令集上,再在操作系統(tǒng)的控制下運(yùn)行。圖1展示了Singularity系統(tǒng)的結(jié)構(gòu)。
  
  圖1中的MSIL轉(zhuǎn)換引擎是一個(gè)翻譯器,把上層的用戶程序、文件系統(tǒng)、驅(qū)動(dòng)程序等應(yīng)用相關(guān)的代碼段轉(zhuǎn)換為操作系統(tǒng)的抽象指令集,這種指令抽象層從底層限制了非法操作的執(zhí)行。系統(tǒng)的運(yùn)行核心以MSIL抽象指令集為基礎(chǔ)編寫,這從根本上解決了由于操作系統(tǒng)自身程序的運(yùn)行而導(dǎo)致系統(tǒng)錯(cuò)誤的這一矛盾[3]。
  在進(jìn)程通信方面,Singularity進(jìn)行了限制,不直接允許基于共享內(nèi)存的進(jìn)程間信息交換,只能進(jìn)行基于消息的信息交換,消息的傳送通過通道(channel)進(jìn)行,防止了跨進(jìn)程的非法數(shù)據(jù)訪問,這是很多系統(tǒng)安全問題的源頭。
  在進(jìn)程管理方面,Singularity不允許在一個(gè)正在執(zhí)行的進(jìn)程中加載或生成額外的可運(yùn)行代碼,惡意程序無法以傳統(tǒng)的方式執(zhí)行。更為重要的是,系統(tǒng)嘗試使用全局的抽象指令集映射,為系統(tǒng)提供一個(gè)整體且一致的配置方案,而不會(huì)產(chǎn)生配置的前后矛盾[4]。
  內(nèi)存管理方面,當(dāng)前普遍采用的是段頁式管理,即程序在內(nèi)存中以邏輯上有意義的段進(jìn)行組織,段內(nèi)分頁使內(nèi)存的空間可以充分利用不會(huì)產(chǎn)生碎片[5]。Singularity采用了類似于Java語言的內(nèi)存管理機(jī)制,即在堆上為進(jìn)程和線程分配空間,并提供一個(gè)核心級的垃圾回收器進(jìn)程,用于回收不再使用的空間?;贘ava內(nèi)存管理的可靠性與易用性,我們認(rèn)為這種機(jī)制是有希望在操作系統(tǒng)的內(nèi)存管理方面取得成功的。
  Singularity系統(tǒng)結(jié)構(gòu)清晰,而且基本不含有為了適應(yīng)不同的軟件配置而編寫的代碼,在教學(xué)中學(xué)生能夠著眼于其核心部分,并能自行編寫相應(yīng)的管理程序,通過擴(kuò)展接口能為操作系統(tǒng)增加功能特性。
  Singularity是使用微軟的Sing#語言編寫的,它是C#語言的一種擴(kuò)展,支持對程序行為的定義[6]。它具有對面向?qū)ο蟪绦蛟O(shè)計(jì)的完整支持,并能使用XML進(jìn)行配置,與主流的程序開發(fā)技術(shù)相一致,有良好的文檔支持,能在課堂上進(jìn)行代碼級的講解,容易設(shè)計(jì)出課程相關(guān)的實(shí)驗(yàn)。
  2 教學(xué)實(shí)踐
  我們在本校自動(dòng)化學(xué)院網(wǎng)絡(luò)工程系的操作系統(tǒng)課程內(nèi)容中進(jìn)行現(xiàn)代操作系統(tǒng)相關(guān)內(nèi)容的教學(xué)實(shí)踐,我們在2008和2009級網(wǎng)絡(luò)信息專業(yè)的操作系統(tǒng)教學(xué)中進(jìn)行嘗試,主要包括教學(xué)內(nèi)容和實(shí)驗(yàn)兩方面的內(nèi)容。
  2.1 教學(xué)內(nèi)容上的改進(jìn)
  課程原先設(shè)置了操作系統(tǒng)結(jié)構(gòu)、進(jìn)程管理、處理機(jī)調(diào)度、存儲(chǔ)管理、設(shè)備管理、文件系統(tǒng)、操作系統(tǒng)產(chǎn)品介紹和安全管理這七個(gè)部分的內(nèi)容,我們在各部分增加了Singularity相關(guān)的理論內(nèi)容講授。
  在操作系統(tǒng)結(jié)構(gòu)部分,我們在分層操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)基礎(chǔ)上,增加了應(yīng)用程序抽象層的介紹,這是Singularity中的一個(gè)重要特性,通過MSIL把應(yīng)用程序的代碼映射為一個(gè)統(tǒng)一的抽象指令集[7],操作系統(tǒng)本身的執(zhí)行機(jī)制保證了該指令集的執(zhí)行是絕對安全的,并通過例子講解當(dāng)前操作系統(tǒng)的不安全性和不可靠性的原因。增加了MSIL的映射機(jī)制的介紹,通過Singularity的實(shí)現(xiàn),從代碼級向?qū)W生展示如何構(gòu)造一個(gè)可擴(kuò)展的抽象指令集,并與Java語言的虛擬機(jī)機(jī)制進(jìn)行比較。
  
  在進(jìn)程管理部分,加強(qiáng)了進(jìn)程數(shù)據(jù)空間獨(dú)立性的介紹,從數(shù)據(jù)通信的角度分析進(jìn)程間通信的手段,分析哪些通信方式存在安全的隱患。介紹Singularity的進(jìn)程管理機(jī)制,詳細(xì)說明其禁止共享內(nèi)存的方式進(jìn)行消息通信的原因。
  在處理機(jī)調(diào)度方面,引入了多處理機(jī)調(diào)度的介紹。隨著CPU的多核化,多處理機(jī)調(diào)度將成為操作系統(tǒng)的一個(gè)重要內(nèi)容。在介紹傳統(tǒng)的處理機(jī)調(diào)度算法的同時(shí),用流程圖結(jié)合程序講授這些算法的多處理機(jī)版本實(shí)現(xiàn),并以Sing#語言[6]在Singularity中的程序?qū)崿F(xiàn)作為課堂例子。
  存儲(chǔ)管理部分,在段式、頁式和段頁式管理的基礎(chǔ)上,增加堆中分配空間和內(nèi)存垃圾回收器的介紹,通過代碼例子講解在Singularity中如何實(shí)現(xiàn)內(nèi)存空間的動(dòng)態(tài)回收,并與Java的垃圾回收器進(jìn)行對比。
  在文件系統(tǒng)部分,分析Singularity的文件系統(tǒng)的代碼實(shí)現(xiàn),其實(shí)質(zhì)是一個(gè)優(yōu)化的B+樹實(shí)現(xiàn),并讓學(xué)生懂得如何根據(jù)快速更新和查找的原理,創(chuàng)建適合自己使用的文件系統(tǒng)。
  在操作系統(tǒng)產(chǎn)品介紹部分,著重介紹Windows系統(tǒng)以及它的配置管理,分析注冊表和DLL中的配置錯(cuò)誤出現(xiàn)的根本原因,進(jìn)而介紹在Singularity中的系統(tǒng)配置的實(shí)現(xiàn)方案,主要讓學(xué)生理解何為操作系統(tǒng)配置的一致性,要達(dá)到這種一致性需要怎樣做。通過分析Singularity的代碼抽象層和全局配置模塊幫助學(xué)生解決這些問題。
  在安全管理部分,著眼于操作系統(tǒng)自身的安全,講授操作系統(tǒng)執(zhí)行自身正常的操作應(yīng)該能夠保持穩(wěn)定性這種理念,讓學(xué)生理解安全性問題的根源在于軟件環(huán)境的復(fù)雜性和當(dāng)前操作系統(tǒng)實(shí)現(xiàn)對于執(zhí)行效率的妥協(xié),進(jìn)一步分析MSIL抽象映射層對系統(tǒng)安全性的重要作用。
  增加程序運(yùn)行的內(nèi)在機(jī)理部分類容的講授,分析Windows系統(tǒng)的程序運(yùn)行方式,解釋動(dòng)態(tài)鏈接庫的工作原理,并分析由于程序的動(dòng)態(tài)加載組件或程序段所帶來的風(fēng)險(xiǎn),講解Singularity系統(tǒng)在程序運(yùn)行控制方面的機(jī)制。
  2.2 實(shí)驗(yàn)內(nèi)容的改進(jìn)
  本系的操作系統(tǒng)課程有相應(yīng)的實(shí)驗(yàn)內(nèi)容,由于理論教學(xué)中增加了Singularity的內(nèi)容,同時(shí)考慮到Singularity有良好的編程界面和技術(shù)文檔支持,我們嘗試把整個(gè)操作系統(tǒng)的實(shí)驗(yàn)遷移動(dòng)Singularity系統(tǒng)上進(jìn)行。我們設(shè)置如下的實(shí)驗(yàn)。
  1) Singularity基礎(chǔ)實(shí)驗(yàn)。
  讓學(xué)生熟悉Singularity項(xiàng)目的基本結(jié)構(gòu),安裝系統(tǒng)開發(fā)包和查閱技術(shù)文檔的方法。
  2) 進(jìn)程間基于消息的通信實(shí)驗(yàn)。
  實(shí)現(xiàn)channel方式的進(jìn)程間通信實(shí)驗(yàn),讓學(xué)生掌握Singularity的進(jìn)程間數(shù)據(jù)交換機(jī)制。
  3) 進(jìn)程數(shù)據(jù)空間的獨(dú)立性驗(yàn)證實(shí)驗(yàn)。
  設(shè)計(jì)特定的具有交叉數(shù)據(jù)空間訪問行為的實(shí)驗(yàn)程序,以驗(yàn)證操作系統(tǒng)對于進(jìn)程數(shù)據(jù)空間的獨(dú)立性有完整的保護(hù)能力。
  4) 處理機(jī)調(diào)度算法實(shí)驗(yàn)。
  在Singularity SDK框架中實(shí)現(xiàn)經(jīng)典的處理機(jī)調(diào)度算法,并編寫基于泊松分布的概率程序進(jìn)行驗(yàn)證。
  5) 簡單文件系統(tǒng)實(shí)驗(yàn)。
  參照DOS系統(tǒng)的FAT文件系統(tǒng),利用SDK所提供的功能實(shí)現(xiàn)一個(gè)簡單的基于哈希表的文件系統(tǒng)。
  6) MSIL抽象層實(shí)驗(yàn)。
  通過SDK的接口方法展示把一個(gè)第三方編寫的程序映射到操作系統(tǒng)抽象指令集的完整過程。
  7) 操作系統(tǒng)命名空間實(shí)驗(yàn).
  在Singularity系統(tǒng)的開發(fā)框架中,我們在實(shí)驗(yàn)學(xué)時(shí)不變的情況下,大大擴(kuò)充了操作系統(tǒng)的實(shí)驗(yàn)內(nèi)容,原因在于Singularity提供了一個(gè)功能完善的SDK[8],學(xué)生在該框架中可以專注于只與操作系統(tǒng)核心相關(guān)的代碼的編寫,且這些代碼都是以C#和XML為基礎(chǔ)的,適合于實(shí)驗(yàn)教學(xué)。在以往的實(shí)驗(yàn)中,均使用C++語言進(jìn)行實(shí)驗(yàn),學(xué)生需要花費(fèi)較多的精力編寫一些與核心不相關(guān)的框架性代碼,限制了實(shí)驗(yàn)的規(guī)模和深度。
  3 結(jié)語
  操作系統(tǒng)課程是高等院校計(jì)算機(jī)相關(guān)專業(yè)的重要教學(xué)內(nèi)容,但傳統(tǒng)的基于五大管理的操作系統(tǒng)理論教學(xué)已不能很好地適應(yīng)當(dāng)前操作系統(tǒng)的發(fā)展趨勢,更難以回答復(fù)雜軟件與網(wǎng)絡(luò)環(huán)境下所出現(xiàn)的一系列操作系統(tǒng)應(yīng)用上的問題。教學(xué)實(shí)踐表明,引入Singularity到操作系統(tǒng)教學(xué)和實(shí)驗(yàn)中,提高了學(xué)生的學(xué)習(xí)興趣,有一定的教學(xué)效果。
  
  參考文獻(xiàn):
  [1] Martin Abadi. Access control in a world of software diversity[C]//Proceedings of the 10th conference on Hot Topics in Operating Syst

稷山县| 沾益县| 青河县| 新沂市| 静海县| 阳东县| 苏尼特左旗| 淮北市| 米脂县| 阿拉善左旗| 贡觉县| 云霄县| 炉霍县| 华亭县| 海城市| 饶阳县| 正定县| 井陉县| 马边| 临夏市| 柳江县| 云梦县| 喀喇沁旗| 肇州县| 车致| 林周县| 鹰潭市| 巴马| 梓潼县| 高碑店市| 尼木县| 二连浩特市| 三原县| 滨海县| 衡东县| 府谷县| 中阳县| 长岛县| 德保县| 高青县| 广灵县|