第一篇:最新計算機課程設(shè)計工作總結(jié)
課程設(shè)計是每一個大學生在大學生涯中都不可或缺的,它使我們在實踐中了鞏固了所學的知識、在實踐中鍛煉自己的動手能力;實習又是對每一位大學生所學專業(yè)知識的一種拓展手段,它讓我們學到了很多在課堂上根本就學不到的知識,不僅開闊了自己的視野,增戰(zhàn)了自己的見識,也為我們以后進一步走向社會打下了堅實的基礎(chǔ),是我們走向以后走向工作崗位的奠基石。
一、實習目的 計算機網(wǎng)絡(luò),是指將地理位置不同的具有獨立功能的多臺計算機及其外部設(shè)備,通過通信線路連接起來,在網(wǎng)絡(luò)操作系統(tǒng),網(wǎng)絡(luò)管理軟件及網(wǎng)絡(luò)通信協(xié)議的管理和協(xié)調(diào)下,實現(xiàn)資源共享和信息傳遞的計算機系統(tǒng)。針對于此,在經(jīng)過相應(yīng)的課程如《計算機網(wǎng)絡(luò)》、《計算機基礎(chǔ)知識》、《操作系統(tǒng)》等課程的系統(tǒng)學習之后,可以說對計算機網(wǎng)絡(luò)已經(jīng)是耳目能熟了,所有的有關(guān)計算機網(wǎng)絡(luò)的基礎(chǔ)知識、基本理論、基本方法和結(jié)構(gòu)體系,我都基本掌握了,但這些似乎只是紙上談兵,倘若將這些理論性極強的東西搬上實際上應(yīng)用,那我想我肯定會是無從下手,一竅不通。自認為已經(jīng)掌握了一定的計算機網(wǎng)絡(luò)理論知識在這里只能成為空談。于是在堅信實踐是檢驗真理的唯一標準下,認為只有把從書本上學到的理論應(yīng)用于實際的網(wǎng)絡(luò)設(shè)計操作中去,才能真正掌握這門知識。
二、實習的過程 計算機網(wǎng)絡(luò)的設(shè)計是一個要求動手能力很強的一門實踐課程,在課程設(shè)計期間我努力將自己以前所學的理論知識向?qū)嵺`方面轉(zhuǎn)化,盡量做到理論與實踐相結(jié)合,在課程設(shè)計期間能夠遵守紀律規(guī)章,不遲到、早退,認真完成老師布置的任務(wù),同時也發(fā)現(xiàn)了自己的許多不足之處。在課程設(shè)計過程中,我一共完成了11個實驗,分別是1.制作直通電纜和交叉utp、2.交換機console口和telnet配置、3.交換機端口和常規(guī)配置、4.虛擬局域網(wǎng)vlan配置、5.路由器console口 telnet配置方法和接口配置、6.路由器靜態(tài)路由配置、7單臂路由配置、8.動態(tài)路由協(xié)議配置、9.ppp協(xié)議配置、10路由器訪問控制表(acl)、11.網(wǎng)絡(luò)地址轉(zhuǎn)換(nat)。在制作直通電纜和交換utp的實驗中,我起初不能完全按照要求來剪切電纜,導致連接不通,后來在同學的幫助下,終于將實驗完成。在做到單臂路由配置和動態(tài)路由協(xié)議配置的實驗,由于自身的基礎(chǔ)知識掌握不牢,忘掉了一些理論知識,在重新翻閱課本和老師的指導之下,也成功的完成了試驗。從抽象的理論回到了豐富的實踐創(chuàng)造,細致的了解了計算機網(wǎng)絡(luò)連接的的全過程,認真學習了各種配置方法,并掌握了利用虛擬環(huán)境配置的方法,我利用此次難得的機會,努力完成實驗,嚴格要求自己,認真學習計算機網(wǎng)絡(luò)的基礎(chǔ)理論,學習網(wǎng)絡(luò)電纜的制作等知識,利用空余時間認真學習一些課本內(nèi)容以外的相關(guān)知識,掌握了一些基本的實踐技能。課程設(shè)計是培養(yǎng)我們綜合運用所學知識,發(fā)現(xiàn)、提出、分析、解決問題的一個過程,是對我們所學知識及綜合能力的一次考察。隨著科學技術(shù)日新月異的不斷發(fā)展,計算機網(wǎng)絡(luò)也在不斷的變化發(fā)展當中,這就要求我們用相應(yīng)的知識來武裝自己,夯實基礎(chǔ),為將來走向工作崗位,貢獻社會做好充分的準備。
第二篇:計算機組成原理課程設(shè)計
《計算機組成原理》課程設(shè)計
任務(wù)書
中原工學院計算機學院 2007年6月
前言
“計算機組成原理”是大學本科計算機相關(guān)專業(yè)的一門核心專業(yè)基礎(chǔ)課程,必修,在先導課和后繼課之間起著承上啟下的作用。主要講授單處理機系統(tǒng)的組成和工作原理,包括運算器、存儲器、控制器和輸入輸出系統(tǒng),其中控制器的設(shè)計是課程的重點和難點。為了讓學生能融會貫通各知識點,增強對計算機系統(tǒng)各模塊協(xié)同工作的認識,充分理解數(shù)據(jù)通路,掌握控制器的設(shè)計技術(shù),課程設(shè)計一般也側(cè)重于控制器的設(shè)計。考慮到學生的基礎(chǔ)和現(xiàn)有實驗環(huán)境,本次課程設(shè)計的題目是“微程序控制器的設(shè)計與實現(xiàn)”。通過該課程設(shè)計,希望學生在理論與實踐相結(jié)合的基礎(chǔ)上,加深對計算機整機概念,進一步理解計算機的內(nèi)部結(jié)構(gòu)和時空關(guān)系,進一步理解和掌握微程序控制器的設(shè)計思想和具體方法、步驟,從而提高自行設(shè)計、調(diào)試和分析問題的能力。課程設(shè)計題目
微程序控制器的設(shè)計與實現(xiàn)
目的
? 鞏固和深刻理解“計算機組成原理”課程所講解的原理,加深對計算機各模塊協(xié)同工作的認識
? 掌握微程序設(shè)計的思想和具體流程、操作方法。? 培養(yǎng)學生獨立工作和創(chuàng)新思維的能力,取得設(shè)計與調(diào)試的實踐經(jīng)驗。
? 嘗試利用編程實現(xiàn)微程序指令的識別和解釋的工作流程
內(nèi)容
按照要求設(shè)計一指令系統(tǒng),該指令系統(tǒng)能夠?qū)崿F(xiàn)數(shù)據(jù)傳送,進行加、減運算和無條件轉(zhuǎn)移,具有累加器尋址、寄存器尋址、寄存器間接尋址、存儲器直接尋址、立即數(shù)尋址等五種尋址方式。
具體要求
? 仔細復習所學過的理論知識,掌握微程序設(shè)計的思想,并根據(jù)掌握的理論寫出要設(shè)計的指令系統(tǒng)的微程序流程。指令系統(tǒng)至少要包括六條指令,具有上述功能和尋址方式。? 根據(jù)微操作流程及給定的微指令格式寫出相應(yīng)的微程序 ? 將所設(shè)計的微程序在虛擬環(huán)境中運行調(diào)試程序,并給出測試思路和具體程序段
? 嘗試用C或者Java語言實現(xiàn)所設(shè)計的指令系統(tǒng)的加載、識別和解釋功能。? 撰寫課程設(shè)計報告。
設(shè)計環(huán)境
? 偉福COP2000型計算機組成原理實驗儀,微機,相關(guān)虛擬軟件。
? VC開發(fā)環(huán)境或者Java開發(fā)環(huán)境。
課程設(shè)計時間
? 1.5周
課程設(shè)計報告要求 完成設(shè)計任務(wù)后,在課程設(shè)計的最后階段,需要總結(jié)全部設(shè)計工作,寫出完整,規(guī)范的設(shè)計報告,在指定的時間內(nèi)提交指導教師.課程設(shè)計報告要求有完整的格式,包括封面,目錄,正文等,具體如下:
一、封面
包括:課程設(shè)計題目,姓名,學號,班級,指導教師,完成日期.二、目錄
正文前必須要有目錄.三、正文 正文包括的內(nèi)容有: ⑴ 設(shè)計任務(wù)與要求;⑵ 設(shè)計方案(包括設(shè)計思路,采用的微指令格式,每條指令的指令流程及其微程序清單)(3)調(diào)試過程(包括實驗步驟,出現(xiàn)的問題,解決的方法(4)小結(jié)(在整個課程設(shè)計過程中的總結(jié)和體會)(5)參考資料
成績評定
課程設(shè)計的考核結(jié)果按優(yōu)秀,良好,中等,及格和不及格來評價.對設(shè)計任務(wù)理解透徹,能夠全面,正確,獨立地完成設(shè)計內(nèi)容所規(guī)定的任務(wù),得出設(shè)計結(jié)果,并按時提交準確,完整,規(guī)范的設(shè)計報告,可評為優(yōu)秀;按照設(shè)計任務(wù)要求能夠順利地完成任務(wù),得出結(jié)果,按時提交較完整的,符合要求的設(shè)計報告,可評定為良好;按照設(shè)計要求完成了軟件的編程與調(diào)試,基本完成了任務(wù)要求,提交符合要求的設(shè)計報告,可評為中等;基本完成設(shè)計目標,但不夠完善,可能有若干小的缺陷,在幫助下能夠完成任務(wù)要求,提交設(shè)計報告,可評為及格;不能完成指定的要求和任務(wù),未提交設(shè)計報告的,評為不及格.參考資料 1.“計算機組成原理課程設(shè)計任務(wù)書” 2.“計算機組成原理” 課堂教材
第三篇:計算機網(wǎng)絡(luò)安全課程設(shè)計報告
大學
計算機網(wǎng)絡(luò)安全 課 程 設(shè) 計 報 告
學院:信息工程學院 專業(yè):信息安全 班級: 學生: 學號: 指導教師:
目錄
第一章 Windows服務(wù)器的安裝...............................4 1.1需求分析:.............................................4 1.2設(shè)計實現(xiàn):.............................................4 1.3安裝檢測:.............................................6 第二章IIS的安裝與配置....................................7
2.1需求分析:.............................................7 2.1.1 IIS簡介............................................7 2.2設(shè)計實現(xiàn):.............................................7 2.2.1 IIS安裝............................................7 2.2.2 www.tmdps.cn
圖4.2.3-2 設(shè)定新建主機中區(qū)域名稱yangbo.com
步驟三:點擊下一步,設(shè)置動態(tài)更新為“允許非安全和安全動態(tài)更新”,完成新建區(qū)域向?qū)?,正向查找區(qū)域新建并配置完成。
圖4.2.3-3 正向查找區(qū)域新建并配置完成
步驟四:在新建區(qū)域中添加主機,完整名稱為www.tmdps.cn里面的主機名為dns的記錄,選擇它并確定。
圖4.2.4-5新建指針配置
步驟六:完成后 再按 【確定】(這是建立反向解析,172.16.102.221指向域名dns.yangbo.org),并在網(wǎng)絡(luò)中的其他主機中設(shè)置DNS服務(wù)器地址為172.16.102.221其他主機能夠順利上網(wǎng)。
第五章DHCP服務(wù)器的安裝與配置
5.1需求分析:
DHCP 服務(wù)器本身必須采用固定的IP地址 為DHCP服務(wù)器的規(guī)劃可用IP地址
5.2設(shè)計實現(xiàn): 5.2.1安裝DHCP服務(wù)器
步驟一:在windows server 2003 的“開始”>“管理工具”菜單中點擊“配置你的服務(wù)器向?qū)А泵?。如下圖
圖5.2.1-1 配置服務(wù)器向?qū)А陆―HCP服務(wù)器
步驟二:在“服務(wù)器角色”列表單擊“DHCP服務(wù)器”選項,再單擊“下一步”按鈕,打開“新建作用域?qū)颉睂蝽摗?/p>
圖5.2.1-2 配置服務(wù)器向?qū)А陆ㄗ饔糜?/p>
步驟三:新建DHCP作用域。填入作用域名。
圖5.2.1-3設(shè)定作用域名稱及描述
步驟四:址·范圍”始IP地址、和掩碼。
在“IP地中,輸入起結(jié)束IP地址
圖5.2.1-4設(shè)定作用域IP地址范圍
步驟五:根據(jù)實際需要,則在“添加排除”頁中,配置起始IP地址和結(jié)束IP地址。如果要排除單個IP地址,只需在“起始IP地址”輸入地址。
圖5.2.1-5添加排除作用域IP地址范圍
步驟六:在“租約期限”窗口中,設(shè)置租約的期限,默認為8天。
圖5.2.1-6設(shè)定作用域使用期限
步驟七:激活作用域。
圖5.2.1-7激活作用域
步驟八:指定作用域要分配的路由器或默認網(wǎng)關(guān)。
圖5.2.1-8指定
路由器IP地址
步驟九:安裝和新建作
完成DHCP用域。
圖5.2.1-9DHCP服務(wù)器安裝完成及作用域新建完成
步驟十:安裝好“active directory”(active directory的安裝將在“安裝活動目錄”實驗中進行詳細介紹),右鍵“yb-.......”選擇“授權(quán)”可對DHCP服務(wù)起進行授權(quán),如圖。
圖5.2.1-10授權(quán)
5.2.2驗步驟證查看
證檢測:
一:完成驗DHCP服務(wù)器
圖5.2.2-1驗證查看DHCP 步驟二:release本地IP地址,看重連后是否連接“172.16.102.221”
圖5.2.2-2release 步驟三:renew重連后,重新連接的DHCP服務(wù)器還是“172.16.102.221”
圖5.2.2-2renew
第六章安裝活動目錄AD 6.1需求分析:
在活動目錄中創(chuàng)建域環(huán)境,同時將計算機加入域,并能使用域的管理員賬戶在客戶機上登陸。
6.2設(shè)計實現(xiàn):
6.2.1 活動目錄AD安裝與配置
步驟一:在“開始”>“管理工具”中選擇“配置你的服務(wù)器向?qū)А薄_x擇“活動目錄”,按下一步。
圖6.2.1-1安裝域控制器
步驟二:選擇:新域控制器,然后按“下一步”。
圖6.2.1-2設(shè)置新域控制器類型
步驟三:選擇“在新林中的域”然后“下一步”。
圖6.2.1-3創(chuàng)建一個新域
步驟四:在“新的域名”對話框中輸入“DNS全名”為yb.local。步驟五:默認的域NETBIOS,下一步。
步驟六:"數(shù)據(jù)庫和日志文件夾"放著默認的指定文件夾下,然后繼續(xù)“下一步”。
圖6.2.1-4設(shè)置數(shù)據(jù)庫和日志文件夾
步驟七:默認的配置,按下圖:
圖6.2.1-5設(shè)置共享系統(tǒng)卷
步驟八:選擇第二項。
圖6.2.1-6設(shè)置DNS注冊診斷
步驟九:按下圖:
圖6.2.1-7設(shè)置權(quán)限
步驟十:輸入管理員密碼。
圖6.2.1-8設(shè)置目錄服務(wù)還原模式的管理員密碼
步驟十一:點擊下一步,完成安裝。
圖6.2.1-9設(shè)置目錄服務(wù)還原模式的管理員密碼
6.2.2 創(chuàng)建用戶
步驟一:“開始”>“管理工具”,點擊進入“active directory用戶和計算機”。在“yb.local”中的用戶,右擊“新建”>“組”,設(shè)置組名“abc”,下一步。
圖6.2.2-1新建組abc
步驟二:在組“abc”中,新建用戶test1,并填寫“姓”與“登錄名”,下一步
圖6.2.2-1新建對象—用戶
步驟三:填入密碼,并設(shè)置密碼永不過期。
圖6.2.2-2設(shè)置密碼
步驟四:完成創(chuàng)建并查看用戶屬性:
圖6.2.2-3用戶屬性
步驟五:在一臺客戶機上右鍵“我的電腦”>“屬性”>“計算機名”>“更改”,并
在里面修改內(nèi)容為yangbotest,選擇新加入域“yb.local”,修改完成后點擊“確定”。
圖6.2.2-4用戶屬性
步驟六:重啟客戶機,用服務(wù)器中創(chuàng)建的用戶名登錄,同時AD目錄中Computer中顯示用戶test1。用戶添加成功。
6.2.3 設(shè)置共享文件
步驟一:完成上述步驟后,在C盤中創(chuàng)建文件夾share,并設(shè)置為文件夾共享,在文件夾中創(chuàng)建文件test1,并設(shè)置屬性共享,在屬性—>安全中設(shè)置用戶權(quán)限。
圖6.2.3-1設(shè)置共享文件夾并配置屬性
步驟二:在AD中用戶test1屬性中,配置文件路徑172.16.102.221test1$
圖6.2.3-2配置用戶共享文件路徑
6.3驗證檢測:
步驟三:在客戶機中點擊網(wǎng)上鄰居,雙擊“Microsoft Windows Network”進入,找到服務(wù)器主機,進入即可看到所有該服務(wù)器主機分享的內(nèi)容。
第七章E-MAIL服務(wù)器的安裝與配置
7.1需求分析:
郵件服務(wù)器構(gòu)成了電子郵件系統(tǒng)的核心,沒有收信人都有一個位于某個郵件服務(wù)器上的郵箱(mailbox)。簡單郵件傳送協(xié)議(SMTP)是因特網(wǎng)郵件系統(tǒng)首要的應(yīng)用層協(xié)議,它使用由TCP提供的可靠的數(shù)據(jù)傳輸服務(wù)把郵件消息從發(fā)信人的郵件服務(wù)器傳送到收信人的郵件服務(wù)器。跟大多數(shù)應(yīng)用層協(xié)議一樣,SMTP也存在兩個端:在發(fā)信人的郵件服務(wù)器上之星的客戶端和在收信人的郵件服務(wù)器上之星的服務(wù)器端。SMTP的客戶端和服務(wù)器端同時運行在每個郵件服務(wù)器發(fā)送郵件消息時,它是作為SMTP客戶在運行。當一個郵件服務(wù)器從其他郵件服務(wù)器接收郵件消息時,它是作為SMTP服務(wù)器在運行。
7.2設(shè)計實現(xiàn): 7.2.1安裝POP3和smtp 步驟一:在“開始”>“控制面板”菜單中單擊“添加或刪除程序”命令。步驟二:繼續(xù)單擊“添加/刪除windows組件”按鈕,在“windows組件向?qū)А睂υ捒騿螕簟半娮余]件服務(wù)”。單擊“詳細信息”。可以看到,有:pop3服務(wù)和
pop3服務(wù)WEB管理,如下圖:
圖7.2.1-1添加電子郵件服務(wù)中POP3服務(wù)和POP3服務(wù)Web管理
步驟三:選中兩項后單擊“確定”退出。
步驟四:在“windows組件向?qū)А敝羞x擇“應(yīng)用程序服務(wù)器”,單擊“詳細信息”。步驟五:接著,在“internet組件向?qū)А睂υ捒蜻x擇“應(yīng)用程序服務(wù)器”項,單擊“詳細信息”,選中“smtp service”項。
步驟六:在完成以上設(shè)置后,在“windows組件向?qū)А睂υ捒蛑袉螕簟跋乱徊健薄O到y(tǒng)完成安裝和配置POP3與SMTP服務(wù)。
圖7.2.1-2添加SMTPservice 7.2.2 創(chuàng)建郵件域
步驟一:在“開始”>“管理工具”菜單中單擊“POP3服務(wù)”命令,打開“POP3服務(wù)”的控制臺窗口。
圖7.2.2-1POP3服務(wù)控制臺
步驟二:在控制臺樹中,右鍵單擊“計算機名”節(jié)點,在右鍵快捷菜單中的單擊“域”命令,彈出“添加域”對話框,在域名欄中輸入郵件服務(wù)器的域名。
圖7.2.2-2添加域
7.2.3創(chuàng)建用戶郵箱
選中剛剛新建的“yb.local”域,單擊“添加郵箱”,彈出添加郵箱對話框,在郵箱名欄中輸入郵件用戶名,然后設(shè)置用戶密碼,最后單擊“確定”按鈕,完成郵箱的創(chuàng)建。建議至少創(chuàng)建兩個。
圖7.2.3-1添加郵箱
7.2.4配置SMTP服務(wù)器
完成POP3服務(wù)器的配置后,就可以開始配置SMTP了。
步驟一:在“開始”>“管理工具”菜單中單擊“internet信息服務(wù)(IIS)管理器”命令,在“IIS管理器”窗口中右擊“默認SMTP虛擬服務(wù)器”選項,在彈出的菜單中選中“屬性”,進入“默認SMTP虛擬服務(wù)器”窗口。切換到常規(guī)標簽欄,在“IP地址”下拉列表框中選中郵件服務(wù)啟動IP地址就可以了。
圖7.2.4-1配置SMTP虛擬服務(wù)器
步驟二:單擊“確定”按鈕,這樣一個簡單的郵件服務(wù)器就架設(shè)完成了。步驟三:完成以上設(shè)置后,用戶就可以使用郵件客服端軟件連接郵件服務(wù)器進行郵件收發(fā)共合作了。在設(shè)置郵件客戶端軟件的SMTP和POP3服務(wù)器地址時,輸入郵件服務(wù)器域名“yb.local"即可。
7.3 驗證檢測
步驟一:打開outlook,“工具”>“賬戶”>“郵箱”>“添加”
圖7.3-1設(shè)置Internet電子郵件地址
步驟二:在電子郵件服務(wù)器名處填寫一下信息
圖7.3-2設(shè)置電子郵件服務(wù)器名
步驟三:郵件登錄處鍵入賬號和密碼
圖7.3-2設(shè)置Internet郵件登陸
步驟四:用“abc@yb.local”為發(fā)送方地址給收件方“yangbo@yb.local”發(fā)送主題為“asdgaga”,內(nèi)容為“asdfgaserygdfg”的郵件。
圖7.3-3發(fā)送郵件
步驟五:登錄“yangbo@yb.local”賬號,查看收到一份郵件,發(fā)件人為“abc@yb.local”主題為“asdgaga”,內(nèi)容為“asdfgaserygdfg”。
圖7.3-4收件箱顯示
第八章視頻服務(wù)器的安裝與配置
8.1需求分析:
我們大家知道,Windows Media服務(wù)采用流媒體的方式來傳輸數(shù)據(jù)。WindowsMedia是一整套的流媒體制作、發(fā)布和播放工具,其服務(wù)器端的Windows Media Sever集成在Windows 2003 Sever中,Windows Media服務(wù)支持ASF和WMV格式的視頻文件,以及WMA和MP3格式的音頻文件。
在實驗開始之前,檢查Windows Media安裝條件,完整無誤后安裝Media play播放器及其組件;同時安裝使用Media編碼器,創(chuàng)建視頻點播發(fā)布點,并在客戶機中設(shè)置與訪問測試。
8.2設(shè)計實現(xiàn):
8.2.1 Windows Media服務(wù)的安裝
步驟一:打開“配置您的服務(wù)器向?qū)А边x擇“流式媒體服務(wù)器”,點擊“下一步”。
圖8.2.1-1 選擇服務(wù)器角色
步驟二:安裝“流式媒體服務(wù)器”。
圖8.2.1-2配置組件
步驟三:安裝完成。
圖8.2.1-3完成安裝
步驟四:在Windows組件向?qū)Т翱谥羞x擇Windows media services點擊“下一步”。如下圖:
圖8.2.1-4添加Windows Media Service 步驟五:選擇“開始”>“管理工具”>“Windows media services”進入主窗口,右鍵“發(fā)布點”>“添加發(fā)布點(向?qū)В?/p>
圖8.2.1-5添加發(fā)布點
步驟六:設(shè)置發(fā)布點名稱為“ybkc”,內(nèi)容類型選擇第四個,發(fā)布點類型選擇點播
圖8.2.1-6設(shè)置發(fā)布點名稱及內(nèi)容類別
圖8.2.1-7設(shè)置發(fā)布點類型為點播
步驟七:選擇視頻源的路徑
圖8.2.1-8設(shè)置目錄位置
步驟八:按照提示即可完成“發(fā)布點向?qū)А薄?/p>
圖8.2.1-9完成“添加發(fā)布點向?qū)А?/p>
8.2.2 單播公告向?qū)渲?/p>
步驟一:置后會彈出導”。
在完成上面配“單播公告向
圖8.2.2-1單播公告向?qū)?/p>
步驟二:“點播目錄”選擇“目錄中的一個文件”,即發(fā)布點向?qū)е械哪夸浳恢谩?/p>
圖8.2.2-2設(shè)置點播目錄
步驟三:選擇公告文件名和位置,及創(chuàng)建一個帶有嵌入的播放機和指向該內(nèi)容的鏈接的網(wǎng)頁;如圖示選擇。
圖8.2.2-3設(shè)置公告選項
步驟四:完成向?qū)А?/p>
圖8.2.2-4編輯公告源數(shù)據(jù)
圖8.2.2-5完成向?qū)?/p>
8.3驗證檢測
8.3.1 在文件目錄中播放
步驟一:在源處選擇測試的視頻,并按圖示點擊測試。
圖8.3.1-1源測試
步驟二:視頻源可以正常播放
圖8.3.1-2視頻源正常播放
步驟三:在“我的電腦”地址欄輸入“mms:/172.16.102.221/ybkc/1.wmv”,視頻能夠正常打開播放。
圖8.3.1-3文件檢索視頻正常播放
8.3.2 在網(wǎng)頁中播放
步驟一:編輯名為“yangbo.html”的目錄網(wǎng)頁。
圖8.3.2-1目錄網(wǎng)頁yangbo.html
步驟二:編輯名為“video1.html”的子網(wǎng)頁。其它3個子網(wǎng)頁同理。
圖8.3.2-2子網(wǎng)頁video1.html
步驟三:將編輯好的“yangbo.html”,和其它4個子網(wǎng)頁放在“C:Inetpubwwwroot”
目錄下。
圖8.3.2-3五個網(wǎng)頁放到同一文件夾
步驟四:在IIS管理平臺“網(wǎng)站”“yangbo”>>”屬性”>“文檔”中添加“yangbo.html”,并將其上調(diào)到最高位置。
圖8.3.2-4添加屬性文檔
步驟五:在客戶機中設(shè)置服務(wù)器為“172.16.102.221”在IE中鍵入服務(wù)器地址,即可看到視頻目錄,選擇一個視頻,可以成功播放。
第四篇:計算機操作系統(tǒng) 課程設(shè)計報告(推薦)
操作系統(tǒng)課程設(shè)計報告
時間:2010-12-20~2010-12-31 地點:信息技術(shù)實驗中心
計算機科學與技術(shù)專業(yè) 2008級2班15號
楊 燁
2010-12-31
信息工程學院計算機科學與技術(shù)082班
目錄
一、課程設(shè)計的目的和意義...........................................................................................................2
二、進程調(diào)度算法模擬...................................................................................................................2
1、設(shè)計目的.............................................................................................................................2
2、設(shè)計要求.............................................................................................................................2
3、時間片輪轉(zhuǎn)算法模擬.........................................................................................................3
實現(xiàn)思想:.......................................................................................................................3(1)流程圖.....................................................................................................................3(2)程序代碼.................................................................................................................3(3)運行結(jié)果.................................................................................................................5
4、先來先服務(wù)算法模擬.........................................................................................................6 算法思想...................................................................................................................................6
(1)流程圖.....................................................................................................................7(2)程序代碼.................................................................................................................7(3)運行結(jié)果...............................................................................................................11
三、主存空間的回收與分配.........................................................................................................11
1、設(shè)計目的...........................................................................................................................11
2、設(shè)計要求...........................................................................................................................12
3、模擬算法的實現(xiàn)...............................................................................................................13(1)流程圖...................................................................................................................13(2)程序代碼...............................................................................................................13(3)運行結(jié)果...............................................................................................................28
四、模擬DOS文件的建立和使用...............................................................................................28 設(shè)計目的.............................................................................................................................28 2 設(shè)計要求.............................................................................................................................28
3、模擬算法實現(xiàn)...................................................................................................................31(1)流程圖...................................................................................................................31(2)程序代碼...............................................................................................................31(3)運行結(jié)果...............................................................................................................36
五、磁盤調(diào)度算法模擬.................................................................................................................36
1.設(shè)計目的..............................................................................................................................36 2.實驗原理..............................................................................................................................37 3.設(shè)計要求...........................................................................................................................37
4、模擬算法的實現(xiàn)...............................................................................................................38(1)各算法流程圖.......................................................................................................38(2)程序代碼...............................................................................................................39(3)運行結(jié)果...............................................................................................................45
六、總結(jié).........................................................................................................................................45
信息工程學院計算機科學與技術(shù)082班
一、課程設(shè)計的目的和意義
本次操作系統(tǒng)課程設(shè)計的主要任務(wù)是進行系統(tǒng)級的程序設(shè)計。本課程設(shè)計是操作系統(tǒng)原理課程的延伸。通過該課程設(shè)計,使學生更好地掌握操作系統(tǒng)各部分結(jié)構(gòu)、實現(xiàn)機理和各種典型算法,加深對操作系統(tǒng)的設(shè)計和實現(xiàn)思路的理解,培養(yǎng)學生的系統(tǒng)設(shè)計和動手能力,學會分析和編寫程序。課程設(shè)計的實施將使學生在以下幾個方面有所收獲:
(1)加深對操作系統(tǒng)原理的理解,提高綜合運用所學知識的能力;
(2)培養(yǎng)學生自主查閱參考資料的習慣,增強獨立思考和解決問題的能力;(3)通過課程設(shè)計,培養(yǎng)嚴謹?shù)目茖W態(tài)度和協(xié)作精神。
二、進程調(diào)度算法模擬
1、設(shè)計目的
(1)要求學生設(shè)計并實現(xiàn)模擬進程調(diào)度的算法:時間片輪轉(zhuǎn)及先來先服務(wù)。(2)理解進程控制塊的結(jié)構(gòu)。(3)理解進程運行的并發(fā)性。(4)掌握進程調(diào)度算法。
2、設(shè)計要求
在多道程序運行環(huán)境下,進程數(shù)目一般多于處理機數(shù)目,使得進程要通過競爭來使用處理機。這就要求系統(tǒng)能按某種算法,動態(tài)地把處理機分配給就緒隊列中的一個進程,使之運行,分配處理機的任務(wù)是由進程調(diào)度程序完成的。一個進程被創(chuàng)建后,系統(tǒng)為了便于對進程進行管理,將系統(tǒng)中的所有進程按其狀態(tài),將其組織成不同的進程隊列。于是系統(tǒng)中有運行進程隊列、就緒隊列和各種事件的進程等待隊列。進程調(diào)度的功能就是從就緒隊列中挑選一個進程到處理機上運行。進程調(diào)度的算法有多種,常用的有優(yōu)先級調(diào)度算法、先來先服務(wù)算法、時間片輪轉(zhuǎn)算法。
進程是程序在處理機上的執(zhí)行過程。進程存在的標識是進程控制塊(PCB),進程控制塊結(jié)構(gòu)如下:
typedef struct node { char name[10];/* 進程標識符 */ int prio;/* 進程優(yōu)先數(shù) */ int round;/* 進程時間輪轉(zhuǎn)時間片 */ int cputime;/* 進程占用 CPU 時間*/ int needtime;/* 進程到完成還需要的時間*/ int count;/* 計數(shù)器*/ char state;/* 進程的狀態(tài)*/ struct node *next /*鏈指針*/ }PCB;系統(tǒng)創(chuàng)建一個進程,就是由系統(tǒng)為某個程序設(shè)置一個PCB,用于對該進程進行控制和管
信息工程學院計算機科學與技術(shù)082班
理,進程任務(wù)完成,由系統(tǒng)收回其PCB,該進程便消亡。每個進程可以有三個狀態(tài):運行狀態(tài)、就緒狀態(tài)和完成狀態(tài)。
用C語言、C++或者Java語言編寫一個程序?qū)崿F(xiàn)進程調(diào)度的算法,模擬進程調(diào)度的過程,加深對進程控制塊概念和進程調(diào)度算法的理解。
本任務(wù)要求完成時間片輪轉(zhuǎn)及先來先服務(wù)兩個算法。
3、時間片輪轉(zhuǎn)算法模擬
實現(xiàn)思想:
每次調(diào)度時,系統(tǒng)吧處理機分配給隊列首進程讓器執(zhí)行一個時間片,當執(zhí)行的時間片用完時,由一個計時器發(fā)出時鐘中斷請求,調(diào)度根據(jù)這個請求停止該進程的運行將其送到就緒隊列的末尾,再把處理機分給就緒隊列中新的隊首進程,同時讓它執(zhí)行一個時間片。(1)流程圖
進程調(diào)度—時間片輪轉(zhuǎn)開始輸入進程總數(shù)輸入各進程信息更新在運行的進程的已運行時間輸出為就緒狀態(tài)的進程信息N輸出此時為就緒狀態(tài)的進程信息當前進程是否運行結(jié)束是否存在下個進程Y指向下一個進程YN結(jié)束跳過
(2)程序代碼
#include
// PCB
struct PNode *next;// 定義指向下一個節(jié)點的指針
char name[10];
// 定義進程名,并分配空間
信息工程學院計算機科學與技術(shù)082班
int All_Time;
// 定義總運行時間
int Runed_Time;
// 定義已運行時間
char state;
// 定義進程狀態(tài) Ready / End } * Proc;// 指向該PCB的指針 int ProcNum;// 總進程個數(shù)
void InitPCB(Proc &H)// 初始化就緒隊列
{
cout<<“請輸入總進程個數(shù): ”;
cin>>ProcNum;// 進程總個數(shù)
int Num=ProcNum;
H=(Proc)malloc(sizeof(PNode));// 建立頭節(jié)點
H->next=NULL;
Proc p=H;//定義一個指針
cout<<“總進程個數(shù)為 ”<
while(Num--){
p=p->next=(Proc)malloc(sizeof(PNode));
cout<<“進程名 總運行時間 已運行時間 :”;
cin>>p->name>>p->All_Time>>p->Runed_Time;
p->state='R';
p->next=NULL;}
p->next=H->next;
} void DispInfo(Proc H)//輸出運行中的進程信息 {
Proc p=H->next;
do {
if(p->state!= 'E')
//如果該進程的狀態(tài)不是End的話
{
cout<<“進程名:”<
name<<“t總運行時間:”<
All_Time
<<“t已運行時間:”<
Runed_Time
<<“t狀態(tài):”<
state< p=p->next; } else p=p->next; } } void SJP_Simulator(Proc &H)// 時間片輪轉(zhuǎn)法 { while(p!= H->next);// 整個進程鏈條始終完整,只是狀態(tài)位有差異 信息工程學院計算機科學與技術(shù)082班 cout< int flag=ProcNum;// 記錄剩余進程數(shù) int round=0;// 記錄輪轉(zhuǎn)數(shù) Proc p=H->next; while(p->All_Time > p->Runed_Time) { // 即未結(jié)束的進程 round++; cout< p->Runed_Time++; // 更改正在運行的進程的已運行時間 DispInfo(H); // 輸出此時為就緒狀態(tài)的進程的信息 if(p->All_Time == p->Runed_Time){ // 并判斷該進程是否結(jié)束 p->state='E'; flag--; cout< name<<“ 進程已運行結(jié)束,進程被刪除!n”; } p=p->next; while(flag && p->All_Time == p->Runed_Time) p=p->next;// 跳過先前已結(jié)束的進程 } cout< Proc H; InitPCB(H);// 數(shù)據(jù)初始化 DispInfo(H);// 輸出此刻的進程狀態(tài) SJP_Simulator(H);// 時間片輪轉(zhuǎn)法 system(“pause”);}(3)運行結(jié)果 輸入相關(guān)進程信息: 輸出相關(guān)運行結(jié)果: 信息工程學院計算機科學與技術(shù)082班 4、先來先服務(wù)算法模擬 算法思想 按照進程的某種順序進行排序,然后按照這個順序進行調(diào)度。例如:可以按照作業(yè)提交時間或進程變?yōu)榫途w狀態(tài)的先后次序來分派處理器,讓排在后面的進程占用處理器,知道該進程執(zhí)行完或者由于某種原因被阻塞才讓出處理器。 在該調(diào)度策略中還規(guī)定,當有一個事件發(fā)生(如一個I/O操作完成)時,會有一些進程被喚醒,這些被喚醒的進程并不能立即恢復執(zhí)行,而是要等到當前運行的進程出讓處理器后才可以被調(diào)度執(zhí)行。采用此算法存在以下幾個特點: 周轉(zhuǎn)時間:對進程i來說,假設(shè)Tei是進程的完成時間,Tsi是進程的提交時間,那么進程i的周轉(zhuǎn)時間Ti=進程完成時間-進程提交時間; 進程平均周轉(zhuǎn)時間:T=1/nETi; 進程帶權(quán)周轉(zhuǎn)時間=進程等待時間+進程運行時間。 信息工程學院計算機科學與技術(shù)082班 (1)流程圖 Begin輸入當前磁道號now磁頭移動距離sum=abs(now-array[0])磁頭移動總距離sum+=abs(array[j]-array[i])輸出磁盤調(diào)度序列array[j]目前位置編程當前的位置i++j (2)程序代碼 #include “stdio.h” #include #define getpch(type)(type*)malloc(sizeof(type))#define NULL 0 struct pcb { /* 定義進程控制塊PCB */ char name[10];char state;int super; 信息工程學院計算機科學與技術(shù)082班 int ntime;int rtime;struct pcb* link;}*ready=NULL,*p;typedef struct pcb PCB; void sort()/* 建立對進程進行優(yōu)先級排列函數(shù)*/ { PCB *first, *second;int insert=0; if((ready==NULL)||((p->super)>(ready->super)))/*優(yōu)先級最大者,插入隊首*/ { p->link=ready;ready=p;} else /* 進程比較優(yōu)先級,插入適當?shù)奈恢弥?/ { first=ready;second=first->link;while(second!=NULL){ if((p->super)>(second->super))/*若插入進程比當前進程優(yōu)先數(shù)大,*/ { /*插入到當前進程前面*/ p->link=second;first->link=p;second=NULL;insert=1;} else /* 插入進程優(yōu)先數(shù)最低,則插入到隊尾*/ { first=first->link;second=second->link;} } if(insert==0)first->link=p;} } void input()/* 建立進程控制塊函數(shù)*/ { int i,num; printf(“n 請輸入進程數(shù):”);scanf(“%d”,&num);for(i=0;i 信息工程學院計算機科學與技術(shù)082班 printf(“n 進程號No.%d:n”,i+1);p=getpch(PCB);printf(“n 輸入進程名:”);scanf(“%s”,p->name);printf(“n 輸入進程優(yōu)先數(shù):”);scanf(“%d”,&p->super);printf(“n 輸入進程運行時間:”);scanf(“%d”,&p->ntime);printf(“n”); p->rtime=0;p->state='w';p->link=NULL; sort();/* 調(diào)用sort函數(shù)*/ } } int space(){ int l=0;PCB* pr=ready;while(pr!=NULL){ l++;pr=pr->link;} return(l);} void disp(PCB * pr)/*建立進程顯示函數(shù),用于顯示當前進程*/ { printf(“n qname t state t super t ndtime t runtime n”);printf(“|%st”,pr->name);printf(“|%ct”,pr->state);printf(“|%dt”,pr->super);printf(“|%dt”,pr->ntime);printf(“|%dt”,pr->rtime);printf(“n”);} void check()/* 建立進程查看函數(shù) */ { PCB* pr; printf(“n **** 當前正在運行的進程是:%s”,p->name);/*顯示當前運行進程*/ disp(p);pr=ready; printf(“n ****當前就緒隊列狀態(tài)為:n”);/*顯示就緒隊列狀態(tài)*/ while(pr!=NULL){ 信息工程學院計算機科學與技術(shù)082班 disp(pr);pr=pr->link;} } void destroy()/*建立進程撤消函數(shù)(進程運行結(jié)束,撤消進程)*/ { printf(“n 進程 [%s] 已完成.n”,p->name);free(p);} void running()/* 建立進程就緒函數(shù)(進程運行時間到,置就緒狀態(tài)*/ { (p->rtime)++; if(p->rtime==p->ntime) destroy();/* 調(diào)用destroy函數(shù)*/ else { (p->super)--;p->state='w'; sort();/*調(diào)用sort函數(shù)*/ } } int main()/*主函數(shù)*/ { int len,h=0;char ch;input();len=space(); while((len!=0)&&(ready!=NULL)){ ch=getchar();h++; printf(“n The execute number:%d n”,h);p=ready;ready=p->link;p->link=NULL;p->state='R';check();running(); printf(“n 按任一鍵繼續(xù)......”);ch=getchar();} printf(“nn 進程已經(jīng)完成.n”); 信息工程學院計算機科學與技術(shù)082班 ch=getchar();}(3)運行結(jié)果 輸入相關(guān)進程信息: 輸出相關(guān)運行結(jié)果: 三、主存空間的回收與分配 1、設(shè)計目的 主存是中央處理器能直接存取指令和數(shù)據(jù)的存儲器,能否合理地利用主存,在很大程度 信息工程學院計算機科學與技術(shù)082班 上將影響到整個計算機系統(tǒng)的性能。主存分配是指在多道作業(yè)和多進程環(huán)境下,如何共享主存空間。主存回收是指當作業(yè)執(zhí)行完畢或進程運行結(jié)束后將主存空間歸還給系統(tǒng)。主存分配與回收的實現(xiàn)是與主存儲器的管理方式有關(guān)。本次設(shè)計主要是為了幫助學生深入理解主存空間的分配與回收的幾種算法。 (1)掌握最先適應(yīng)分配算法(2)掌握最優(yōu)適應(yīng)分配算法(3)掌握最壞適應(yīng)分配算法 2、設(shè)計要求 用戶提出內(nèi)存空間請求,系統(tǒng)根據(jù)申請者要求,按照最先適應(yīng)分配算法的分配策略分析內(nèi)存空間的使用情況,找出能滿足請求的空閑區(qū),分給申請者,當程序執(zhí)行完畢時,系統(tǒng)要收回它所占用的內(nèi)存空間。建立空閑數(shù)據(jù)文件,空閑區(qū)數(shù)據(jù)文件包括若干行,每行有兩個字段:起始地址、內(nèi)存塊大小(均為整數(shù)),各字段以逗號隔開。下面是一個空閑區(qū)數(shù)據(jù)文件的示例: 0,10 10,08 18,10 28,06 34,10 44,09 讀取空閑區(qū)數(shù)據(jù)文件,建立空閑區(qū)表并在屏幕上顯示空閑內(nèi)存狀態(tài),空閑區(qū)表記錄了可供分配的空閑內(nèi)存的起始地址和大小,用標志位指出該分區(qū)是否是未分配的空閑區(qū)。 接收用戶的內(nèi)存申請,格式為:作業(yè)名、申請空間的大小。 按照內(nèi)存分配算法中的一種方法選擇一個空閑區(qū),分割并分配,修改空閑區(qū)表,填寫內(nèi)存已分配區(qū)表(起始地址、長度、標志位),其中標志位的一個作用是指出該區(qū)域分配給哪個作業(yè)。 進程結(jié)束后回收內(nèi)存??臻e區(qū)表的結(jié)構(gòu)如下: typedef struct node{ int start;int length;char tag[20];}job;本次設(shè)計要求完成如下算法: (1)設(shè)計一個內(nèi)存分配回收的程序使用最先適應(yīng)分配算法(2)設(shè)計一個內(nèi)存分配回收的程序使用最優(yōu)適應(yīng)分配算法(3)設(shè)計一個內(nèi)存分配回收的程序使用最壞適應(yīng)分配算法 用戶提出內(nèi)存空間請求,系統(tǒng)根據(jù)申請者要求,選擇上述算法的一種分配策略分析內(nèi)存空間的使用情況,找出合適的空閑區(qū),分給申請者,當進程執(zhí)行完畢時,系統(tǒng)收回它所占用的內(nèi)存空間。 信息工程學院計算機科學與技術(shù)082班 3、模擬算法的實現(xiàn) (1)流程圖 內(nèi)存分配開始劃定內(nèi)存總量輸入進程信息所需內(nèi)存<剩余內(nèi)存?Y在剩余空間中劃分出所需空間N剩余空間分配給請求者,修改有關(guān)數(shù)據(jù)輸出進程信息結(jié)束 (2)程序代碼 #include };//分區(qū)指針的鏈表 //當把空閑分區(qū)鏈表和占用分區(qū)鏈表按照地址先后順序合并 //以顯示整個內(nèi)存情況的時候使用 struct AreaPointer_list{ struct area * data;struct AreaPointer_list * next;int start;//分區(qū)的其始地址 int length;//分區(qū)的長度 int job;//若被作業(yè)占用值為作業(yè)號,若空閑值為0 struct area * next; 信息工程學院計算機科學與技術(shù)082班 };struct area * idle;struct area * used; //全局變量,空閑分區(qū)鏈表頭指針 //全局變量,占用分區(qū)鏈表頭指針 struct AreaPointer_list * whole = NULL;//全局變量,分區(qū)指針鏈表頭指針 //p(previcious)n(next)指出在鏈表中的何處插入新生成的元素 //p==NULL 在鏈表頭插入,返回頭指針 //p!=NULL 在鏈表中或鏈表尾插入,返回當前插入的元素的指針 struct area * insert(int s,int l,int j,struct area * p,struct area * n){ } //此模塊居于次要地位,只被使用一次 //打印分區(qū)鏈表 void print(struct area * head){ if(head == NULL){ } else{ while(head!= NULL){ if(head->job == 0)else printf(“begin:%dKtlength:%dKtuse:Job%dt|n”,head->start,head->length,hea printf(“begin:%dKtlength:%dKt空閑tt|n”,head->start,head->length);printf(“Area list is null...n”);struct area * current =(struct area *)malloc(LEN);current->start = s;current->length = l;current->job = j;if(p == NULL){//在鏈表頭插入 } else{ } if(p->next == NULL){//在鏈表尾插入 } else{//在鏈表中插入 } return current;current->next = p->next;p->next = current;current->next = NULL;p->next = current;current->next = n;return current; d->job); 信息工程學院計算機科學與技術(shù)082班 } void file_print(struct area * head,FILE * file){ if(head == NULL){ } else{ while(head!= NULL){ if(head->job == 0)else fprintf(file,“begin:%dKtlength:%dKtuse:Job%dt|n”,head->start,head->length,fprintf(file,“begin:%dKtlength:%dKt空閑tt|n”,head->start,head->length);fprintf(file,“Area list is null...n”); } } head = head->next; head->job); } //打印分區(qū)鏈表 } } head = head->next;//釋放分區(qū)鏈表空間 void free_AreaList(struct area * head){ } //釋放分區(qū)鏈表空間 //在分區(qū)鏈表中搜索插入位置 //flag==0 表明分區(qū)鏈表按起始地址從小到大排列 //flag==1 表明分區(qū)鏈表按分區(qū)長度從小到大排列 //輸入?yún)?shù) element 不能為NULL struct area * search_pos(struct area * element,struct area * head,int flag){ struct area * p = NULL;while(head!= NULL){ if(flag == 0){ if(element->start < head->start)struct area * temp;while(head!= NULL){ } temp = head;head = head->next;free(temp); 信息工程學院計算機科學與技術(shù)082班 } //返回值p==NULL表明插入位置在鏈表頭 //返回值p!=NULL表明插入位置在p 之后 //進行分區(qū)鏈表的實際插入工作 //flag==0 表明分區(qū)鏈表按起始地址從小到大排列 //flag==1 表明分區(qū)鏈表按分區(qū)長度從小到大排列 //輸入?yún)?shù) element->next 要為NULL struct area * insert_list(struct area * element,struct area * list,int flag){ if(list == NULL)else{ } return list;struct area * pos = search_pos(element,list,flag);if(pos == NULL){ } else{ } element->next = pos->next;pos->next = element;element->next = list;list = element;list = element; } return p;} else { } p = head;head = head->next;if(element->length < head->length) break; break;}//返回插入元素之后新鏈表的頭指針 //進行查詢空閑分區(qū)鏈表動態(tài)分配分區(qū)的實際工作,算法步驟: //1。查詢空閑分區(qū)鏈表中是否有長度大于或等于申請長度的分區(qū),若沒有返回FALSE //2。若查找到符合條件的分區(qū),把它從空閑鏈表中取出 //3。根據(jù)請求把取出的空閑分區(qū)分塊,把新的占用分區(qū)和剩余空閑分區(qū)分別插入鏈表 //注意:插入占用分區(qū)鏈表按照固定的地址先后順序,插入空閑分區(qū)鏈表的方式要根據(jù)flag的值 int memory_alloc(int length,int job,int flag){ struct area * used_element; 信息工程學院計算機科學與技術(shù)082班 struct area * free_element;struct area * head = idle;struct area * head_temp = used;struct area * p = NULL;//檢測輸入的作業(yè)號是否存在 while(head_temp!= NULL){ } //在空閑分區(qū)鏈表中查找 while(head!= NULL){ } if(head!= NULL){ } else return 0;//生成新的占用區(qū)鏈表元素并插入占用區(qū)鏈表 used_element =(struct area *)malloc(LEN);used_element->start = head->start;used_element->length = length;used_element->job = job;used_element->next = NULL;used = insert_list(used_element,used,0);//若空閑分區(qū)分塊后有剩余,生成新的空閑區(qū)鏈表元素并插入空閑區(qū)鏈表 if(head->length > length){ free_element =(struct area *)malloc(LEN);//從空閑區(qū)鏈表中取出 if(p == NULL)//鏈表中的第一個分區(qū)符合條件 { } else { } head->next = NULL;p->next = head->next;idle = idle->next;if(head->length >= length)break;p = head;head = head->next;if(head_temp->job == job)return 2;head_temp = head_temp->next; 信息工程學院計算機科學與技術(shù)082班 } //進行查詢占用分區(qū)鏈表動態(tài)釋放分區(qū)的實際工作,算法步驟: //1。根據(jù)作業(yè)號查詢到占用分區(qū)鏈表中要釋放的分區(qū),若沒有返回FALSE //2。若查找到要釋放的分區(qū),把它從空閑鏈表中取出 //3。根據(jù)取出的分區(qū)的數(shù)據(jù)建立新的空閑分區(qū) //4。在空閑分區(qū)鏈表中查詢是否有和新空閑分區(qū)相鄰的空閑分區(qū),有則合并 //5。根據(jù)flag的取值按照特定方式插入空閑分區(qū)鏈表 int memory_free(int job,int flag){ struct area * used_element;struct area * free_element;struct area * head = used;struct area * p = NULL;struct area * previcious1 = NULL;struct area * current1 = NULL;struct area * previcious2 = NULL;struct area * current2 = NULL;//根據(jù)作業(yè)號在占用分區(qū)鏈表中查找 while(head!= NULL){ } if(head!= NULL){ //從占用區(qū)鏈表中取出 if(p == NULL)//鏈表中的第一個分區(qū)符合條件 { } else { used = used->next;if(head->job == job)break;p = head;head = head->next; } //釋放空間 free(head);return 1;free_element->start = head->start + length;free_element->length = head->length-length;free_element->job = 0;free_element->next = NULL;idle = insert_list(free_element,idle,flag); 信息工程學院計算機科學與技術(shù)082班 } else return 0;//建立新的空閑分區(qū) used_element = head;free_element =(struct area *)malloc(LEN);free_element->start = used_element->start;free_element->length = used_element->length;free_element->job = 0;free_element->next = NULL;//從空閑區(qū)鏈表查找和新的空閑分區(qū)相鄰分區(qū) head = idle;p = NULL;while(head!= NULL){ } //合并相鄰空閑分區(qū) if(current1!= NULL){ } //把和新分區(qū)相鄰的分區(qū)從空閑分區(qū)鏈表中取出 if(previcious1 == NULL)else previcious1->next = current1->next;current1->next = NULL;//修改新空閑分區(qū)的相關(guān)數(shù)據(jù) free_element->start = current1->start;free_element->length = free_element->length + current1->length;idle = idle->next;if(head->start + head->length == used_element->start){ } if(used_element->start + used_element->length == head->start){ } p = head;head = head->next;previcious2 = p;current2 = head;previcious1 = p;current1 = head;} head->next = NULL;p->next = head->next; 信息工程學院計算機科學與技術(shù)082班 } //和分區(qū)指針鏈表相關(guān)的操作,用來合并空閑分區(qū)鏈表和占用分區(qū)鏈表,保存鏈表元素的指針 struct AreaPointer_list * search_position(int s,struct AreaPointer_list * head){ } struct AreaPointer_list * emerge(struct area * idle_temp,struct area * used_temp){ struct AreaPointer_list * previcious;struct AreaPointer_list * temp; if(used_temp!= NULL){ whole =(struct AreaPointer_list *)malloc(LEN_POINTER_LIST);whole->data = used_temp;whole->next = NULL;previcious = whole;used_temp = used_temp->next;while(used_temp!= NULL){ temp =(struct AreaPointer_list *)malloc(LEN_POINTER_LIST);struct AreaPointer_list * p = NULL;while(head!= NULL){ } return p;if(s <(head->data)->start)break;p = head;head = head->next;if(current2!= NULL){ } //根據(jù)flag的取值按照特定方式插入空閑分區(qū)鏈表 idle = insert_list(free_element,idle,flag);//釋放空間 free(used_element);return 1;//把和新分區(qū)相鄰的分區(qū)從空閑分區(qū)鏈表中取出 if(previcious2 == NULL)else previcious2->next = current2->next;current2->next = NULL;//修改新空閑分區(qū)的相關(guān)數(shù)據(jù) free_element->length = free_element->length + current2->length;idle = idle->next; 信息工程學院計算機科學與技術(shù)082班 } void printall(struct AreaPointer_list * head){ struct area * data_temp;if(head == NULL)else{ while(head!= NULL){ data_temp = head->data;if(data_temp->job == 0)else printf(“begin:%dKtlength:%dKt空閑tt|n”,data_temp->start,data_temp->lenprintf(“Area pointer list is null...n”); } while(idle_temp!= NULL){ } return whole;struct area * idle_next = idle_temp->next;struct AreaPointer_list * pos = search_position(idle_temp->start,whole);if(pos == NULL){ } else { } idle_temp = idle_next;temp =(struct AreaPointer_list *)malloc(LEN_POINTER_LIST);temp->data = idle_temp;temp->next = pos->next;pos->next = temp;temp =(struct AreaPointer_list *)malloc(LEN_POINTER_LIST);temp->data = idle_temp;temp->next = whole;whole = temp; } temp->data = used_temp;temp->next = NULL;previcious->next = temp;previcious = temp;used_temp = used_temp->next; gth); printf(“begin:%dKtlength:%dKtuse:Job%dt|n”,data_temp->start,data_temp->length,data_temp->job);head = head->next; 信息工程學院計算機科學與技術(shù)082班 } void file_printall(struct AreaPointer_list * head,FILE * file){ struct area * data_temp;if(head == NULL)else{ while(head!= NULL){ data_temp = head->data;if(data_temp->job == 0)else fprintf(file,“begin:%dKtlength:%dKt空閑tt|n”,data_temp->start,data_tempfprintf(file,“Area pointer list is null...n”);} } ->length); fprintf(file,“begin:%dKtlength:%dKtuse:Job%dt|n”,data_temp->start,data_temp->length,data_temp->job); } void free_PointerList(struct AreaPointer_list * head){ } //和分區(qū)指針鏈表相關(guān)的操作,用來合并空閑分區(qū)鏈表和占用分區(qū)鏈表,保存鏈表元素的指針 void input_by_hand(){ int job;int is_alloc;//1 申請分區(qū) 0 釋放分區(qū) int length;int flag;printf(“請選擇分區(qū)分配算法:輸入0---最先適配 輸入1---最優(yōu)適配n”);scanf(“%d”,&flag);while(flag!= 0 && flag!= 1){ printf(“數(shù)據(jù)輸入錯誤,請參照提示重新輸入n”);scanf(“%d”,&flag);struct AreaPointer_list * temp;while(head!= NULL){ } temp = head;head = head->next;free(temp); } } head = head->next; 信息工程學院計算機科學與技術(shù)082班 } if(flag == 0)printf(“選擇最先適配算法--->請輸入請求隊列數(shù)據(jù):(輸入 0 0 0 結(jié)束)n”);printf(“選擇最優(yōu)適配算法--->請輸入請求隊列數(shù)據(jù):(輸入 0 0 0 結(jié)束)n”);if(flag == 1)printf(“輸入數(shù)據(jù)格式:作業(yè)號(int>0)[輸入1--申請|輸入0--釋放] 分區(qū)長度(int>0)n”);printf(“例如輸入 5 1 130 表示 作業(yè)5申請130Kn”);printf(“例如輸入 3 0 200 表示 作業(yè)3釋放200Kn”);while(1)//輸入 0 0 0 結(jié)束 { scanf(“%d%d%d”,&job,&is_alloc,&length);if(job == 0 && is_alloc == 0 && length == 0){ } if(is_alloc == 1){ } if(is_alloc == 0){ int r = memory_free(job,flag);if(!r){ int r = memory_alloc(length,job,flag);if(!r){ } if(r == 2){ } printf(“n”); printf(“輸入作業(yè)號已存在于占用分區(qū)鏈表,請重新輸入...n”);printf(“n”);continue;printf(“n”); printf(“沒有符合條件的空閑分區(qū)可供分配,請等待釋放...n”);printf(“n”);continue;printf(“數(shù)據(jù)輸入錯誤,請參照提示重新輸入n”);scanf(“%d%d%d”,&job,&is_alloc,&length);if(job == 0 && is_alloc == 0 && length == 0) return;break;while(job<=0 ||(is_alloc!= 0 && is_alloc!= 1)|| length<=0) 信息工程學院計算機科學與技術(shù)082班 } /*void input_by_file(int flag){ int job;int is_alloc;//1 申請分區(qū) 0 釋放分區(qū) int length;char* result;int r;FILE * file1;FILE * file2;if(flag == 0)else result = “result_data_2.txt”;result = “result_data_1.txt”; } //釋放空間 free_AreaList(idle);free_AreaList(used);idle = NULL;used = NULL; } emerge(idle,used);printf(“n”);printf(“------------------n”);printf(“空閑分區(qū)鏈表:ttttt|n”);print(idle);printf(“tttttt|n”);printf(“占用分區(qū)鏈表:ttttt|n”);print(used);printf(“tttttt|n”);printf(“整個內(nèi)存情況:ttttt|n”);printf(“低地址tttttt|n”);printall(whole);printf(“高地址tttttt|n”);printf(“------------------n”);printf(“n”);free_PointerList(whole);whole = NULL; } printf(“n”); printf(“沒有與指定作業(yè)號符合的占用分區(qū),請重新輸入...n”);printf(“n”);continue; 信息工程學院計算機科學與技術(shù)082班 if((file1 = fopen(“source_data.txt”,“r”))== NULL){ } if((file2 = fopen(result,“w”))== NULL){ } if(flag == 0){ } else { } while(!feof(file1)){ fscanf(file1,“%d%d%d”,&job,&is_alloc,&length);if(job<=0 ||(is_alloc!= 0 && is_alloc!= 1)|| length<=0){ } if(is_alloc == 1){ printf(“JOB %d申請%dKnn”,job,length);fprintf(file2,“JOB %d申請%dKnn”,job,length);r = memory_alloc(length,job,flag);if(!r){ } if(r == 2){ printf(“輸入作業(yè)號已存在于占用分區(qū)鏈表,不于處理nn”); printf(“沒有符合條件的空閑分區(qū)可供分配,不于處理nn”);fprintf(file2,“沒有符合條件的空閑分區(qū)可供分配,不于處理nn”);continue;printf(“文件中數(shù)據(jù)%d %d %d輸入的格式錯誤,不于處理nn”,job,is_alloc,lengtfprintf(file2,“文件中數(shù)據(jù)%d %d %d輸入的格式錯誤,不于處理nn”,job,is_alloc,continue;printf(“按照最優(yōu)分配算法得出的結(jié)果:nn”);fprintf(file2,“按照最優(yōu)分配算法得出的結(jié)果:nn”);printf(“按照最先分配算法得出的結(jié)果:nn”);fprintf(file2,“按照最先分配算法得出的結(jié)果:nn”);printf(“不能打開source_data.txt文件...n”);exit(0);printf(“不能打開source_data.txt文件...n”);exit(0); h); length); 信息工程學院計算機科學與技術(shù)082班 } else { } emerge(idle,used);printf(“------------------n”);fprintf(file2,“------------------n”);printf(“空閑分區(qū)鏈表:ttttt|n”);fprintf(file2,“空閑分區(qū)鏈表:ttttt|n”);print(idle);file_print(idle,file2);printf(“tttttt|n”);fprintf(file2,“tttttt|n”);printf(“占用分區(qū)鏈表:ttttt|n”);fprintf(file2,“占用分區(qū)鏈表:ttttt|n”);print(used);file_print(used,file2);printf(“tttttt|n”);fprintf(file2,“tttttt|n”);printf(“整個內(nèi)存情況:ttttt|n”);fprintf(file2,“整個內(nèi)存情況:ttttt|n”);printf(“低地址tttttt|n”);fprintf(file2,“低地址tttttt|n”);printall(whole);file_printall(whole,file2);printf(“高地址tttttt|n”);fprintf(file2,“高地址tttttt|n”);printf(“------------------n”);fprintf(file2,“------------------n”);printf(“n”);fprintf(file2,“n”);printf(“JOB %d釋放%dKnn”,job,length);fprintf(file2,“JOB %d釋放%dKnn”,job,length);r = memory_free(job,flag);if(!r){ } printf(“沒有與指定作業(yè)號符合的占用分區(qū),不于處理nn”);fprintf(file2,“沒有與指定作業(yè)號符合的占用分區(qū),不于處理nn”);continue; } fprintf(file2,“輸入作業(yè)號已存在于占用分區(qū)鏈表,不于處理nn”);continue; 信息工程學院計算機科學與技術(shù)082班 }*/ int main() } { idle = insert(0,640,0,NULL,NULL);used = NULL;input_by_hand(); } printf(“========================================nn”);fprintf(file2,“========================================nn”);//釋放空間 free_AreaList(idle);free_AreaList(used);idle = NULL;used = NULL;fclose(file1);fclose(file2);free_PointerList(whole);whole = NULL; 信息工程學院計算機科學與技術(shù)082班 (3)運行結(jié)果 四、模擬DOS文件的建立和使用 設(shè)計目的 磁盤文件是磁盤上存儲的重要信息,通過本實驗模擬DOS文件的建立和使用情況,理解磁盤文件的物理結(jié)構(gòu)。文件管理是操作系統(tǒng)中重要的內(nèi)容之一,不同的文件系統(tǒng)提供了不同的物理結(jié)構(gòu),通過實驗,深入理解文件的物理結(jié)構(gòu)與存取方法之間的關(guān)系,以便更好的掌握文件系統(tǒng)的概念。設(shè)計要求 <1> 模擬設(shè)計DOS操作系統(tǒng)中磁盤文件的存儲結(jié)構(gòu) DOS操作系統(tǒng)對磁盤文件的管理采用鏈接結(jié)構(gòu),將所有的鏈接指針集中在一起,存放在文件分配表(FAT)中。連接文件的第一個物理塊號登記在文件目錄中。其設(shè)計思想是:假定磁盤上共有N個物理塊可供使用,當要存放文件時,從FAT表中尋找其值為0的項,用其對應(yīng)的物理塊存放文件信息,并把文件占有的各物理塊用鏈接指針登記在FAT表中,再把文 信息工程學院計算機科學與技術(shù)082班 件的第一個物理塊號登記在文件目錄中。 文件目錄及FAT表如圖所示: 在DOS中FAT表的前兩項用來記錄磁盤的類型。而從第2項開始記錄磁盤的分配情況和文件各物理塊的鏈接情況。在FAT表中第三項的值如果為0,表示對應(yīng)的第三塊空閑。由圖還知道文件A的各記錄依次存放在第2、第4、第15、第16、第50等六個物理塊中。第50塊中的指針為FFF,表示文件A的結(jié)束。文件B的各記錄依次存放在第7、第10、第20等三個物理塊中。第20塊中的指針為FFF。 假定磁盤存儲空間共有100個物理塊,設(shè)計一個文件分配表。為了簡單,文件分配表可用一個數(shù)組定義,其中每一個元素與一個物理塊對應(yīng)。當?shù)?i 個元素為 0 時,表示第 i 塊空閑;當?shù)?i 個元素既不為 0 也不為 FFF 時,其值表示該文件的下一個物理塊號。另外,再設(shè)一個空閑塊總數(shù)變量記錄系統(tǒng)還有的空閑塊數(shù)。為了簡單,假定一個物理塊指存放一個邏輯記錄,要求設(shè)計一個程序,把文件的邏輯記錄結(jié)構(gòu)轉(zhuǎn)換成 DOS 的鏈接結(jié)構(gòu)。當用戶要求將已在主存的文件保存在磁盤上時,給出文件名及文件的記錄個數(shù),系統(tǒng)應(yīng)能在磁盤上正確地保存文件。或當用戶要求給指定文件增加記錄時,也應(yīng)正確的實現(xiàn),并插在指定記錄之后。 為了正確地執(zhí)行模擬程序,可用鍵盤模擬輸入用戶的要求。輸入格式為: write(文件名,記錄個數(shù))或 insert(文件名,邏輯記錄號)<2> 模擬設(shè)計便于直接存取的索引文件結(jié)構(gòu) 為了便于用戶直接存取文件的各個邏輯記錄,在 MS-DOS 中通過文件目錄,再沿著鏈查找FAT表,便可直接找到指定邏輯記錄對應(yīng)的物理塊。在小型機或更高級的文件系統(tǒng)中,直接存取文件的方法是為每個文件建立一個索引表,指出各邏輯記錄與物理塊的對應(yīng)關(guān)系。最簡單的形式是一個邏輯記錄對應(yīng)一個物理塊。文件目錄與索引表的關(guān)系如圖所示。 信息工程學院計算機科學與技術(shù)082班 通常索引表按照邏輯記錄順序建立,這樣既有利于順序存儲,又有利于直接存儲。為了標識哪些記錄已經(jīng)建立,哪些記錄還沒建立,故在索引表中增設(shè)一個標志位。寫文件或插入一個記錄的過程是尋找一個空閑物理塊,然后將其填入索引表對應(yīng)項中。其建立過程同第一題,即 write(文件名,記錄號)和 insert(文件名,記錄號)。 要求用位示圖描繪出磁盤的使用情況,并要求模擬程序執(zhí)行過程的每一步都能顯示文件目錄、位示圖、索引表。 信息工程學院計算機科學與技術(shù)082班 3、模擬算法實現(xiàn) (1)流程圖 創(chuàng)建文件流程開始讀取文件流程開始查詢未打開的文件表查詢已打開文件表在未打開表中?N是否在已打開的文件表里?YY是否在已打開表中查詢剩余未打開的文件表NYY顯示無文件是否在剩余表中?N輸出無文件讀取文件記錄讀取文件記錄返回Read參數(shù)合法?Nwrite參數(shù)是否合法?Y返回寫入磁盤顯示參數(shù)非法顯示成功Y顯示參數(shù)非法根據(jù)參數(shù)讀取記錄并顯示END (2)程序代碼 #include }; char filename[10];int filestart;int filelength; 信息工程學院計算機科學與技術(shù)082班 FILEINFO file[10];int FAT[N],blankspace;//FAT表和剩余空間 void printfmenu(){ int i;cout< 文件名 起始塊號 文件長度”< } void write(char *tmpname,int tmplength){ int last,i,j;//復制文件名和文件塊個數(shù) strcpy(file[fnum].filename,tmpname);file[fnum].filelength=tmplength;//存文件 for(i=2;i } for(i=1;i for(j=2;j FAT[last]=j; if(FAT[i]==0){ } file[fnum].filestart=i;//首個空閑塊為文件開始塊 last=i;FAT[last]=FFF;break;int i;cout<<“空閑塊數(shù):”< } cout<<“ No.”< 信息工程學院計算機科學與技術(shù)082班 } void insert(char *tmpname,int insertpoint){ int i;int last,brpoint;//尋找要執(zhí)行插入操作的文件,將其數(shù)組下標存入last for(i=0;i } //brpoint記錄當前文件掃描到的位置 brpoint=file[last].filestart; for(i=0;i } //改變空閑塊個數(shù)與文件長度 if(FAT[i]==0){ } FAT[i]=FAT[brpoint];FAT[brpoint]=i;break;brpoint=FAT[brpoint];//掃描直到找到插入位置 if(strcmp(file[i].filename,tmpname)==0){ } else printf(“沒有指定文件!n”);last=i;break; } FAT[last]=FFF;//文件末存結(jié)束標記 blankspace-=tmplength;//改變空閑塊個數(shù) fnum++;cout<<“name and size :”< } last=j;FAT[last]=FFF;break; 信息工程學院計算機科學與技術(shù)082班 } void itol(int i){ //LPCTSTR yy;char zz[10];file[last].filelength++;blankspace--;cout<<“name and size :”< //sprintf(zz, “%d”, i); //itoa(i,zz,10); //yy = LPCTSTR(zz); } void ctol(char *c){ } void Graph(){ int i,x=200,y=50;//initgraph(640, 480);//setfillstyle(SOLID_FILL,WHITE);//floodfill(5,5,WHITE);//setcolor(BLACK);for(i=0;i } //getch();//closegraph(); //moveto(x+(i/20)*60-25,y+(i%20)*20);itol(i);//rectangle(x+(i/20)*60,y+(i%20)*20,x+(i/20)*60+30,y+(i%20)*20+20);//moveto(x+(i/20)*60,y+(i%20)*20);if(FAT[i]==FFF)ctol(“FFF”);ctol(“FDF”);else if(FAT[i]==FDF)else itol(FAT[i]);//LPCTSTR yy;//yy = LPCTSTR(c);//moverel(3,2);//outtext(yy);//moveto(x+i*2,y+20);//moverel(5,3);//outtext(yy);//return yy; 信息工程學院計算機科學與技術(shù)082班 } void main(){ } int i;char tmpname[10];int tmplength;//要寫入文件長度 int o;//命令 fnum=0;for(i=0;i } FAT[0]=FDF;FAT[1]=FFF;FAT[3]=999;blankspace=98;while(1){ } printFAT();cin.get();cout<<“請選擇: 1.寫入 2.插入 3.顯示文件目錄 4.顯示FAT表”< } case 1: cout<<“輸入文件名:”; cin>>tmpname; cout<<“輸入文件長度:”;cin>>tmplength; write(tmpname,tmplength);break;cin>>tmpname;int insertpoint; cout<<“輸入插入點:”< insert(tmpname,insertpoint);break;FAT[i]=0;case 2: cout<<“輸入文件名:”< 信息工程學院計算機科學與技術(shù)082班 (3)運行結(jié)果 五、磁盤調(diào)度算法模擬 1.設(shè)計目的 (1)要求學生設(shè)計一個模擬磁盤調(diào)度的程序(2)理解磁盤調(diào)度過程中的三個時間段(3)理解磁盤調(diào)度的三種算法 信息工程學院計算機科學與技術(shù)082班 2.實驗原理 共享設(shè)備的典型代表為磁盤,磁盤的物理塊的地址由柱面號、磁道號、扇區(qū)號來指定,完成磁盤某一個物理塊的訪問要經(jīng)過三個階段:尋道時間 Ts、旋轉(zhuǎn)延遲 Tw 和讀寫時間 Trw。 尋道時間 Ts 是磁頭從當前磁道移動到目標磁道所需要的時間;旋轉(zhuǎn)延遲 Tw 是當磁頭停留在目標磁道后,目標物理塊從當前位置旋轉(zhuǎn)到磁頭位置的時間;讀寫時間 Trw 是目標物理塊內(nèi)容與內(nèi)存中對應(yīng)交換的時間。磁盤調(diào)度的原則是公平和高吞吐量,衡量指標有訪問時間 T 和平均訪問時間 Ta: T=Ts+Tw+Trw Ta=Tsa+Twa+Trwa 尋道時間和旋轉(zhuǎn)延遲成為調(diào)度算法的主要考慮因素。減少訪問時間就是要減少尋道時間和旋轉(zhuǎn)延遲。 3.設(shè)計要求 (1)設(shè)計并實現(xiàn)一個函數(shù),完成先來先服務(wù)的磁盤調(diào)度功能 (2)設(shè)計并實現(xiàn)一個函數(shù)完成最短尋道時間優(yōu)先的磁盤調(diào)度功能。(3)設(shè)計并實現(xiàn)一個函數(shù)完成電梯算法的磁盤調(diào)度功能。 信息工程學院計算機科學與技術(shù)082班 4、模擬算法的實現(xiàn) (1)各算法流程圖 先來先服務(wù)算法 Begin輸入當前磁道號now磁頭移動距離Sum=abs(now-array[0])磁頭總移動距離Sum+=abs(array[j]-array[i])輸出磁盤調(diào)度序列Array[j]N目前的位置變?yōu)楫斍暗奈恢胘++J 信息工程學院計算機科學與技術(shù)082班 最短尋道時間優(yōu)先算法流程圖 Begin獎磁道從小到大排序輸入當前磁道號nowArray[m-1]<=now?輸出磁盤調(diào)度序列array[j]Array[0]>=now?磁頭移動總距離Sum=now-array[i]輸出磁盤調(diào)度序列array[j]確定當前磁道在已排的序列中的位置目前的位置變?yōu)楫斍暗奈恢胣ow=array[i]磁頭移動的總距離Now-array[l]<=array[r]-now?先向磁道號減小方向訪問,再向磁道號增加方向訪問先向磁道號增加方向訪問,再向磁道號減小方向訪問目前為止變?yōu)楫斍暗奈恢胣ow=array[i]i>=0i (2)程序代碼 #include int j,i,now;float sum = 0,avg; cout<<“輸入當前的磁道號:”;//輸入當前磁道號 信息工程學院計算機科學與技術(shù)082班 cin>>now;sum=abs(now-array[0]); cout<<“先來先服務(wù)算法調(diào)度后的序列為”< for(i=0,j=1;j sum=sum+abs(array[j]-array[i]); cout< //輸出磁盤調(diào)度序列 } avg=sum/(m); cout< int temp; int k=1; int now,l,r; int i,j; float sum=0,avg=0; for(i=0;i for(j=i+1;j { if(array[i]>array[j])//將磁道號從小到大排序 { temp=array[i]; array[i]=array[j]; array[j]=temp; } cout<<“請輸入當前的磁道號:”;//輸入當前磁道號 cin>>now; cout<<“最短尋道時間優(yōu)先算法調(diào)度后的序列為”;//輸出磁盤調(diào)度序列 if(array[m-1]<=now)//若被訪問的下一最大的磁道號不大于當前的磁道號 { for(i=m-1;i>=0;i--) { cout< } else { if(array[0]>=now)//若被訪問的下一最小的磁道號不小于當前的磁道號 { sum=now-array[i]; now=array[i];} } 信息工程學院計算機科學與技術(shù)082班 for(i=0;i { cout< sum=array[i]-now; } } { { k++; } now=array[i]; else //當前的磁道號的值在若所有被訪問的下的磁道號之間 while(array[k] l=k-1; r=k; if((now-array[l])<=(array[r]-now)) { while(l>=0) //先向磁道號減小方向訪問 { cout< sum=sum+now-array[l]; now=array[l]; l=l-1; } else //先向磁道號增加方向訪問 { while(r } now=array[0]; for(j=r;j { cout< sum+=array[j]-now; } now=array[j]; { cout< sum+=array[r]-now; now=array[r]; r=r+1; } now=array[m-1]; for(j=l;j>=0;j--)//再向磁道號減小方向訪問 { cout< sum+=now-array[j]; } now=array[j]; 信息工程學院計算機科學與技術(shù)082班 } avg=sum/(m); cout< int temp; int k=1; int now,d,l,r; int i,j; float sum=0,avg=0; for(i=0;i for(j=i+1;j { if(array[i]>array[j])//將磁道號從小到大排序 { temp=array[i]; array[i]=array[j]; array[j]=temp; } cout<<“請輸入當前的磁道號:”;//輸入當前磁道號 cin>>now; cout<<“請輸入當前移動臂的移動的方向(1 表示向磁道號增加方向,0 表示向磁道號減小方向): ”; cin>>d; //先要給出當前磁道號和移動臂的移動方向 cout<<“電梯算法調(diào)度后的序列為”; if(array[m-1]<=now) //若被訪問的下一最大的磁道號不大于當前的磁道號 { for(i=m-1;i>=0;i--) { cout< } else { if(array[0]>=now)//若被訪問的下一最小的磁道號不小于當前的磁道號 { sum=now-array[i]; now=array[i];} } } } for(i=0;i { cout< sum=array[i]-now; 信息工程學院計算機科學與技術(shù)082班 } } { { k++; } now=array[i]; else //當前的磁道號的值在若所有被訪問的下的磁道號之間 while(array[k] l=k-1; r=k; switch(d) { case 0: //先向磁道號減小方向訪問 { while(l>=0) { cout< sum=sum+now-array[l]; now=array[l]; l=l-1; { while(r } now=array[0]; for(j=r;j { cout< sum+=array[j]-now; } break;} now=array[j]; case 1: //先向磁道號增加方向訪問 { cout< sum+=array[r]-now; now=array[r]; r=r+1; } now=array[m-1]; for(j=l;j>=0;j--) { cout< sum+=now-array[j]; }break; now=array[j]; } 信息工程學院計算機科學與技術(shù)082班 } avg=sum/(m); cout< int i,m,n,flag=1,array[100]; cout<<“輸入磁盤調(diào)度序列的個數(shù):”; cin>>m; cout<<“分別輸入磁盤調(diào)度序列:”;for(i=0;i cout<<“0 終止”< cout<<“1 先來先服務(wù)算法”< cout<<“2 最短尋道時間優(yōu)先算法”< cout<<“3 電梯算法算法”< cout<<“選擇以上的算法:”; } cin>>n;{ case 0: { flag=0;break;} //終止程序 case 1: } { FCFS(array,m);break;} //先來先服務(wù)算法 { SSTF(array,m);break;}//最短尋道時間優(yōu)先算法 { SCAN(array,m);break;}//電梯算法 case 2: switch(n) default: cout<<“輸入有誤”< } } case 3: default: cout<<“輸入有誤,請重新輸入:”< 信息工程學院計算機科學與技術(shù)082班 (3)運行結(jié)果 輸入相關(guān)調(diào)度信息: 先來先服務(wù)算法: 最短尋道時間優(yōu)先算法: 電梯算法: 六、總結(jié) 本人在劉發(fā)升老師的指導下,順利完成該課程設(shè)計。通過此次課程設(shè)計,收獲頗多。 一、對實驗原理有更深的理解 通過模擬DOS的課程設(shè)計,掌握了DOS各項功能實現(xiàn)的根本原理。并通過把該算法的內(nèi)容,算法的執(zhí)行順序在計算機上實現(xiàn),把原來以為很深奧的書本知識變的更為簡單,對實驗原理有更深的理解。 二、對該理論在實踐中的應(yīng)用有深刻的理解 通過把該算法的內(nèi)容,算法的執(zhí)行順序在計算機上實現(xiàn),知道和理解了該理論在計算機中是怎樣執(zhí)行的,對該理論在實踐中的應(yīng)用有深刻的理解。 三、激發(fā)了學習的積極性 信息工程學院計算機科學與技術(shù)082班 通過此次課程設(shè)計,全面系統(tǒng)的理解了計算機操作系統(tǒng)中各項功能的一般原理和基本實現(xiàn)方法。把死板的課本知識變得生動有趣,激發(fā)了學習的積極性。把學過的計算機操作系統(tǒng)的知識強化,能夠把課堂上學的知識通過自己設(shè)計的程序表示出來,加深了對理論知識的理解。以前對與計算機操作系統(tǒng)的認識是模糊的,概念上的,現(xiàn)在通過自己動手做實驗,從實踐上認識了操作系統(tǒng)是如何處理命令的,如何協(xié)調(diào)計算機內(nèi)部各個部件運行。課程設(shè)計中程序比較復雜,在調(diào)試時應(yīng)該仔細,在程序調(diào)試時,注意指針,將不必要的命令去除。在這次課程設(shè)計中,我就是按照實驗指導的思想來完成。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實現(xiàn),培養(yǎng)實踐動手能力和程序開發(fā)能力的目的。 四、理解了該知識點以及學科之間的融合滲透 本次課程設(shè)計程序部分是用C語言編寫的,把《計算機操作系統(tǒng)》和《C語言》兩門門學科聯(lián)系起來,把各個學科之間的知識融合起來,把各門課程的知識聯(lián)系起來,對計算機整體的認識更加深刻。使我加深了對《計算機操作系統(tǒng)》和《C語言》課程的認識。同時對操作系統(tǒng)中各種功能的本質(zhì)有了充分地了解。 設(shè)計報告范文 一、任務(wù)內(nèi)容 通過對《大學計算機基礎(chǔ)》和《大學計算機基礎(chǔ)學習與實驗指導》這兩本教材的學習后,我們應(yīng)綜合應(yīng)用計算機進行一系列操作與使用,全面掌握并用所學的知識進行綜合實踐。本論文的任務(wù)主要為學習運用網(wǎng)頁制作軟件FrontPage2003制作自己的網(wǎng)頁,了解制作過程,再者學習網(wǎng)站的發(fā)布和網(wǎng)頁的發(fā)布和學習運用演示軟件PowerPoint2003制作幻燈片并設(shè)計和編輯文稿進行綜合演示瀏覽,按要求結(jié)合相應(yīng)的圖文素材。這里將會報告指出制作的步驟與方法,以及根據(jù)自己的主題進行網(wǎng)頁和幻燈片的頁面修飾的方法,如插入圖片,用Flash制作的動畫(這里將會報告制作的方法)等等。 二、設(shè)計步驟 a)利用網(wǎng)頁制作軟件FrontPage2003制作一個關(guān)于“成都著名小吃”的網(wǎng)頁,并用文本的編輯與格式化以及對象、表格、框架的插入與設(shè)置等操作進行網(wǎng)頁的編輯。設(shè)置該網(wǎng)站的內(nèi)容主題和格式,并發(fā)布該網(wǎng)站。 首先設(shè)計主頁,內(nèi)容為“成都著名小吃”,主要介紹成都著名小吃的歷史和獨特的風味,并用表格的方式輸入各個將要介紹的小吃名“麻辣燙”、“麻婆豆腐”、“棒棒雞”、“擔擔面”、“夫妻肺片”、“毛血旺”、“傳統(tǒng)鍋魁”,像菜單形式呈現(xiàn)出來。 接下來設(shè)計各個分頁面,都用主標題“美味吧”大字體標記,下面再用各個美食的名字作為副標題,接下來就用文字闡釋其特征或做法或風味或歷史或吃法、、、再加上五彩的圖片將該小吃描述的淋漓盡致,形象而鮮活。 最后在最后一行輸入“返回主頁”的字樣,以便于每當看完一項小吃的網(wǎng)頁后,可以及時返回主頁看另一項小吃的網(wǎng)頁,既方便又美觀,用超鏈接的方式把各分頁面聯(lián)系在一起,自動進入對應(yīng)的網(wǎng)頁并完成網(wǎng)頁之間的轉(zhuǎn)換。 制作好網(wǎng)頁之后,需創(chuàng)建一個網(wǎng)站,主題已確定“成都著名小吃”,則要設(shè)計結(jié)構(gòu),設(shè)置各分網(wǎng)頁與主頁之間為樹形鏈接,主要鏈接都在主頁上,再分別展開,以高效完成操作。可以使用網(wǎng)站模板修飾網(wǎng)站。 接下來就是將網(wǎng)站上傳到到網(wǎng)上,以便讓更多人能瀏覽到該頁面,可以 在網(wǎng)上申請一個存放網(wǎng)頁的空間,存放自己的網(wǎng)頁,生成個人主頁。到此作業(yè)就完成了。 ? 利用演示軟件PowerPoint2003制作一個關(guān)于“世界著名的成都名景”的幻燈片,包含若干個ppt頁面,并用幻燈片的編輯與格式化及對象的插入、版面設(shè)計、放映和切換效果與設(shè)置、演示文稿的超鏈接等操作進行制作。 首先設(shè)計幻燈片的第一頁,也就是主頁,標題為“世界著名的成都名景”,可以插入一些小圖片和小動畫,音樂,視頻之類的,或者可以插入背景圖片修飾頁面,讓主頁看起來很漂亮和吸引人,也可以設(shè)計藝術(shù)字寫上自己的名字等。 下面設(shè)計各個分頁面,用風景地名作為大標題位于正文上方,用圖片在左邊,文字在右邊的的幻燈片版式,插入風景照兩張,在右邊輸入文本介紹該景點的歷史背景或建造規(guī)模格式或相關(guān)人物或迷人風景,可以插入一些小玩意等等,在適當調(diào)一下版面排版,使看起來更美觀。設(shè)置自己喜歡的幻燈片動畫效果和放映切換效果,使文本和標題以不同的方式顯示出來,有著極好的視覺效果。也可以選擇代表超鏈接起點的文本或其他對象,插入超鏈接,鏈接到其他文檔的幻燈片和網(wǎng)頁。 三、采取的方法與手段 a)使用FrontPage2003制作網(wǎng)頁的方法操作 ①打開網(wǎng)頁制作軟件 FrontPage2003,自動創(chuàng)建一個空白網(wǎng)頁。②插入一幅事先制好的圖片,點擊工具欄上的“插入”“|圖片”|“來自文件”即選擇要插入的圖片插入,點圖片可以用鼠標拖動位置和改變大小。③在下面輸入文本,文本字體可以點擊“格式”|“字體”調(diào)整大小、字體、下劃線等。④文本下用表格來展示各小吃名,點擊工具欄上的“表格”|“插入”|“表格”,在出來的窗口中設(shè)置表格行數(shù)和列數(shù),即插入相應(yīng)表格。在各格輸入小吃名。⑤插入網(wǎng)頁背景,點擊“格式”|“背景”|“填充效果”|“圖 片”|“選擇圖片”,即在文件中選擇要作為背景的圖片并插入。⑥可以插入自己制作的Flash動畫,點擊工具欄上的“插入”|“Web組件”|“高級控件”|“Flash影片”即可插入。 以下幾張網(wǎng)頁也根據(jù)類似方法做好就行。? 使用PowerPoint2003制作幻燈片的方法操作 ①打開演示軟件PowerPoint2003,自動創(chuàng)建一個新的空白頁。②編輯第一頁,點擊幻燈片上的文本框,輸入“成都略知”作為大標題,在小標題上輸入姓名班級,字體、文本位置都可以自己作調(diào)整。③需插入另一文字,則需點擊工具欄上的“插入”|“文本框”,選擇“橫排”或“豎排”即可在文本框內(nèi)填字。④插入圖片,點擊工具欄上的““插入”|“圖片”|“來自文件”即選擇要插入的圖片插入,點圖片可以用鼠標拖動位置和改變大小。⑤設(shè)置頁面背景,點擊“格式”|“背景”|“填充效果”|“圖片”|“選擇圖片”,即在文件中選擇要作為背景的圖片并插入。插入背景后,以后的每張幻燈片都以這為背景。⑥要制作第二張幻燈片,只需點擊工具欄上的“插入”|“新幻燈片”即可。 ⑦在第二張幻燈片上,先確定采用的幻燈片模板,點擊工具欄上的“格式”|“幻燈片版式”,即在右邊會出現(xiàn)豎型欄,里面包含幻燈片的各種版式,選擇左邊可插兩幅圖,右邊為文本框的版式。⑧在上面插入標題,點擊左邊的圖文框里的“插入圖片”的圖標即可在文件中選擇需要插入的圖片,在右邊插入文 3 字,如需在其他地方插入小圖片,也可。⑨如需插入音樂或視頻,則點擊工具欄上的“插入”|“影片和聲音”|“文件中的影片”或“文件中的聲音”,在文件中找到視頻文件或音頻文件并插入。不過需安裝相應(yīng)的播放器才能播放文件。⑩設(shè)置幻燈片放映效果,點擊工具欄上的“幻燈片放映”|“動畫方案”,即在右邊會出現(xiàn)豎型欄,里面包含各種放映效果,每張幻燈片選擇一種效果。? 使用Flash制作動畫 ①打開動畫制作軟件Flash,點擊“開始”頁面中“創(chuàng)建新項目”下面的“Flash文檔”即創(chuàng)建一個空白頁面。②我想做一個飄落的葉子,首先繪制葉子的圖形,點擊工具箱中的“鉛筆工具”,在工具欄底端“選項區(qū)”調(diào)顏色,并設(shè)置筆觸方式為“平滑”,畫出葉子圖形。點擊“顏料桶工具”,給葉子填充顏色。③點擊工具箱中的“選擇工具”,框中葉片,點擊工具欄上的“修改”|“轉(zhuǎn)換為元件”,打開對話框,名稱設(shè)為“樹葉”,行為選擇為“圖形”,注冊點選擇中心位置。④調(diào)整樹葉圖形的形狀、大小、方向,點擊“工具箱”中的“任意變形工具”,選中樹葉進行調(diào)整。⑤插入末關(guān)鍵幀,選中第50幀,按F6則在此時間點插入一個關(guān)鍵幀。⑥為圖層1添加引導層,選中圖層1,點擊“時間軸”面板中的“添加引導層”,即為圖層1的引導層。⑦在引導層繪制路徑曲線,點擊“工具箱”中的“鉛筆工具”,畫一條曲線即為樹葉運動的路徑。⑧設(shè)置圖層1的屬性,選擇圖層1的第一幀,按Ctrl+F3打開屬性面板,設(shè)置補間動畫為“動作”,并選中“調(diào)整到路徑”和“對齊”兩個框。⑨位置調(diào)整,點擊工具箱中的“選擇工具”,在單擊“對象”,選擇圖層1第一幀,將樹葉拖到路徑起點,中心點對其,再選擇第50幀,將樹葉拖到路徑終點。⑩如要插入音樂文件,點擊“文件”|“導入”|“導入到庫”,在文件中選擇需要插入的mp3格式文件。 最后,按Ctrl+Enter測試影片。 四、遇到的問題與解決的辦法 1、在制作網(wǎng)頁的時候,當把每個網(wǎng)頁都鏈接好了之后,突然想修改其中一個頁面,改完后再用其他頁面的鏈接來觀看該網(wǎng)頁,就出現(xiàn)了網(wǎng)頁錯誤的頁面,最先不知道怎么回事,想了想,明白這個頁面已經(jīng)變了,就不能在鏈接了,只有重新設(shè)置鏈接,最后解決了這個問題。 2、在制作網(wǎng)頁的時候,做好后,我移動了一下圖片的位置,想歸類整理一下,結(jié)果在網(wǎng)頁中就顯示不出該圖,通過這個,我知道了在網(wǎng)頁中插入的圖片存放位置不能移動,只要存放位置變了,在網(wǎng)頁中就顯示不出該圖了。 3、在制作幻燈片的時候,我想插入一點音樂,我就按照那個插入步驟做,結(jié)果放不出。最后搞明白了,沒有相應(yīng)的播放器。后來下了個“暴風影音”,插入了視頻,使網(wǎng)頁更加豐富多彩了。 4、在制作Flash動畫的時候,步驟全對,樹葉就是不按照我定的軌跡跑,而是直接從起點直線到終點,試了幾次還是不行,想了想應(yīng)該是對齊的時候沒對齊吧,就很仔細的對齊,結(jié)果就作出來了。 5、在插入Flash動畫的時候,總是出現(xiàn)不能播放的情況,看書也搞不明白,最后通過問同學知道了播放的方法和步驟,在打開插有Flash動畫的網(wǎng)頁后,上面會出現(xiàn)一個黃色的詢問長條,左擊,點擊“允許阻止的內(nèi)容”,即出現(xiàn)“安全警告”的對話框,點擊“是”,動畫就放出來了。 五、總結(jié) 通過學習運用網(wǎng)頁制作軟件FrontPage2003制作自己的網(wǎng)頁和學習運用演示軟件PowerPoint2003制作幻燈片以及用動畫制作軟件用Flash制作動畫,激發(fā)了制作的學習興趣,自己動腦、動手、動口,運用網(wǎng)絡(luò)資源,結(jié)合教材和老師大指導,通過自身的實踐,摸索出自己的方法,也根據(jù)和同學交流分享自己的方法,結(jié)合運用,創(chuàng)建自己個人風格和個人特色的網(wǎng)頁、幻燈片和動畫。培養(yǎng)了自己的能力,也學到很多關(guān)于計算機的知識,積累了制作的相關(guān)經(jīng)驗。 做好頁面,并不是一件容易的事情,它包括主題的選擇、網(wǎng)頁圖片的采集、圖片處理、頁面的排版、背景及色調(diào)、插入的各種內(nèi)容和格式等很多方面,更需要靈活掌握各方面的技術(shù)與技巧,這次制作提高了我設(shè)計的能力,更提高了我獨 立思考的能力和虛心學習和同學交流分享的能力。雖然還有很多不足的、需要提高的地方,但是這是一個積累和循序漸進的過程,我相信通過這次的制作我所學到的,下次一定可以做的更好。 六、參考文獻 [1] 劉衛(wèi)國,楊長興.大學計算機基礎(chǔ)[M].2版.北京:高等教育出版社,2009.[2] 施榮華,王小玲.大學計算機基礎(chǔ)學習與實驗指導[M].2版.北京:高等教育出版社,2009.[3] 葛敏敏.網(wǎng)頁制作[M].上海:上海交通大學出版社,2005.[4] 孫一軒,計算機實踐報告.http://wenku.baidu.com/view/58d27626a5e9856a561260eb.html.[5] 計算機實踐課程報告.http://wenku.baidu.com/view/4da5d81cc281e53a5802fff3.html?from=rec&pos=1&weight=41&lastweight=22&count=5 6第五篇:計算機基礎(chǔ)課程設(shè)計報告