

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課 程 設 計</b></p><p> 設計題目: 作業(yè)調度 </p><p><b> 課程設計任務書</b></p><p> 一、課程設計的原始資料及依據(jù)</p><p> 查閱有關計算機操作系統(tǒng)的教材、實驗指導書等
2、資料,進一步熟悉操作系統(tǒng)的基本原理,算法的設計思想。作業(yè)調度是批處理操作系統(tǒng)中的重要內容。本設計要求用高級語言編寫和調試一個簡單的作業(yè)調度程序。通過本設計可以加深理解有關作業(yè)控制塊、作業(yè)隊列的概念,并體會和了解先來先服務、短作業(yè)優(yōu)先和響應比高者優(yōu)先作業(yè)調度算法的具體實施辦法。加深理解有關作業(yè)控制塊、作業(yè)隊列的概念和狀態(tài)轉換。</p><p> 二、課程設計主要內容及要求</p><p>
3、 1.認真閱讀資料,掌握作業(yè)調度的原理和相關算法的思想。</p><p> 2.要求在設計的過程中,建立清晰的層次結構。</p><p> 3.畫出主要的功能結構圖和主要算法的流程圖。</p><p> 4.設計作業(yè)控制塊JCB表結構,分別適用于先來先服務、短作業(yè)優(yōu)先和響應比高者優(yōu)先調度算法。</p><p> JCB結構通常包括以
4、下信息:作業(yè)名,作業(yè)到達系統(tǒng)的時間,作業(yè)要求服務時間,作業(yè)的完成時間等。根據(jù)調度算法的不同,JCB結構的內容可以作適當?shù)脑鰟h。</p><p> 5.建立作業(yè)并送入后備隊列。對兩種不同算法編制入鏈子程序。</p><p> 6.分別顯示三種不同算法下,后備隊列中所有的作業(yè)排列情況。</p><p> 7.編制作業(yè)調度算法:先來先服務、短作業(yè)優(yōu)先和響應比高者優(yōu)先
5、調度算法。</p><p> 8.顯示根據(jù)不同調度算法形成的作業(yè)調度順序。</p><p> 9.運行程序,檢查結果是否和理論值一致。</p><p> 10.環(huán)境可以使用Windows,Turbo C環(huán)境或Linux。</p><p> 三、對課程設計說明書撰寫內容、格式、字數(shù)的要求</p><p> 1.
6、課程設計說明書是體現(xiàn)和總結課程設計成果的載體,主要內容包括:設計題目、設計目的、設備器材、設計原理及內容、設計步驟、遇到的問題及解決方法、設計總結、參考文獻等。一般不應少于3000字。</p><p> 2.在適當位置配合相應的實驗原理圖、功能模塊圖、算法流程圖等圖表進行說明。應做到文理通順,內容正確完整,書寫工整,裝訂整齊。</p><p> 3.設計總結部分主要寫本人完成工作簡介以
7、及自己的設計體會,包括通過課程設計學到了什么,哪里遇到了困難,解決的辦法以及今后的目標。</p><p> 4.課程設計說明書手寫或打印均可。手寫要用學校統(tǒng)一的課程設計用紙,用黑或藍黑墨水工整書寫;打印時采用A4紙,頁邊距均為20mm,正文采用宋體小四號字,行間距18磅。文中大標題采用黑體小三號字,一級節(jié)標題采用黑體四號字,二級節(jié)標題采用黑體小四號字,表題與圖題采用宋體五號字。</p><p
8、> 5.課程設計說明書裝訂順序為:封面、任務書、成績評定表、目錄、正文、參考文獻。</p><p> 四、設計完成后應提交成果的種類、數(shù)量、質量等方面的要求</p><p> 1.完成“任務書”中指定的功能,運行結果正確。</p><p> 2.課程設計說明書。</p><p><b> 五、時間進度安排</b
9、></p><p> 六、主要參考資料(文獻)</p><p> [1]鳳羽.操作系統(tǒng).北京:電子工業(yè)出版社,2004</p><p> [2]馬季蘭、馮秀芳等.操作系統(tǒng)原理與Linux. 北京:人民郵電出版社,2000 </p><p> [3]孟靜.操作系統(tǒng)原理教程.北京:清華大學出版社,2000</p>&l
10、t;p> [4]周蘇、金海溶. 操作系統(tǒng)原理實驗.北京: 科學出版社,2000</p><p><b> 摘要</b></p><p> 隨著社會科學技術的迅猛發(fā)展,計算機以它卓越的進步已經遍布各行各業(yè),其實計算機本身就是一堆廢鐵,而操作系統(tǒng)使它有了生命和靈魂,操作系統(tǒng)就相當于人的各個組織,如果沒有操作系統(tǒng)那計算機就像一個植物人一樣,毫無價值。</p
11、><p> 操作系統(tǒng)是配置在計算機上的第一層軟件,是對硬件系統(tǒng)的首次擴充。它在計算機系統(tǒng)中占據(jù)了特別重要的地位,很多系統(tǒng)軟件以及大量的應用軟件都依賴于操作系統(tǒng)的支持,取得它的服務。在計算機系統(tǒng)上所配置的操作系統(tǒng)的主要目標與計算機系統(tǒng)的規(guī)模和操作系統(tǒng)的應用環(huán)境有關,而操作系統(tǒng)在計算機系統(tǒng)中所起的作用也可以從不同的角度來觀察。操作系統(tǒng)已成為從大型機直至微型機都配置的軟件,在不同的操作系統(tǒng)中采用的調度方式是不同的,它不僅
12、是計算機與用戶之間的接口,也是計算機資源的管理者。</p><p> 當今的的計算機已經從無操作系統(tǒng)到單道批處理系統(tǒng)再發(fā)展到多道程序系統(tǒng)然后是分時系統(tǒng)和實時系統(tǒng)。在多道程序系統(tǒng)中,一個作業(yè)被提交后必須經過處理機調度后,方能獲得處理機執(zhí)行。作業(yè)是一個比程序更為廣泛的概念,它不僅包含了通常的程序和數(shù)據(jù),而且還應配有一分作業(yè)說明書,系統(tǒng)根據(jù)該說明書來對程序的運行進行控制。在批處理系統(tǒng)中,是以作業(yè)為基本單位從外存調入內
13、存的。對于批量型作業(yè)而言,通常要經歷作業(yè)調度和進程調度兩個過程方能獲得處理機。為了管理和調度作業(yè),在多道批處理系統(tǒng)中為每個作業(yè)設置了一個作業(yè)控制塊,即PCB(Job Control Block)每當作業(yè)進入系統(tǒng)是,系統(tǒng)便為每個作業(yè)創(chuàng)建一個PCB,根據(jù)作業(yè)類型將它插入相應的后備隊列中,作業(yè)調度程序根據(jù)一定的算法來調度它們,被調度到的作業(yè)將會裝入內存。作業(yè)調度的主要功能是根據(jù)作業(yè)控制塊中的信息,審查系統(tǒng)能否滿足用戶作業(yè)的資源需求,以及按照一
14、定的算法,從外存的后備隊列中選取某些作業(yè)調入內存,并為它們創(chuàng)建進程,分配必要的資源,然后,再將新創(chuàng)建的進程排在就緒隊列上,準備準備執(zhí)行。</p><p> 每次執(zhí)行作業(yè)調度時,都需要做以下兩個決定:</p><p> 1.接納多少個作業(yè),取決于多道程序度即允許多少個作業(yè)同時在內存中運行,多道程序度的確定是根據(jù)系統(tǒng)的規(guī)模和運行速度等情況做適當?shù)恼壑小?lt;/p><p&g
15、t; 2.接納哪些作業(yè),取決于采用的調度算法。作業(yè)調度的算法主要包括三種:先來先服務算法、短作業(yè)優(yōu)先調度算法和高響應比優(yōu)先調度算法。</p><p> 本系統(tǒng)采用結構體定義作業(yè)的數(shù)據(jù)類型,用數(shù)組接納各個作業(yè),通過把創(chuàng)建的JCB結構體組織成鏈,用不同算法循環(huán)測試處理的每個作業(yè),來確定各個作業(yè)接受系統(tǒng)服務的次序,從而輸出每個算法對作業(yè)處理結果,即平均周轉時間。從而確定哪種算法對于本次的作業(yè)調度是最佳的算法。<
16、;/p><p> 關鍵詞 操作系統(tǒng),作業(yè)調度,調度算法,優(yōu)先權,響應比,平均周轉時間,最佳算法</p><p><b> 目錄</b></p><p><b> 第1章 引言1</b></p><p><b> 1.1設計題目1</b></p><
17、p><b> 1.2設計目的1</b></p><p><b> 1.3設備器材1</b></p><p><b> 1.4任務分析1</b></p><p> 1.5 操作系統(tǒng)概述2</p><p> 1.5.1 發(fā)展歷史2</p>&
18、lt;p> 1.5.2 分類3</p><p> 1.6 系統(tǒng)開發(fā)技術5</p><p> 1.6.1 Visual C++概述5</p><p> 1.6.2 C++發(fā)展歷史簡單介紹6</p><p> 1.6.3 Visual C++的特點6</p><p> 1.6.4 C++語言發(fā)展
19、及設計原則7</p><p> 1.6.5 C++編程技巧8</p><p> 第2章 設計原理11</p><p> 2.1先來先服務調度算法11</p><p> 2.2短作業(yè)優(yōu)先調度算法11</p><p> 2.3高響應比優(yōu)先調度算法11</p><p> 第3章
20、 程序分析13</p><p> 3.1系統(tǒng)操作13</p><p> 3.2程序功能結構圖13</p><p> 3.3程序功能流程圖14</p><p> 3.3.1 創(chuàng)建作業(yè)流程圖14</p><p> 3.3.2 先來先服務調度算法流程圖14</p><p> 3
21、.3.3 短作業(yè)優(yōu)先調度算法流程圖15</p><p> 3.3.4 響應比優(yōu)先調度算法流程圖16</p><p> 3.3.5總結最優(yōu)調度算法流程圖16</p><p> 第4章 程序實現(xiàn)方法18</p><p> 4.1主函數(shù)程序實現(xiàn)18</p><p> 4.1.1主程序實現(xiàn)功能18<
22、/p><p> 4.1.2 主程序實現(xiàn)代碼18</p><p> 4.1.3 主程序運行界面19</p><p> 4.2 創(chuàng)建作業(yè)函數(shù)的實現(xiàn)20</p><p> 4.2.1 函數(shù)說明20</p><p> 4.2.2 創(chuàng)建函數(shù)實現(xiàn)代碼20</p><p> 4.2.3 創(chuàng)建
23、函數(shù)運行界面21</p><p> 4.3 先來先服務函數(shù)21</p><p> 4.3.1函數(shù)說明21</p><p> 4.3.2先來先服務代碼21</p><p> 4.3.3 程序運行界面23</p><p> 4.4短作業(yè)優(yōu)先函數(shù)24</p><p> 4.4.
24、1函數(shù)說明24</p><p> 4.4.2短作業(yè)優(yōu)先代碼24</p><p> 4.4.3程序運行界面26</p><p> 4.5 響應比高者優(yōu)先函數(shù)26</p><p> 4.5.1函數(shù)說明26</p><p> 4.5.2響應比高者優(yōu)先代碼26</p><p>
25、4.5.3響應比高者優(yōu)函數(shù)運行結果28</p><p> 4.6總結函數(shù)29</p><p> 4.6.1 函數(shù)說明29</p><p> 4.6.2 總結函數(shù)實現(xiàn)代碼29</p><p> 4.6.3 總結函數(shù)運行界面30</p><p> 第5章 遇到的問題及解決方法31</p>
26、<p> 5.1 遇到的問題31</p><p> 5.2 解決的方法31</p><p><b> 總結32</b></p><p><b> 致謝33</b></p><p><b> 參考文獻34</b></p><p&
27、gt;<b> 第1章 引言</b></p><p><b> 1.1設計題目</b></p><p><b> 作業(yè)管理</b></p><p><b> 1.2設計目的</b></p><p> 了解作業(yè)進入系統(tǒng)至運行完畢的總過程。</
28、p><p> 掌握并學會運用不同的調度算法。</p><p> 進一步了解作業(yè)調度中作業(yè)的創(chuàng)建過程與實現(xiàn)過程。</p><p> 學會并理解優(yōu)先權在高響應比優(yōu)先高度算法中的作用。</p><p><b> 1.3設備器材</b></p><p><b> 硬件:計算機一臺</
29、b></p><p> 軟件:Windows操作系統(tǒng),VC++環(huán)境或TC2.0環(huán)境</p><p><b> 1.4任務分析</b></p><p> 本次課程設計的題目為作業(yè)調度,其調度算法分別為先來先服務調度算法、短作業(yè)優(yōu)先調度算法、高響應比優(yōu)先調度算法。</p><p> 作業(yè)調度的主要功能是根據(jù)作業(yè)
30、控制塊中的信息,審查系統(tǒng)能否滿足用戶作業(yè)的資源需求,以及按照一定的算法,從外存的后備隊列中選取某些作業(yè)調入內存,并為它們創(chuàng)建進程、分配必要的資源。然后再將新創(chuàng)建的進程插入就緒隊列,準備執(zhí)行。每個系統(tǒng)在選擇作業(yè)調度算法時,既應考慮用戶的要求,又能確保系統(tǒng)具有較高的效率。在每次執(zhí)行作業(yè)調度時,都須做出兩個決定,一是決定接納多少個作業(yè);二是決定接納哪些作業(yè)。</p><p> 在OS中調度的實質是一種資源分配,因而調
31、度算法是指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。對于不同的系統(tǒng)和系統(tǒng)目標,通常采用不同的調度算法。</p><p> 先來先服務調度算法是一種最簡單的調度算法,每次調度都是從后備作業(yè)隊列中選擇一個或多個最先進入該隊列的作業(yè),將它們調入內存,為它們分配資源、創(chuàng)建進程,然后放入就緒隊列。</p><p> 短作業(yè)優(yōu)先調度算法是指對短作業(yè)優(yōu)先調度的算法。短作業(yè)優(yōu)先的調度算法是從后備隊
32、列中選擇一個或若干個估計運行時間最短的作業(yè),將它們調入內存運行。</p><p> 高響應比優(yōu)先調度算法,是指將就緒隊列中排序的優(yōu)先權最高的作業(yè)調入內存執(zhí)行。在高響應比調度算法中,優(yōu)先權的計算公式為:優(yōu)先權=(等待時間+要求服務時間)/要求服務時間,該算法既照顧了短作業(yè),又考慮了作業(yè)到達的先后次序,不會使長作業(yè)長期得不到服務。因此,該算法實現(xiàn)了一種較好的折衷。當然,在利用該算法時,每要進行調度之前,都須先做響應
33、比的計算,這會增加系統(tǒng)開銷。在執(zhí)行高響應比優(yōu)先調度算法時,每有一個作業(yè)調入內存運行后就需根據(jù)最后一次調入內存的業(yè)狀態(tài)計算就緒隊列中的其它作業(yè)的優(yōu)先權。</p><p> 在編寫程序時,調度算法前建立系統(tǒng)源文件擴展名為.txt,利用創(chuàng)建(輸入)函數(shù)creat()向源文件中輸入作業(yè)流,把作業(yè)的基本信息輸入到文件中,如:作業(yè)的名稱、作業(yè)的提交時間、作業(yè)的運行時間。作業(yè)初始排序為到達時間先后(即先來先服務調度排序作業(yè)流
34、)。采用高響應比優(yōu)先調度算法時,從就緒隊列中選出優(yōu)先權最高的作業(yè)調入內存執(zhí)行,系統(tǒng)自動將處理機分配給它,使它立即執(zhí)行并一直執(zhí)行到完成。該程序代碼中執(zhí)行的操作步驟主要為以二進制模式打開源文件,利用高響應比優(yōu)先調度算法在就緒隊列中選出當前優(yōu)先權最高的作業(yè)調度運行,通過程序中的計算方法求出并輸出該作業(yè)的開始時間、完成時間、周轉時間。</p><p> 1.5 操作系統(tǒng)概述</p><p>
35、操作系統(tǒng)(Operating System,簡稱OS)是配置在計算機硬件上的第一層軟件,是對硬件系統(tǒng)的首次擴充。它在計算機系統(tǒng)中占據(jù)了特別重要的地位;而其它的諸如匯編程序、編譯程序、數(shù)據(jù)庫管理系統(tǒng)等系統(tǒng)軟件,以及大量的應用軟件,都將依賴于操作系統(tǒng)的支持,取得它的服務。操作系統(tǒng)已成為現(xiàn)代計算機系統(tǒng)(大、中、小及微型機)、多處理機系統(tǒng)、計算機網絡、多媒體系統(tǒng)以及嵌入式系統(tǒng)中都必須配置的、最重要的系統(tǒng)軟件。它是計算機系統(tǒng)中各種資源的管理者和各
36、種活動的組織者、指揮者。</p><p> 操作系統(tǒng)是一個龐大的管理控制程序,大致包括5個方面的管理功能。進程與處理機管理、作業(yè)管理、存儲管理、設備管理、文件管理。目前微機上常見的操作系統(tǒng)有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。 </p><p> 操作系統(tǒng)是控制其他程序運行,管理系統(tǒng)資源并為用戶提供操作界面的系統(tǒng)軟件的集合。</p
37、><p> 操作系統(tǒng)身負諸如管理與配置內存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設備、操作網絡與管理文件系統(tǒng)等基本事務。</p><p> 操作系統(tǒng)是管理計算機系統(tǒng)的全部硬件資源包括軟件資源及數(shù)據(jù)資源;控制程序運行;改善人機界面;為其它應用軟件提供支持等,使計算機系統(tǒng)所有資源最大限度地發(fā)揮作用,為用戶提供方便的、有效的、友善的服務界面。</p><p> 所
38、有的操作系統(tǒng)具有并發(fā)性、共享性、虛擬性和不確定性四個基本特征。</p><p> 操作系統(tǒng)的型態(tài)非常多樣,不同機器安裝的OS可從簡單到復雜,可從手機的嵌入式系統(tǒng)到超級電腦的大型操作系統(tǒng)。</p><p> 許多操作系統(tǒng)制造者對OS的定義也不大一致,例如有些OS集成了圖形用戶界面,而有些OS僅使用文本接口,而將圖形界面視為一種非必要的應用程序。</p><p>
39、 操作系統(tǒng)理論在計算機科學中為歷史悠久而又活躍的分支,而操作系統(tǒng)的設計與實現(xiàn)則是軟件工業(yè)的基礎與內核。 </p><p> 1.5.1 發(fā)展歷史</p><p> OS的形成迄今已有50多年的時間。在上世紀50年代中期出現(xiàn)了單道批處理系統(tǒng);60年代中期產生了多道程序批處理系統(tǒng);不久又出現(xiàn)了基于多道程序的分時系統(tǒng),與此同時也誕生了用于工業(yè)控制和武器控制的實時操作系統(tǒng)。20世紀80年代開始
40、至21世紀初,是微型機、多處理機和計算機網絡高速發(fā)展的年代,同時也是微型機OS、多處理機OS和網絡OS以及分布式OS的形成和大發(fā)展的年代。</p><p> 綜觀電腦之歷史,操作系統(tǒng)與電腦硬件的發(fā)展息息相關。</p><p> 操作系統(tǒng)之本意原為提供簡單的工作排序能力,后為輔助更新更復雜的硬件設施而漸漸演化。</p><p> 從最早的批次模式開始,分時機制也
41、隨之出現(xiàn),在多處理器時代來臨時,操作系統(tǒng)也隨之添加多處理器協(xié)調功能,甚至是分布式系統(tǒng)的協(xié)調功能。其他方面的演變也類似于此。</p><p> 另一方面,在個人電腦上,個人電腦之操作系統(tǒng)因襲大型電腦的成長之路,在硬件越來越復雜、強大時,也逐步實踐以往只有大型電腦才有的功能。</p><p> 總而言之,操作系統(tǒng)的歷史就是一部解決電腦系統(tǒng)需求與問題的歷史。</p><p
42、> 第一代微型計算機并不像大型電腦或小型電腦,沒有裝設操作系統(tǒng)的需求或能力;它們只需要最基本的操作系統(tǒng),通常這種操作系統(tǒng)都是從ROM讀取的,此種程序被稱為監(jiān)視程序(Monitor)。</p><p> 1980年代,家用電腦開始普及。通常此時的電腦擁有8-bit處理器加上64KB內存、屏幕、鍵盤以及低音質喇叭。而80年代早期最著名的套裝電腦為使用微處理器6510(6502芯片特別版)的Commodore
43、 C64。此電腦沒有操作系統(tǒng),而是以一8KB只讀內存BIOS初始化彩色屏幕、鍵盤以及軟驅和打印機。它可用8KB只讀內存BASIC語言來直接操作BIOS,并依此撰寫程序,大部分是游戲。此BASIC語言的解釋器勉強可算是此電腦的操作系統(tǒng),當然就沒有內核或軟硬件保護機制了。此電腦上的游戲大多跳過BIOS層次,直接控制硬件。</p><p> Apple I電腦,蘋果電腦的第一代產品。延續(xù)80年代的競爭,1990年代出
44、現(xiàn)了許多影響未來個人電腦市場深厚的操作系統(tǒng)。由于圖形化使用者界面日趨繁復,操作系統(tǒng)的能力也越來越復雜與巨大,因此強韌且具有彈性的操作系統(tǒng)就成了迫切的需求。此年代是許多套裝類的個人電腦操作系統(tǒng)互相競爭的時代。</p><p> 在1990年代初,微軟與IBM的合作破裂,微軟從OS/2(早期為命令行模式,后來成為一個很成功但是曲高和寡的圖形化操作系統(tǒng))項目中抽身,并且在1993年7月27日推出Windows 3.1
45、,一個以OS/2為基礎的圖形化操作系統(tǒng)。</p><p> 直到這時,Windows系統(tǒng)依然是建立在MS-DOS的基礎上,因此消費者莫不期待微軟在2000年所推出的Windows 2000上,因為它才算是第一個脫離MS-DOS基礎的圖形化操作系統(tǒng)。</p><p> 現(xiàn)代操作系統(tǒng)通常都有一個使用的繪圖設備的圖形化使用者界面,并附加如鼠標或觸控面版等有別于鍵盤的輸入設備。舊的OS或效能導
46、向的服務器通常不會有如此親切的接口,而是以命令行接口(CLI)加上鍵盤為輸入設備。以上兩種接口其實都是所謂的殼,其功能為接受并處理使用者的指令(例如按下一按鈕,或在命令提示列上鍵入指令)。</p><p> 選擇要安裝的操作系統(tǒng)通常與其硬件架構有很大關系,只有Linux與BSD幾乎可在所有硬件架構上執(zhí)行,而Windows NT僅移植到了DEC Alpha與MIPS Magnum。</p><
47、p> 在1990年代早期,個人電腦的選擇就已被局限在Windows家族、類Unix家族以及Linux上,而以Linux及Mac OS X為最主要的另類選擇,直至今日。</p><p> 大型機與嵌入式系統(tǒng)使用很多樣化的操作系統(tǒng)。大型主機近期有許多開始支持Java及Linux以便共享其他平臺的資源。嵌入式系統(tǒng)近期百家爭鳴,從給Sensor Networks用的Berkeley Tiny OS到可以操作Mi
48、crosoft Office的Windows CE都有。</p><p><b> 1.5.2分類</b></p><p> 目前的操作系統(tǒng)種類繁多,很難用單一標準統(tǒng)一分類。</p><p> 根據(jù)應用領域來劃分,可分為桌面操作系統(tǒng)、服務器操作系統(tǒng)、主機操作系統(tǒng)、嵌入式操作系統(tǒng)。</p><p> 根據(jù)所支持的用
49、戶數(shù)目,可分為單用戶(MSDOS、OS/2)、多用戶系統(tǒng)(UNIX、MVS、Windows)。</p><p> 根據(jù)源碼開放程度,可分為開源操作系統(tǒng)(Linux、Chrome OS)和不開源操作系統(tǒng)(Windows、Mac OS)。</p><p> 根據(jù)硬件結構,可分為網絡操作系統(tǒng)(Netware、Windows NT、OS/2 warp)、分布式系統(tǒng)(Amoeba)、多媒體系統(tǒng)(
50、Amiga)。</p><p> 根據(jù)操作系統(tǒng)的使用環(huán)境和對作業(yè)處理方式來考慮,可分為批處理系統(tǒng)(MVX、DOS/VSE)、分時系統(tǒng)(Linux、UNIX、XENIX、Mac OS)、實時系統(tǒng)(iEMX、VRTX、RTOS,RT WINDOWS)。</p><p> 根據(jù)操作系統(tǒng)的技術復雜程度,可分為簡單操作系統(tǒng)、智能操作系統(tǒng)(見智能軟件)。所謂的簡單操作系統(tǒng),指的是計算機初期所配置的
51、操作系統(tǒng),如IBM公司的磁盤操作系統(tǒng)DOS/360和微型計算機的操作系統(tǒng)CP/M等。這類操作系統(tǒng)的功能主要是操作命令的執(zhí)行,文件服務,支持高級程序設計語言編譯程序和控制外部設備等。</p><p> 下面介紹一下操作系統(tǒng)的五大類型:批處理操作系統(tǒng)、分時操作系統(tǒng)、實時操作系統(tǒng)、網絡操作系統(tǒng)、分布式操作系統(tǒng)。 </p><p> 1. 批處理操作系統(tǒng) </p><p&g
52、t; 批處理(Batch Processing)操作系統(tǒng)的工作方式是:用戶將作業(yè)交給系統(tǒng)操作員,系統(tǒng)操作員將許多用戶的作業(yè)組成一批作業(yè),之后輸入到計算機中,在系統(tǒng)中形成一個自動轉接的連續(xù)的作業(yè)流,然后啟動操作系統(tǒng),系統(tǒng)自動、依次執(zhí)行每個作業(yè)。最后由操作員將作業(yè)結果交給用戶。 </p><p><b> 單道批處理系統(tǒng)</b></p><p> 上世紀50年代中期
53、發(fā)明了晶體管,人們開始用晶體管代替真空管來制作計算機,為了充分的利用它應盡量讓該系統(tǒng)連續(xù)運行,以減少空閑時間,這樣就出現(xiàn)了早期的單道批處理系統(tǒng)。單道批處理系統(tǒng)是最早出現(xiàn)一種OS。嚴格的說,它只能算作是OS的前身而并非是現(xiàn)在人們所理解的OS。通常把一批作業(yè)以脫機方式輸入到磁帶上,并在系統(tǒng)中配上監(jiān)督程序(Monitor),在它的控制下使這批作業(yè)能一個接一個地連續(xù)處理。由于系統(tǒng)對作業(yè)的處理都是成批地進行的,且在內存上始終只保持一道作業(yè),故稱此
54、系統(tǒng)為單道批處理系統(tǒng)。</p><p><b> 多道批處理系統(tǒng)</b></p><p> 20世紀60年代中期,人們開始利用小規(guī)模集成電路來制作計算機,生產出第三代計算機。有IBM公司生產的第一臺小規(guī)模集成電路計算機——360機,較之于晶體管計算機無論在體積功耗速度和可靠性上,都有了顯著的改善。雖然在開發(fā)360機器使用的操作系統(tǒng)時,未能在機器上運行多道程序而遇到
55、了極大的困難,但最終還是成功的開發(fā)出能在一臺機器中運行多道程序的操作系統(tǒng)OS/360。</p><p> 多道程序設計標志著操作系統(tǒng)的形成。在多道批處理系統(tǒng)中,用戶所提交的作業(yè)都先放在外存上并排成一個隊列,成為“后備隊列”;然后,有作業(yè)調度程序按一定的算法從后備隊列中選擇若干個作業(yè)調入內存,使它們共享CPU和系統(tǒng)中的各種資源。</p><p><b> 2.分時操作系統(tǒng) &l
56、t;/b></p><p> 第一臺真正的分時操作系統(tǒng)(CTSS)是有麻省理工學院開發(fā)成功的。</p><p> 分時系統(tǒng)是指,在一臺主機上連接多個帶有顯示器和鍵盤的終端,同時允許多個用戶通過自己的終端,以交互方式使用計算機,共享主機中資源。用戶交互式地向系統(tǒng)提出命令請求,系統(tǒng)接受每個用戶的命令,采用時間片輪轉方式處理服務請求,并通過交互方式在終端上向用戶顯示結果。用戶根據(jù)上步結
57、果發(fā)出下道命。分時操作系統(tǒng)將CPU的時間劃分成若干個片段,稱為時間片。操作系統(tǒng)以時間片為單位,輪流為每個終端用戶服務。每個用戶輪流使用一個時間片而使每個用戶并不感到有別的用戶存在。分時系統(tǒng)具有多路性、交互性、“獨占”性和及時性的特征。它支持位于不同終端的多個用戶同時使用一臺計算機,彼此獨立互不干擾,用戶感到好像一臺計算機全為他所用。</p><p> 分時系統(tǒng)與多道批處理系統(tǒng)之間有截然不同的性能差別,它能很好地
58、將一臺計算機提供多個用戶同時使用,提高計算機的利用率。常見的通用操作系統(tǒng)是分時系統(tǒng)與批處理系統(tǒng)的結合。其原則是:分時優(yōu)先,批處理在后。“臺”響應需頻繁交互的作業(yè),如終端的要求;“后臺”處理時間性要求不強的作業(yè)。</p><p><b> 3.實時操作系統(tǒng) </b></p><p> 實時操作系統(tǒng)(RealTimeOperatingSystem,RTOS)是指系統(tǒng)功
59、能及時(或即時)響應外部事件的請求,在規(guī)定的時間內完成對該事件的處理,并控制所有實時任務協(xié)調一致地運行。實時操作系統(tǒng)要追求的目標是:對外部請求在嚴格時間范圍內做出反應,有高可靠性和完整性。其主要特點是資源的分配和調度首先要考慮實時性然后才是效率。此外,實時操作系統(tǒng)應有較強的容錯能力。</p><p><b> 4.網絡操作系統(tǒng) </b></p><p> 網絡操作
60、系統(tǒng)是基于計算機網絡的,是在各種計算機操作系統(tǒng)上按網絡體系結構協(xié)議標準開發(fā)的軟件,包括網絡管理、通信、安全、資源共享和各種網絡應用。其目標是相互通信及資源共享。在其支持下,網絡中的各臺計算機能互相通信和共享資源。其主要特點是與網絡的硬件相結合來完成網絡的通信任務。</p><p> 5.分布式操作系統(tǒng) </p><p> 它是為分布計算系統(tǒng)配置的操作系統(tǒng)。大量的計算機通過網絡被連結在一
61、起,可以獲得極高的運算能力及廣泛的數(shù)據(jù)共享。這種系統(tǒng)被稱作分布式系統(tǒng)(DistributedSystem)。它在資源管理,通信控制和操作系統(tǒng)的結構等方面都與其他操作系統(tǒng)有較大的區(qū)別。由于分布計算機系統(tǒng)的資源分布于系統(tǒng)的不同計算機上,操作系統(tǒng)對用戶的資源需求不能像一般的操作系統(tǒng)那樣等待有資源時直接分配的簡單做法而是要在系統(tǒng)的各臺計算機上搜索,找到所需資源后才可進行分配。對于有些資源,如具有多個副本的文件,還必須考慮一致性。所謂一致性是指若
62、干個用戶對同一個文件所同時讀出的數(shù)據(jù)是一致的。為了保證一致性,操作系統(tǒng)須控制文件的讀、寫、操作,使得多個用戶可同時讀一個文件,而任一時刻最多只能有一個用戶在修改文件。分布操作系統(tǒng)的通信功能類似于網絡操作系統(tǒng)。由于分布計算機系統(tǒng)不像網絡分布得很廣,同時分布操作系統(tǒng)還要支持并行處理,因此它提供的通信機制和網絡操作系統(tǒng)提供的有所不同,它要求通信速度高。分布操作系統(tǒng)的結構也不同于其他操作系統(tǒng),它分布于系統(tǒng)的各臺計算機上,能并行地處理用戶的各種需
63、求,有較強的容錯能力。</p><p> 1.6 系統(tǒng)開發(fā)技術</p><p> 1.6.1 Visual C++概述</p><p> 在這次課程設計中,我們采用的是Visual C++環(huán)境。</p><p> 它是一種使用非常廣泛的計算機編程語言。C++是一種靜態(tài)數(shù)據(jù)類型檢查的,支持多重編程范式的通用程序設計語言。它支持過程化程序
64、設計、數(shù)據(jù)抽象、面向對象程序設計、制作圖標等等泛型程序設計等多種程序設計風格。</p><p> Visual C++是Microsoft公司于1993年推出的一個可視化集成開發(fā)環(huán)境(integrated development,IDE)。自1998年Microsoft公司推出功能完善的Visual C++6.0后,越來越多的程序員選用Visual C++作為軟件開發(fā)工具。使用Visual C++6.0后,越來
65、越多的程序員選用Visual C++6.0 集成開發(fā)環(huán)境,Visual C++6.0集成開發(fā)環(huán)境由很多工具和向導組成,要真正掌握它們的使用方法必須結合具體的編程內容。</p><p> Visual C++是一個功能強大的可視化軟件開發(fā)工具,它不僅是一個C++編譯器,還是一個基于Windows操作系統(tǒng)的集成開發(fā)環(huán)境。Visual C++由許多組件組成,包括編輯器、編譯器、調試器以及程序向導AppWizard、類
66、向導ClassWizard等。</p><p> 1.6.2 C++發(fā)展歷史簡單介紹 </p><p> C語言之所以要起名為“C”,是因為它是主要參考那個時候的一門叫B的語言,它的設計者認為C語言是B語言的進步,所以就起名為C語言;但是B語言并不是因為之前還有個A語言,而是B語言的作者為了紀念他的妻子,他的妻子名字的第一個字母是B;當C語言發(fā)展到頂峰的時刻,出現(xiàn)了一個版本叫C wit
67、h Class,那就是C++最早的版本,在C語言中增加class關鍵字和類,那個時候有很多版本的C都希望在C語言中增加類的概念;后來C標準委員會決定為這個版本的C起個新的名字,那個時候征集了很多種名字,最后采納了其中一個人的意見,以C語言中的++運算符來體現(xiàn)它是C語言的進步,所以就叫C++,也成立了C++標準委員會。</p><p> 美國AT&T貝爾實驗室的本賈尼·斯特勞斯特盧普(Bjarn
68、e Stroustrup)博士在20世紀80年代初期發(fā)明并實現(xiàn)了C++(最初這種語言被稱作“C with Classes”)。一開始C++是作為C語言的增強版出現(xiàn)的,從給C語言增加類開始,不斷的增加新特性。虛函數(shù)(virtual function)、運算符重載(operator overloading)、多重繼承(multiple inheritance)、模板(template)、異常(exception)、RTTI、命名空間(nam
69、e space)逐漸被加入標準。1998年國際標準組織(ISO)頒布了C++程序設計語言的國際標準ISO/IEC 1488-1998。C++是具有國際標準的編程語言,通常稱作ANSI/ISO C++。1998年是C++標準委員會成立的第一年,以后每5年視實際需要更新一次標準,下一次標準更新將是在2009年,目前我們一般稱該標準C++0x。遺憾的是,由于C++語言過于復雜,以及他經歷了長年的演變,直到現(xiàn)在(2009年)只有Visual C
70、++ 2010 CTP開發(fā)環(huán)境的編譯器完全符合這個標準。</p><p> 另外,就目前學習C++而言,可以認為他是一門獨立的語言;他并不依賴C語言,我們可以完全不學C語言,而直接學習C++。根據(jù)《C++編程思想》(Thinking in C++)一書所評述的,C++與C的效率往往相差在正負5%之間。所以有人認為在大多數(shù)場合C++ 完全可以取代C語言(然而我們在單片機等需要謹慎利用空間、直接操作硬件的地方還是要
71、使用C語言)。 </p><p> 1.6.3 Visual C++的特點 </p><p> Visual C++中源程序采用C/C++語言編寫,它支持面向對象程序設計,并能夠使用功能強大的微軟基礎類庫MFC(Microsoft foundation class),充分體現(xiàn)了Microsoft公司的技術精華。由于Windows操作系統(tǒng)的市場壟斷地位,利用Visual C++開發(fā)出來的
72、軟件具有穩(wěn)定性好、可移植性強的特點。</p><p> 利用Visual C++可以編制各種類型的Windows應用程序,從簡單的單文檔、多文檔和對話框程序到復雜的組合界面程序。并且,Visual C++作為Visual Studio可視化家族中最重要的一個成員,它與其他可視化開發(fā)工具如Visual J++、Visual Basic及Visual C#緊密集成,可進行不同類型以及綜合軟件項目的開發(fā),適用于開發(fā)非
73、常專業(yè)的Windows、Web和企業(yè)級應用程序。</p><p> Visual C++6.0源代碼編輯器功能強大,使用非常方便。它提供了語句自動完成功能,編輯輸入源程序時能自動顯示當前對象的成員變量和成員函數(shù),并表明函數(shù)的參數(shù)類型。Visual C++6.0的編譯器增加了新的編譯參數(shù),改進了對ANSI C++標準的支持,并采用Microsoft的代碼優(yōu)化技術,使生成的目標代碼更精練,程序運行的速度更快。比較其
74、他程序調試工具,Visual C++6.0程序調試器Debug功能更強大,它提供了診斷映射機制、無須重編譯的調試、遠程調試和實時調試等功能。</p><p> Visual C++6.0的聯(lián)機幫助系統(tǒng)MSDN Library(Microsoft developer network library)可以稱得上是一本內容非常豐富的電子參考書。它既能與集成開發(fā)環(huán)境有機地結合在一起,使程序員在編程進可以隨時查詢需要的幫
75、助信息和技術文檔,又能脫離集成開發(fā)環(huán)境而獨立地運行,并且用戶還可以通過因特網獲取實時的幫助信息和實例。</p><p> Visual C++6.0通過Visual Studio還為用戶提供了很多實用工具,如Spy++查看器、ActiveX Control Test Container控件測試窗口及Register Control控件注冊程序等,擴展了Visual C++的功能,有利于專業(yè)程序的開發(fā)。</
76、p><p> 除了Visual C++,其他一些知名公司也推出了自己的C++集成開發(fā)環(huán)境,如Borland的C++ Bulider和IBM的VisualAge C++。迄今為止,Visual C++可以說是一個功能最強大和使用范圍最廣泛的軟件開發(fā)工具。當然,由于Windows編程的困難和MFC類庫功能的龐大,加上應用程序向導生成的程序框架的復雜,使得學習Visual C++比學習其他軟件開發(fā)工具更困難。但當熟練掌握
77、Visual C++編程方法后,就會感受到作為Visual C++程序員的無比優(yōu)越性。</p><p> 1.6.4 C++語言發(fā)展及設計原則 </p><p> 1. C++語言發(fā)展</p><p> C++語言發(fā)展大概可以分為三個階段:</p><p> 第一階段從80年代到1995年。這一階段C++語言基本上是傳統(tǒng)類型上的面向對
78、象語言,并且憑借著接近C語言的效率,在工業(yè)界使用的開發(fā)語言中占據(jù)了相當大份額;</p><p> 第二階段從1995年到2000年,這一階段由于標準模板庫(STL)和后來的Boost等程序庫的出現(xiàn),泛型程序設計在C++中占據(jù)了越來越多的比重性。當然,同時由于Java、C#等語言的出現(xiàn)和硬件價格的大規(guī)模下降,C++受到了一定的沖擊;</p><p> 第三階段從2000年至今,由于以Lo
79、ki、MPL等程序庫為代表的產生式編程和模板元編程的出現(xiàn),C++出現(xiàn)了發(fā)展歷史上又一個新的高峰,這些新技術的出現(xiàn)以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最復雜的一員。 </p><p> 2. C++設計原則</p><p> ?、?C++設計成靜態(tài)類型、和C同樣高效且可移植的多用途程序設計語言。 </p><p> ?、?C++設計成直接的和
80、廣泛的支援多種程序設計風格(程序化程序設計、資料抽象化、面向對象程序設計、泛型程序設計)。 </p><p> ?、?C++設計成給程序設計者更多的選擇,即使可能導致程序設計者選擇錯誤。 </p><p> ⑷ C++設計成盡可能與C兼容,籍此提供一個從C到C++的平滑過渡。 </p><p> ?、?C++避免平臺限定或沒有普遍用途的特性。 </p>
81、<p> ?、?C++不使用會帶來額外開銷的特性。 </p><p> ?、?C++設計成無需復雜的程序設計環(huán)境。</p><p> 出于保證語言的簡潔和運行高效等方面的考慮,C++的很多特性都是以庫而沒有直接添加到語言本身里。關于此類話題,C++之父的《C++語言的設計和演化》 里做了詳盡的陳述。</p><p> 1.6.5 C++編程技巧&l
82、t;/p><p> 1. 使用new和delete進行動態(tài)內存分配和釋放 </p><p> 運算符new和delete是C++新增的運算符,提供了存儲的動態(tài)分配和釋放功能。它的作用相當于C語言的函數(shù)malloc()和free(),但是性能更為優(yōu)越。使用new較之使用malloc()有以下的幾個優(yōu)點: </p><p> ?、?new自動計算要分配類型的大小,不使用
83、sizeof運算符,比較省事,可以避免錯誤。 </p><p> ⑵ 自動地返回正確的指針類型,不用進行強制指針類型轉換。 </p><p> ⑶ 可以用new對分配的對象進行初始化。 </p><p> 2. 使用inline內聯(lián)函數(shù)替代宏調用 </p><p> 對于頻繁使用的函數(shù),C語言建議使用宏調用代替函數(shù)調用以加快代碼執(zhí)行,
84、減少調用開銷。但是宏調用有許多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)((a)<0?(-a):(a)), 當使用abs(i++)時,這個宏就會出錯。 </p><p> 所以在C++中應該使用inline內聯(lián)函數(shù)替代宏調用,這樣既可達到宏調用的目的,又避免了宏調用的弊端。 </p><p> 使用內聯(lián)函數(shù)只須把inline關鍵字放在函數(shù)返回類型的前面。
85、例如: </p><p> inline int Add(int a,int b);//聲明Add()為內聯(lián)函數(shù) </p><p> 這樣編譯器在遇到Add()函數(shù)時,就不再進行函數(shù)調用,而是直接嵌入函數(shù)代碼以加快程序的執(zhí)行。 </p><p> 3. 使用函數(shù)重載 </p><p> 在C語言中,兩個函數(shù)的名稱不能相同,否則會導致編
86、譯錯誤。而在C++中,函數(shù)名相同而參數(shù)數(shù)據(jù)類型不同的兩個函數(shù)被解釋為重載。例如: </p><p> void PutHz(char* str);//在當前位置輸出漢字 </p><p> void PutHz(int x,int y,char * str);//在x,y處輸入數(shù)字 </p><p> 使用函數(shù)重載可以幫助程序員處理更多的復雜問題,避免了使用諸
87、如intabs()、fabs()、dabs()等繁雜的函數(shù)名稱;同時在大型程序中,使函數(shù)名易于管理和使用,而不必絞盡腦汁地去處理函數(shù)名。同時必須注意,參數(shù)數(shù)據(jù)類型相同,但是函數(shù)返回類型不同的兩個函數(shù)不能重載。</p><p> 4. 使用引用(reference)代替指針進行參數(shù)傳遞 </p><p> 在C語言中,如果一個函數(shù)需要修改用作參數(shù)的變量值的時候 ,參數(shù)應該聲明為指針類型。
88、例如: </p><p> void Add(int *a)</p><p><b> {</b></p><p><b> (*a)++;</b></p><p><b> }</b></p><p><b> 調用時則使用 <
89、;/b></p><p> Add(&x);//其中x為int或可以轉化為int的類型,如unsigned int, 但這時候編譯器通過回給出warning。</p><p> 對于復雜的程序,使用指針容易出錯,程序也難以讀懂。在C++中,對于上述情況 可以使用引用來代替指針,使程序更加清晰易懂。引用就是對變量取的一個別名,對引用進行操作,這就相當于對原有變量進行操作。例
90、如使用引用的函數(shù)定義為: </p><p> void Add(int& a)</p><p><b> {</b></p><p> a++; //a為一個整數(shù)的引用 </p><p><b> }</b></p><p><b> 調用時使用
91、</b></p><p> Add(x);//其中x為int</p><p> 這個函數(shù)與使用指針的上一個函數(shù)的功能是一樣的,然而代碼卻更為簡潔和清晰易懂。 </p><p> 5. 使用缺省參數(shù) </p><p> 在C++中函數(shù)可以使用缺省參數(shù),例如: </p><p> void PutHz
92、xy(char *str,int x=-1, int y=-1)</p><p><b> {</b></p><p><b> if(x==-1)</b></p><p> x=wherex();</p><p><b> if(y==-1)</b></p>
93、;<p> x=wherex();</p><p> moveto(x,y);</p><p> PutHx(str);</p><p><b> }</b></p><p> 可以有三種方式調用函數(shù)PutHzxy(),例如: </p><p> PutHzxy(&quo
94、t;C++語言");//使用缺省參數(shù)在當前位置輸出 </p><p> PutHzxy("C++語言",10,10);//沒有使用缺省參數(shù) </p><p> PutHzxy("C++語言",10);//對y使用缺省參數(shù),指定x的位置</p><p> 通常的情況下,一個函數(shù)應該具有盡可能大的靈活性。使用缺省
95、參數(shù)為程序員處理更大的復雜性和靈活性問題提供了有效的方法,所以在C++的代碼中都大量地使用了缺省參數(shù)。 </p><p> 需要說明的是,所有的缺省參數(shù)必須出現(xiàn)在不缺省參數(shù)的右邊。亦即,一旦開始定義缺省參數(shù),就不可再說明非缺省的參數(shù)。 </p><p><b> 例如: </b></p><p> void PutHzxy(char*st
96、r,int x=-1,int y=-1)//正確 </p><p> void PutHzxy(int x=-1,int y=-1,char*str)//錯誤 </p><p><b> 6. 使用STL </b></p><p> STL(Standard Template Library,標準模板庫),STL的代碼從廣義上講分為三類:
97、algorithm(算法)、container(容器)和iterator(迭代器),并包括一些工具類如auto_ptr。幾乎所有的代碼都采用了模板類和模版函數(shù)的方式,這相比于傳統(tǒng)的由函數(shù)和類組成的庫來說提供了更好的代碼重用機會。</p><p> #include<vector>// 包含相關的頭文件/</p><p> typedef std::vector<int
98、> intvector;//使用typedef 使代碼看起來更簡潔</p><p> int main()</p><p><b> {</b></p><p> intvector vi;</p><p> for(int i=0;i<10,i++)</p><p> vi
99、.push_back(i);//使用push_back添加元素</p><p> for(int i=0;i<vi.size();i++)</p><p> std::cout<<vi[i]<<" ";//[]操作符被重載,使得我們可以像訪問數(shù)組一樣訪問vector中的元素 } </p><p><b>
100、; 第2章 設計原理</b></p><p> 用戶使用操作系統(tǒng)的主要目的是作業(yè)處理。一個作業(yè)進入系統(tǒng)到運行結束,一般需經歷收容、運行、完成三個階段,與這三個階段對應的作業(yè)處于后備、運行和完成三種狀態(tài)。作業(yè)調度的主要功能是按照某種原則從后備作業(yè)隊列中選取作業(yè)進入主存,并為作業(yè)做好運行前的準備工作和作業(yè)完成后的善后處理工作。常用的作業(yè)調度算法有:先來先服務、短作業(yè)優(yōu)先、響應比高者優(yōu)先、優(yōu)先數(shù)優(yōu)先等調
101、度算法。衡量作業(yè)調度算法性能的主要指標有:作業(yè)的周轉時間、作業(yè)的平均周轉時間和平均帶權周轉時間。</p><p> 2.1先來先服務調度算法</p><p> 先來先服務(FCFS)調度算法是一種最簡單的調度算法。當在作業(yè)調度中采取該算法時,每次調度都是從后備作業(yè)隊列中選擇一個或多個最先進入該隊列的作業(yè),將它們調入內存,為它們分配資源、創(chuàng)建進程,然后放入就緒對列。</p>
102、<p> 當程序運行選擇些算法時,我們可以輸入要打開的文件名,從打開的文件中按照作業(yè)依次寫入文件的順序把已寫入文件的作業(yè)流信息調入到內存中,采用FCFS算法分別求出其每個作業(yè)的開始時間、完成時間、周轉時間。FCFS算法比較有利于長作業(yè),而不利于短作業(yè)。最后求出平均周轉時間。</p><p> 最簡單的調度原則是先進先出就緒隊列完成。根據(jù)作業(yè)到達就緒隊列的時間來分配中央處理機,一旦一個作業(yè)獲得了中央
103、處理機,就一直運行到結束,先來先服務是非剝奪調度。這種調度從形式上講是公平的,但它使短作業(yè)要等待長作業(yè)的完成,重要的作業(yè)要等待不重要作業(yè)的完成。從這個意義上講又是不公平的。先進先出調度使響應時間的變化較小,因此它比其它大多數(shù)調度都可預測。由于這種調度方法不能保證良好的響應時間,在處理交互式用戶時很少用這種方法。在當今系統(tǒng)中,先進先出很少作為調度模式,而是常常嵌套在其它的調度模式中。 </p><p> 2.2短
104、作業(yè)優(yōu)先調度算法</p><p> 短作業(yè)優(yōu)先調度算法SJF,是指對短作業(yè)或短進程優(yōu)先調度的算法。短作業(yè)(SJF)的調度算法可以照顧到實際上在所有作業(yè)中占很大比例的短作業(yè),使它們能比長作業(yè)優(yōu)先執(zhí)行。當程序運行選擇些算法時,我們可以輸入要打開的文件名,從打開的文件中按照作業(yè)依次寫入文件的順序把已寫入文件的作業(yè)流信息調入到內存中,然后按照作業(yè)的運行時間將其從小到大依次利用鏈表鏈接起來,按照鏈表鏈接的順序依次運行短作
105、業(yè),并求出其每個作業(yè)的開始時間、完成時間、周轉時間。最后求出平均周轉時間。</p><p> 2.3高響應比優(yōu)先調度算法</p><p> 高響應比優(yōu)先調度算法XYB,是通過計算出作業(yè)的優(yōu)先權,比較哪個作業(yè)的優(yōu)先權最大就采用本調度算法運行哪個作業(yè),優(yōu)先權的計算工公式為:優(yōu)先權=(等待時間+要求服務時間)/要求服務時間。當程序運行選擇些算法時,我們可以輸入要打開的文件名,從打開的文件中按
106、照作業(yè)依次寫入文件的順序把已寫入文件的作業(yè)流信息調入到內存中,然后利用循環(huán)依次求出每個作業(yè)的優(yōu)先權,依次把優(yōu)先權最大的作業(yè)采用鏈表鏈接起來,按照鏈表鏈接的順序依次運行高響應比作業(yè),并求出其每個作業(yè)的開始時間、完成時間、周轉時間。最后求出平均周轉時間。由于等待時間與服務時間之和就是系統(tǒng)對該作業(yè)的響應時間,故該優(yōu)先權又相當于響應比Rp。據(jù)此,又可表示為: Rp=(等待時間+要求服務時間)/要求服務時間=響應時間/要求服務時間。</p&
107、gt;<p> 通過優(yōu)先權計算公式可以看出:如果作業(yè)等待時間相同,則要求運行的時間愈短,因而算法有利于短作業(yè);當要求運行的時間相同時,作業(yè)的優(yōu)先權決定于其等待時間,因而是實現(xiàn)了先來先服務;對于長作業(yè),當其等待時間足夠長時,其優(yōu)先權便可升到很高,從而也右獲得處理機。所以,該算法既照顧了短作業(yè),又考慮了作業(yè)到達的先后次序,也不會使長作業(yè)長期得不到服務。因此,該算法彌補了前兩種算法的不足之處,但在利用該算法進行調度作業(yè)時,第個
108、作業(yè)的響應比的計算也是很復雜的。</p><p> 響應比R定義如下: R =(W+T)/T = 1+W/T。其中T為該作業(yè)估計需要的執(zhí)行時間,W為作業(yè)在后備狀態(tài)隊列中的等待時間。每當要進行作業(yè)調度時,系統(tǒng)計算每個作業(yè)的響應比,選擇其中R最大者投入執(zhí)行。這樣,即使是長作業(yè),隨著它等待時間的增加,W / T也就隨著增加,也就有機會獲得調度執(zhí)行。這種算法是介于FCFS和SJF之間的一種折中算法。由于長作業(yè)也有機會投
109、入運行,在同一時間內處理的作業(yè)數(shù)顯然要少于SJF法,從而采用HRN方式時其吞吐量將小于采用SJF 法時的吞吐量。另外,由于每次調度前要計算響應比,系統(tǒng)開銷也要相應增加。</p><p><b> 第3章 程序分析</b></p><p> 當程序運行時輸出主界面,在主界面中提供了調用FCFS先來先服務優(yōu)先調度算法、SJF短作業(yè)優(yōu)先調度算法、XYB高響應比優(yōu)先調度算
110、法、創(chuàng)建文件(輸入數(shù)據(jù)并寫入文件中)、判斷最佳算法、退出此程序。</p><p><b> 3.1系統(tǒng)操作</b></p><p> 第一種操作:先來先服務調度算法,程序運行時輸入要進行調度的作業(yè)文件名,之后用先來先服務調度算法調度作業(yè)。</p><p> 第二種操作:短作業(yè)優(yōu)先調度算法,程序運行時輸入要進行調度的作業(yè)文件名,之后用短作業(yè)
111、優(yōu)先調度算法調度作業(yè)。</p><p> 第三種操作:高響應比優(yōu)先調度算法,程序運行時輸入要進行調度的作業(yè)文件名,之后用高響應比優(yōu)先調度算法調度作業(yè)。</p><p> 第四種操作:創(chuàng)建文件,可輸入一批作業(yè)的數(shù)據(jù),并且把數(shù)據(jù)保存在文本文件以免數(shù)據(jù)丟失。以后每次調度算法時,可直接運用此文件中的數(shù)據(jù)信息。</p><p> 第五種操作:判斷最佳算法,調度完三種調度
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設計---作業(yè)調度模擬
- 短作業(yè)優(yōu)先的作業(yè)調度-操作系統(tǒng)課程設計
- 操作系統(tǒng)進程調度課程設計
- 操作系統(tǒng)進程調度課程設計
- 操作系統(tǒng)課程設計——操作系統(tǒng)課程設計模擬操作系統(tǒng)
- 操作系統(tǒng)課程設計---磁盤調度報告
- 進程調度算法 操作系統(tǒng)課程設計
- 操作系統(tǒng)課程設計報告--驅動調度
- 操作系統(tǒng)程序調度課程設計報告
- 操作系統(tǒng)進程調度課程設計報告
- 操作系統(tǒng)課程設計--進程調度算法
- 操作系統(tǒng)課程設計-進程調度模擬
- 操作系統(tǒng)課程設計---磁盤調度算法
- 操作系統(tǒng)課程設計---進程調度算法
- 進程調度算法操作系統(tǒng)課程設計
- 操作系統(tǒng)課程設計--進程調度算法
- 操作系統(tǒng)課程設計-- 操作系統(tǒng)
- 進程調度算法操作系統(tǒng)課程設計 (2)
- 操作系統(tǒng)課程設計--磁盤調度算法實踐
- 操作系統(tǒng)課程設計——進程調度模擬算法
評論
0/150
提交評論