


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)課程設(shè) 計(jì)指導(dǎo)書(試用版)內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院計(jì)算機(jī)系2009 12操作系統(tǒng)課程設(shè)計(jì)教學(xué)大綱 3第一章 設(shè)計(jì)規(guī)范與說明511設(shè)計(jì)規(guī)范51. 2報(bào)告的整理與形成.* 6第二章設(shè)計(jì)內(nèi)容 72. 1文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)722銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)92. 3主存空間的分配與回收11:2.4外理機(jī)管理 16內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(一) 19內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(二) 20內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(三) 21內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(四)” 22內(nèi)蒙古工業(yè)大學(xué)課稈設(shè)計(jì)(論文)說明書書寫規(guī)范 卡 23附錄一模擬文件系統(tǒng)實(shí)踐示例: 26附錄二 銀行家算法實(shí)踐示例: 43附錄
2、三 可變式分區(qū)的分配與回收實(shí)踐示例: 49附錄四時(shí)間片輪轉(zhuǎn)法進(jìn)行 CPU 調(diào)度的示例:; 54操作系統(tǒng)課程設(shè)計(jì)教學(xué)大綱課程類別:技術(shù)基礎(chǔ)課開出單位 (系):計(jì)算機(jī)課程英文名稱: Operating System of computer開出學(xué)期: 第五學(xué)期 系適用專業(yè):軟件工程制定人:趙俊生、馬志強(qiáng)一、制定依據(jù)根據(jù)內(nèi)蒙古工業(yè)大學(xué) 2006 版培養(yǎng)方案、操作系統(tǒng)課程教學(xué)大綱等制訂本課程設(shè)計(jì)教學(xué)大綱。二、目的與基本要求1 目的操作系統(tǒng)課程設(shè)計(jì)是操作系統(tǒng)課程的重要實(shí)踐性環(huán)節(jié)。 通過小型文件系統(tǒng)、 銀行家算法、 主存空間的分配與回收和處理機(jī)管理的設(shè)計(jì)與實(shí)現(xiàn), 可以加深學(xué)生對(duì)課堂中所講 授內(nèi)容的理解, 培
3、養(yǎng)學(xué)生的系統(tǒng)開發(fā)能力, 加強(qiáng)學(xué)生的項(xiàng)目經(jīng)驗(yàn), 使學(xué)生初步具有研究、 設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力。2 基本要求根據(jù)操作系統(tǒng)課程設(shè)計(jì)任務(wù)書所確定的設(shè)計(jì)內(nèi)容, 每位同學(xué)選擇其中一個(gè)設(shè)計(jì)題 目進(jìn)行一周的設(shè)計(jì), 針對(duì)設(shè)計(jì)內(nèi)容查閱相關(guān)資料、 進(jìn)行理論分析、 確定相應(yīng)算法并編程實(shí)現(xiàn) 原型系統(tǒng); 完成原型系統(tǒng)后, 按照內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)說明書書寫規(guī)范, 編寫操 作系統(tǒng)課程設(shè)計(jì)說明書;最后進(jìn)行課程設(shè)計(jì)答辯。三、基本內(nèi)容和安排1. 基本內(nèi)容題目一:文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)題目二:銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)題目三:主存空間的分配與回收題目四:處理機(jī)管理2. 安排周一:布置、講解題目,收集資料;周二:系統(tǒng)分析,算
4、法設(shè)計(jì);周三:編制、調(diào)試程序;周四:測試系統(tǒng),形成設(shè)計(jì)結(jié)論,編寫課設(shè)報(bào)告; 周五:系統(tǒng)及材料驗(yàn)收,課設(shè)答辯。四、組織及指導(dǎo)方式1. 學(xué)生的組織本課設(shè)安排四個(gè)題目, 學(xué)號(hào)為單號(hào)學(xué)生選擇題目一或三進(jìn)行設(shè)計(jì), 學(xué)號(hào)為雙號(hào)學(xué)生選擇題目二或四進(jìn)行設(shè)計(jì),一人一組,設(shè)計(jì)過程中可以相互討論。2. 指導(dǎo)方式每班指導(dǎo)教師兩人,每人指導(dǎo)一題,跟班指導(dǎo)。五、考核方式及成績評(píng)定1. 考核方式成績考核采取面試答辯形式。2. 成績評(píng)定由指導(dǎo)教師根據(jù)學(xué)生在設(shè)計(jì)中的表現(xiàn)、任務(wù)的完成情況、課程設(shè)計(jì)報(bào)告的質(zhì)量等綜合評(píng)定。評(píng)分標(biāo)準(zhǔn)為:1)完成基本功能占 60% ; 2)設(shè)計(jì)報(bào)告占 20% ;3)出勤率占 10% ; 4 )回答指導(dǎo)教
5、師提問占 10% 。根據(jù)以上四個(gè)標(biāo)準(zhǔn),課程設(shè)計(jì)成績按優(yōu)秀、良 好、中等、及格和不及格五級(jí)記分制評(píng)定。六、教材及主要參考資料1. 教材1 張堯?qū)W主編計(jì)算機(jī)操作系統(tǒng)教程(第三版) 北京 : 清華大學(xué)出版社, 20062. 主要參考書1 張堯?qū)W編計(jì)算機(jī)操作系統(tǒng)教程(第三版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo)北京 清華大學(xué)出版社, 20062 湯子瀛主編計(jì)算機(jī)操作系統(tǒng)(第三版) 西安 : 西安電子科技大學(xué)出版 社, 20013 張坤等編操作系統(tǒng)實(shí)驗(yàn)教程北京 : 清華大學(xué)出版社, 20084 張麗芬等編操作系統(tǒng)實(shí)驗(yàn)教程北京 : 清華大學(xué)出版社, 20065 Andrew S.Tanenbaum. Modern Oper
6、ating Systems, SecondEdition.Englewood Cliffs,N.J,Prentice Hall, 20016 屠祁等編 . 操作系統(tǒng)基礎(chǔ)(第三版) 北京 : 清華大學(xué)出版社, 20007 馮耀霖等編 . 操作系統(tǒng) . 西安 : 西安電子科技大學(xué)出版社, 20018 左萬歷計(jì)算機(jī)操作系統(tǒng)教程(第二版)北京:高等教育出版社,2004第一章 設(shè)計(jì)規(guī)范與說明11 設(shè)計(jì)規(guī)范一、問題分析與系統(tǒng)結(jié)構(gòu)的設(shè)計(jì) 充分地分析和理解問題本身。 本階段主要解決 “要作什么, 限制條件是 什么 ”。首先從問題中抽取合適的數(shù)據(jù)結(jié)構(gòu),作為整個(gè)系統(tǒng)的底層,解決問題 的算法作為上層。定義數(shù)據(jù)的存儲(chǔ)
7、結(jié)構(gòu)及其在這些結(jié)構(gòu)上的操作,使得在上層的應(yīng)用中 可以通過這些操作完成對(duì)數(shù)據(jù)結(jié)構(gòu)層的訪問。在這個(gè)過程中,要綜合考慮 系統(tǒng)功能,使所設(shè)置的操作要易于系統(tǒng)整體功能的實(shí)現(xiàn)。最后寫出每個(gè)函數(shù)的規(guī)格說明,包括形參個(gè)數(shù)和類型、函數(shù)的返回類 型、函數(shù)的前提條件是什么、以及函數(shù)的功能。列出函數(shù)間的調(diào)用關(guān)系, 可以使用調(diào)用關(guān)系圖表示則更加清晰,這樣便完成了系統(tǒng)結(jié)構(gòu)設(shè)計(jì)。二、詳細(xì)設(shè)計(jì)和編碼詳細(xì)設(shè)計(jì)的目的是對(duì)函數(shù)的進(jìn)一步求精。用if 、while 和賦值語句等類語言寫出算法的框架。利用類語言的目的是避免陷入細(xì)節(jié)。在編碼時(shí), 可以對(duì)詳細(xì)設(shè)計(jì)的結(jié)果進(jìn)一步求精,用高級(jí)語言表示出來。應(yīng)注意以下事 項(xiàng)。1程序的每一行最好不超過
8、 60 個(gè)字符。每個(gè)函數(shù)通常不要太長,以 40 行為宜。函數(shù)包含的程序行數(shù)太多,易于造成閱讀困難。2變量定義為:名 + 類型。如: LinkList *firstLinkListPointer;其中first 為名 , 后面的 LinkListPointer 說明是鏈表指針類。3控制 if 、while 等語句的嵌套深度,最多不超過 5 層。4對(duì)每一段程序完成的作用,除非常明顯的除外(如: x = x + 1; 注 釋為 x 加 1,沒有什么意義),都應(yīng)加以注釋。這會(huì)對(duì)程序的調(diào)試提供很 多 方便。5對(duì)每個(gè)數(shù)據(jù)結(jié)構(gòu)和其函數(shù)要進(jìn)行單元測試。6根據(jù)情況可以設(shè)立若干調(diào)試點(diǎn), 即輸出若干信息, 用于驗(yàn)證
9、和你的 設(shè)想是否一致。另外,對(duì)于輸入輸出語句,必須對(duì)它們的作用加以說明。 否則,在調(diào)試程序時(shí), 無法了解系統(tǒng)需要輸入說明, 系統(tǒng)輸出的又是什么。三、靜態(tài)檢查 自己用一組數(shù)據(jù)手動(dòng)執(zhí)行程序;或和同學(xué)一起閱讀自己的程序,以全 面地了解該程序的邏輯。12 報(bào)告的整理與形成一、調(diào)試報(bào)告 包括的內(nèi)容有問題是如何解決的,討論與分析、改進(jìn)設(shè)想、經(jīng)驗(yàn)與體 會(huì)、時(shí)空復(fù)雜度等。二、源程序清單和結(jié)果 打印的源程序清單和測試結(jié)果附在設(shè)計(jì)報(bào)告的后面。源程序必須有注 釋,以及必要的測試數(shù)據(jù)和運(yùn)行結(jié)果數(shù)據(jù)。注釋提倡用英文描述。三、文檔及資料的形成在程序開發(fā)過程中,逐步形成各種必要的文檔及資料第二章 設(shè)計(jì)內(nèi)容21 文件系統(tǒng)的設(shè)
10、計(jì)與實(shí)現(xiàn)一、設(shè)計(jì)目的 通過設(shè)計(jì)一個(gè)小型文件系統(tǒng),進(jìn)一步掌握文件管理的方法和技術(shù),使 學(xué)生初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力。二、設(shè)計(jì)要求與提示1問題描述在任一 OS 下,建立一個(gè)大文件,把它假想成一張盤,在其中實(shí)現(xiàn)一 個(gè)簡單的小型文件系統(tǒng)。2基本要求該文件系統(tǒng)沒有子目錄機(jī)制, 文件連續(xù)分配, 不考慮換 “盤” 和分區(qū)。 做一個(gè)簡單的操作界面,提供五條簡單的命令:dir 、 mkfile 、 type 、 copy 、delfile ,分別用于顯示文件目錄、建立文件、顯示文件內(nèi)容、復(fù)制和刪除 一個(gè)文件。三、設(shè)計(jì)思想、環(huán)境說明和使用工具1設(shè)計(jì)思想 建立一個(gè)系統(tǒng)文件(模擬盤) ,并對(duì)此
11、進(jìn)行盤塊的劃分,第一個(gè)盤塊 存放文件目錄,第二盤塊存放盤塊位示圖,自第三個(gè)盤塊開始存放各具體 文件的內(nèi)容,文件目錄存放文件的名字,文件的擴(kuò)展名,開始盤塊號(hào),所 占用的盤塊數(shù)目,文件的大小;盤塊位示圖用來標(biāo)記盤塊是否被占用。2環(huán)境說明工具: C 語言。在 WINDOWS 環(huán)境下使用 VC+ 進(jìn)行編譯及運(yùn)行四、主要的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)說明:struct filename char name9; char ext4; int i;號(hào)int Amount;數(shù)long int size; ;struct empty int map100;int filenum;五、課程設(shè)計(jì)應(yīng)提交的主要內(nèi)容文件目錄項(xiàng)結(jié)構(gòu)體
12、文件名擴(kuò)展名文件所占用磁盤塊的第一個(gè)磁盤塊文件所占用磁盤塊的塊文件大小盤塊結(jié)構(gòu)體盤塊位示圖文件數(shù)量1寫出實(shí)現(xiàn)文件管理的數(shù)據(jù)結(jié)構(gòu)、算法和算法流程圖2打印出程序清單。3寫出程序調(diào)試及運(yùn)行情況。4寫出課程設(shè)計(jì)出現(xiàn)的問題及解決的方法。5課程設(shè)計(jì)的體會(huì)。22 銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)一、設(shè)計(jì)目的通過銀行家算法設(shè)計(jì)與實(shí)現(xiàn),可以加深學(xué)生對(duì)死鎖的理解,掌握死鎖 的預(yù)防、避免、檢測和解除的基本原理,重點(diǎn)掌握死鎖的避免方法銀行 家算法。使學(xué)生初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力。二、設(shè)計(jì)要求1問題描述系統(tǒng)在進(jìn)行資源分配的過程中,允許進(jìn)程動(dòng)態(tài)的申請(qǐng)資源,為了避免 發(fā)生死鎖,在分配資源前要進(jìn)行安全性檢查,若
13、此次分配不會(huì)導(dǎo)致系統(tǒng)進(jìn) 入不安全狀態(tài),便將資源分配給進(jìn)程,否則,進(jìn)程等待。2基本要求設(shè)計(jì)一個(gè)進(jìn)程動(dòng)態(tài)請(qǐng)求資源的模擬系統(tǒng),實(shí)現(xiàn)隨機(jī)產(chǎn)生進(jìn)程請(qǐng)求資源 的數(shù)量;資源安全性檢查算法;資源的分配算法;以及輸出顯示每次請(qǐng)求 的結(jié)果和系統(tǒng)資源的狀態(tài)。三、設(shè)計(jì)思想、環(huán)境說明和使用工具1設(shè)計(jì)思想輸入當(dāng)前進(jìn)程資源的使用情況以及整個(gè)系統(tǒng)的資源使用情況,并進(jìn)行 初始化安全性檢查;如果是不安全狀態(tài),重新初始化系統(tǒng);否則,從等待 隊(duì)列中提取一個(gè)等待進(jìn)程,使用銀行家算法進(jìn)行檢測,輸出當(dāng)前系統(tǒng)的狀 態(tài)和安全序列;如果是安全狀態(tài),系統(tǒng)繼續(xù)從等待隊(duì)列中提取等待進(jìn)程進(jìn) 行檢查;如果是不安全狀態(tài),進(jìn)程回到等待隊(duì)列,系統(tǒng)從等待隊(duì)列中提
14、取 等待進(jìn)程進(jìn)行檢查。系統(tǒng)中申請(qǐng)資源的進(jìn)程全部進(jìn)入等待隊(duì)列等候處理。2環(huán)境說明工具: C 語言。在 WINDOWS 環(huán)境下使用 VC+6.0 進(jìn)行開發(fā)。四、主要的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)說明:#define MAX_RESOURCE_TYPE10 定義最大的系統(tǒng)資源類數(shù)struct task_struct 進(jìn)程控制塊intintpid;maxMAX_RESOURCE_TYPE;進(jìn)程編號(hào)進(jìn)程對(duì)資源的最大需求intallocMAX_RESOURCE_TYPE;進(jìn)程已經(jīng)分配的資源intrequestMAX_RESOURCE_TYPE;進(jìn)程本次申請(qǐng)的資源數(shù);等待隊(duì)列采用鏈表結(jié)構(gòu)進(jìn)行設(shè)計(jì)。五、課程設(shè)計(jì)應(yīng)提交的主
15、要內(nèi)容 1寫出實(shí)現(xiàn)銀行家算法的數(shù)據(jù)結(jié)構(gòu)、算法和算法流程圖 2打印出程序清單。3寫出程序調(diào)試及運(yùn)行情況。4寫出系統(tǒng)設(shè)計(jì)中出現(xiàn)的問題及解決的方法。5課程設(shè)計(jì)的體會(huì)。23 主存空間的分配與回收一、設(shè)計(jì)目的本設(shè)計(jì)題目主要讓大家熟悉主存的各種分配與回收。所謂分配,就是 解決多道作業(yè)或多進(jìn)程如何共享主存空間的問題。所謂回收,就是當(dāng)作業(yè) 運(yùn)行完成時(shí),將作業(yè)或進(jìn)程所占用的主存空間歸還給系統(tǒng)。主存的分配與 回收的實(shí)現(xiàn)是與主存儲(chǔ)器的管理方式有關(guān)的。通過本次設(shè)計(jì),幫助學(xué)生理 解在不同的存儲(chǔ)管理方式下,如何實(shí)現(xiàn)主存空間的分配與回收。使學(xué)生初 步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力。二、設(shè)計(jì)要求1問題描述采用可
16、變式分區(qū)管理,使用首次或最佳適應(yīng)算法實(shí)現(xiàn)主存的分配與回 收??梢圆捎梅謪^(qū)說明表或空閑區(qū)鏈來進(jìn)行??勺兪椒謪^(qū)管理是指在處理作業(yè)過程中建立分區(qū),使分區(qū)大小正好適 合作業(yè)的需要,并且分區(qū)個(gè)數(shù)是可以調(diào)整的。當(dāng)要裝入一個(gè)作業(yè)時(shí),根據(jù) 作業(yè)需要的主存量,查看是否有足夠的空閑空間,若有,則按需求量分割 一部分給作業(yè);若無;則作業(yè)等待。隨著作業(yè)的裝入、完成,主存空間被 分割成許多大大小小的分區(qū)。有的分區(qū)被作業(yè)占用,有的分區(qū)空閑。2基本要求設(shè)計(jì)多個(gè)作業(yè)或進(jìn)程動(dòng)態(tài)請(qǐng)求內(nèi)存資源的模擬系統(tǒng),使用首次或最佳 適應(yīng)算法實(shí)現(xiàn)內(nèi)存的分配與回收,實(shí)現(xiàn)可變式分區(qū)管理;設(shè)計(jì)相應(yīng)的內(nèi)存 分配算法,定義相關(guān)數(shù)據(jù)結(jié)構(gòu),以及輸出顯示每次請(qǐng)
17、求分配內(nèi)存的結(jié)果和 內(nèi)存的已分配和未分配的狀況。三、設(shè)計(jì)思想、環(huán)境說明和使用工具1 設(shè)計(jì)思想初始化系統(tǒng)的內(nèi)存分區(qū)說明表;輸入當(dāng)前作業(yè)或進(jìn)程的使用內(nèi)存情 況,檢索系統(tǒng)內(nèi)的內(nèi)存分區(qū)說明表,判斷是否可分配,也就是查看是否有 足夠的空閑空間,若有,則按需求量分割一部分給作業(yè);若無;則作業(yè)等 待。隨著作業(yè)的裝入、完成,主存空間被分割成許多大大小小的分區(qū)。有 的分區(qū)被作業(yè)占用,有的分區(qū)空閑。使用內(nèi)存的分配和回收算法進(jìn)行,完 成所有作業(yè)或進(jìn)程的內(nèi)存使用請(qǐng)求,作業(yè)完成后回收其所占用的內(nèi)存給系 統(tǒng);并可輸出查看內(nèi)存的當(dāng)前使用狀況。例如,某時(shí)刻主存空間占用情況如圖3-1所示。(1) 為了說明哪些分區(qū)是空閑的,可以
18、用來裝入新作業(yè),必須要有 張空閑區(qū)說明表,如表3-1所示。操作系統(tǒng)(10KB)圖3-1主存空間占用情況3_1 空閑區(qū)說作業(yè) 1(10KB)作業(yè) 4(25KB)空閑區(qū)1(20KB)表作業(yè) 2(45KB)明表空閑區(qū)2(146KB)45K20KB110K146KB其中,起始地址指出各空閑區(qū)的主存起始地址,長度指出空閑區(qū)大小。狀態(tài)有:未分配:該欄目是記錄的有效空閑區(qū)??毡砟浚簺]有登記信息。由于分區(qū)個(gè)數(shù)不定,所以空閑區(qū)說明表中應(yīng)有足夠的空表目項(xiàng)。否則 造成溢出,無法登記。同樣,再設(shè)一個(gè)已分配區(qū)表,記錄作業(yè)或進(jìn)程的主存占用情況。(2) 當(dāng)有一個(gè)新作業(yè)要求裝入主存時(shí),必須查空閑區(qū)說明表,從中找出 一個(gè)足夠大
19、的空閑區(qū)。有時(shí)找到的空閑區(qū)可能大于作業(yè)需求量,這時(shí)應(yīng)將空 閑區(qū)一分為二。 一個(gè)分給作業(yè); 另一個(gè)仍作為空閑區(qū)留在空閑區(qū)表中。為 了盡量減少由于分割造成的碎片,盡可能分配低地址部分的空閑區(qū),將較大 空閑區(qū)留在高地址端,以利于大作業(yè)的裝入。為此在空閑區(qū)表中,按空閑區(qū) 首地址從低到高進(jìn)行登記。為了便于快速查找,要不斷地對(duì)表格進(jìn)行緊縮,即讓“空表目”項(xiàng)留在表的后部。其分配框圖如圖3-2所示(3) 當(dāng)一個(gè)作業(yè)執(zhí)行完成時(shí),作業(yè)所占用的分區(qū)應(yīng)歸還給系統(tǒng)。在歸 還時(shí)要考慮相鄰空閑區(qū)合并的問題。作業(yè)的釋放區(qū)與空閑區(qū)的鄰接分以下4 種情況考慮:A釋放區(qū)下鄰(低地址鄰接)空閑區(qū);B 釋放區(qū)上鄰(高地址鄰接)空閑區(qū);
20、C 釋放區(qū)上下都與空閑區(qū)鄰接;D 釋放區(qū)與空閑區(qū)不鄰接。首次適應(yīng)算法回收框圖如圖33 所示。2 .環(huán)境說明工具: C 語言。在 WINDOWS 環(huán)境下使用 VC+6.0 進(jìn)行開發(fā)。四、主要的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)說明: #define N 5 structfreearea * 定義一個(gè)空閑區(qū)說明表結(jié)構(gòu),并初始化變量* int startaddress; *空閑區(qū)始址 *int size ; * 空閑區(qū)大小 *int state ; * 空閑區(qū)狀態(tài): 0 為空表目, 1 為可用空閑塊 * freeblockN=20 , 20,1, 80, 50,1, 150 , 100 , 1,300,五、課程設(shè)計(jì)應(yīng)
21、提交的主要內(nèi)容1 寫出實(shí)現(xiàn)主存的分配和回收程序的數(shù)據(jù)結(jié)構(gòu)、算法和算法流程圖。2 打印出程序清單。3 寫出程序調(diào)試及運(yùn)行情況。4 .寫出系統(tǒng)設(shè)計(jì)中出現(xiàn)的問題及解決的方法。5 .課程設(shè)計(jì)的體會(huì)。6自我評(píng)價(jià)與總結(jié)。24 處理機(jī)管理一、設(shè)計(jì)目的在多道程序或多任務(wù)系統(tǒng)中,系統(tǒng)同時(shí)處于就緒態(tài)的進(jìn)程有若干個(gè)。也就是說能運(yùn)行的進(jìn)程數(shù)遠(yuǎn)遠(yuǎn)大于處理機(jī)個(gè)數(shù)。為了使系統(tǒng)中的各進(jìn)程能 有條不紊地運(yùn)行,必須選擇某種調(diào)度策略,以選擇一進(jìn)程占有處理機(jī)。要 求學(xué)生設(shè)計(jì)一個(gè)模擬單處理機(jī)調(diào)度的算法,以鞏固和加深處理機(jī)調(diào)度的概 念。二、設(shè)計(jì)要求1、問題描述 處理機(jī)管理是操作系統(tǒng)中非常重要的部分。為深入理解處理機(jī)調(diào)度部 分的功能,設(shè)計(jì)
22、一個(gè)按時(shí)間片輪轉(zhuǎn)調(diào)度 CPU 的算法,模擬實(shí)現(xiàn)處理機(jī)的 調(diào)度。2基本要求時(shí)間片輪轉(zhuǎn)調(diào)度 CPU 的算法是分時(shí)系統(tǒng)采用的典型算法,把 CPU 的 執(zhí)行時(shí)間分成若干個(gè)一定大小的時(shí)間片輪流的分配給就緒隊(duì)列的各個(gè)進(jìn) 程,讓各就緒進(jìn)程按指定的順序分別占用 CPU 的一個(gè)時(shí)間片輪流執(zhí)行下 去,直至完成。要求定義進(jìn)程控制塊 PCB 的結(jié)構(gòu),并為每個(gè)進(jìn)程任意確定 一個(gè)要求運(yùn)行時(shí)間和到達(dá)時(shí)間,按照進(jìn)程到達(dá)的先后順序排成一個(gè)循環(huán)隊(duì) 列。設(shè)計(jì)按時(shí)間片輪轉(zhuǎn)的進(jìn)程調(diào)度算法。三、設(shè)計(jì)思想、環(huán)境說明和使用工具1設(shè)計(jì)思想(1) 假設(shè)系統(tǒng)有 5 個(gè)進(jìn)程,每個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊 PCB 來代表。 PCB 的格式如圖 4-1 所
23、示。其中,進(jìn)程名即進(jìn)程標(biāo)識(shí)。鏈接指針:指出下一個(gè)到達(dá)進(jìn)程的進(jìn)程控制塊首地址。按照進(jìn)程到達(dá) 的順序排隊(duì)。系統(tǒng)設(shè)置一個(gè)隊(duì)頭和隊(duì)尾指針分別指向第一個(gè)和最后一個(gè)進(jìn) 程。新生成的進(jìn)程放隊(duì)尾。估計(jì)運(yùn)行時(shí)間、到達(dá)時(shí)間以及進(jìn)程狀態(tài)與圖3-1中相同。(2) 為每個(gè)進(jìn)程任意確定一個(gè)要求運(yùn)行時(shí)間和到達(dá)時(shí)間。(3) 按照進(jìn)程到達(dá)的先后順序排成一個(gè)循環(huán)隊(duì)列。再設(shè)一個(gè)隊(duì)首指針 指向第一個(gè)到達(dá)進(jìn)程的首址。(4) 執(zhí)行處理機(jī)調(diào)度時(shí),開始選擇隊(duì)首的第一個(gè)進(jìn)程運(yùn)行。另外再設(shè) 一個(gè)當(dāng)前運(yùn)行進(jìn)程指針,指向當(dāng)前正運(yùn)行的進(jìn)程。(5) 由于本實(shí)踐是模擬算法,所以對(duì)被選中進(jìn)程并不實(shí)際啟動(dòng)運(yùn)行, 而只是執(zhí)行: 估計(jì)運(yùn)行時(shí)間減1 ; 輸出當(dāng)前運(yùn)
24、行進(jìn)程的名字。用這兩個(gè)操作來模擬進(jìn)程的一次運(yùn)行。(6) 進(jìn)程運(yùn)行一次后,以后的調(diào)度則將當(dāng)前指針依次下移一個(gè)位置,指向下一個(gè)進(jìn)程,即調(diào)整當(dāng)前運(yùn)行指針指向該進(jìn)程的鏈接指針?biāo)高M(jìn)程,以指示應(yīng)運(yùn)行進(jìn)程。同時(shí)還應(yīng)判斷該進(jìn)程的剩余運(yùn)行時(shí)間是否為0。若不為0,則等待下一輪的運(yùn)行;若該進(jìn)程的剩余運(yùn)行時(shí)間為0,則將該進(jìn)程的狀態(tài)置為完成態(tài) C,并退出循環(huán)隊(duì)列(7) 若就緒隊(duì)列不空, 則重復(fù)上述的 (5) 和 (6) 步驟直到所有進(jìn)程都運(yùn)行 完為止。(8) 在所設(shè)計(jì)的調(diào)度程序中,應(yīng)包含顯示或打印語句。以便顯示或打 印每次選中進(jìn)程的名稱及運(yùn)行一次后隊(duì)列的變化情況。2環(huán)境說明 工具: C 語言。在 WINDOWS 環(huán)境
25、下使用 VC+6.0 進(jìn)行編譯及運(yùn)行。四、主要的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)說明:typedef struct pcb進(jìn)程控制塊定義 char pnameN;進(jìn)程名int runtime;運(yùn)行時(shí)間int arrivetime;到達(dá)時(shí)間char state;進(jìn)程狀態(tài)struct pcb *next;鏈接指針PCB;五、課程設(shè)計(jì)應(yīng)提交的主要內(nèi)容1寫出實(shí)現(xiàn)文件管理的數(shù)據(jù)結(jié)構(gòu)、算法和算法流程圖2打印出程序清單。3寫出程序調(diào)試及運(yùn)行情況。4寫出課程設(shè)計(jì)出現(xiàn)的問題及解決的方法。5課程設(shè)計(jì)的體會(huì)。6自我評(píng)價(jià)與總結(jié)。內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(一)學(xué)院(系):信息學(xué)院計(jì)算機(jī)系課程名稱:操作系統(tǒng)課程設(shè)計(jì)指導(dǎo)教師(簽名):
26、專業(yè)班級(jí):軟件工程 09 學(xué)生姓名:學(xué)號(hào):一、課程設(shè)計(jì)題目文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)二、課程設(shè)計(jì)的目的通過設(shè)計(jì)一個(gè)小型文件系統(tǒng),進(jìn)一步掌握文件管理的方法和技術(shù),使學(xué)生初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力三、課程設(shè)計(jì)的主要內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、設(shè)計(jì)要求、工作量要求等)原始數(shù)據(jù):文件目錄項(xiàng)結(jié)構(gòu)體,盤塊結(jié)構(gòu)體。技術(shù)參數(shù): Windows XP系統(tǒng),VC+6.0開發(fā)工具。設(shè)計(jì)要求:1 .設(shè)計(jì)基于位示圖的文件連續(xù)分配算法;2 .設(shè)計(jì)顯示文件目錄、 建立文件、顯示文件內(nèi)容、復(fù)制和刪除文件算法;3 .畫出以上算法流程圖;4 .編程實(shí)現(xiàn)算法功能;5 編寫課程設(shè)計(jì)說明書。工作量要求:完成以上
27、設(shè)計(jì)要求中的所有算法功能。四、工作進(jìn)度安排周一:布置、講解題目,收集資料;周二:系統(tǒng)分析,算法設(shè)計(jì);周三:編制、調(diào)試程序;周四:測試系統(tǒng),形成設(shè)計(jì)結(jié)論,編寫課設(shè)報(bào)告; 周五:系統(tǒng)及材料驗(yàn)收,課設(shè)答辯。五、主要參考文獻(xiàn)1 張堯?qū)W編.計(jì)算機(jī)操作系統(tǒng)教程(第三版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo).北京:清華大學(xué)出版社,20062 湯子瀛主編.計(jì)算機(jī)操作系統(tǒng)(第三版).西安:西安電子科技大學(xué)出版社,20013 張坤等編操作系統(tǒng)實(shí)驗(yàn)教程北京:清華大學(xué)出版社,2008審核批準(zhǔn)意見系(教研室)主任(簽字) 內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(二)學(xué)院(系):信息學(xué)院計(jì)算機(jī)系課程名稱:操作系統(tǒng)課程設(shè)計(jì) 指導(dǎo)教師(簽名): 專業(yè)班
28、級(jí): 軟件工程 09 學(xué)生姓名: 學(xué)號(hào):一、課程設(shè)計(jì)題目銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)二、課程設(shè)計(jì)的目的通過銀行家算法設(shè)計(jì)與實(shí)現(xiàn),可以加深學(xué)生對(duì)死鎖的理解,掌握死鎖的預(yù)防、避免、 檢測和解除的基本原理,重點(diǎn)掌握死鎖的避免方法一銀行家算法。使學(xué)生初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力三、課程設(shè)計(jì)的主要內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、設(shè)計(jì)要求、工作量要求等)技術(shù)參數(shù):Windows XP 系統(tǒng),VC+6.0開發(fā)工具。設(shè)計(jì)要求:1 .設(shè)計(jì)銀行家算法的核心數(shù)據(jù)結(jié)構(gòu)、安全性檢查算法;2 .畫出銀行家算法流程圖;3. 編程實(shí)現(xiàn)算法功能;4 .編寫課程設(shè)計(jì)說明書。工作量要求:完成以上設(shè)計(jì)要求中的所有算
29、法功能。四、工作進(jìn)度安排周一:布置、講解題目,收集資料;周二:系統(tǒng)分析,算法設(shè)計(jì);周三:編制、調(diào)試程序;周四:測試系統(tǒng),形成設(shè)計(jì)結(jié)論,編寫課設(shè)報(bào)告;周五:系統(tǒng)及材料驗(yàn)收,課設(shè)答辯。五、主要參考文獻(xiàn)1 張堯?qū)W編.計(jì)算機(jī)操作系統(tǒng)教程(第三版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo). 北 京:清華大學(xué)出版社,20062 湯子瀛主編.計(jì)算機(jī)操作系統(tǒng)(第三版) .西安:西安電子科技大學(xué) 出版社,20013 張坤等編操作系統(tǒng)實(shí)驗(yàn)教程北京:清華大學(xué)出版社,2008審核批準(zhǔn)意見系(教研室)主任(簽字)內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(三)學(xué)院(系):信息學(xué)院計(jì)算機(jī)系課程名稱:操作系統(tǒng)課程設(shè)計(jì)指導(dǎo)教師(簽名):專業(yè)班級(jí):軟件工程 09
30、 學(xué)生姓名:學(xué)號(hào):一、課程設(shè)計(jì)題目主存空間的分配與回收二、課程設(shè)計(jì)的目的通過該課程設(shè)計(jì)使學(xué)生理解在不同的存儲(chǔ)管理方式下,如何實(shí)現(xiàn)主存空間的分配與回收。使學(xué)生初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力。三、課程設(shè)計(jì)的主要內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、設(shè)計(jì)要求、工作量要求等)原始數(shù)據(jù):空閑區(qū)說明表結(jié)構(gòu)體。技術(shù)參數(shù): Windows XP系統(tǒng),VC+6.0開發(fā)工具。設(shè)計(jì)要求:1 .設(shè)計(jì)基于空閑區(qū)說明表的可變分區(qū)分配與回收算法;2 .或設(shè)計(jì)基于空閑區(qū)鏈表的可變分區(qū)分配與回收算法;3 .畫出以上算法流程圖;4 .編程實(shí)現(xiàn)算法功能;5 編寫課程設(shè)計(jì)說明書。工作量要求:完成以上設(shè)計(jì)要求中的所有算
31、法功能。四、工作進(jìn)度安排周一:布置、講解題目,收集資料;周二:系統(tǒng)分析,算法設(shè)計(jì);周三:編制、調(diào)試程序;周四:測試系統(tǒng),形成設(shè)計(jì)結(jié)論,編寫課設(shè)報(bào)告; 周五:系統(tǒng)及材料驗(yàn)收,課設(shè)答辯。五、主要參考文獻(xiàn)1 張堯?qū)W編.計(jì)算機(jī)操作系統(tǒng)教程(第三版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo).北京:清華大學(xué)出版社,20062 湯子瀛主編.計(jì)算機(jī)操作系統(tǒng)(第三版).西安:西安電子科技大學(xué)出版社,20013 張坤等編操作系統(tǒng)實(shí)驗(yàn)教程北京:清華大學(xué)出版社,2008審核批準(zhǔn)意見系(教研室)主任(簽字) 內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(四)學(xué)院(系):信息學(xué)院計(jì)算機(jī)系課程名稱:操作系統(tǒng)課程設(shè)計(jì)指導(dǎo)教師(簽名): 專業(yè)班級(jí): 軟件工程 09
32、 學(xué)生姓名: 學(xué)號(hào):一、課程設(shè)計(jì)題目處理機(jī)管理二、課程設(shè)計(jì)的目的學(xué)生通過設(shè)計(jì)一個(gè)模擬單處理機(jī)調(diào)度的算法,以鞏固和加深處理機(jī)調(diào)度的概念。使學(xué)生初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力三、課程設(shè)計(jì)的主要內(nèi)容和要求(包括原始數(shù)據(jù)、 技術(shù)參數(shù)、設(shè)計(jì)要求、工作量要求等)原始數(shù)據(jù):進(jìn)程控制塊 PCB結(jié)構(gòu)體。技術(shù)參數(shù): Windows XP系統(tǒng),VC+6.0開發(fā)工具。設(shè)計(jì)要求:1 .設(shè)計(jì)基于時(shí)間片輪轉(zhuǎn)法的處理機(jī)調(diào)度算法;2 .或設(shè)計(jì)基于先來先服務(wù)或基于優(yōu)先權(quán)的處理機(jī)調(diào)度算法;3 .畫出以上算法流程圖;4 .編程實(shí)現(xiàn)算法功能;5 編寫課程設(shè)計(jì)說明書。工作量要求:完成以上設(shè)計(jì)要求中的所有算法功能。四、工
33、作進(jìn)度安排周一:布置、講解題目,收集資料;周二:系統(tǒng)分析,算法設(shè)計(jì);周三:編制、調(diào)試程序;周四:測試系統(tǒng),形成設(shè)計(jì)結(jié)論,編寫課設(shè)報(bào)告;周五:系統(tǒng)及材料驗(yàn)收,課設(shè)答辯。五、主要參考文獻(xiàn)1 張堯?qū)W編.計(jì)算機(jī)操作系統(tǒng)教程(第三版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo).北京:清華大學(xué)出版社,20062 湯子瀛主編.計(jì)算機(jī)操作系統(tǒng)(第三版).西安:西安電子科技大學(xué)出版社,20013 張坤等編操作系統(tǒng)實(shí)驗(yàn)教程北京:清華大學(xué)出版社, 2008審核批準(zhǔn)意見系(教研室)主任(簽字) 內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計(jì)(論文)說明書書寫規(guī)范一、說明書(論文)基本格式說明書或論文一般不應(yīng)少于 30005000字。說明書(論文)手寫或打 印均可,
34、手寫要書寫工整。1、題目:題目要對(duì)論文的內(nèi)容有高度的概括性,簡明、易讀。2、 摘要:中文在前,外文在后。中文摘要在200400字以內(nèi)。關(guān)鍵 詞35個(gè),以分號(hào)相隔。3、目錄:設(shè)計(jì)說明書(論文)目錄應(yīng)包括論文全部章節(jié)的標(biāo)題(要求編到3級(jí)標(biāo)題)和參考文獻(xiàn)、附錄(可選擇)、頁碼右對(duì)齊。4、 正文:正文應(yīng)按照目錄所定的順序依次撰寫,要求計(jì)算準(zhǔn)確,論述 清楚、簡練、通順,插圖清晰,書寫整潔。文中圖、表及公式應(yīng)規(guī)范地繪制和書寫。5、插圖:插圖包括曲線圖, 流程圖,工藝圖、設(shè)備圖、框圖,示意圖, 圖片等。插圖序號(hào)用阿拉伯?dāng)?shù)字分章依序連續(xù)編排,每一插圖都應(yīng)有簡短 確切的題名,連同圖序置于圖下,圖序與圖名之間空一
35、格,圖名中不允許 使用標(biāo)點(diǎn)符號(hào),圖名后不加標(biāo)點(diǎn)符號(hào)。6、 插表:插表序號(hào)用阿拉伯?dāng)?shù)字分章依序連續(xù)編排,每一插表都應(yīng)有簡短確切的題名,表序與表名書寫于表的正上方,表序與表名之間空一格,表名不允許使用標(biāo)點(diǎn)符號(hào),表名后不加標(biāo)點(diǎn)符號(hào)。7、參考文獻(xiàn):著作圖書文獻(xiàn)書寫格式如下:序號(hào) 作者姓名書名出版地出版者出版年:引用部分起止頁 碼學(xué)術(shù)刊物文獻(xiàn)書寫格式如下:序號(hào) 作者姓名文章名學(xué)術(shù)刊物名年,卷(期) :引用部分起止 頁碼序號(hào) 作者姓名論文題目(學(xué)位授予單位)學(xué)位論文年序號(hào) 發(fā)明者姓名專利名稱專利公開號(hào)年二、打印要求1、 紙張及頁面原則上用打印機(jī)打印輸出。設(shè)計(jì)說明書(論文)紙張用 A4 標(biāo)準(zhǔn)紙, 版心尺寸為
36、:左邊距 30mm ,右邊距 25mm ,上邊距 30mm ,下邊距 25mm 。 行間距為 22 磅,即每頁 32 行,每行 37 字。2、字體與字號(hào) 各章題序及標(biāo)題為小二號(hào)黑體;各節(jié)的一級(jí)題序與標(biāo)題為小三號(hào)黑 體,各節(jié)的二級(jí)題序及標(biāo)題為四號(hào)黑體,各節(jié)的三級(jí)題序及標(biāo)題為小四號(hào) 黑體,正文用小四號(hào)宋體。摘要、參考文獻(xiàn)、等部分按章處理,即標(biāo)題小 二號(hào)黑體,內(nèi)容小四號(hào)宋體。目錄的標(biāo)題采用小二號(hào)黑體,內(nèi)容為小四號(hào) 宋體。3、頁碼 設(shè)計(jì)說明書(論文)頁碼一律用阿拉伯?dāng)?shù)字連續(xù)編碼,頁碼由第一章 的首頁開始作為第 1 頁,摘要、目錄等不編排頁碼。三、裝訂順序1、封面;(見附件)2、任務(wù)書;僅對(duì)論文)3、中
37、文摘要、英文摘要;4、目錄5、正文;6、參考文獻(xiàn)。 附件:課程設(shè)計(jì)封面課程設(shè)計(jì)題目: XXX學(xué)生姓名: XXX院:信息工程學(xué)院系別:計(jì)算機(jī)系專業(yè):軟件工程班級(jí):軟件 08-X指導(dǎo)教師: XXXXXX 副教授(或講師) 教授(或講師)200X 年 XX 月 XX 日附錄一 模擬文件系統(tǒng)實(shí)踐示例:#include "iostream. "C" void exit(int); struct filenamechar name9;char ext4;int i;文件目錄項(xiàng)結(jié)構(gòu)體文件名擴(kuò)展名文件所占用磁盤塊的第一個(gè)磁盤塊號(hào)file11; int num;struct emp
38、ty int map11;int filenum;emptytable;模塊說明:void SystemInit() for(int i=2;i<10;i+)emptytable.mapi=0;emptytable.map0=1;emptytable.map1=1;emptytable.filenum=0;FILE *fp;if(fp=fopen("filesys","wb+")=NULL) 系統(tǒng)文件將文件目錄盤塊和盤塊結(jié)構(gòu)體盤塊位示圖文件數(shù)量模擬磁盤文件初始化函數(shù)初始化存放位示圖的盤塊wb+: 為讀寫建立一個(gè)位示圖盤塊寫入系統(tǒng)文件新 "
39、 文件;打開printf("can not open file n"); exit(0);fseek(fp,512L,0);fwrite(&emptytable,sizeof(struct empty),1,fp);fclose(fp);printf("! 初始化系統(tǒng)成功 !");void WriteFile() 將目錄以及空閑盤塊表寫入磁盤FILE *fp;if(fp=fopen("filesys","rb+")=NULL)printf("can not open file n");e
40、xit(0);rewind(fp);for(int i=0;i<num;i+)fwrite(&filei,sizeof(struct filename),1,fp);文件目錄fseek(fp,512L,0);fwrite(&emptytable,sizeof(struct empty),1,fp);位示圖fclose(fp);void dir() 顯示文件目錄 int i,j;FILE *fp;if(fp=fopen("filesys","rb")=NULL) printf("can not open file n&quo
41、t;);exit(0);fseek(fp,512L,0);fread(&emptytable,sizeof(struct empty),1,fp); rewind(fp);num=emptytable.filenum;for(i=0;i<num;i+)fread(&filei,sizeof(struct filename),1,fp);if (num!=0) printf(" 系統(tǒng)文件目錄結(jié)構(gòu) :n");for(i=0,j=1;i<num;i+,j+)printf("%s.%sn",,filei.ext);
42、if(j=5) printf("n");j=1;printf("n 文件數(shù)量為 %d ",num);fclose(fp);void type()空閑盤塊表的定位文件目錄表的定位顯示文件內(nèi)容FILE *fp;int i,j;if(fp=fopen("filesys","rb")=NULL) printf("can not open file n");exit(0);fseek(fp,512L,0);fread(&emptytable,sizeof(struct empty),1,fp);r
43、ewind(fp);num=emptytable.filenum;for(i=0;i<num;i+)fread(&filei,sizeof(struct filename),1,fp);printf("%s.%sn",,filei.ext);char name9,ext14;printf(" 請(qǐng)輸入文件名 :n");gets(name); scanf("%s",name);getchar();printf(" 請(qǐng)輸入擴(kuò)展名 :");gets(ext1); scanf("%
44、s",ext1);getchar();if(*(name+0)='0')printf(" 文件名不能為空 ! n");return;if(*ext1='0')strcpy(ext1,"txt");int sign=0;for(i=0;i<num;i+)if(strcmp(,name)=0) && (strcmp(filei.ext,ext1)=0)printf("- 找到第 %d 個(gè)文件 (從 0 開始 )n",i);sign=1;break;if(s
45、ign=0) printf(" 無此文件 n");return;顯示文件int b,m,n ;b=filei.i;n=filei.size;printf("- 該文件位于第 %d( 從第 0 塊開始 ) 塊 n",b);printf("- 從文件讀出的文件長度為:%dn-",n);fseek(fp,b*512L,0);char cc;printf("- 文件內(nèi)容長度為 :%ldn",n);printf("- 文件內(nèi)容為 :-n");for( m=0,j=1; m<n; m+,j+)fsee
46、k(fp,b*512L+m,0);fread(&cc,sizeof(char),1,fp);cc=fgetc(fp);printf("%c",cc);if(j%80=0)printf("n");printf("n");fclose(fp);刪除一個(gè)文件void delfile()FILE *fp; int i;if(fp=fopen("filesys","r")=NULL)printf("can not open file n");exit(0); fseek(fp,
47、512L,0);fread(&emptytable,sizeof(struct empty),1,fp);rewind(fp);num=emptytable.filenum;for(i=0;i<num;i+)fread(&filei,sizeof(struct filename),1,fp);char name9,ext13;printf(" 請(qǐng)輸入文件名 :n");gets(name);scanf("%s",name);getchar();printf(" 請(qǐng)輸入擴(kuò)展名 :n");gets(ext1);scan
48、f("%s",ext1);getchar();if(*name='0') printf(" 文件名不能為空 ! n"); return; if(*ext1='0') strcpy(ext1,"txt");char judge;printf(" 是否刪除文件 %s.%s yn",name,ext1);scanf("%c",&judge); getchar(); if(judge='y')|(judge='Y') printf(
49、" 準(zhǔn)備刪除文件 %s.%s !n",name,ext1); else if(judge='n')|(judge='N') return;elseprintf(" 系統(tǒng)默認(rèn)放棄 !n");return;int sign=0;for(i=0;i<num;i+)if(strcmp(,name)=0)&&(strcmp(filei.ext,ext1)=0) sign=1;break;if(sign=0) printf(" 文件名錯(cuò) n");return;回收空間int
50、 b=filei.i;int Amount=filei.Amount;int j;for(j=0;j<Amount;j+)emptytable.mapb+=0;for( j=i;j<num-1;j+) strcpy(,filej+1.name);strcpy(filej.ext,filej+1.ext); filej.i=filej+1.i;filej.size=filej+1.size; filej.Amount=filej+1.Amount;emptytable.filenum=emptytable.filenum-1; num=emptytable.fil
51、enum;WriteFile();fclose(fp);復(fù)制一個(gè)文件void copy() FILE *fq; int i,j;if(fq=fopen("filesys","rb+")=NULL) printf("can not open file n");exit(0);fseek(fq,512l,0); fread(&emptytable,sizeof(struct empty),1,fq); rewind(fq);num=emptytable.filenum;for(i=0;i<num;i+) fread(&
52、;filei,sizeof(struct filename),1,fq);char SourceName9,DestName9,ext14,ext24;printf(" 請(qǐng)輸入源文件名 :");gets(SourceName);printf(" 請(qǐng)輸入源文件擴(kuò)展名 :");gets(ext1);printf(" 請(qǐng)輸入目標(biāo)文件名 :"); gets(DestName);printf(" 請(qǐng)輸入目標(biāo)擴(kuò)展文件名 ");gets(ext2);if(*ext2='0') strcmp(ext2,"
53、txt");scanf("%s",SourceName);getchar();scanf("%s",ext1);getchar();scanf("%s",DestName);getchar();scanf("%s",ext2);getchar();if(*SourceName)='0' | (*DestName)='0')cout<<" 錯(cuò)誤 ! 文件名不能為空 !n" return;if(strcmp(SourceName,DestName
54、)=0)cout<<" 錯(cuò)誤 ! 兩個(gè)文件名不能相等 !n" return;for(i=0;i<num;i+)if(strcmp(SourceName,)=0)strcpy(,DestName);strcpy(filenum.ext,ext2);filenum.i=filei.i;filenum.size=filei.size;filenum.Amount=filei.Amount;break;if (i<num)(i 從 0 開始 )n",i);printf(" 輸入的文件名與第 %d 個(gè)源文件相等elseprintf(" 不存在源文件 n");return;空間分配int sign=0;for(int m=2 ; m<=10-filenum.Amount ; m+)if(emptytable.mapm=0)尋找一連續(xù)的空閑盤塊for( j=filei.Amount; j>0; j-)if(emptytable.mapm+j-1=1)sign=1;break;if(sign=0) break; m+=j-1;sign=0;if (m <= 10-fi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度醫(yī)療設(shè)備租賃及售后服務(wù)合同
- 2025-2030年中國注塑元件行業(yè)深度研究分析報(bào)告
- 年產(chǎn)6000萬塊粉煤灰煤矸石燒結(jié)磚項(xiàng)目節(jié)能評(píng)估報(bào)告書
- 2024-2030年中國EDI超純水系統(tǒng)行業(yè)市場發(fā)展監(jiān)測及投資潛力預(yù)測報(bào)告
- 2025年新材料研發(fā)與產(chǎn)業(yè)化項(xiàng)目合同
- 2020-2025年中國口腔科用設(shè)備及器具制造市場供需格局及未來發(fā)展趨勢報(bào)告
- 2025年心功能自動(dòng)診斷儀行業(yè)深度研究分析報(bào)告
- 2024-2025年中國語音網(wǎng)關(guān)行業(yè)市場前景預(yù)測及投資戰(zhàn)略研究報(bào)告
- 河南省某空氣凈化器項(xiàng)目可行性研究報(bào)告
- 橋梁包工合同范本
- 個(gè)人經(jīng)營性貸款合同模板
- 人教版英語2025七年級(jí)下冊 Unit1Animal Friends教師版 語法講解+練習(xí)
- DeepSeek新手入門教程
- 課件:《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》學(xué)習(xí)宣講
- 2025年山東化工職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
- 2025年全國幼兒園教師資格證考試教育理論知識(shí)押題試題庫及答案(共九套)
- 2024年鄭州電力高等??茖W(xué)校高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 產(chǎn)品試產(chǎn)流程
- 舞臺(tái)機(jī)械基礎(chǔ)知識(shí)培訓(xùn)
- 人教版數(shù)學(xué)八年級(jí)下冊 第16章 二次根式 單元測試(含答案)
- 中學(xué)班主任培訓(xùn)內(nèi)容
評(píng)論
0/150
提交評(píng)論