欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      操作系統(tǒng)調(diào)研報(bào)告

      時(shí)間:2019-05-13 07:37:15下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《操作系統(tǒng)調(diào)研報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《操作系統(tǒng)調(diào)研報(bào)告》。

      第一篇:操作系統(tǒng)調(diào)研報(bào)告

      操作系統(tǒng)調(diào)研報(bào)告

      隨著日常生活的數(shù)字化發(fā)展,計(jì)算機(jī)作成為了工作、學(xué)習(xí)、娛樂(lè)所不可或缺的一部分,而操作系統(tǒng)通過(guò)組織和管理軟硬件資源,使之協(xié)調(diào)一致并高效地完成各種用戶的工作,成為現(xiàn)代電腦必不可少的系統(tǒng)軟件,是電腦的靈魂所在。從設(shè)計(jì)者角度看,操作系統(tǒng)是計(jì)算機(jī)軟硬件資源的管理和控制機(jī)構(gòu),其目的是充分利用軟硬件資源;從用戶角度看,操作為用戶提供了方便簡(jiǎn)單的使用計(jì)算機(jī)的環(huán)境。因此本次關(guān)于操作系統(tǒng)的調(diào)研,我們著眼于操作系統(tǒng)提供的各種接口,通過(guò)分析操作系統(tǒng)提供的各種接口,更深入的了解操作系統(tǒng)的組成,了解操作系統(tǒng)的原理,從而提高我們對(duì)計(jì)算機(jī)這一系統(tǒng)整體上的認(rèn)識(shí),具體的認(rèn)識(shí)、深入的了解計(jì)算機(jī)的工作方式、原理。同時(shí),對(duì)我們以后在使用計(jì)算機(jī)進(jìn)行工作與學(xué)習(xí)時(shí)遇到問(wèn)題快速準(zhǔn)確的解決提供一些幫助。因?yàn)?,操作系統(tǒng)管理了所有的計(jì)算機(jī)資源,一切的應(yīng)用軟件都是運(yùn)行于基礎(chǔ)之上的。

      操作系統(tǒng)提供給用戶的接口,隨著操作系統(tǒng)的發(fā)展逐漸的發(fā)展著。最初,操作系統(tǒng)是沒(méi)有提供圖形化的接口給用戶,那個(gè)時(shí)候使用計(jì)算機(jī)就是一種復(fù)雜而麻煩的事,需要使用者花費(fèi)大量的時(shí)間在學(xué)習(xí)命令及其使用之上,而不是將時(shí)間專注與利用計(jì)算機(jī)以及操作系統(tǒng)這一工具解決其他的問(wèn)題。也因此,在圖形化的界面沒(méi)有出現(xiàn)以前,計(jì)算機(jī)大都應(yīng)用于專業(yè)人群之中,應(yīng)用于對(duì)計(jì)算機(jī)有深入了解的用戶之中。到如今,大家以及很習(xí)慣于通過(guò)圖形化界面,通過(guò)鼠標(biāo)來(lái)使用計(jì)算機(jī)。但,我覺(jué)得對(duì)于命令式的接口,我們還是有必要做一定的了解。同時(shí),操作系統(tǒng)還有另外一種接口,即程序接口。實(shí)際上命令接口與圖形接口的實(shí)現(xiàn)都是依賴于程序接口。顧名思義,程序接口是提供給程序用的。一下分別介紹這三種接口。

      命令接口

      在當(dāng)前幾乎所有的計(jì)算機(jī),包括大、中型機(jī)到微型機(jī)的操作系統(tǒng)都向用戶提供了命令接口,以實(shí)現(xiàn)用戶與計(jì)算機(jī)之間的交互。命令接口可以理解為計(jì)算機(jī)為了與用戶溝通所使用的語(yǔ)言,用戶使用命令接口來(lái)與計(jì)算機(jī)進(jìn)行交互時(shí),首先必須在終端上鍵入正確的操作命令,由終端處理程序接收用戶鍵入的命令,并將它顯示在終端屏幕上。當(dāng)一條命令輸入完成后,操作系統(tǒng)的命令解釋程序?qū)τ脩糨斎氲拿钸M(jìn)行分析,然后執(zhí)行相應(yīng)的命令處理程序。操作系統(tǒng)的命令接口都應(yīng)包括一組命令、終端處理程序和命令解釋程序。其中,命令解釋程序的主要作用是在屏幕上給出提示符,請(qǐng)求用戶輸入命令,然后讀入命令,并識(shí)別命令,再轉(zhuǎn)到相應(yīng)的命令處理程序去執(zhí)行,并將處理結(jié)果送屏幕上顯示。若用戶鍵入的命令有錯(cuò),命令解釋程序未能識(shí)別,或在執(zhí)行過(guò)程中出現(xiàn)錯(cuò)誤,則顯示出錯(cuò)信息。并將處理結(jié)果送屏幕上顯示。

      對(duì)DOS來(lái)說(shuō),命令行程序分為內(nèi)部命令和外部命令,內(nèi)部命令是隨command.com裝入內(nèi)存的,而外部命令是一條一條單獨(dú)的可執(zhí)行文件。內(nèi)部命令都集中在根目錄下的command.com文件里,電腦每次啟動(dòng)時(shí)都會(huì)將這個(gè)文件讀入內(nèi)存,也就是說(shuō)在電腦運(yùn)行時(shí),這些內(nèi)部命令都駐留在內(nèi)存中,用dir命令是看不到這些內(nèi)部命令的。外部命令都是以一個(gè)個(gè)獨(dú)立的文件存放在磁盤上的,它們都是以com和exe為后綴的文件,例如我們常用的一些可執(zhí)行文件,它們并不常駐內(nèi)存,只有在電腦需要時(shí),才會(huì)被調(diào)入內(nèi)存。

      大家比較熟悉的命令解釋程序有MS-DOS/windows 98的command.com,windows 2000/xp/vista/7的cmd.exe以及UNIX/Linux的shell程序。

      圖形接口

      圖形用戶界面或圖形用戶接口(Graphical User Interface,GUI)是指采用圖形方式顯示的計(jì)算機(jī)操作環(huán)境用戶接口。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對(duì)于用戶來(lái)說(shuō)更為簡(jiǎn)便易用。GUI的廣泛應(yīng)用是當(dāng)今計(jì)算機(jī)發(fā)展的重大成就之一,它極大地方便了非專業(yè)用戶的使用人們從此不再需要死記硬背大量的命令,取而代之的是可用用通過(guò)窗口、菜單、按鍵等方式來(lái)方便地進(jìn)行操作。

      圖形接口的組成一般如下:

      桌面:在啟動(dòng)時(shí)顯示,也是界面中最底層,有時(shí)也指代包括窗口、文件瀏覽器在內(nèi)的“桌面環(huán)境”。在桌面上由于可以重疊顯示窗口,因此可以實(shí)現(xiàn)多任務(wù)化。一般的界面中,桌面上放有各種應(yīng)用程序和數(shù)據(jù)的圖標(biāo),用戶可以依此開(kāi)始工作。桌面與既存的文件夾構(gòu)成里面相違背,所以要以特殊位置的文件夾的參照形式來(lái)定義內(nèi)容。

      視窗:應(yīng)用程序?yàn)槭褂脭?shù)據(jù)而在圖形用戶界面中設(shè)置的基本單元。應(yīng)用程序和數(shù)據(jù)在窗口內(nèi)實(shí)現(xiàn)一體化。在窗口中,用戶可以在窗口中操作應(yīng)用程序,進(jìn)行數(shù)據(jù)的管理、生成和編輯。通常在窗口四周設(shè)有菜單、圖標(biāo),數(shù)據(jù)放在中央。

      在窗口中,根據(jù)各種數(shù)據(jù)/應(yīng)用程序的內(nèi)容設(shè)有標(biāo)題欄,一般放在窗口的最上方,并在其中設(shè)有最大化、最小化(隱藏窗口,并非消除數(shù)據(jù))、最前面、縮進(jìn)(僅顯示標(biāo)題欄)等動(dòng)作按鈕,可以簡(jiǎn)單地對(duì)窗口進(jìn)行操作。

      單一文件界面(Single Document Interface)

      在窗口中,一個(gè)數(shù)據(jù)在一個(gè)窗口內(nèi)完成的方式。在這種情況下,數(shù)據(jù)和顯示窗口的數(shù)量是一樣的。若要在其他應(yīng)用程序的窗口使用數(shù)據(jù),將相應(yīng)生成新的窗口。因此窗口數(shù)量多,管理復(fù)雜。

      多文件界面(Multiple Document Interface)

      在一個(gè)窗口之內(nèi)進(jìn)行多個(gè)數(shù)據(jù)管理的方式。這種情況下,窗口的管理簡(jiǎn)單化,但是操作變?yōu)殡p重管理。

      標(biāo)簽:多文件界面的數(shù)據(jù)管理方式中使用的一種界面,將數(shù)據(jù)的標(biāo)題在窗口中并排,通過(guò)選擇標(biāo)簽標(biāo)題顯示必要的數(shù)據(jù),這樣使得接入數(shù)據(jù)方式變得更為便捷。

      上述中,多文件界面主要是微軟視窗系統(tǒng)采用。而在其他環(huán)境中,通常多是單文件界面,所以無(wú)所謂單一/多文件界面的稱呼問(wèn)題。

      菜單:將系統(tǒng)可以執(zhí)行的命令以階層的方式顯示出來(lái)的一個(gè)界面。一般置于畫(huà)面的最上方或者最下方,應(yīng)用程序能使用的所有命令幾乎全部都能放入。重要程度一般是從左到右,越往右重要度越低。命定的層次根據(jù)應(yīng)用程序的不同而不同,一般重視文件的操作、編輯功能,因此放在最左邊,然后往右有各種設(shè)置等操作,最右邊往往設(shè)有幫助。一般使用鼠標(biāo)的第一按鈕進(jìn)行操作。

      即時(shí)菜單:與應(yīng)用程序準(zhǔn)備好的層次菜單不同,在菜單欄以外的地方,通過(guò)鼠標(biāo)的第二按鈕調(diào)出的菜單稱為“即時(shí)菜單”。根據(jù)調(diào)出位置的不同,菜單內(nèi)容即時(shí)變化,列出所指示的對(duì)象目前可以進(jìn)行的操作。

      圖標(biāo):顯示在管理數(shù)據(jù)的應(yīng)用程序中的數(shù)據(jù),或者顯示應(yīng)用程序本身。數(shù)據(jù)管理程序,即在文件夾中用戶數(shù)據(jù)的管理、進(jìn)行特定數(shù)據(jù)管理的程序的情況下,數(shù)據(jù)通過(guò)圖標(biāo)顯示出來(lái)。通常情況下顯示的是數(shù)據(jù)的內(nèi)容或者與數(shù)據(jù)相關(guān)聯(lián)的應(yīng)用程序的圖案。另外,點(diǎn)擊數(shù)據(jù)的圖標(biāo),一般可以之間完成啟動(dòng)相關(guān)應(yīng)用程序以后再顯示數(shù)據(jù)本身這兩個(gè)步驟的工作。應(yīng)用程序的圖標(biāo)只能用于啟動(dòng)應(yīng)用程序。

      按鈕:菜單中,利用程度高的命令用圖形表示出來(lái),配置在應(yīng)用程序中,成為按鈕。應(yīng)用程序中的按鈕,通常可以代替菜單。一些使用程度高的命令,不必通過(guò)菜單一層層

      翻動(dòng)才能調(diào)出,極大提高了工作效率。但是,各種用戶使用的命令頻率是不一樣的,因此這種配置一般都是可以由用戶自定義編輯。

      回收站:為了實(shí)現(xiàn)文件刪除的“假安全“功能而設(shè)置了”回收站“(垃圾桶)功能。在文件刪除的時(shí)候,暫時(shí)將其移動(dòng)到系統(tǒng)特定的地方,一旦用戶發(fā)現(xiàn)刪除錯(cuò)誤,還可以將其找回,從而實(shí)現(xiàn)防止錯(cuò)誤刪除的目的。在麥金塔系統(tǒng)中,垃圾桶不僅可以刪除文件,還可以進(jìn)行各種各樣對(duì)象的刪除功能,如將可移動(dòng)硬盤從系統(tǒng)中移出,將光盤從光驅(qū)中取出等等。

      應(yīng)用程序啟動(dòng)器:從圖形界面上啟動(dòng)應(yīng)用程序有很多方式,有好幾種操作系統(tǒng)都采用菜單形式的程序啟動(dòng)器。NEXTSTEP和Mac OS X中有一種稱為dock的操作面板型的工具,可以存放各種文件和應(yīng)用程序的信息,并通過(guò)鼠標(biāo)點(diǎn)擊調(diào)出。

      圖形用戶界面的任務(wù)管理

      在圖形用戶界面中,用戶操作是以窗口為單位的。除了MDI和Mac OS以外,大多都是“窗口數(shù)量=任務(wù)數(shù)量”。因此在看整體界面的時(shí)候,怎樣進(jìn)行任務(wù)管理是很重要的。Windows等操作系統(tǒng)中,最常用的方式是在桌面上設(shè)置一個(gè)棒狀的”任務(wù)欄“,放置各種窗口的圖標(biāo)和標(biāo)題,確保系統(tǒng)的可操作性和可視性,方便對(duì)窗口進(jìn)行管理。其他的方法包括,在桌面上的菜單中添加各個(gè)窗口管理菜單,在桌面上顯示任務(wù)的圖標(biāo),用虛擬桌面的方式表面增加桌面的數(shù)量等等。在Mac OS X系統(tǒng)中使用Dock進(jìn)行任務(wù)管理,但是還有Exposé進(jìn)行窗口一覽顯示模式的功能。

      指針設(shè)備的操作:圖形用戶界面的基本操作是,用指針設(shè)備(一般是鼠標(biāo))進(jìn)行指示操作,然后使用設(shè)備上的按鈕(通常為兩到三個(gè))進(jìn)行動(dòng)作的激活。因此”位置“和”指示“都非常明了,從而實(shí)現(xiàn)可視操作。

      指示的內(nèi)容根據(jù)位置而不同。在數(shù)據(jù)管理應(yīng)用程序中,第一按鈕進(jìn)行指針?biāo)谖恢脭?shù)據(jù)的選擇,而兩次連續(xù)按鈕(所謂“雙擊”)可以調(diào)出預(yù)制的應(yīng)用程序開(kāi)始處理數(shù)據(jù)。第二按鈕通常用來(lái)顯示即時(shí)菜單。第二按鈕調(diào)出的菜單可以再用第一按鈕進(jìn)行選擇打操作。第三按鈕在X Window System中比較常用。另外,最近四鍵、五鍵鼠標(biāo)相繼問(wèn)世,各個(gè)按鈕可以在操作系統(tǒng)中進(jìn)行動(dòng)作定義。

      程序接口

      程序接口即應(yīng)用編程接口,應(yīng)用編程接口允許應(yīng)用程序調(diào)用操作系統(tǒng)的服務(wù)和功能。程序接口由一組系統(tǒng)調(diào)用組成,用戶程序使用“系統(tǒng)調(diào)用”就可獲得操作系統(tǒng)的底層服務(wù),使用或訪問(wèn)系統(tǒng)的各種軟硬件資源從某種角度上看,進(jìn)行系統(tǒng)調(diào)用就象進(jìn)行一個(gè)特殊的過(guò)程調(diào)用。但是,系統(tǒng)調(diào)用的實(shí)現(xiàn)與一般的過(guò)程調(diào)用的實(shí)現(xiàn)相比,兩者間有很大的差異。系統(tǒng)調(diào)用可以進(jìn)入操作系統(tǒng)內(nèi)核,而過(guò)程調(diào)用則不能進(jìn)入操作系統(tǒng)的內(nèi)核。對(duì)于系統(tǒng)調(diào)用,控制是由原來(lái)的用戶態(tài)轉(zhuǎn)換為系統(tǒng)態(tài),這是借助于中斷和陷入機(jī)制來(lái)完成的,在該機(jī)制中包括中斷和陷入硬件機(jī)構(gòu)和中斷和陷入處理程序兩部分系統(tǒng)調(diào)用的格式隨計(jì)算機(jī)的不同而不同,但對(duì)任何不同的計(jì)算機(jī)都有以下共同的特點(diǎn):

      (1)每個(gè)系統(tǒng)調(diào)用對(duì)應(yīng)一個(gè)功能號(hào),要調(diào)用操作系統(tǒng)的某一特定例程,必須在指令中給出對(duì)應(yīng)的功能號(hào)。

      (2)按功能號(hào)實(shí)現(xiàn)調(diào)用的過(guò)程大體相同,即都是通過(guò)對(duì)功能號(hào)的解釋分別轉(zhuǎn)入對(duì)應(yīng)例行子程序。

      對(duì)于程序接口,主要是提供給程序調(diào)用的。一般用戶不會(huì)接觸到。

      第二篇:實(shí)時(shí)操作系統(tǒng)報(bào)告

      實(shí)時(shí)操作系統(tǒng)課程實(shí)驗(yàn)報(bào)告

      專業(yè):通信1001 學(xué)號(hào):3100601025 姓名:陳治州

      完成時(shí)間:2013年6月11日

      實(shí)驗(yàn) 簡(jiǎn)易電飯煲的模擬

      一.實(shí)驗(yàn)?zāi)康模?/p>

      掌握在基于嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II的應(yīng)用中,基于多任務(wù)的模式的編程方法。鍛煉綜合應(yīng)用多任務(wù)機(jī)制,任務(wù)間的通信機(jī)制,內(nèi)存管理等的能力。

      二.實(shí)驗(yàn)要求:

      1.按“S”開(kāi)機(jī),系統(tǒng)進(jìn)入待機(jī)狀態(tài),時(shí)間區(qū)域顯示當(dāng)前北京時(shí)間,默認(rèn)模式“煮飯”;2.按“C”選擇模式,即在“煮飯”、“煮粥”和“煮面”模式中循環(huán)選擇;

      3.按“B”開(kāi)始執(zhí)行模式命令,“開(kāi)始”狀態(tài)選中,時(shí)間區(qū)域開(kāi)始倒計(jì)時(shí),倒計(jì)時(shí)完成后進(jìn)入“保溫”狀態(tài),同時(shí)該狀態(tài)顯示選中,時(shí)間區(qū)域顯示保溫時(shí)間;

      4.按“Q”取消當(dāng)前工作狀態(tài),系統(tǒng)進(jìn)入待機(jī)狀態(tài),時(shí)間區(qū)域顯示北京時(shí)間,模式為當(dāng)前模式;

      5.按“X”退出系統(tǒng),時(shí)間區(qū)域不顯示。

      6.煮飯時(shí)長(zhǎng)為30,煮粥時(shí)長(zhǎng)為50,煮面時(shí)長(zhǎng)為40.三.實(shí)驗(yàn)設(shè)計(jì):

      1.設(shè)計(jì)思路:

      以老師所給的五個(gè)程序?yàn)榛A(chǔ),看懂每個(gè)實(shí)驗(yàn)之后,對(duì)borlandc的操作有了大概的認(rèn)識(shí),重點(diǎn)以第五個(gè)實(shí)驗(yàn)Task_EX為框架,利用其中界面顯示與按鍵掃描以及做出相應(yīng)的響應(yīng),對(duì)應(yīng)實(shí)現(xiàn)此次實(shí)驗(yàn)所需要的功能。

      本次實(shí)驗(yàn)分為界面顯示、按鍵查詢與響應(yīng)、切換功能、時(shí)鐘顯示與倒計(jì)時(shí)模塊,綜合在一起實(shí)驗(yàn)所需功能。2.模塊劃分圖:(1)界面顯示:

      Main()Taskstart()Taskstartdispinit()在TaskStartDispInit()函數(shù)中,使用PC_DispStr()函數(shù)畫(huà)出界面。(2)按鍵查詢與響應(yīng):

      Main()Taskstart()在TaskStart()函數(shù)中,用if(PC_GetKey(&key)== TRUE)判斷是否有按鍵輸入。然后根據(jù)key的值,判斷輸入的按鍵是哪一個(gè);在響應(yīng)中用switch語(yǔ)句來(lái)執(zhí)行對(duì)應(yīng)按鍵的響應(yīng)。(3)切換功能:

      l計(jì)數(shù)“C”按鍵的次數(shù)M=l%3Switch(m)M=0,1,2對(duì)應(yīng)于煮飯,煮粥,煮面,然后使用PC_DispStr()函數(shù)在選擇的選項(xiàng)前畫(huà)上“@”指示,同時(shí),在其余兩項(xiàng)錢畫(huà)上“ ”以“擦出”之前畫(huà)下的“@”,注意l自增。

      四.主要代碼:

      #include “stdio.h” #include “includes.h” #include “time.h” #include “dos.h” #include “sys/types.h” #include “stdlib.h” #define TASK_STK_SIZE

      512

      #define N_TASKS

      OS_STK

      TaskStk[N_TASKS][TASK_STK_SIZE];

      OS_STK

      TaskStartStk[TASK_STK_SIZE];

      INT8U

      TaskData[N_TASKS];

      void Task0(void *pdata);

      void TaskStart(void *pdata);

      static void TaskStartDispInit(void);

      void main(void){

      PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);

      OSInit();

      PC_DOSSaveReturn();

      PC_VectSet(uCOS, OSCtxSw);

      OSTaskCreate(TaskStart,(void *)0, &TaskStartStk[TASK_STK_SIZE-1], 4);

      OSStart();

      } void TaskStart(void *pdata){ #if OS_CRITICAL_METHOD == 3

      OS_CPU_SR cpu_sr;#endif

      INT8U l,m;

      INT16S key;

      l=0;

      pdata = pdata;

      TaskStartDispInit();

      OS_ENTER_CRITICAL();

      PC_VectSet(0x08, OSTickISR);

      PC_SetTickRate(OS_TICKS_PER_SEC);

      OS_EXIT_CRITICAL();

      OSStatInit();

      for(;;){

      if(PC_GetKey(&key)== TRUE)

      {

      switch(key)

      {

      case 0x1B:

      PC_DOSReturn();

      break;

      case 0x43:

      { m=(l%3);

      switch(m)

      { case 0: {

      PC_DispStr(26,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

      PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;

      case 1: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

      PC_DispStr(40,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

      PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;case 2: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

      PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);}

      break;}

      l++;} break;

      } } OSCtxSwCtr = 0;

      OSTimeDlyHMSM(0, 0, 1, 0);

      } } static void TaskStartDispInit(void){ PC_DispStr(0, 0, “

      uC/OS-II, The Real-Time Kernel

      ”, DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);PC_DispStr(0, 1, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 2, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 3, “

      dianfanbao shiyan

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 4, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 5, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 6, “

      kai shi.zhu fan.zhu zhou.zhu mian.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 7, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 8, “

      bao wen.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 9, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 10, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 11, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 12, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 13, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 14, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 15, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 16, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 17, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 18, “

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 19, “ 'S':kai ji.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 20, “ 'C':mo shi qie huan.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 21, “ 'B':kai shi zhi xin.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 22, “ 'Q':qu xiao dang qian gong zuo zhuang tai.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 23, “ 'X':tui chu xi tong.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);

      PC_DispStr(0, 24, “

      <-PRESS 'ESC' TO QUIT->

      ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);}

      五.運(yùn)行界面:

      (1)主界面:

      (2)顯示北京時(shí)間:

      (3)模式切換:

      (4)倒計(jì)時(shí):

      (5)保溫執(zhí)行時(shí)間:

      六.總結(jié):

      本次實(shí)驗(yàn)主要以老師所給的實(shí)驗(yàn)事例為基礎(chǔ),并結(jié)合老師課堂講的內(nèi)容,理解編寫(xiě)程序。做實(shí)驗(yàn)本實(shí)驗(yàn)前,先執(zhí)行了一下事例程序,以此了解borlandc的一些基本操作;然后就是看懂每個(gè)實(shí)驗(yàn)的框架和主要部分;接著,將事例程序中的部分思想運(yùn)用到本次實(shí)驗(yàn)中,其中以顯示界面的思想運(yùn)用的最多;除此以外,在模式切換上花了最大的精力,最終的解決方法是以變量l作為一個(gè)計(jì)數(shù)值,并運(yùn)用switch語(yǔ)句在選擇的模式上畫(huà)上“@”,同時(shí)還得注意在未選擇的模式上畫(huà)上空格來(lái)“擦除”之前畫(huà)上的@;在查詢按鍵上,同樣運(yùn)用switch語(yǔ)句......這次實(shí)驗(yàn)收獲不少,不僅對(duì)之前學(xué)的C語(yǔ)言有了更進(jìn)一步的鞏固,而且還強(qiáng)化了ucos里面的多任務(wù)的一些認(rèn)識(shí);同時(shí),以前對(duì)DOS界面很陌生,但本次實(shí)驗(yàn)使用的正是DOS界面,通過(guò)幾天的經(jīng)歷,對(duì)DOS中的編譯、“help”等各個(gè)方面有了更深入的認(rèn)識(shí),不再害怕使用DOS了。

      對(duì)本課程有很大的興趣,在以后的課余時(shí)間里我會(huì)不斷學(xué)習(xí)這些知識(shí)。

      第三篇:操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      課程設(shè)計(jì)報(bào)告

      題 目: 模擬請(qǐng)求頁(yè)式管理

      課程名稱: 計(jì)算機(jī)操作系統(tǒng) 學(xué) 院: 信息工程學(xué)院

      專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)

      班 級(jí): 14計(jì)本(1)學(xué)生姓名: * * * 學(xué) 號(hào): 201403031** 指導(dǎo)教師: * * 成 績(jī):

      開(kāi)課時(shí)間: 2016-2017 學(xué)年 一 學(xué)期

      模擬請(qǐng)求頁(yè)式管理

      第1章 需求分析

      1.1設(shè)計(jì)要求

      請(qǐng)求頁(yè)式管理是一種常用的虛擬存儲(chǔ)管理技術(shù)。本設(shè)計(jì)通過(guò)請(qǐng)求頁(yè)式存儲(chǔ)管理中頁(yè)面置換算法模擬設(shè)計(jì),了解虛擬存儲(chǔ)技術(shù)的特點(diǎn),掌握請(qǐng)求頁(yè)式管理的頁(yè)面置換算法。本實(shí)驗(yàn)要求用Vc++或其他高級(jí)語(yǔ)言編寫(xiě)和調(diào)試。

      編寫(xiě)程序?qū)崿F(xiàn):

      (1)先進(jìn)先出頁(yè)面置換算法(FIFO)(2)最近最久未使用頁(yè)面置換算法(LRU)最佳置換頁(yè)面置換算法(OPT)設(shè)計(jì)一個(gè)虛擬存儲(chǔ)區(qū)和內(nèi)存工作區(qū),編程序演示以上三種算法的具體實(shí)現(xiàn)過(guò)程,并計(jì)算訪問(wèn)命中率。

      1.2解決方案

      首先確定實(shí)現(xiàn)語(yǔ)言使用c#實(shí)現(xiàn)圖形化界面,后確定要實(shí)現(xiàn)哪些功能,比如算法選擇,頁(yè)面添加,模擬控制。然后確定輸出結(jié)構(gòu)以便于程序的測(cè)試和驗(yàn)證。將基本框架建立后再進(jìn)行編程。編程前進(jìn)行算法結(jié)構(gòu)分析最后編程實(shí)現(xiàn)。

      1.3算法實(shí)現(xiàn)原理

      1、先進(jìn)先出置換算法(FIFO):

      發(fā)生缺頁(yè)中斷時(shí)按照頁(yè)面進(jìn)入內(nèi)存順序總是淘汰最先進(jìn)入內(nèi)存的頁(yè)面。

      2、最近最久未使用置換算法(LRU):

      發(fā)生缺頁(yè)中斷時(shí)總是淘汰存在內(nèi)存中最長(zhǎng)時(shí)間未被使用的頁(yè)面。

      3、最佳置換算法(OPT):

      發(fā)生缺頁(yè)中斷時(shí)若一個(gè)或幾個(gè)頁(yè)面將來(lái)將不會(huì)被調(diào)用則按先進(jìn)先出原則淘汰頁(yè)面,若將來(lái)都有調(diào)用則比較調(diào)用時(shí)刻選擇最遠(yuǎn)時(shí)刻頁(yè)面淘汰。

      4、缺頁(yè)率:缺頁(yè)次數(shù)占頁(yè)面調(diào)用次數(shù)的百分比。

      第2章 概要設(shè)計(jì)

      2.1數(shù)據(jù)設(shè)計(jì)

      常變量:調(diào)用頁(yè)面最大數(shù)量(MaxN),內(nèi)存最大頁(yè)面數(shù)(MaxM)待調(diào)用頁(yè)面數(shù)組:page_dd[MaxN]存放等待調(diào)用的頁(yè)面號(hào)

      頁(yè)面數(shù)組專用指針 page_p,用于指向page_dd數(shù)組中正需調(diào)入內(nèi)存的頁(yè)號(hào) 內(nèi)存塊數(shù)組:Memery[MaxM],存放內(nèi)存當(dāng)前存放的頁(yè)號(hào) 缺頁(yè)計(jì)數(shù)器:count,記錄缺頁(yè)次數(shù)

      內(nèi)存塊狀態(tài)數(shù)組:M1[MaxN],M2[MaxN],M3[MaxN],記錄每次頁(yè)面調(diào)用結(jié)束后內(nèi)存各塊的狀態(tài)

      缺頁(yè)記錄數(shù)組s[MaxN],用于記錄頁(yè)面調(diào)用時(shí)是否產(chǎn)生缺頁(yè)中斷,初始化為是

      2.2函數(shù)設(shè)計(jì)

      1、頁(yè)面添加函數(shù):void btnAdd_Click(object sender, EventArgs e)用于實(shí)現(xiàn)通過(guò)點(diǎn)擊按鈕實(shí)現(xiàn)數(shù)據(jù)輸入。

      2、內(nèi)存初始化函數(shù):init(int[] a, int[] b,int []m1,int[]m2,int[]m3)參數(shù)有頁(yè)面數(shù)組、內(nèi)存數(shù)組、狀態(tài)數(shù)組,采用先進(jìn)先出算法對(duì)內(nèi)存先進(jìn)行裝滿 服務(wù)于先進(jìn)先出頁(yè)面置換函數(shù)和最佳置換函數(shù)。

      3、輸出函數(shù):void display(int[]a,int[]m1,int[]m2,int[]m3,char[]c)用于輸出模擬結(jié)果,參數(shù)有頁(yè)面數(shù)組,內(nèi)存數(shù)組,狀態(tài)數(shù)組,缺頁(yè)記錄數(shù)組。再模擬之后調(diào)用。

      4、模擬控制函數(shù):void btnmo_Click(object sender, EventArgs e)用于實(shí)現(xiàn)通過(guò)單擊模擬按鈕,根據(jù)用戶所選算法進(jìn)行模擬并顯示結(jié)果。

      5、先進(jìn)先出算法模擬函數(shù):

      void FIFO(int[] a, int[] b,int[]m1,int[]m2,int[]m3,char[] s)用于實(shí)現(xiàn)先進(jìn)先出算法模擬,參數(shù)有頁(yè)面數(shù)組,內(nèi)存數(shù)組、內(nèi)存狀態(tài)記錄數(shù)組,缺頁(yè)記錄數(shù)組。在模擬函數(shù)中調(diào)用。

      6、最近最久未使用算法模擬函數(shù):

      void LRU(int[] a, int[] b, int[] m1, int[] m2, int[] m3, char[] s)用于 3 實(shí)現(xiàn)最近最久未使用算法模擬,參數(shù)有頁(yè)面數(shù)組,內(nèi)存數(shù)組,內(nèi)存狀態(tài)記錄數(shù)組,缺頁(yè)記錄數(shù)組。在模擬函數(shù)中被調(diào)用。

      7、最近最久未使用函數(shù)輔助函數(shù):void LUR_I(int[] a,int e)用于對(duì)最近最久未使用算法中所用輔助數(shù)組(記錄頁(yè)面存在時(shí)長(zhǎng))進(jìn)行調(diào)整,參數(shù)有輔助數(shù)組及需調(diào)整的數(shù)據(jù)下標(biāo)。在最近最久未使用函數(shù)中調(diào)用。

      8、最佳置換算法模擬函數(shù):

      void OPT(int[] a, int[] b, int[] m1, int[] m2, int[] m3, char[] s)用于模擬最佳置換算法。參數(shù)有頁(yè)面數(shù)組,內(nèi)存數(shù)組,內(nèi)存狀態(tài)記錄數(shù)組,缺頁(yè)記錄數(shù)組。在模擬函數(shù)中被調(diào)用。

      9、最佳置換算法輔助函數(shù):void OPT_F(int[] a, int e)用于對(duì)最佳置換算法中的輔助數(shù)組進(jìn)行調(diào)整。參數(shù)有輔助數(shù)組,需調(diào)整數(shù)據(jù)下標(biāo)。在最佳置換算法中被調(diào)用。

      10、重置函數(shù):void btncz_Click(object sender, EventArgs e)用于重新選擇算法進(jìn)行新的模擬。

      2.3主要算法設(shè)計(jì)

      1、初始化函數(shù)算法:

      第一步:將第一個(gè)頁(yè)面調(diào)入內(nèi)存,調(diào)整最佳置換算法輔助數(shù)組,缺頁(yè)計(jì)數(shù)器加一,保存內(nèi)存數(shù)組狀態(tài)。

      第二步:調(diào)用下一個(gè)頁(yè)面并判斷內(nèi)存中是否有本頁(yè)面有轉(zhuǎn)第三步,無(wú)轉(zhuǎn)第四步。第三步:更改缺頁(yè)數(shù)組對(duì)應(yīng)下標(biāo)值,記錄當(dāng)前內(nèi)存狀態(tài),調(diào)整最佳置換算法輔助數(shù)組,頁(yè)面指針指向下一頁(yè)。

      第四步:將頁(yè)面調(diào)入內(nèi)存,調(diào)整最佳置換算法輔助函數(shù),缺頁(yè)計(jì)數(shù)器加一,保存內(nèi)存數(shù)組狀態(tài)。若內(nèi)存尚不滿轉(zhuǎn)第一步。具體見(jiàn)圖1初始化算法流程圖。

      開(kāi)始頁(yè)面調(diào)入內(nèi)存缺頁(yè)計(jì)數(shù)器加一記錄內(nèi)存狀態(tài)調(diào)用下一頁(yè)否否內(nèi)存是否有該頁(yè)面是記錄內(nèi)存狀態(tài)修改缺頁(yè)數(shù)組內(nèi)存已滿是結(jié)束

      圖1 初始化算法流程圖

      2、先進(jìn)先出頁(yè)面置換算法:

      第一步:檢查內(nèi)存中是否已有需調(diào)用頁(yè)面,有則轉(zhuǎn)第二步,無(wú)則轉(zhuǎn)第三步。第二步:記錄當(dāng)前內(nèi)存狀態(tài),修改缺頁(yè)數(shù)組對(duì)應(yīng)下標(biāo)值。

      第三步:內(nèi)存中無(wú)需要調(diào)用的頁(yè)面,進(jìn)行出隊(duì)操作,然后進(jìn)行入隊(duì)操作,記錄內(nèi)存塊狀態(tài),缺頁(yè)計(jì)數(shù)器加一。

      第四步:若頁(yè)面數(shù)組未被調(diào)用結(jié)束轉(zhuǎn)第一步。具體見(jiàn)圖2先進(jìn)先出算法流程圖。

      開(kāi)始頁(yè)面調(diào)入內(nèi)存該頁(yè)在內(nèi)存中是否已存在是否否先出隊(duì)操作后入隊(duì)操作記錄內(nèi)存狀態(tài)修改缺頁(yè)數(shù)組值記錄內(nèi)存狀態(tài)缺頁(yè)計(jì)數(shù)器加一頁(yè)面調(diào)用結(jié)束是結(jié)束

      圖2 先進(jìn)先出算法流程圖

      3、最近最久未使用置換算法:

      第一步:將頁(yè)面調(diào)入內(nèi)存,記錄內(nèi)存狀態(tài),缺頁(yè)計(jì)數(shù)器加一,調(diào)整輔助數(shù)組,頁(yè)面指針加一。

      第二步:檢查內(nèi)存中是否已有所需頁(yè)面,有轉(zhuǎn)第三步,無(wú)轉(zhuǎn)第一步。

      第三步:修改缺頁(yè)數(shù)組對(duì)應(yīng)下標(biāo)記錄,記錄內(nèi)存狀態(tài),調(diào)整輔助數(shù)組,頁(yè)面指針加一。第四步:內(nèi)存是否已滿,無(wú)則轉(zhuǎn)第一步,是則轉(zhuǎn)第五步。

      第五步:檢查內(nèi)存中是否有所需頁(yè)面,有則記錄當(dāng)前內(nèi)存狀態(tài),修改缺頁(yè)數(shù)組對(duì)應(yīng)下標(biāo)值。無(wú)則轉(zhuǎn)第六步。

      第六步:檢查輔助數(shù)組找出最大值并記錄其下標(biāo),置換內(nèi)存中對(duì)應(yīng)下標(biāo)的數(shù)據(jù),調(diào)整輔助數(shù)組,缺頁(yè)計(jì)數(shù)器加一。

      第七步:頁(yè)面是否調(diào)用結(jié)束未結(jié)束則轉(zhuǎn)第五步。具體見(jiàn)圖3最近最久未使用算法流程圖。

      開(kāi)始調(diào)入頁(yè)面至內(nèi)存記錄內(nèi)存狀態(tài)計(jì)數(shù)器加一否調(diào)整輔助數(shù)組調(diào)用下一頁(yè)內(nèi)存中是否已有該頁(yè)否內(nèi)存已滿是通過(guò)輔助數(shù)組確定淘汰頁(yè)面是修改缺頁(yè)數(shù)組記錄內(nèi)存狀態(tài)調(diào)整輔助數(shù)組否頁(yè)面置換記錄內(nèi)存狀態(tài)計(jì)數(shù)器加一調(diào)用結(jié)束是結(jié)束

      圖3 最近最久未使用算法

      4、最佳置換算法:

      第一步:檢查內(nèi)存中是否已有所需頁(yè)面,有則記錄內(nèi)存狀態(tài),修改缺頁(yè)數(shù)組對(duì)應(yīng)下標(biāo)數(shù)值。無(wú)則轉(zhuǎn)第二步。

      第二步:判斷內(nèi)存中各頁(yè)面的未來(lái)調(diào)用情況,記錄是否還有調(diào)用,若有則記錄調(diào)用時(shí)刻。

      第三步:分析調(diào)用情況,內(nèi)存中頁(yè)面都在將來(lái)不會(huì)被調(diào)用轉(zhuǎn)第四步,有一個(gè)被調(diào)用轉(zhuǎn)第五步,有兩個(gè)被調(diào)用轉(zhuǎn)第六步,全被調(diào)用轉(zhuǎn)第七步。

      第四步:查找輔助數(shù)組找到內(nèi)存中存在時(shí)間最長(zhǎng)的頁(yè)面進(jìn)行置換,修改內(nèi)存狀態(tài),缺頁(yè)計(jì)數(shù)器加一,修改輔助數(shù)組。

      第五步:查找到不會(huì)被調(diào)用的頁(yè)面,并根據(jù)輔助數(shù)組選擇最早進(jìn)入內(nèi)存的頁(yè)面將其置換。修改內(nèi)存狀態(tài),缺頁(yè)計(jì)數(shù)器加一,修改輔助數(shù)組。

      第六步:查找輔助數(shù)組找到將來(lái)不需要在調(diào)用的頁(yè)面將其置換,修改輔助數(shù)組,記錄內(nèi)存狀態(tài),缺頁(yè)計(jì)數(shù)器加一。

      第七步:查找輔助數(shù)組,找尋最晚被調(diào)用的頁(yè)面,將其置換。記錄內(nèi)存狀態(tài),修改輔助數(shù)組,缺頁(yè)計(jì)數(shù)器加一。

      第八步:頁(yè)面是否調(diào)用完成,否則轉(zhuǎn)第一步。具體見(jiàn)圖4最佳置換算法流程圖

      開(kāi)始調(diào)入頁(yè)面記錄內(nèi)存狀態(tài)計(jì)數(shù)器加一更新輔助函數(shù)是頁(yè)面已存在否向后檢查內(nèi)存當(dāng)前頁(yè)面調(diào)用情況所有頁(yè)面都不會(huì)再度調(diào)用否是一個(gè)頁(yè)面會(huì)調(diào)用否否是兩個(gè)頁(yè)面會(huì)調(diào)用是否查找輔助數(shù)組得到最先進(jìn)入頁(yè)面通過(guò)輔助數(shù)組得到不會(huì)再調(diào)用的頁(yè)面通過(guò)輔助數(shù)組獲取最晚調(diào)用的頁(yè)面通過(guò)輔助數(shù)組得到另外兩個(gè)頁(yè)面中最先進(jìn)入的頁(yè)面置換頁(yè)面記錄內(nèi)存狀態(tài)計(jì)數(shù)器加一更新輔助函數(shù)頁(yè)面調(diào)用結(jié)束是結(jié)束

      圖4 最佳置換算法流程圖 2.4界面設(shè)計(jì)

      采用c# 設(shè)計(jì)windows窗體應(yīng)用程序,使用下拉列表框選擇算法,通過(guò)按鈕添加待調(diào)用的頁(yè)面。通過(guò)文本控件顯示模擬結(jié)果。顯示樣式:第一行:算法名稱;

      第二行:調(diào)用頁(yè)面順序;

      第三行至第五行顯示內(nèi)存在每調(diào)用一次頁(yè)面后的狀態(tài);

      第六行:是否缺頁(yè);

      最后一行顯示缺頁(yè)率;

      第3章 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)

      3.1函數(shù)設(shè)計(jì)

      1、添加按鈕功能實(shí)現(xiàn)代碼

      主要功能:實(shí)現(xiàn)單擊一次添加一個(gè)調(diào)用頁(yè)面,并給出相應(yīng)的提示,如正在輸入的是第幾次調(diào)度頁(yè)面,在輸入為空時(shí)能夠彈出對(duì)話框提示用戶,在輸入完成時(shí)為避免數(shù)組越界應(yīng)在輸入完成時(shí)隱藏;輸入過(guò)程中始終保證時(shí)輸入焦點(diǎn)。private void btnAdd_Click(object sender, EventArgs e){ if(txtAdd.Text!= “")//輸入不為空才能繼續(xù)輸入 { page_dd[i_add] = Convert.ToInt32(txtAdd.Text);/*將輸入值賦值給頁(yè)面數(shù)組*/ txtShow.Text += txtAdd.Text + ” “;/*顯示供用戶查閱*/ i_add++;txtAdd.Clear();/*清空*/ if(i_add == MaxN)//輸入結(jié)束時(shí) { txtAdd.ReadOnly = true;//不允許繼續(xù)輸入 btnAdd.Hide();//按鈕隱藏 return;} txtAdd.Focus();//設(shè)置為輸入焦點(diǎn)

      label2.Text = ”第“ +(i_add + 1)+ ”次調(diào)度頁(yè)面:“;/*提示用戶正在輸入的是第幾次調(diào)度頁(yè)面*/ } /*輸入為空則彈出對(duì)話框提示用戶輸入為空*/ else { MessageBox.Show(”請(qǐng)輸入調(diào)用頁(yè)面!“, ”輸入為空“, MessageBoxButtons.OK, MessageBoxIcon.Warning);txtAdd.Focus();} }

      2、初始化函數(shù)

      主要功能:將內(nèi)存一先進(jìn)先出方式填滿,并記錄每個(gè)頁(yè)面進(jìn)入時(shí)間,服務(wù)于先進(jìn)先出頁(yè)面置換算法和最佳置換算法。

      void init(int[] a, int[] b,int []m1,int[]m2,int[]m3){ /*內(nèi)存未滿時(shí)循環(huán)*/ for(int i = 0;i < MaxM&&page_p

      //調(diào)整輔助數(shù)組將剛進(jìn)入內(nèi)存的頁(yè)面的對(duì)應(yīng)時(shí)間 OPT_F(O_Q ,i); count++;//缺頁(yè)計(jì)數(shù)器加一 m1[page_p] = b[0];//保存內(nèi)存狀態(tài) m2[page_p] = b[1];m3[page_p] = b[2];page_p++;//調(diào)用下一頁(yè)面

      //檢查內(nèi)存中是否原先就有需要的頁(yè)面; for(int j = 0;j <= i&&page_p

      s[page_p] = 'F';//缺頁(yè)數(shù)組對(duì)應(yīng)數(shù)據(jù)更改 m1[page_p] = b[0];//記錄內(nèi)存狀態(tài) m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q,-1);//調(diào)整最佳置換算法輔助函數(shù) page_p++;//調(diào)用下一頁(yè) j =-1;//重新開(kāi)始尋找 } } } }

      3、先進(jìn)先出頁(yè)面置換函數(shù)

      主要功能:根據(jù)先進(jìn)先出算法要求在產(chǎn)生缺頁(yè)中斷時(shí)采用先進(jìn)先出方式確定淘汰頁(yè)面,并在每次頁(yè)面調(diào)用時(shí)記錄下內(nèi)存狀態(tài),缺頁(yè)次數(shù);采用循環(huán)隊(duì)列使得每次出隊(duì)的一定是最先進(jìn)入內(nèi)存的。

      private void FIFO(int[] a, int[] b,int[]m1,int[]m2,int[]m3,char[] s){ int Fpage_p = page_p;int front, rear;//定義隊(duì)列對(duì)手和對(duì)尾指針并初始化 front = 0;rear = MaxM1;int sa;for(;Fpage_p < MaxN;Fpage_p++){ sa = 0;for(int i = 0;i < MaxM;i++)//檢查內(nèi)存中是否已有要調(diào)用的頁(yè)面。

      { if(b[i] == a[Fpage_p]){ m1[Fpage_p] = b[0];m2[Fpage_p] = b[1];m3[Fpage_p] = b[2];s[Fpage_p] = 'F';sa = 1;break;} } if(sa == 0){ front =(front + 1)% MaxM;

      rear =(rear + 1)% MaxM;b[rear] = a[Fpage_p];m1[Fpage_p] = b[0];m2[Fpage_p] = b[1];m3[Fpage_p] = b[2];count++;} else continue;} } /*最近最久未使用算法輔助數(shù)組調(diào)整函數(shù)*/ private void LUR_I(int[] a,int e){ int temp;temp = a[e];a[e] = 1;for(int i = 0;i < MaxM;i++){ if(a[i] < temp && i!=e)a[i]++;} } /*最佳置換算法輔助數(shù)組調(diào)整函數(shù)*/ private void OPT_F(int[] a, int e){ if(e!=-1){ a[e] = 0;for(int i = 0;i < MaxM;i++){ if(i!= e)a[i]++;} } else for(int i = 0;i < MaxM;i++){ a[i]++;} } /*最近最久未使用算法*/ private void LRU(int[] a, int[] b, int[] m1, int[] m2, int[] m3, char[] s){

      int[] L_Q = new int[MaxM]{3,3,3};int sa;for(int i = 0;i < MaxM && page_p < MaxN;i++){ b[i] = a[page_p];//調(diào)入內(nèi)存 count++;m1[page_p] = b[0];//保存內(nèi)存狀態(tài) m2[page_p] = b[1];m3[page_p] = b[2];LUR_I(L_Q, i);page_p++;for(int j = 0;j <= i && page_p < MaxN;j++){ if(b[j] == a[page_p]){ s[page_p] = 'F';m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];LUR_I(L_Q, j);page_p++;j =-1;} } } for(;page_p < MaxN;page_p++){ sa = 0;for(int i = 0;i < MaxM;i++)//用的頁(yè)面。{ if(b[i] == a[page_p]){ m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];s[page_p] = 'F';LUR_I(L_Q, i);sa = 1;break;} } if(sa == 0){

      檢查內(nèi)存中是否已有要調(diào)40 for(int i = 0;i < MaxM;i++){ if(L_Q[i] == 3){ b[i] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];LUR_I(L_Q, i);break;} } count++;} else continue;} } /*最佳置換算法*/ private void OPT(int[] a, int[] b, int[] m1, int[] m2, int[] m3, char[] s){ int sa;int O_p;int Ocount;int[] OPT_I=new int [MaxM ]{-1 ,-1 ,-1 };int[] OPT_J=new int [MaxM]{MaxN ,MaxN ,MaxN };for(;page_p < MaxN;page_p++){ for(int i = 0;i < MaxM;i++){ OPT_I[i] =-1;//刷新?tīng)顟B(tài)數(shù)組 OPT_J[i] = MaxN;} sa = 0;for(int i = 0;i < MaxM;i++)//檢查內(nèi)存中是否已有要調(diào)用的頁(yè)面。

      {

      if(b[i] == a[page_p]){ m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q,-1);

      s[page_p] = 'F';sa = 1;break;} } if(sa == 0)//缺頁(yè) { Ocount = 0;for(int i = 0;i < MaxM;i++){ O_p = page_p + 1;for(;O_p < MaxN;O_p++){ if(b[i] == a[O_p]){ Ocount++;OPT_I[i] = 1;OPT_J[i] = O_p;break;} } } switch(Ocount){ case 0://全部頁(yè)面以后都不會(huì)再度調(diào)用 int temp = 0;for(int i = 0;i < MaxM;i++){ if(O_Q[i] > O_Q[temp])temp = i;} b[temp] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q ,temp);count++;break;case 1://有一個(gè)頁(yè)面將在以后調(diào)用 temp = 0;for(int i = 0;i < MaxM;i++){ if(OPT_I[i]!= 1 && O_Q[i] > O_Q[temp])temp = i;

      } b[temp] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q ,temp);count++;break;case 2: for(int i = 0;i < MaxM;i++){ if(OPT_I[i] ==-1){ b[i] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q, i);count++;} } break;case 3: int p = 0;for(int i = 0;i < MaxM;i++){ if(OPT_J[i] >OPT_J[p])p = i;} b[p] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q, p);count++;break;} } } } /*重置函數(shù)*/ private void btncz_Click(object sender, EventArgs e){ comboBox1.SelectedIndex = 0;

      txtAdd.Text = ”“;page_p = 0;i_add = 0;count = 0;//txtShow.Text = ”";for(int i = 0;i < MaxM;i++)Memery[i] =-1;for(int i = 0;i < MaxN;i++)s[i] = 'T';} } }

      第四篇:操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      操 作 系 統(tǒng)

      設(shè)

      計(jì)

      實(shí)

      驗(yàn)

      報(bào)

      學(xué)院:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院

      班級(jí):計(jì)112

      學(xué)號(hào):1113022032

      姓名:

      一、實(shí)驗(yàn)名稱:

      用C++實(shí)現(xiàn)驅(qū)動(dòng)調(diào)度算法、頁(yè)面替換算法、銀行家算法、處理器調(diào)度算法

      二、實(shí)驗(yàn)要求:

      書(shū)寫(xiě)實(shí)驗(yàn)報(bào)告,包括的內(nèi)容有:

      (1)實(shí)驗(yàn)題目

      (2)程序中使用的數(shù)據(jù)結(jié)構(gòu)及主要文字說(shuō)明

      (3)帶有注釋的源程序

      (4)執(zhí)行程序說(shuō)明,表明各進(jìn)程控制快的初始狀態(tài),以及各算法的運(yùn)行狀態(tài)

      (5)通過(guò)實(shí)驗(yàn)后的收獲與體會(huì)及對(duì)實(shí)驗(yàn)的改進(jìn)意見(jiàn)和見(jiàn)解

      二、實(shí)驗(yàn)?zāi)康模?/p>

      通過(guò)自己編程來(lái)實(shí)現(xiàn)各類操作系統(tǒng)算法,進(jìn)一步理解操作系統(tǒng)的概念及含義,提高對(duì)操作系統(tǒng)的認(rèn)識(shí),同時(shí)提高自己的動(dòng)手實(shí)踐能力。加強(qiáng)我們對(duì)各類算法的理解。

      三、實(shí)驗(yàn)內(nèi)容:

      1、實(shí)現(xiàn)頁(yè)面替換算法

      (1)FIFO 先進(jìn)先出頁(yè)面替換算法

      (2)LRU最近最少使用頁(yè)面替換算法

      (3)LFU最少使用頻率頁(yè)面替換算法

      2、銀行家算法

      3、實(shí)現(xiàn)驅(qū)動(dòng)調(diào)度算法

      (1)先來(lái)先服務(wù)算法

      (2)電梯算法

      (3)掃描算法

      4、實(shí)現(xiàn)處理器調(diào)度

      (1)先進(jìn)先出處理器調(diào)度

      (2)時(shí)間片輪轉(zhuǎn)法

      (3)優(yōu)先級(jí)調(diào)度

      四、實(shí)驗(yàn)原理:

      1、頁(yè)面替換算法

      先進(jìn)先出頁(yè)面置換算法:該算法總是淘汰最先進(jìn)入內(nèi)存的頁(yè)面,即選擇在內(nèi)存中駐留時(shí)間最久的頁(yè)面加以淘汰。將已調(diào)入內(nèi)存的頁(yè)面按先后次序鏈接成一個(gè)隊(duì)列,將最先調(diào)入的頁(yè)面與新頁(yè)面進(jìn)行置換

      最近最久未使用置換算法:該算法是利用“最近的過(guò)去”作為“最近的將來(lái)”,將最近最久未使用的頁(yè)面加以淘汰。將已調(diào)入內(nèi)存的頁(yè)面按先后順序鏈接成一個(gè)隊(duì)列,為每一個(gè)頁(yè)面增加一個(gè)訪問(wèn)字段,用來(lái)記錄一個(gè)頁(yè)面自上次被訪問(wèn)以來(lái)所經(jīng)歷的是時(shí)間t,當(dāng)需淘汰一個(gè)頁(yè)面時(shí),選擇現(xiàn)有頁(yè)面中其t值最大,即最近最久未使用的頁(yè)面加以淘汰

      2、銀行家算法

      先對(duì)用戶提出的請(qǐng)求進(jìn)行合法性檢查,即檢查請(qǐng)求的是不大于需要的,是否不大于可利用的。若請(qǐng)求合法,則進(jìn)行試分配。最后對(duì)試分配后的狀態(tài)調(diào)用安全性檢查算法進(jìn)行安全性檢查。若安全,則分配,否則,不分配,恢復(fù)原來(lái)狀態(tài),拒絕申請(qǐng)。

      3、驅(qū)動(dòng)調(diào)度算法

      先進(jìn)先出算法(FIFO):總是嚴(yán)格按時(shí)間順序?qū)Υ疟P請(qǐng)求予以處理。算法實(shí)現(xiàn)簡(jiǎn)單、易于理解并且相對(duì)公平,不會(huì)發(fā)生進(jìn)程餓死現(xiàn)象。但該算法可能會(huì)移動(dòng)的柱面數(shù)較多并且會(huì)

      經(jīng)常更換移動(dòng)方向,效率有待提高

      電梯調(diào)度算法:總是將一個(gè)方向上的請(qǐng)求全部處理完后,才改變方向繼續(xù)處理其他請(qǐng)求。

      掃描算法(scan algorithm):總是從最外向最內(nèi)(或最內(nèi)向最外)進(jìn)行掃描,然后在從最內(nèi)向最外(或最外向最內(nèi))掃描。該算法與電梯調(diào)度算法的區(qū)別是電梯調(diào)度在沒(méi)有最外或最內(nèi)的請(qǐng)求時(shí)不會(huì)移動(dòng)到最外或最內(nèi)柱面。

      4、處理器調(diào)度算法

      先進(jìn)先出處理器調(diào)度:按照作業(yè)進(jìn)入系統(tǒng)后備工作隊(duì)列的先后次序來(lái)挑選作業(yè),先進(jìn)入系統(tǒng)的作業(yè)將優(yōu)先被挑選進(jìn)入主存,創(chuàng)建用戶進(jìn)程,分配所需資源,然后移入就緒隊(duì)列。

      時(shí)間片輪轉(zhuǎn)法調(diào)度算法:調(diào)度次序每次把CPU分配給就緒隊(duì)列進(jìn)程/線程使用規(guī)

      定的時(shí)間間隔,就緒隊(duì)列中每個(gè)進(jìn)程/線程輪流的運(yùn)行一個(gè)時(shí)間片,當(dāng)時(shí)間片耗盡時(shí),就強(qiáng)迫當(dāng)前運(yùn)行進(jìn)程/線程讓出處理器,轉(zhuǎn)而排列到就緒隊(duì)列尾部,等候下一輪調(diào)度。

      優(yōu)先級(jí)調(diào)度:根據(jù)確定的優(yōu)先級(jí)來(lái)選取進(jìn)程/線程,總是選擇就緒隊(duì)列中的優(yōu)先

      級(jí)最高者投入運(yùn)行,即優(yōu)先級(jí)越高,先被調(diào)用。

      五、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

      對(duì)操作系統(tǒng)的各類算法設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)如下:

      頁(yè)面替換算法:void FIFO();void LRU();void LFU();

      銀行家算法:void Init()初始化算法

      void Bank()銀行家算法

      bool Safe()安全性算法

      驅(qū)動(dòng)調(diào)度算法:

      struct MagneticHead//磁頭構(gòu)成{

      int site;

      int count;

      bool direct;

      };

      struct Range//磁盤磁道范圍

      {

      int mStart;

      int mEnd;

      };

      struct RequestList//請(qǐng)求序列

      {

      int site;

      bool state;

      };

      struct Data//基本數(shù)據(jù)集合{

      MagneticHead magneticHead;

      RequestList *requestList;

      int *executeList;

      Range range;

      int length;

      };

      處理器調(diào)度:

      typedef struct pcb//時(shí)間片輪轉(zhuǎn)法

      {

      char pname[N];

      int runtime;

      int arrivetime;

      char state;

      struct pcb*next;

      }PCB;

      typedef struct PCB1//先進(jìn)先出服務(wù)

      {

      char ID[3];//進(jìn)程號(hào)

      char name[10];//進(jìn)程名

      char state;//運(yùn)行狀態(tài)

      floatarrivetime;//到達(dá)時(shí)間

      floatstarttime;//進(jìn)程開(kāi)始時(shí)間

      floatfinishtime;//進(jìn)程結(jié)束時(shí)間

      floatservicetime;//服務(wù)時(shí)間

      float turnaroundtime;//周轉(zhuǎn)時(shí)間

      float weightedturnaroundtime;//帶權(quán)周轉(zhuǎn)時(shí)間

      struct PCB1 *next;//指向下個(gè)進(jìn)程

      }pcb1;

      struct pcb2 {優(yōu)先級(jí)調(diào)度

      char name[10];

      char state;

      int super;

      int ntime;

      int rtime;

      struct pcb2* link;

      }*ready=NULL,*d;

      typedef struct pcb2 PCB2;

      六、課程設(shè)計(jì)總結(jié)

      在本次課程設(shè)計(jì)中,就是講平時(shí)所做的實(shí)驗(yàn)結(jié)合起來(lái),實(shí)現(xiàn)操作系統(tǒng)的各類算法,了解操作系統(tǒng)的運(yùn)行原理以及其基本概念,更好的將操作系統(tǒng)的原理很好的展現(xiàn)出來(lái)。同時(shí),在本次實(shí)驗(yàn)中遇到了很多問(wèn)題,需要我們仔細(xì)的檢查和修改。其次,實(shí)驗(yàn)中為了能更好的體現(xiàn)各類算法的運(yùn)行情況,需要做一個(gè)清晰的界面,以能清楚地看出運(yùn)行結(jié)果。

      第五篇:操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 學(xué) 號(hào): 姓 名: 提交日期:

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      【設(shè)計(jì)目的】

      (1)本實(shí)驗(yàn)的目的是通過(guò)一個(gè)簡(jiǎn)單多用戶文件系統(tǒng)的設(shè)計(jì),加深理解文件系統(tǒng)的內(nèi)部功能和內(nèi)部實(shí)現(xiàn)。

      (2)結(jié)合數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)、計(jì)算機(jī)原理等課程的知識(shí),設(shè)計(jì)一個(gè)二級(jí)文件系統(tǒng),進(jìn)一步理解操作系統(tǒng)。

      (3)通過(guò)分對(duì)實(shí)際問(wèn)題的分析、設(shè)計(jì)、編程實(shí)現(xiàn),提高學(xué)生實(shí)際應(yīng)用、編程的能力 【設(shè)計(jì)內(nèi)容】

      為L(zhǎng)inux系統(tǒng)設(shè)計(jì)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)。要求做到以下幾點(diǎn): 1.可以實(shí)現(xiàn)下列幾條命令:

      login 用戶登錄

      dir 列目錄

      create 創(chuàng)建文件

      delete 刪除文件

      open 打開(kāi)文件

      close 關(guān)閉文件

      read 讀文件

      write 寫(xiě)文件

      cd 進(jìn)出目錄

      2.列目錄時(shí)要列出文件名,物理地址,保護(hù)碼和文件長(zhǎng)度 3.源文件可以進(jìn)行讀寫(xiě)保護(hù) 【實(shí)驗(yàn)環(huán)境】 Windows xp/7 C++/VC++

      【相關(guān)知識(shí)綜述】

      1、文件系統(tǒng)

      文件系統(tǒng)是操作系統(tǒng)用于明確存儲(chǔ)設(shè)備(常見(jiàn)的是磁盤,也有基于NAND Flash的固態(tài)硬盤)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在存儲(chǔ)設(shè)備上組織文件的方法。操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)稱為文件管理系統(tǒng),簡(jiǎn)稱文件系統(tǒng)。文件系統(tǒng)由三部分組成:文件系統(tǒng)的接口,對(duì)對(duì)象操縱和管理的軟件集合,對(duì)象及屬性。從系統(tǒng)角度來(lái)看,文件系統(tǒng)是對(duì)文件存儲(chǔ)設(shè)備的空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲(chǔ)并對(duì)存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。具體地說(shuō),它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲(chǔ)文件,控制文件的存取,當(dāng)用戶不再使用時(shí)撤銷文件等。

      2、位示圖

      位示圖是利用二進(jìn)制的一位來(lái)表示磁盤中的一個(gè)盤塊的使用情況。當(dāng)其值為“0”時(shí),表示對(duì)應(yīng)的盤塊空閑;為“1”時(shí),表示已經(jīng)分配。有的系統(tǒng)把“0”作為盤塊已分配的標(biāo)記,把“1”作為空閑標(biāo)志。(它們的本質(zhì)上是相同的,都是用一位的兩種狀態(tài)標(biāo)志空閑和已分配兩種情況。)磁盤上的所有盤塊都有一個(gè)二進(jìn)制位與之對(duì)應(yīng),這樣,由所有盤塊所對(duì)應(yīng)的位構(gòu)成一個(gè)集合,稱為位示圖。

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      【設(shè)計(jì)思路】

      本文件系統(tǒng)采用兩級(jí)目錄,其中第一級(jí)對(duì)應(yīng)于用戶賬號(hào),第二級(jí)對(duì)應(yīng)于用戶帳號(hào)下的文件。另外,為了簡(jiǎn)便文件系統(tǒng)未考慮文件共享,文件系統(tǒng)安全以及管道文件與設(shè)備文件等特殊內(nèi)容。

      首先應(yīng)確定文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu):主目錄、子目錄及活動(dòng)文件等。主目錄和子目錄都以文件的形式存放于磁盤,這樣便于查找和修改。

      用戶創(chuàng)建的文件,可以編號(hào)存儲(chǔ)于磁盤上。如:file0,file1,file2?并以編號(hào)作為物理地址,在目錄中進(jìn)行登記。

      【程序主要流程圖】

      驗(yàn)證是否成

      功?

      目錄

      右鍵進(jìn)行選擇 操作

      新建目錄新建文件打開(kāi)文件

      結(jié)束

      開(kāi)始登錄刪除屬性 2

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      【源程序清單】

      typedef struct

      //文件結(jié)構(gòu)體 /*the structure of OSFILE*/ { int fpaddr;

      /*file physical address*/

      int flength;

      /*file length*/

      int fmode;

      /*file mode:0-Read Only;1-Write Only;2-Read and Write;3-Protect;*/

      char fname[MAXNAME];

      /*file name*/ } OSFILE;

      typedef struct

      //用戶文件目錄結(jié)構(gòu)體 user file directory /*the structure of OSUFD*/ { char ufdname[MAXNAME];

      /*ufd name*/ OSFILE ufdfile[MAXCHILD];

      /*ufd own file*/ }OSUFD;

      typedef struct

      //登陸

      /*the structure of OSUFD'LOGIN*/ { char ufdname[MAXNAME];

      /*ufd name*/

      char ufdpword[8];

      /*ufd password*/ } OSUFD_LOGIN;

      typedef struct

      //文件打開(kāi)模式 /*file open mode*/ { int ifopen;

      /*ifopen:0-close,1-open*/

      int openmode;

      /*0-read only,1-write only,2-read and write,3-initial*/ }OSUFD_OPENMODE;

      void DeleteF()/*Delete File*/ { int i,j,k=0;char str[255],str1[255];char fname[MAXNAME];k=ExistD(dirname);//獲取用戶的序號(hào)

      printf(“Please input filename:”);gets(fname);//獲得需要打開(kāi)的文件名fname

      for(i=0;i

      if(strcmp(strupr(ufd[k]->ufdfile[i].fname),strupr(fname))==0)

      {

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      }

      }

      void OpenF()/*Open File*/ { int i,k=0;char fname[MAXNAME];//printf(“nnC:%s>”,strupr(dirname));k=ExistD(dirname);printf(“Please input filename:”);gets(fname);//獲得需要打開(kāi)的文件名fname

      for(i=0;i

      if(strcmp(strupr(ufd[k]->ufdfile[i].fname),strupr(fname))==0)

      {

      ifopen[k][i].ifopen=1;//打開(kāi)文件

      ifopen[k][i].openmode=ufd[k]->ufdfile[i].fmode;//將讀寫(xiě)屬性賦值

      //test// printf(“i=%d,k=%dn”,i,k);

      ///test// printf(“openmode=%dn”,ifopen[k][i].openmode);

      printf(“Open file successfully!n”);

      break;//打開(kāi)文件則跳出循環(huán) itoa(ufd[k]->ufdfile[i].fpaddr,str,10);//itoa函數(shù),把數(shù)字轉(zhuǎn)換成字符串

      strcpy(str1,“file”);strcat(str1,str);strcpy(str,“c:osfilefile”);strcat(str,str1);strcat(str,“.txt”);//str為文件的物理路徑

      if(remove(str)==0)

      //調(diào)用remove函數(shù)刪除 第k個(gè)用戶的第i個(gè)文件ufd[k]->ufdfile[i]

      {

      fpaddrno[ufd[k]->ufdfile[i].fpaddr] = 0;//位示圖置為0,表示沒(méi)被占用

      for(j = i;j<=fcount[k]-1;j++)//文件順序往前移一位

      ufd[k]->ufdfile[j] = ufd[k]->ufdfile[j+1];

      fcount[k] = fcount[k]-1;//文件數(shù)-1

      printf(“Delete file successfully!n”);

      //除了刪除原文件,還要 刪除dir中的東西

      } else

      printf(“Delete file fail!n”);break;}

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      }

      } }

      void CloseF()/*Close File*/ {

      int i,k=0;char fname[MAXNAME];

      k=ExistD(dirname);printf(“Please input filename:”);gets(fname);//獲得需要關(guān)閉的文件名fname

      for(i=0;i

      if(strcmp(strupr(ufd[k]->ufdfile[i].fname),strupr(fname))==0)

      {

      ifopen[k][i].ifopen=0;//關(guān)閉文件

      ifopen[k][i].openmode=4;//fmode改為初始值4

      printf(“Close file successfully!n”);

      break;

      }

      } }

      void WriteF()/*Write File*/ { int i,k,n=0;char fname[MAXNAME];char str[255],str1[255];int flag=1;

      if(strcmp(strupr(ltrim(rtrim(dirname))),“")==0)

      {

      printf(”nError.Please convert to ufd dir before read.n“);

      wgetchar=1;

      return;} printf(”nCaution:Open file firstn“);printf(”O(jiān)pened File(s)List:n“);k=ExistD(dirname);

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      for(i=0;i

      //文件屬性為只寫(xiě)或者是讀寫(xiě)才能write

      {

      printf(”%15s“,ufd[k]->ufdfile[i].fname);

      n++;} if((n%4==0)&&(n!=0))printf(”n“);

      } printf(”n%d files openned.n“,n);

      if(n==0)wgetchar=1;if(n!=0){ printf(”nPlease input FileName:“);gets(fname);ltrim(rtrim(fname));i=ExistF(fname);if(i>=0){

      if(ifopen[k][i].ifopen==1)

      {

      if((ifopen[k][i].openmode==1)||(ifopen[k][i].openmode==2))

      {

      itoa(ufd[k]->ufdfile[i].fpaddr,str,10);

      strcpy(str1,”file“);

      strcat(str1,str);

      strcpy(str,”c:osfilefile“);

      strcat(str,str1);

      strcat(str,”.txt“);//物理路徑

      int length=0;

      char c;

      printf(”Please input text('#' stands for end):n“);

      fp_file=fopen(str,”ab+“);//在文件末尾加 add bit

      while((c=getchar())!='#')//以#為結(jié)尾

      {

      fputc(c,fp_file);

      if(c!='n')length++;

      }

      //fprintf(fp_file,”n“);

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      fclose(fp_file);

      ufd[k]->ufdfile[fcount[i]-1].flength += length;//原長(zhǎng)度加輸入長(zhǎng)度

      printf(”n'%s' has been written successfully!n“,fname);

      }

      else

      {

      printf(”nError.'%s' has been opened with WRITE ONLY mode.It isn't read.n“,fname);

      wgetchar=1;

      }

      }

      else

      {

      printf(”nError.'%s' is in closing status.Please open it before readn“,fname);

      wgetchar=1;

      }

      }

      else

      {

      printf(”nError.'%s' does not exist.n",fname);

      wgetchar=1;

      } } }

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      【測(cè)試結(jié)果】

      1、創(chuàng)建用戶

      2、創(chuàng)建文件,并且打開(kāi)讀取文件

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      3、寫(xiě)文件

      4、刪除文件

      操作系統(tǒng)課程設(shè)計(jì)報(bào)告

      【設(shè)計(jì)總結(jié)】

      這兩周的課程設(shè)計(jì)時(shí)間非常短,從中學(xué)到了很多知識(shí),也為我們的學(xué)習(xí)提供了良好的實(shí)踐平臺(tái)。首先,通過(guò)老師的細(xì)心指導(dǎo)和同學(xué)們的相互幫助,讓我對(duì)題目【二級(jí)文件系統(tǒng)】有了進(jìn)一步了解。接下來(lái),主要是研究老師所給的大部分代碼,參考他的基本思路,并且思考每一個(gè)結(jié)構(gòu)體在代碼中的具體作用。這期間和一些同學(xué)交流了各自的思路,在交流中,大家漸漸的明確了這個(gè)程序的思路、框架結(jié)構(gòu)等。我們所做的主要是補(bǔ)充了刪除文件,打開(kāi)文件,關(guān)閉文件,寫(xiě)文件這幾個(gè)部分。

      代碼編寫(xiě)完了之后,實(shí)現(xiàn)了題目所要求的基本功能,但是在測(cè)試的過(guò)程中,還發(fā)現(xiàn)了這個(gè)程序存在各種各樣的bug。不斷的測(cè)試修改后,得到完善。

      這次課設(shè)最大的收獲在于:學(xué)會(huì)交流以及相互幫助。在大家的交流溝通之中,我們解決了一個(gè)又一個(gè)難題。

      在這次課設(shè)中,我還意識(shí)到,要把這門課真真正正地學(xué)好,不單單只是為了能夠應(yīng)付考試,平時(shí)還要多加學(xué)習(xí),多加努力才對(duì)。

      【參考文獻(xiàn)】

      【1】C語(yǔ)言程序設(shè)計(jì)(第三版)譚浩強(qiáng)

      【2】計(jì)算機(jī)操作系統(tǒng)教程(第三版).張堯?qū)W 史美林 張高

      【3】計(jì)算機(jī)操作系統(tǒng),西安電子科技大學(xué)出版社,方敏主編,2004.8

      下載操作系統(tǒng)調(diào)研報(bào)告word格式文檔
      下載操作系統(tǒng)調(diào)研報(bào)告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        計(jì)算機(jī)操作系統(tǒng) 課程設(shè)計(jì)報(bào)告(推薦)

        操作系統(tǒng)課程設(shè)計(jì)報(bào)告 時(shí)間:2010-12-20~2010-12-31 地點(diǎn):信息技術(shù)實(shí)驗(yàn)中心 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè) 2008級(jí)2班15號(hào) 楊 燁2010-12-31 信息工程學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)082班 目錄 一......

        嵌入式操作系統(tǒng)課程報(bào)告

        華北水利水電大學(xué)North China University of Water Resources and Electric Power嵌入式操作系統(tǒng)課程報(bào)告題目 嵌入式系統(tǒng)課程綜和論述......

        Linux操作系統(tǒng)實(shí)習(xí)報(bào)告

        沈陽(yáng)航空航天大學(xué) Linux系統(tǒng)操作實(shí)習(xí)報(bào)告 院(系):計(jì)算機(jī)學(xué)院 專業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí):84010103 學(xué)號(hào):2008040101061 姓名:李雪城 指導(dǎo)教師:王越 完成日期:2011年7月22日 7月18日......

        安全操作系統(tǒng)報(bào)告要求(范文模版)

        內(nèi)容: 有關(guān)操作系統(tǒng)安全機(jī)制、策略,開(kāi)發(fā)與實(shí)現(xiàn)、win8系統(tǒng)的安全配置與管理等方面的報(bào)告。注意事項(xiàng): 1. 請(qǐng)大家參考科技論文的書(shū)寫(xiě)格式來(lái)書(shū)寫(xiě)本次報(bào)告。 2. 不能雷同太多,需要有......

        操作系統(tǒng)實(shí)習(xí)報(bào)告樣本[五篇范文]

        1 操作系統(tǒng)實(shí)習(xí)報(bào)告內(nèi)容 基本信息:完成人姓名、學(xué)號(hào)、報(bào)告日期 實(shí)習(xí)內(nèi)容 實(shí)習(xí)目的 實(shí)習(xí)題目 設(shè)計(jì)思路和流程圖(6) 主要數(shù)據(jù)結(jié)構(gòu)及其說(shuō)明(7) 源程序并附上注釋......

        網(wǎng)絡(luò)操作系統(tǒng)實(shí)習(xí)報(bào)告

        廣西生態(tài)工程職業(yè)技術(shù)學(xué)院信息工程系 課程實(shí)習(xí)報(bào)告書(shū) 課 程: 專 業(yè): 年 級(jí): 班 級(jí): 學(xué) 號(hào): 姓 名: 網(wǎng)絡(luò)操作系統(tǒng) 計(jì)算機(jī)系統(tǒng)維護(hù) 2010級(jí) 系統(tǒng)101班 11410117 曾令員 信息工程系 20......

        linux操作系統(tǒng)實(shí)習(xí)報(bào)告(定稿)

        linux操作系統(tǒng)實(shí)習(xí)報(bào)告 篇一:linux 實(shí)習(xí)報(bào)告(一).通過(guò)綜合實(shí)訓(xùn)進(jìn)一步鞏固、深化和擴(kuò)展學(xué)生的專業(yè)技能。 1.熟練掌握Linux操作系統(tǒng)的安裝及基本配置。 2.熟練掌握Linux系統(tǒng)管......

        Linux操作系統(tǒng)實(shí)習(xí)報(bào)告

        Linux系統(tǒng)操作實(shí)習(xí)報(bào)告 院(系): 班級(jí): 學(xué)號(hào): 姓名: 實(shí)習(xí)內(nèi)容 Linux的系統(tǒng)操作實(shí)習(xí)的第一天, 尚觀科技長(zhǎng)期開(kāi)發(fā)高端UNIX/Linux、嵌入式開(kāi)發(fā)、Linux集群、Linux內(nèi)核、POSIX開(kāi)發(fā)、Ora......