nachos系統(tǒng)管理與調(diào)度分析課程設計說明書_第1頁
nachos系統(tǒng)管理與調(diào)度分析課程設計說明書_第2頁
nachos系統(tǒng)管理與調(diào)度分析課程設計說明書_第3頁
nachos系統(tǒng)管理與調(diào)度分析課程設計說明書_第4頁
nachos系統(tǒng)管理與調(diào)度分析課程設計說明書_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、;.操作系統(tǒng)課程設計基于NachOS的課程設計 .;.目錄一、背景知識11、1 Nachos的介紹11、2 Nachos的目錄結(jié)構(gòu)21、3 線程基礎知識3二、設計要求和目的42、1 Nachos的線程管理模塊42、2 Nachos的線程線程調(diào)度算法分析42、3 編程語言選擇對比52、4 開發(fā)環(huán)境配置62、5 NachOS 系統(tǒng)和交叉編譯器安裝62、5、1 NachOS 系統(tǒng)安裝62、5、2 交叉編譯器環(huán)境的安裝7三、 設計思路和程序結(jié)構(gòu)83、1 線程的生成和狀態(tài)轉(zhuǎn)換83、1、1 基于五狀態(tài)模型83、1、2 線程創(chuàng)建過程83、2 線程調(diào)度機制8四、 關(guān)鍵代碼分析94、1 擴充線程管理94、2 擴

2、充線程調(diào)度機制104、3 擴充線程調(diào)度機制改進124、3、1 信號量機制124、3、2 實現(xiàn)用戶更改進程優(yōu)先級13五、 測試135、1 測試NachOS 環(huán)境和交叉編譯器135、2 測試創(chuàng)建線程145、3 測試線程優(yōu)先級15六、 總結(jié)15.一、背景知識1、1 Nachos的介紹Nachos的全稱是“Not Another Completely Heuristic Operating System”,是一個可修改和跟蹤的操作系統(tǒng)教學軟件。它給出了一個支持多線程和虛擬存儲的操作系統(tǒng)骨架,可讓學生在較短的時間內(nèi)對操作系統(tǒng)中的基本原理和核心算法有一個全面和完整的了解。NachOS 提供了可重復的調(diào)試環(huán)

3、境和模擬操作系統(tǒng)及底層硬件。目的是為學習者展示真實的操作系統(tǒng)運行時的環(huán)境,這個簡單的操作系統(tǒng)軟件可以讓學習者在較短的時間內(nèi)理解并能夠用自己的想法來完善它。免費的開源開發(fā)包可通過網(wǎng)絡下載,通常包括以下幾部分:1) NachOS 概述2) 簡單可運行的操作系統(tǒng)代碼3) 模擬器個人電腦或工作站4) 任務樣本:任務說明和現(xiàn)代操作系統(tǒng)涉及的所有項,包括線程和并發(fā),多道程序,系統(tǒng)調(diào)用,虛擬內(nèi)存管理,文件系統(tǒng)管理,網(wǎng)絡協(xié)議,遠程過程調(diào)用和分布式系統(tǒng)。5) C+ 編程索引(NachOS 是C+ 子集編程,簡單易學。這個索引將對C 語言程序員有所幫助)Nachos操作系統(tǒng)本身只提供了一套框架,很多地方的實現(xiàn)都需

4、要我們自己來完善,因此我們可以通過修改其源代碼,來豐富和增強Nachos操作系統(tǒng)的功能.更可以在完善這些功能的同時,了解操作系統(tǒng)的內(nèi)部運行機制.Nachos 模擬了MIPS R2/3000的指令集、主存、中斷系統(tǒng)、網(wǎng)絡以及磁盤系統(tǒng)等操作系統(tǒng)所必須的硬件系統(tǒng)。用軟件模擬硬件的可靠性比真實硬件高得多,不會因為硬件故障而導致系統(tǒng)出錯,便于調(diào)試。虛擬機可以在運行時報告詳盡的出錯信息,更重要的是采用虛擬機使Nachos的移植變得非常容易,在不同機器上移植Nachos,只需對虛擬機部分作移植即可。MIPS R2/3000的指令集的優(yōu)勢:RISC指令集,指令書目少,Nachos 模擬其中的63條。編譯器:G

5、CC 可直接將C/C+源程序編譯成該指令集的目標代碼,而不必重寫編譯器。Nachos 是一個在宿主機上運行的進程,采用雙CPU,即一個宿主CPU,一個虛擬機CPU,不確定性是操作系統(tǒng)所必須具有的特征,而Nachos 采用隨機因子模擬真實操作系統(tǒng)的不確定性,使系統(tǒng)運行更加真實。Nachos 是一個可擴展的操作系統(tǒng),可發(fā)揮自己的創(chuàng)造性進行擴展。Nachos 限制:只有一級索引結(jié)構(gòu)限制了系統(tǒng)中最大文件的大小。Nachos 可以用面向?qū)ο蟮乃枷雽崿F(xiàn),面向?qū)ο蟮姆椒芮宄拿枋霾僮飨到y(tǒng)的各個部分的接口,但是又沒有全面的運用到面向?qū)ο蟮男再|(zhì),例如繼承性、多態(tài)性,這使得代碼更易讀和理解。Nachos 分五個

6、功能模塊:機器模擬、線程管理、文件系統(tǒng)管理、用戶程序和虛擬存儲以及網(wǎng)絡系統(tǒng)。 由于Nachos開發(fā)沒有針對windows平臺的移植,Nachos 需要在虛擬機上實現(xiàn),所以需要首先實現(xiàn)創(chuàng)建虛擬機,創(chuàng)建linux 虛擬機來實現(xiàn)nachos代碼的編譯運行。Nachos 運行時更像一個進程,但是它是完全按照操作系統(tǒng)思想開發(fā)的操作系統(tǒng)內(nèi)核,具有完整的操作系統(tǒng)結(jié)構(gòu)。 Nachos 系統(tǒng)結(jié)構(gòu),作為一個簡單的系統(tǒng)編程,網(wǎng)絡協(xié)議和文件系統(tǒng)只需夠用即可,這里主要設計線程管理和虛擬內(nèi)存,在設計時虛擬內(nèi)存可以暫時不要考慮。而其他的則可以由現(xiàn)有系統(tǒng)提供,為此,線程管理為主要任務。1、2 Nachos的目錄結(jié)構(gòu)copyr

7、ight 文件 Nachos 的版權(quán)信息readme 文件 Nachos 的readme 信息nachos.ps 文件 Nachos 的介紹文檔(Postscript 格式)c+example 目錄 有關(guān)C+介紹和實例doc 目錄 Nachos 各個部分介紹和原有的作業(yè)要求code 目錄 Nachos 各個部分的源代碼最主要的Nachos 的源代碼部分MakefileMakefile.depNachos 的Makefile 文件,當Nachos 需要移植到其它系統(tǒng)時,可以修改Makefile.dep 中的HOST 參數(shù)machine 目錄 Nachos 虛擬機模擬部分源代碼threads 目錄

8、 Nachos 線程管理部分源代碼filesys 目錄 Nachos 文件系統(tǒng)管理部分源代碼userprog 目錄 Nachos 用戶程序部分源代碼network 目錄 Nachos 網(wǎng)絡管理部分源代碼vm 目錄 Nachos 虛擬內(nèi)存管理部分源代碼test 目錄 一些測試用應用程序bin 目錄 包含有用戶程序目標碼變換的程序1、3 線程基礎知識線程基本概念:是進程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創(chuàng)建和撤消另一個線程,同一進程中的多個線程之間可以并發(fā)執(zhí)行

9、。由于線程之間的相互制約,致使線程在運行中呈現(xiàn)出間斷性。線程狀態(tài):就緒、阻塞和運行三種基本狀態(tài)。 線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不同的工作,稱為多線程. 線程和進程的區(qū)別在于,子進程和父進程有不同的代碼和數(shù)據(jù)空間,而多個線程則共享數(shù)據(jù)空間,每個線程有自己的執(zhí)行堆棧和程序計數(shù)器為其執(zhí)行上下文.多線程主要是為了節(jié)約CPU時間,發(fā)揮利用,根據(jù)具體情況而定. 線程的運行中需要使用計算機的內(nèi)存資源和CPU線程的周期 新建 就緒 運行 阻塞 死亡線程調(diào)度與優(yōu)先級 有線程進入了就緒狀態(tài),需要有線程調(diào)度程序來決定何時執(zhí)行,根據(jù)優(yōu)先級來調(diào)度.線程組 每個線程都是一個線程組的

10、一個成員,線程組把多個線程集成一個對象,通過線程組可以同時對其中的多個線程進行操作.在生成線程時必須將線程放在指定的線程組,也可以放在缺省的線程組中,缺省的就是生成該線程的線程所在的線程組.一旦一個線程加入了某個線程組,不能被移出這個組.進程和線程的關(guān)系在引入線程機制后,進程不再是單一的動態(tài)實體,而是由兩部分組成:􀁺 各線程活動的環(huán)境,包括:統(tǒng)一的地址控件、全局變量、打開文件和計時器等。􀁺 若干個線程,它們是進程中的活動部分,也是處理機的調(diào)度單位,而進程不再是處理機的最小調(diào)度單位。一個進程中的所有線程在同一地址空間中活動,共享該地址空間中的全局變量,共享打開

11、文件和計時器等。它們總是相互協(xié)作,各自承擔一個作業(yè)中的某個部分。與傳統(tǒng)的進程相似,線程具有狀態(tài)的變化。通常,這些狀態(tài)是:運行、阻塞、就緒或終止。二、設計要求和目的Nachos的運宿主機通過軟件模擬了各種硬件系統(tǒng),包括中斷系統(tǒng)、存儲系統(tǒng)、磁盤文件行必須借助于、網(wǎng)絡等。它的運行是可以跟蹤的,因此,我們可以一步一步的觀察操作系統(tǒng)是如何運行的.對于線程的管理,主要涉及到線程的擴充、nachos線程的調(diào)度機制和線程優(yōu)先級。2、1 Nachos的線程管理模塊Nachos平臺所使用的是非搶占式調(diào)度,線程一旦占用CPU,就會一直運行到結(jié)束或者被阻塞(等待I/O事件);Nachos平臺中的線程數(shù)據(jù)結(jié)構(gòu)定義非常簡

12、單,并無用戶ID、線程ID等數(shù)據(jù)成員,也就是說,無法基于線程的ID來實現(xiàn)通信、同步互斥等機制。Nachos平臺中并無全局性的線程管理機制,并未限制線程的數(shù)目,也無法了解有多少線程存在。通過修改Nachos系統(tǒng)平臺的底層源代碼來實現(xiàn)以下目標:1.擴充線程數(shù)據(jù)結(jié)構(gòu)。增加“用戶ID、線程ID”兩個數(shù)據(jù)成員,同時在Nachos現(xiàn)有的線程管理機制中增加對這兩個數(shù)據(jù)成員的維護機制。2.擴展現(xiàn)有的線程狀態(tài)。Nachos平臺中的線程狀態(tài)只有“初啟態(tài)”、“就緒態(tài)”、“阻塞態(tài)”、“運行態(tài)”四種情況。請增加“掛起(suspending)”這個狀態(tài),所謂“掛起”是指當前的線程映象保存在磁盤文件而不是內(nèi)存中?!皰炱稹睜?/p>

13、態(tài)是未來實現(xiàn)“虛擬內(nèi)存管理”的重要基礎。3.修改線程調(diào)度算法。將Nachos平臺的線程管理機制調(diào)整為“搶占式”。具體可選擇“時間片輪轉(zhuǎn)”、“優(yōu)先級調(diào)度”、“多級隊列”等不同的調(diào)度算法。4.增加全局性的線程管理機制。擴充Nachos平臺的現(xiàn)有操作命令,例如可以增加一個名為“ThreadView”的命令,執(zhí)行該命令,可以在屏幕上顯示目前所有存在的線程信息,包括“用戶ID“、“線程ID”、“當前狀態(tài)”等。5.實現(xiàn)一個同步與互斥的例子。在完成以上修改后,可編寫一個實例程序,來實現(xiàn)某個“同步互斥”經(jīng)典問題的正確解法。例如可選擇“哲學家就餐”問題,實例程序會創(chuàng)建5個哲學家線程,這些線程擁有同樣的用戶ID,

14、可以遵循“信號量”機制來正確的運行。也可以選擇“生產(chǎn)者消費者”問題等其他經(jīng)典IPC問題。2、2 Nachos的線程線程調(diào)度算法分析Nachos平臺所使用的是非搶占式調(diào)度,線程一旦占用CPU,就會一直運行到結(jié)束或者被阻塞(等待I/O事件);Nachos平臺中的線程數(shù)據(jù)結(jié)構(gòu)定義非常簡單,并無用戶ID、線程ID等數(shù)據(jù)成員,也就是說,無法基于線程的ID來實現(xiàn)通信、同步互斥等機制。Nachos平臺中并無全局性的線程管理機制,并未限制線程的數(shù)目,也無法了解有多少線程存在。Sysdep模塊實現(xiàn)機制分析:sysdep.cc sysdep.h屏蔽OS間的系統(tǒng)調(diào)用或函數(shù)調(diào)用在形式和內(nèi)容上可能有的細微差別中斷處理模

15、塊實現(xiàn)機制分析:interrupt.cc .h模擬底層中斷機制時鐘中斷、磁盤中斷、終端讀/寫中斷、網(wǎng)絡接收/發(fā)送中斷時鐘中斷模塊實現(xiàn)機制分析:timer.cc .h模擬時鐘中斷,在nachos指定線程隨機切換時啟動時鐘中斷,在每次的時鐘中斷處理的最后加入線程的切換終端設備模塊實現(xiàn)機制分析:console.cc .h模擬終端輸入和輸出,鍵盤的輸入和顯示輸出,異步,當發(fā)出終端的輸入輸出請求后系統(tǒng)即返回,需要等待中斷發(fā)生后才是真正完成了整個過程。磁盤設備模塊實現(xiàn)機制分析:disk.cc .h模擬物理磁盤,nachos用宿主機種的一個文件模擬單面物理磁盤,異步工具模塊:list.cc .h utili

16、ty.cc .h定義鏈表結(jié)構(gòu)及操作線程啟動和調(diào)度模塊:switch.s switch.h線程定義模塊:thread.cc .h線程調(diào)度算法模塊:scheduler.cc .hnachos主控模塊:main.cc system.cc system.hnachos系統(tǒng)入口,分析nachos命令行參數(shù),根據(jù)不同的選項進行不同功能的初始化設置同步磁盤:文件synchdisk.cc .h文件系統(tǒng)模塊:filesys.cc .h模擬創(chuàng)建文件、刪除文件、打開文件操作文件頭模塊:文件filehdr.cc .h打開文件結(jié)構(gòu):文件openfile.cc .h目錄模塊:directory.cc .hmachine.

17、h:包含了內(nèi)存的相關(guān)定義machine.cc:包含了對內(nèi)存和頁表的初始化translate.h:定義了頁表結(jié)構(gòu)translate.cc:包含了地址轉(zhuǎn)換的實現(xiàn)以及讀、寫內(nèi)存的操作address.cc:包含了用戶程序頁表的操作2、3 編程語言選擇對比Java編程的優(yōu)勢:1.簡單,面向?qū)ο?,穩(wěn)定,跨平臺,多線程,動態(tài) 2.面向?qū)ο蠡趯ο蟮木幊谈先说乃季S模式,更容易編寫程序 3.類運行時動態(tài)加載,使得Java 可以在分布式環(huán)境下動態(tài)的維護程序及類庫,當類庫升級時也不必重新修改、編譯。 缺點:程序速度較慢,不適合做實時性很強的開發(fā)C+編程的優(yōu)勢:1.增加了面向?qū)ο蟮乃枷?,但是又兼具面向過程的方法

18、2兼容C 缺點:指針調(diào)用完成后需要手工釋放內(nèi)存,容易造成內(nèi)存泄露而程序崩潰2、4 開發(fā)環(huán)境配置開發(fā)環(huán)境配置:類型標準配置計算機硬件內(nèi)存 1G ; CPU Core i3 32位軟件Windows 7;ubuntu 10.04交叉編譯器GCC 2.95.4運行環(huán)境配置:類型標準配置計算機硬件內(nèi)存 1G ; CPU Core i3 32位軟件Windows 7;ubuntu 10.04交叉編譯器GCC 2.95.42、5 NachOS 系統(tǒng)和交叉編譯器安裝2、5、1 NachOS 系統(tǒng)安裝ubuntu10.04gcc -v Reading specs from /usr/lib/gcc-lib/i

19、486-linux-gnu/2.95.4/specsgcc version 2.95.4 20011002 (Debian prerelease)1、解壓NachOS-4.1.tgzrootubuntu:$ tar -zxvf NachOS-4.1.gz2、運行make dependrootubuntu:/桌面/NachOS-4.1/code/build.linux# make depend3、運行makerootubuntu:/桌面/NachOS-4.1/code/build.linux# make4、運行nachosrootubuntu:/桌面/NachOS-4.1/code/build.

20、linux# ./nachostests summary: ok:0Machine halting!Ticks: total 10, idle 0, system 10, user 0Disk I/O: reads 0, writes 0Console I/O: reads 0, writes 0Paging: faults 0Network I/O: packets received 0, sent 02、5、2 交叉編譯器環(huán)境的安裝在編譯前直接解壓到local根目錄下1、編譯生成coff2noff工具:運行configre2.運行make生成coff2noff3.編譯test目錄下文件修改

21、test/Makefile.dep中變量cpp和GCCDIR為正確的交叉編譯器路徑rootubuntu:/NachOS-4.1/code/test# vim Makefile.dep4.編譯test目錄中的程序rootubuntu:/NachOS-4.1/code/test# makerootubuntu:/NachOS-4.1/code/test# ls *.noffadd.noff halt.noff open.noff shell.noff write.noffexec.noff matmult.noff read.noff sort.noff5、執(zhí)行NachOS格式文件rootubun

22、tu:/NachOS-4.1/code/build.linux# ./nachos -x ./test/halt.nofftests summary: ok:0Machine halting!Ticks: total 21, idle 0, system 10, user 11Disk I/O: reads 0, writes 0Console I/O: reads 0, writes 0Paging: faults 0Network I/O: packets received 0, sent 03、 設計思路和程序結(jié)構(gòu)3、1 線程的生成和狀態(tài)轉(zhuǎn)換3、1、1 基于五狀態(tài)模型3、1、2 線程創(chuàng)建

23、過程擴充線程管理,使其最多同時存在128個線程,測試創(chuàng)建線程1) 在Thread類中增加靜態(tài)成員變量threadNum表示當前線程的總數(shù)量2) Fork()創(chuàng)建一個線程時,threadNum加1,當線程總數(shù)超過128個線程時,程序終止。并打印終止信息3) 當一個線程終止時threadNum減14) 當系統(tǒng)關(guān)閉時,所有線程都結(jié)束3、2 線程調(diào)度機制當前的NachOS 系統(tǒng)中,線程沒有優(yōu)先級,每次將線程放入到就緒隊列時即是將線程放到隊尾,因此若要改變系統(tǒng)調(diào)用的線程順序則需要確定各線程的優(yōu)先級。擴充線程調(diào)度機制,測試線程數(shù)為3個1) 在Scheduler類中增加一個成員函數(shù),表示線程的優(yōu)先級,增加靜

24、態(tài)的優(yōu)先級調(diào)度2) 在Thread類中增加一個函數(shù)來對就緒隊列中的線程根據(jù)優(yōu)先級進行排序,將優(yōu)先級最高的放到隊首3) 先將線程放入就緒隊列,然后排序,最后從中選擇下一條要執(zhí)行的線程4) 具有優(yōu)先級的線程將不再按照順序執(zhí)行而是根據(jù)線程的優(yōu)先級執(zhí)行4、 關(guān)鍵代碼分析4、1 擴充線程管理code/threads/下的thread.cc和thread.h是線程管理部分的文件代碼修改:Thread.h定義靜態(tài)成員變量threadNum表示線程數(shù)量Thread.cc SelfTest () 測試創(chuàng)建線程4、2 擴充線程調(diào)度機制代碼修改:Scheduler類中添加全局靜態(tài)優(yōu)先級Thread.hThread.

25、cc4、3 擴充線程調(diào)度機制改進4、3、1 信號量機制class Semaphore public:void P();核心操作:/禁止中斷,并保存初始中斷狀態(tài)。因為開始時中斷也可能處于被禁止/狀態(tài),所以操作結(jié)束后要恢復到初始狀態(tài)而不是使能中斷。IntStatus oldLevel = interrupt->SetLevel(IntOff);/當信號量為0時,將當前進程放到等待隊列里面,并設置為睡眠模式,/參數(shù)值為FALSE表示,進程沒有正常結(jié)束而要被掛起。void V();核心操作:/禁止中斷IntStatus oldLevel = interrupt->SetLevel(IntO

26、ff);/如果隊列不為空說明有當前進程因為要臨界資源被別的進程訪問而掛/起,所以V操作首先應將當前進程設置為READY狀態(tài),以繼續(xù)運行并/訪問臨界資源 private:int value; /信號量值 ( >=0)List *queue; /線程等待隊列;信號量的私有屬性有信號量的值,它是一個閥門。線程等待隊列中存放所有等待該信號量的線程。信號量有兩個操作:P操作和V操作,這兩個操作都是原子操作。P操作1. 當value等于0時,1.1. 將當前運行線程放入線程等待隊列。1.2. 當前運行線程進入睡眠狀態(tài),并切換到其它線程運行。2. 當value大于0時,value-。V操作1. 如果線

27、程等待隊列中有等待該信號量的線程,取出其中一個將其設置成就緒態(tài),準備運行。2. value+;4、3、2 實現(xiàn)用戶更改進程優(yōu)先級int SysWrite(char*buffer ,int size,OpenFileId id);int SysRead(char*buffer ,int size,OpenFileId id);SpaceId SysExec(char* exec_name);int SysJoin(SpaceId id);int SysStrncmp(char*buffer,char *str,int n)除此外添加一個處理異常的類Exception.cc相應的需要修改shell

28、類中的代碼,進行測試rootubuntu:/桌面/NachOS-4.1/code/build.linux# ./nachos -x ./test/shell.noff5、 測試5、1 測試NachOS 環(huán)境和交叉編譯器rootubuntu:/桌面/18新/a測試創(chuàng)建線程/NachOS-4.1/code/build.linux# makeg+ -ftemplate-depth-100 -Wno-deprecated -g -Wall -I./network -I./filesys -I./userprog -I./threads -I./machine -I./lib -DFILESYS_STU

29、B -DRDATA -DSIM_FIX -DTUT -Dx86 -DLINUX -DCHANGED -c ./threads/thread.cc./threads/thread.cc: In member function void Thread:SelfTest():./threads/thread.cc:471: warning: deprecated conversion from string constant to char*g+ bitmap.o debug.o libtest.o sysdep.o interrupt.o stats.o timer.o console.o mac

30、hine.o mipssim.o translate.o network.o disk.o alarm.o kernel.o main.o scheduler.o synch.o thread.o addrspace.o exception.o synchconsole.o directory.o filehdr.o filesys.o pbitmap.o openfile.o synchdisk.o post.o switch.o -o nachosrootubuntu:/桌面/18新/a測試創(chuàng)建線程/NachOS-4.1/code/build.linux# ./nachosrootubun

31、tu:/桌面/18新/a測試創(chuàng)建線程/NachOS-4.1/code/build.linux# ./nachos -x ./test/halt.noff5、2 測試創(chuàng)建線程rootubuntu:/桌面/18新/a測試創(chuàng)建線程/NachOS-4.1/code/build.linux# ./nachos -K5、3 測試線程優(yōu)先級rootubuntu:/NachOS-4.1/code/build.linux# ./nachos -K6、 總結(jié)通過這次對nachos線程機制的擴充,較深入理解了操作系統(tǒng)的內(nèi)核中對線程的管理和基本調(diào)度,對線程的4種狀態(tài) 也有了較好的了解和運用。只是這個是線程的基于優(yōu)先級

32、的搶占式調(diào)度是靜態(tài)的,動態(tài)的搶占式線程調(diào)度還沒有很好的實現(xiàn)。本次課程設計主要圍繞nachos線程模塊做了分析,覺得nachos雖小但是它是一個完整的基本的操作系統(tǒng),各個模塊的實現(xiàn)雖然簡單,但是它們之間相互協(xié)作能夠形成一個系統(tǒng),我覺得這就是操作系統(tǒng)的精髓,正如積小流以成江河的道理一樣。真正的做一個操作系統(tǒng),我認為不在于其算法有多優(yōu)秀,而在于其算法有多適用,算法的適用都是因不同的環(huán)境而定的。這次課程設計,我閱讀了不少的代碼,從實踐的角度了解了操作系統(tǒng),我覺得我的收獲很大。操作系統(tǒng)不僅僅是一門理論性很強的課程,我覺得應該更看重它的實用性。有些東西本來是很通俗易懂的,拿到理論的層面上,便變得很枯燥、很

33、難懂。Nachos利用其簡單易懂的設計使我們對課本上的概念有了更深刻的理解。在這次作業(yè)的過程中遇到一些困難,因為自己的電腦是64位的,而能找到的交叉編譯器只有32位的,這對作業(yè)的進度造成很大的影響,因為這只能用同學的電腦做,但是尤其同學也有自己的課程設計要做,因此時間上就顯得少了,最后只實現(xiàn)了少部分的功能。慶幸的是,Code:blocks 10.05在代碼閱讀和調(diào)試中起到了很大的作用,因為其支持代碼的編譯,可以測試NachOS 各部分的實現(xiàn)情況,雖然不能將測試結(jié)果直接輸出,但是間接地給出了各部分是否能實現(xiàn)。這次課程設計應該很大一部分得益于此。對于操作系統(tǒng)的學習,對于我們而言其實是很抽象的,它不像其他課程的學習,雖然在專業(yè)學習的過程中,經(jīng)常與之打交道,但是并不知道它是怎樣實現(xiàn)進程的調(diào)度的,再有一點是我們對硬件也不是很熟悉它們的構(gòu)造。盡管

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論