操作系統(tǒng)課程設(shè)計(jì)--作業(yè)調(diào)度_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課 程 設(shè) 計(jì)</b></p><p>  設(shè)計(jì)題目: 作業(yè)調(diào)度 </p><p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p>  一、課程設(shè)計(jì)的原始資料及依據(jù)</p><p>  查閱有關(guān)計(jì)算機(jī)操作系統(tǒng)的教材、實(shí)驗(yàn)指導(dǎo)書等

2、資料,進(jìn)一步熟悉操作系統(tǒng)的基本原理,算法的設(shè)計(jì)思想。作業(yè)調(diào)度是批處理操作系統(tǒng)中的重要內(nèi)容。本設(shè)計(jì)要求用高級(jí)語言編寫和調(diào)試一個(gè)簡(jiǎn)單的作業(yè)調(diào)度程序。通過本設(shè)計(jì)可以加深理解有關(guān)作業(yè)控制塊、作業(yè)隊(duì)列的概念,并體會(huì)和了解先來先服務(wù)、短作業(yè)優(yōu)先和響應(yīng)比高者優(yōu)先作業(yè)調(diào)度算法的具體實(shí)施辦法。加深理解有關(guān)作業(yè)控制塊、作業(yè)隊(duì)列的概念和狀態(tài)轉(zhuǎn)換。</p><p>  二、課程設(shè)計(jì)主要內(nèi)容及要求</p><p>

3、  1.認(rèn)真閱讀資料,掌握作業(yè)調(diào)度的原理和相關(guān)算法的思想。</p><p>  2.要求在設(shè)計(jì)的過程中,建立清晰的層次結(jié)構(gòu)。</p><p>  3.畫出主要的功能結(jié)構(gòu)圖和主要算法的流程圖。</p><p>  4.設(shè)計(jì)作業(yè)控制塊JCB表結(jié)構(gòu),分別適用于先來先服務(wù)、短作業(yè)優(yōu)先和響應(yīng)比高者優(yōu)先調(diào)度算法。</p><p>  JCB結(jié)構(gòu)通常包括以

4、下信息:作業(yè)名,作業(yè)到達(dá)系統(tǒng)的時(shí)間,作業(yè)要求服務(wù)時(shí)間,作業(yè)的完成時(shí)間等。根據(jù)調(diào)度算法的不同,JCB結(jié)構(gòu)的內(nèi)容可以作適當(dāng)?shù)脑鰟h。</p><p>  5.建立作業(yè)并送入后備隊(duì)列。對(duì)兩種不同算法編制入鏈子程序。</p><p>  6.分別顯示三種不同算法下,后備隊(duì)列中所有的作業(yè)排列情況。</p><p>  7.編制作業(yè)調(diào)度算法:先來先服務(wù)、短作業(yè)優(yōu)先和響應(yīng)比高者優(yōu)先

5、調(diào)度算法。</p><p>  8.顯示根據(jù)不同調(diào)度算法形成的作業(yè)調(diào)度順序。</p><p>  9.運(yùn)行程序,檢查結(jié)果是否和理論值一致。</p><p>  10.環(huán)境可以使用Windows,Turbo C環(huán)境或Linux。</p><p>  三、對(duì)課程設(shè)計(jì)說明書撰寫內(nèi)容、格式、字?jǐn)?shù)的要求</p><p>  1.

6、課程設(shè)計(jì)說明書是體現(xiàn)和總結(jié)課程設(shè)計(jì)成果的載體,主要內(nèi)容包括:設(shè)計(jì)題目、設(shè)計(jì)目的、設(shè)備器材、設(shè)計(jì)原理及內(nèi)容、設(shè)計(jì)步驟、遇到的問題及解決方法、設(shè)計(jì)總結(jié)、參考文獻(xiàn)等。一般不應(yīng)少于3000字。</p><p>  2.在適當(dāng)位置配合相應(yīng)的實(shí)驗(yàn)原理圖、功能模塊圖、算法流程圖等圖表進(jìn)行說明。應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。</p><p>  3.設(shè)計(jì)總結(jié)部分主要寫本人完成工作簡(jiǎn)介以

7、及自己的設(shè)計(jì)體會(huì),包括通過課程設(shè)計(jì)學(xué)到了什么,哪里遇到了困難,解決的辦法以及今后的目標(biāo)。</p><p>  4.課程設(shè)計(jì)說明書手寫或打印均可。手寫要用學(xué)校統(tǒng)一的課程設(shè)計(jì)用紙,用黑或藍(lán)黑墨水工整書寫;打印時(shí)采用A4紙,頁邊距均為20mm,正文采用宋體小四號(hào)字,行間距18磅。文中大標(biāo)題采用黑體小三號(hào)字,一級(jí)節(jié)標(biāo)題采用黑體四號(hào)字,二級(jí)節(jié)標(biāo)題采用黑體小四號(hào)字,表題與圖題采用宋體五號(hào)字。</p><p

8、>  5.課程設(shè)計(jì)說明書裝訂順序?yàn)椋悍饷?、任?wù)書、成績(jī)?cè)u(píng)定表、目錄、正文、參考文獻(xiàn)。</p><p>  四、設(shè)計(jì)完成后應(yīng)提交成果的種類、數(shù)量、質(zhì)量等方面的要求</p><p>  1.完成“任務(wù)書”中指定的功能,運(yùn)行結(jié)果正確。</p><p>  2.課程設(shè)計(jì)說明書。</p><p><b>  五、時(shí)間進(jìn)度安排</b

9、></p><p>  六、主要參考資料(文獻(xiàn))</p><p>  [1]鳳羽.操作系統(tǒng).北京:電子工業(yè)出版社,2004</p><p>  [2]馬季蘭、馮秀芳等.操作系統(tǒng)原理與Linux. 北京:人民郵電出版社,2000 </p><p>  [3]孟靜.操作系統(tǒng)原理教程.北京:清華大學(xué)出版社,2000</p>&l

10、t;p>  [4]周蘇、金海溶. 操作系統(tǒng)原理實(shí)驗(yàn).北京: 科學(xué)出版社,2000</p><p><b>  摘要</b></p><p>  隨著社會(huì)科學(xué)技術(shù)的迅猛發(fā)展,計(jì)算機(jī)以它卓越的進(jìn)步已經(jīng)遍布各行各業(yè),其實(shí)計(jì)算機(jī)本身就是一堆廢鐵,而操作系統(tǒng)使它有了生命和靈魂,操作系統(tǒng)就相當(dāng)于人的各個(gè)組織,如果沒有操作系統(tǒng)那計(jì)算機(jī)就像一個(gè)植物人一樣,毫無價(jià)值。</p

11、><p>  操作系統(tǒng)是配置在計(jì)算機(jī)上的第一層軟件,是對(duì)硬件系統(tǒng)的首次擴(kuò)充。它在計(jì)算機(jī)系統(tǒng)中占據(jù)了特別重要的地位,很多系統(tǒng)軟件以及大量的應(yīng)用軟件都依賴于操作系統(tǒng)的支持,取得它的服務(wù)。在計(jì)算機(jī)系統(tǒng)上所配置的操作系統(tǒng)的主要目標(biāo)與計(jì)算機(jī)系統(tǒng)的規(guī)模和操作系統(tǒng)的應(yīng)用環(huán)境有關(guān),而操作系統(tǒng)在計(jì)算機(jī)系統(tǒng)中所起的作用也可以從不同的角度來觀察。操作系統(tǒng)已成為從大型機(jī)直至微型機(jī)都配置的軟件,在不同的操作系統(tǒng)中采用的調(diào)度方式是不同的,它不僅

12、是計(jì)算機(jī)與用戶之間的接口,也是計(jì)算機(jī)資源的管理者。</p><p>  當(dāng)今的的計(jì)算機(jī)已經(jīng)從無操作系統(tǒng)到單道批處理系統(tǒng)再發(fā)展到多道程序系統(tǒng)然后是分時(shí)系統(tǒng)和實(shí)時(shí)系統(tǒng)。在多道程序系統(tǒng)中,一個(gè)作業(yè)被提交后必須經(jīng)過處理機(jī)調(diào)度后,方能獲得處理機(jī)執(zhí)行。作業(yè)是一個(gè)比程序更為廣泛的概念,它不僅包含了通常的程序和數(shù)據(jù),而且還應(yīng)配有一分作業(yè)說明書,系統(tǒng)根據(jù)該說明書來對(duì)程序的運(yùn)行進(jìn)行控制。在批處理系統(tǒng)中,是以作業(yè)為基本單位從外存調(diào)入內(nèi)

13、存的。對(duì)于批量型作業(yè)而言,通常要經(jīng)歷作業(yè)調(diào)度和進(jìn)程調(diào)度兩個(gè)過程方能獲得處理機(jī)。為了管理和調(diào)度作業(yè),在多道批處理系統(tǒng)中為每個(gè)作業(yè)設(shè)置了一個(gè)作業(yè)控制塊,即PCB(Job Control Block)每當(dāng)作業(yè)進(jìn)入系統(tǒng)是,系統(tǒng)便為每個(gè)作業(yè)創(chuàng)建一個(gè)PCB,根據(jù)作業(yè)類型將它插入相應(yīng)的后備隊(duì)列中,作業(yè)調(diào)度程序根據(jù)一定的算法來調(diào)度它們,被調(diào)度到的作業(yè)將會(huì)裝入內(nèi)存。作業(yè)調(diào)度的主要功能是根據(jù)作業(yè)控制塊中的信息,審查系統(tǒng)能否滿足用戶作業(yè)的資源需求,以及按照一

14、定的算法,從外存的后備隊(duì)列中選取某些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進(jìn)程,分配必要的資源,然后,再將新創(chuàng)建的進(jìn)程排在就緒隊(duì)列上,準(zhǔn)備準(zhǔn)備執(zhí)行。</p><p>  每次執(zhí)行作業(yè)調(diào)度時(shí),都需要做以下兩個(gè)決定:</p><p>  1.接納多少個(gè)作業(yè),取決于多道程序度即允許多少個(gè)作業(yè)同時(shí)在內(nèi)存中運(yùn)行,多道程序度的確定是根據(jù)系統(tǒng)的規(guī)模和運(yùn)行速度等情況做適當(dāng)?shù)恼壑小?lt;/p><p&g

15、t;  2.接納哪些作業(yè),取決于采用的調(diào)度算法。作業(yè)調(diào)度的算法主要包括三種:先來先服務(wù)算法、短作業(yè)優(yōu)先調(diào)度算法和高響應(yīng)比優(yōu)先調(diào)度算法。</p><p>  本系統(tǒng)采用結(jié)構(gòu)體定義作業(yè)的數(shù)據(jù)類型,用數(shù)組接納各個(gè)作業(yè),通過把創(chuàng)建的JCB結(jié)構(gòu)體組織成鏈,用不同算法循環(huán)測(cè)試處理的每個(gè)作業(yè),來確定各個(gè)作業(yè)接受系統(tǒng)服務(wù)的次序,從而輸出每個(gè)算法對(duì)作業(yè)處理結(jié)果,即平均周轉(zhuǎn)時(shí)間。從而確定哪種算法對(duì)于本次的作業(yè)調(diào)度是最佳的算法。<

16、;/p><p>  關(guān)鍵詞 操作系統(tǒng),作業(yè)調(diào)度,調(diào)度算法,優(yōu)先權(quán),響應(yīng)比,平均周轉(zhuǎn)時(shí)間,最佳算法</p><p><b>  目錄</b></p><p><b>  第1章 引言1</b></p><p><b>  1.1設(shè)計(jì)題目1</b></p><

17、p><b>  1.2設(shè)計(jì)目的1</b></p><p><b>  1.3設(shè)備器材1</b></p><p><b>  1.4任務(wù)分析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ā)技術(shù)5</p><p>  1.6.1 Visual C++概述5</p><p>  1.6.2 C++發(fā)展歷史簡(jiǎn)單介紹6</p><p>  1.6.3 Visual C++的特點(diǎn)6</p><p>  1.6.4 C++語言發(fā)展

19、及設(shè)計(jì)原則7</p><p>  1.6.5 C++編程技巧8</p><p>  第2章 設(shè)計(jì)原理11</p><p>  2.1先來先服務(wù)調(diào)度算法11</p><p>  2.2短作業(yè)優(yōu)先調(diào)度算法11</p><p>  2.3高響應(yīng)比優(yōu)先調(diào)度算法11</p><p>  第3章

20、 程序分析13</p><p>  3.1系統(tǒng)操作13</p><p>  3.2程序功能結(jié)構(gòu)圖13</p><p>  3.3程序功能流程圖14</p><p>  3.3.1 創(chuàng)建作業(yè)流程圖14</p><p>  3.3.2 先來先服務(wù)調(diào)度算法流程圖14</p><p>  3

21、.3.3 短作業(yè)優(yōu)先調(diào)度算法流程圖15</p><p>  3.3.4 響應(yīng)比優(yōu)先調(diào)度算法流程圖16</p><p>  3.3.5總結(jié)最優(yōu)調(diào)度算法流程圖16</p><p>  第4章 程序?qū)崿F(xiàn)方法18</p><p>  4.1主函數(shù)程序?qū)崿F(xiàn)18</p><p>  4.1.1主程序?qū)崿F(xiàn)功能18<

22、/p><p>  4.1.2 主程序?qū)崿F(xiàn)代碼18</p><p>  4.1.3 主程序運(yùn)行界面19</p><p>  4.2 創(chuàng)建作業(yè)函數(shù)的實(shí)現(xiàn)20</p><p>  4.2.1 函數(shù)說明20</p><p>  4.2.2 創(chuàng)建函數(shù)實(shí)現(xiàn)代碼20</p><p>  4.2.3 創(chuàng)建

23、函數(shù)運(yùn)行界面21</p><p>  4.3 先來先服務(wù)函數(shù)21</p><p>  4.3.1函數(shù)說明21</p><p>  4.3.2先來先服務(wù)代碼21</p><p>  4.3.3 程序運(yùn)行界面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程序運(yùn)行界面26</p><p>  4.5 響應(yīng)比高者優(yōu)先函數(shù)26</p><p>  4.5.1函數(shù)說明26</p><p>  4.5.2響應(yīng)比高者優(yōu)先代碼26</p><p>  

25、4.5.3響應(yīng)比高者優(yōu)函數(shù)運(yùn)行結(jié)果28</p><p>  4.6總結(jié)函數(shù)29</p><p>  4.6.1 函數(shù)說明29</p><p>  4.6.2 總結(jié)函數(shù)實(shí)現(xiàn)代碼29</p><p>  4.6.3 總結(jié)函數(shù)運(yùn)行界面30</p><p>  第5章 遇到的問題及解決方法31</p>

26、<p>  5.1 遇到的問題31</p><p>  5.2 解決的方法31</p><p><b>  總結(jié)32</b></p><p><b>  致謝33</b></p><p><b>  參考文獻(xiàn)34</b></p><p&

27、gt;<b>  第1章 引言</b></p><p><b>  1.1設(shè)計(jì)題目</b></p><p><b>  作業(yè)管理</b></p><p><b>  1.2設(shè)計(jì)目的</b></p><p>  了解作業(yè)進(jìn)入系統(tǒng)至運(yùn)行完畢的總過程。</

28、p><p>  掌握并學(xué)會(huì)運(yùn)用不同的調(diào)度算法。</p><p>  進(jìn)一步了解作業(yè)調(diào)度中作業(yè)的創(chuàng)建過程與實(shí)現(xiàn)過程。</p><p>  學(xué)會(huì)并理解優(yōu)先權(quán)在高響應(yīng)比優(yōu)先高度算法中的作用。</p><p><b>  1.3設(shè)備器材</b></p><p><b>  硬件:計(jì)算機(jī)一臺(tái)</

29、b></p><p>  軟件:Windows操作系統(tǒng),VC++環(huán)境或TC2.0環(huán)境</p><p><b>  1.4任務(wù)分析</b></p><p>  本次課程設(shè)計(jì)的題目為作業(yè)調(diào)度,其調(diào)度算法分別為先來先服務(wù)調(diào)度算法、短作業(yè)優(yōu)先調(diào)度算法、高響應(yīng)比優(yōu)先調(diào)度算法。</p><p>  作業(yè)調(diào)度的主要功能是根據(jù)作業(yè)

30、控制塊中的信息,審查系統(tǒng)能否滿足用戶作業(yè)的資源需求,以及按照一定的算法,從外存的后備隊(duì)列中選取某些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進(jìn)程、分配必要的資源。然后再將新創(chuàng)建的進(jìn)程插入就緒隊(duì)列,準(zhǔn)備執(zhí)行。每個(gè)系統(tǒng)在選擇作業(yè)調(diào)度算法時(shí),既應(yīng)考慮用戶的要求,又能確保系統(tǒng)具有較高的效率。在每次執(zhí)行作業(yè)調(diào)度時(shí),都須做出兩個(gè)決定,一是決定接納多少個(gè)作業(yè);二是決定接納哪些作業(yè)。</p><p>  在OS中調(diào)度的實(shí)質(zhì)是一種資源分配,因而調(diào)

31、度算法是指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。對(duì)于不同的系統(tǒng)和系統(tǒng)目標(biāo),通常采用不同的調(diào)度算法。</p><p>  先來先服務(wù)調(diào)度算法是一種最簡(jiǎn)單的調(diào)度算法,每次調(diào)度都是從后備作業(yè)隊(duì)列中選擇一個(gè)或多個(gè)最先進(jìn)入該隊(duì)列的作業(yè),將它們調(diào)入內(nèi)存,為它們分配資源、創(chuàng)建進(jìn)程,然后放入就緒隊(duì)列。</p><p>  短作業(yè)優(yōu)先調(diào)度算法是指對(duì)短作業(yè)優(yōu)先調(diào)度的算法。短作業(yè)優(yōu)先的調(diào)度算法是從后備隊(duì)

32、列中選擇一個(gè)或若干個(gè)估計(jì)運(yùn)行時(shí)間最短的作業(yè),將它們調(diào)入內(nèi)存運(yùn)行。</p><p>  高響應(yīng)比優(yōu)先調(diào)度算法,是指將就緒隊(duì)列中排序的優(yōu)先權(quán)最高的作業(yè)調(diào)入內(nèi)存執(zhí)行。在高響應(yīng)比調(diào)度算法中,優(yōu)先權(quán)的計(jì)算公式為:優(yōu)先權(quán)=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間,該算法既照顧了短作業(yè),又考慮了作業(yè)到達(dá)的先后次序,不會(huì)使長(zhǎng)作業(yè)長(zhǎng)期得不到服務(wù)。因此,該算法實(shí)現(xiàn)了一種較好的折衷。當(dāng)然,在利用該算法時(shí),每要進(jìn)行調(diào)度之前,都須先做響應(yīng)

33、比的計(jì)算,這會(huì)增加系統(tǒng)開銷。在執(zhí)行高響應(yīng)比優(yōu)先調(diào)度算法時(shí),每有一個(gè)作業(yè)調(diào)入內(nèi)存運(yùn)行后就需根據(jù)最后一次調(diào)入內(nèi)存的業(yè)狀態(tài)計(jì)算就緒隊(duì)列中的其它作業(yè)的優(yōu)先權(quán)。</p><p>  在編寫程序時(shí),調(diào)度算法前建立系統(tǒng)源文件擴(kuò)展名為.txt,利用創(chuàng)建(輸入)函數(shù)creat()向源文件中輸入作業(yè)流,把作業(yè)的基本信息輸入到文件中,如:作業(yè)的名稱、作業(yè)的提交時(shí)間、作業(yè)的運(yùn)行時(shí)間。作業(yè)初始排序?yàn)榈竭_(dá)時(shí)間先后(即先來先服務(wù)調(diào)度排序作業(yè)流

34、)。采用高響應(yīng)比優(yōu)先調(diào)度算法時(shí),從就緒隊(duì)列中選出優(yōu)先權(quán)最高的作業(yè)調(diào)入內(nèi)存執(zhí)行,系統(tǒng)自動(dòng)將處理機(jī)分配給它,使它立即執(zhí)行并一直執(zhí)行到完成。該程序代碼中執(zhí)行的操作步驟主要為以二進(jìn)制模式打開源文件,利用高響應(yīng)比優(yōu)先調(diào)度算法在就緒隊(duì)列中選出當(dāng)前優(yōu)先權(quán)最高的作業(yè)調(diào)度運(yùn)行,通過程序中的計(jì)算方法求出并輸出該作業(yè)的開始時(shí)間、完成時(shí)間、周轉(zhuǎn)時(shí)間。</p><p>  1.5 操作系統(tǒng)概述</p><p>  

35、操作系統(tǒng)(Operating System,簡(jiǎn)稱OS)是配置在計(jì)算機(jī)硬件上的第一層軟件,是對(duì)硬件系統(tǒng)的首次擴(kuò)充。它在計(jì)算機(jī)系統(tǒng)中占據(jù)了特別重要的地位;而其它的諸如匯編程序、編譯程序、數(shù)據(jù)庫管理系統(tǒng)等系統(tǒng)軟件,以及大量的應(yīng)用軟件,都將依賴于操作系統(tǒng)的支持,取得它的服務(wù)。操作系統(tǒng)已成為現(xiàn)代計(jì)算機(jī)系統(tǒng)(大、中、小及微型機(jī))、多處理機(jī)系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、多媒體系統(tǒng)以及嵌入式系統(tǒng)中都必須配置的、最重要的系統(tǒng)軟件。它是計(jì)算機(jī)系統(tǒng)中各種資源的管理者和各

36、種活動(dòng)的組織者、指揮者。</p><p>  操作系統(tǒng)是一個(gè)龐大的管理控制程序,大致包括5個(gè)方面的管理功能。進(jìn)程與處理機(jī)管理、作業(yè)管理、存儲(chǔ)管理、設(shè)備管理、文件管理。目前微機(jī)上常見的操作系統(tǒng)有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。 </p><p>  操作系統(tǒng)是控制其他程序運(yùn)行,管理系統(tǒng)資源并為用戶提供操作界面的系統(tǒng)軟件的集合。</p

37、><p>  操作系統(tǒng)身負(fù)諸如管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設(shè)備、操作網(wǎng)絡(luò)與管理文件系統(tǒng)等基本事務(wù)。</p><p>  操作系統(tǒng)是管理計(jì)算機(jī)系統(tǒng)的全部硬件資源包括軟件資源及數(shù)據(jù)資源;控制程序運(yùn)行;改善人機(jī)界面;為其它應(yīng)用軟件提供支持等,使計(jì)算機(jī)系統(tǒng)所有資源最大限度地發(fā)揮作用,為用戶提供方便的、有效的、友善的服務(wù)界面。</p><p>  所

38、有的操作系統(tǒng)具有并發(fā)性、共享性、虛擬性和不確定性四個(gè)基本特征。</p><p>  操作系統(tǒng)的型態(tài)非常多樣,不同機(jī)器安裝的OS可從簡(jiǎn)單到復(fù)雜,可從手機(jī)的嵌入式系統(tǒng)到超級(jí)電腦的大型操作系統(tǒng)。</p><p>  許多操作系統(tǒng)制造者對(duì)OS的定義也不大一致,例如有些OS集成了圖形用戶界面,而有些OS僅使用文本接口,而將圖形界面視為一種非必要的應(yīng)用程序。</p><p> 

39、 操作系統(tǒng)理論在計(jì)算機(jī)科學(xué)中為歷史悠久而又活躍的分支,而操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)則是軟件工業(yè)的基礎(chǔ)與內(nèi)核。 </p><p>  1.5.1 發(fā)展歷史</p><p>  OS的形成迄今已有50多年的時(shí)間。在上世紀(jì)50年代中期出現(xiàn)了單道批處理系統(tǒng);60年代中期產(chǎn)生了多道程序批處理系統(tǒng);不久又出現(xiàn)了基于多道程序的分時(shí)系統(tǒng),與此同時(shí)也誕生了用于工業(yè)控制和武器控制的實(shí)時(shí)操作系統(tǒng)。20世紀(jì)80年代開始

40、至21世紀(jì)初,是微型機(jī)、多處理機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)高速發(fā)展的年代,同時(shí)也是微型機(jī)OS、多處理機(jī)OS和網(wǎng)絡(luò)OS以及分布式OS的形成和大發(fā)展的年代。</p><p>  綜觀電腦之歷史,操作系統(tǒng)與電腦硬件的發(fā)展息息相關(guān)。</p><p>  操作系統(tǒng)之本意原為提供簡(jiǎn)單的工作排序能力,后為輔助更新更復(fù)雜的硬件設(shè)施而漸漸演化。</p><p>  從最早的批次模式開始,分時(shí)機(jī)制也

41、隨之出現(xiàn),在多處理器時(shí)代來臨時(shí),操作系統(tǒng)也隨之添加多處理器協(xié)調(diào)功能,甚至是分布式系統(tǒng)的協(xié)調(diào)功能。其他方面的演變也類似于此。</p><p>  另一方面,在個(gè)人電腦上,個(gè)人電腦之操作系統(tǒng)因襲大型電腦的成長(zhǎng)之路,在硬件越來越復(fù)雜、強(qiáng)大時(shí),也逐步實(shí)踐以往只有大型電腦才有的功能。</p><p>  總而言之,操作系統(tǒng)的歷史就是一部解決電腦系統(tǒng)需求與問題的歷史。</p><p

42、>  第一代微型計(jì)算機(jī)并不像大型電腦或小型電腦,沒有裝設(shè)操作系統(tǒng)的需求或能力;它們只需要最基本的操作系統(tǒng),通常這種操作系統(tǒng)都是從ROM讀取的,此種程序被稱為監(jiān)視程序(Monitor)。</p><p>  1980年代,家用電腦開始普及。通常此時(shí)的電腦擁有8-bit處理器加上64KB內(nèi)存、屏幕、鍵盤以及低音質(zhì)喇叭。而80年代早期最著名的套裝電腦為使用微處理器6510(6502芯片特別版)的Commodore

43、 C64。此電腦沒有操作系統(tǒng),而是以一8KB只讀內(nèi)存BIOS初始化彩色屏幕、鍵盤以及軟驅(qū)和打印機(jī)。它可用8KB只讀內(nèi)存BASIC語言來直接操作BIOS,并依此撰寫程序,大部分是游戲。此BASIC語言的解釋器勉強(qiáng)可算是此電腦的操作系統(tǒng),當(dāng)然就沒有內(nèi)核或軟硬件保護(hù)機(jī)制了。此電腦上的游戲大多跳過BIOS層次,直接控制硬件。</p><p>  Apple I電腦,蘋果電腦的第一代產(chǎn)品。延續(xù)80年代的競(jìng)爭(zhēng),1990年代出

44、現(xiàn)了許多影響未來個(gè)人電腦市場(chǎng)深厚的操作系統(tǒng)。由于圖形化使用者界面日趨繁復(fù),操作系統(tǒng)的能力也越來越復(fù)雜與巨大,因此強(qiáng)韌且具有彈性的操作系統(tǒng)就成了迫切的需求。此年代是許多套裝類的個(gè)人電腦操作系統(tǒng)互相競(jìng)爭(zhēng)的時(shí)代。</p><p>  在1990年代初,微軟與IBM的合作破裂,微軟從OS/2(早期為命令行模式,后來成為一個(gè)很成功但是曲高和寡的圖形化操作系統(tǒng))項(xiàng)目中抽身,并且在1993年7月27日推出Windows 3.1

45、,一個(gè)以O(shè)S/2為基礎(chǔ)的圖形化操作系統(tǒng)。</p><p>  直到這時(shí),Windows系統(tǒng)依然是建立在MS-DOS的基礎(chǔ)上,因此消費(fèi)者莫不期待微軟在2000年所推出的Windows 2000上,因?yàn)樗潘闶堑谝粋€(gè)脫離MS-DOS基礎(chǔ)的圖形化操作系統(tǒng)。</p><p>  現(xiàn)代操作系統(tǒng)通常都有一個(gè)使用的繪圖設(shè)備的圖形化使用者界面,并附加如鼠標(biāo)或觸控面版等有別于鍵盤的輸入設(shè)備。舊的OS或效能導(dǎo)

46、向的服務(wù)器通常不會(huì)有如此親切的接口,而是以命令行接口(CLI)加上鍵盤為輸入設(shè)備。以上兩種接口其實(shí)都是所謂的殼,其功能為接受并處理使用者的指令(例如按下一按鈕,或在命令提示列上鍵入指令)。</p><p>  選擇要安裝的操作系統(tǒng)通常與其硬件架構(gòu)有很大關(guān)系,只有Linux與BSD幾乎可在所有硬件架構(gòu)上執(zhí)行,而Windows NT僅移植到了DEC Alpha與MIPS Magnum。</p><

47、p>  在1990年代早期,個(gè)人電腦的選擇就已被局限在Windows家族、類Unix家族以及Linux上,而以Linux及Mac OS X為最主要的另類選擇,直至今日。</p><p>  大型機(jī)與嵌入式系統(tǒng)使用很多樣化的操作系統(tǒng)。大型主機(jī)近期有許多開始支持Java及Linux以便共享其他平臺(tái)的資源。嵌入式系統(tǒng)近期百家爭(zhēng)鳴,從給Sensor Networks用的Berkeley Tiny OS到可以操作Mi

48、crosoft Office的Windows CE都有。</p><p><b>  1.5.2分類</b></p><p>  目前的操作系統(tǒng)種類繁多,很難用單一標(biāo)準(zhǔn)統(tǒng)一分類。</p><p>  根據(jù)應(yīng)用領(lǐng)域來劃分,可分為桌面操作系統(tǒng)、服務(wù)器操作系統(tǒng)、主機(jī)操作系統(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ù)硬件結(jié)構(gòu),可分為網(wǎng)絡(luò)操作系統(tǒng)(Netware、Windows NT、OS/2 warp)、分布式系統(tǒng)(Amoeba)、多媒體系統(tǒng)(

50、Amiga)。</p><p>  根據(jù)操作系統(tǒng)的使用環(huán)境和對(duì)作業(yè)處理方式來考慮,可分為批處理系統(tǒng)(MVX、DOS/VSE)、分時(shí)系統(tǒng)(Linux、UNIX、XENIX、Mac OS)、實(shí)時(shí)系統(tǒng)(iEMX、VRTX、RTOS,RT WINDOWS)。</p><p>  根據(jù)操作系統(tǒng)的技術(shù)復(fù)雜程度,可分為簡(jiǎn)單操作系統(tǒng)、智能操作系統(tǒng)(見智能軟件)。所謂的簡(jiǎn)單操作系統(tǒng),指的是計(jì)算機(jī)初期所配置的

51、操作系統(tǒng),如IBM公司的磁盤操作系統(tǒng)DOS/360和微型計(jì)算機(jī)的操作系統(tǒng)CP/M等。這類操作系統(tǒng)的功能主要是操作命令的執(zhí)行,文件服務(wù),支持高級(jí)程序設(shè)計(jì)語言編譯程序和控制外部設(shè)備等。</p><p>  下面介紹一下操作系統(tǒng)的五大類型:批處理操作系統(tǒng)、分時(shí)操作系統(tǒng)、實(shí)時(shí)操作系統(tǒng)、網(wǎng)絡(luò)操作系統(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è),之后輸入到計(jì)算機(jī)中,在系統(tǒng)中形成一個(gè)自動(dòng)轉(zhuǎn)接的連續(xù)的作業(yè)流,然后啟動(dòng)操作系統(tǒng),系統(tǒng)自動(dòng)、依次執(zhí)行每個(gè)作業(yè)。最后由操作員將作業(yè)結(jié)果交給用戶。 </p><p><b>  單道批處理系統(tǒng)</b></p><p>  上世紀(jì)50年代中期

53、發(fā)明了晶體管,人們開始用晶體管代替真空管來制作計(jì)算機(jī),為了充分的利用它應(yīng)盡量讓該系統(tǒng)連續(xù)運(yùn)行,以減少空閑時(shí)間,這樣就出現(xiàn)了早期的單道批處理系統(tǒng)。單道批處理系統(tǒng)是最早出現(xiàn)一種OS。嚴(yán)格的說,它只能算作是OS的前身而并非是現(xiàn)在人們所理解的OS。通常把一批作業(yè)以脫機(jī)方式輸入到磁帶上,并在系統(tǒng)中配上監(jiān)督程序(Monitor),在它的控制下使這批作業(yè)能一個(gè)接一個(gè)地連續(xù)處理。由于系統(tǒng)對(duì)作業(yè)的處理都是成批地進(jìn)行的,且在內(nèi)存上始終只保持一道作業(yè),故稱此

54、系統(tǒng)為單道批處理系統(tǒng)。</p><p><b>  多道批處理系統(tǒng)</b></p><p>  20世紀(jì)60年代中期,人們開始利用小規(guī)模集成電路來制作計(jì)算機(jī),生產(chǎn)出第三代計(jì)算機(jī)。有IBM公司生產(chǎn)的第一臺(tái)小規(guī)模集成電路計(jì)算機(jī)——360機(jī),較之于晶體管計(jì)算機(jī)無論在體積功耗速度和可靠性上,都有了顯著的改善。雖然在開發(fā)360機(jī)器使用的操作系統(tǒng)時(shí),未能在機(jī)器上運(yùn)行多道程序而遇到

55、了極大的困難,但最終還是成功的開發(fā)出能在一臺(tái)機(jī)器中運(yùn)行多道程序的操作系統(tǒng)OS/360。</p><p>  多道程序設(shè)計(jì)標(biāo)志著操作系統(tǒng)的形成。在多道批處理系統(tǒng)中,用戶所提交的作業(yè)都先放在外存上并排成一個(gè)隊(duì)列,成為“后備隊(duì)列”;然后,有作業(yè)調(diào)度程序按一定的算法從后備隊(duì)列中選擇若干個(gè)作業(yè)調(diào)入內(nèi)存,使它們共享CPU和系統(tǒng)中的各種資源。</p><p><b>  2.分時(shí)操作系統(tǒng) &l

56、t;/b></p><p>  第一臺(tái)真正的分時(shí)操作系統(tǒng)(CTSS)是有麻省理工學(xué)院開發(fā)成功的。</p><p>  分時(shí)系統(tǒng)是指,在一臺(tái)主機(jī)上連接多個(gè)帶有顯示器和鍵盤的終端,同時(shí)允許多個(gè)用戶通過自己的終端,以交互方式使用計(jì)算機(jī),共享主機(jī)中資源。用戶交互式地向系統(tǒng)提出命令請(qǐng)求,系統(tǒng)接受每個(gè)用戶的命令,采用時(shí)間片輪轉(zhuǎn)方式處理服務(wù)請(qǐng)求,并通過交互方式在終端上向用戶顯示結(jié)果。用戶根據(jù)上步結(jié)

57、果發(fā)出下道命。分時(shí)操作系統(tǒng)將CPU的時(shí)間劃分成若干個(gè)片段,稱為時(shí)間片。操作系統(tǒng)以時(shí)間片為單位,輪流為每個(gè)終端用戶服務(wù)。每個(gè)用戶輪流使用一個(gè)時(shí)間片而使每個(gè)用戶并不感到有別的用戶存在。分時(shí)系統(tǒng)具有多路性、交互性、“獨(dú)占”性和及時(shí)性的特征。它支持位于不同終端的多個(gè)用戶同時(shí)使用一臺(tái)計(jì)算機(jī),彼此獨(dú)立互不干擾,用戶感到好像一臺(tái)計(jì)算機(jī)全為他所用。</p><p>  分時(shí)系統(tǒng)與多道批處理系統(tǒng)之間有截然不同的性能差別,它能很好地

58、將一臺(tái)計(jì)算機(jī)提供多個(gè)用戶同時(shí)使用,提高計(jì)算機(jī)的利用率。常見的通用操作系統(tǒng)是分時(shí)系統(tǒng)與批處理系統(tǒng)的結(jié)合。其原則是:分時(shí)優(yōu)先,批處理在后?!芭_(tái)”響應(yīng)需頻繁交互的作業(yè),如終端的要求;“后臺(tái)”處理時(shí)間性要求不強(qiáng)的作業(yè)。</p><p><b>  3.實(shí)時(shí)操作系統(tǒng) </b></p><p>  實(shí)時(shí)操作系統(tǒng)(RealTimeOperatingSystem,RTOS)是指系統(tǒng)功

59、能及時(shí)(或即時(shí))響應(yīng)外部事件的請(qǐng)求,在規(guī)定的時(shí)間內(nèi)完成對(duì)該事件的處理,并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致地運(yùn)行。實(shí)時(shí)操作系統(tǒng)要追求的目標(biāo)是:對(duì)外部請(qǐng)求在嚴(yán)格時(shí)間范圍內(nèi)做出反應(yīng),有高可靠性和完整性。其主要特點(diǎn)是資源的分配和調(diào)度首先要考慮實(shí)時(shí)性然后才是效率。此外,實(shí)時(shí)操作系統(tǒng)應(yīng)有較強(qiáng)的容錯(cuò)能力。</p><p><b>  4.網(wǎng)絡(luò)操作系統(tǒng) </b></p><p>  網(wǎng)絡(luò)操作

60、系統(tǒng)是基于計(jì)算機(jī)網(wǎng)絡(luò)的,是在各種計(jì)算機(jī)操作系統(tǒng)上按網(wǎng)絡(luò)體系結(jié)構(gòu)協(xié)議標(biāo)準(zhǔn)開發(fā)的軟件,包括網(wǎng)絡(luò)管理、通信、安全、資源共享和各種網(wǎng)絡(luò)應(yīng)用。其目標(biāo)是相互通信及資源共享。在其支持下,網(wǎng)絡(luò)中的各臺(tái)計(jì)算機(jī)能互相通信和共享資源。其主要特點(diǎn)是與網(wǎng)絡(luò)的硬件相結(jié)合來完成網(wǎng)絡(luò)的通信任務(wù)。</p><p>  5.分布式操作系統(tǒng) </p><p>  它是為分布計(jì)算系統(tǒng)配置的操作系統(tǒng)。大量的計(jì)算機(jī)通過網(wǎng)絡(luò)被連結(jié)在一

61、起,可以獲得極高的運(yùn)算能力及廣泛的數(shù)據(jù)共享。這種系統(tǒng)被稱作分布式系統(tǒng)(DistributedSystem)。它在資源管理,通信控制和操作系統(tǒng)的結(jié)構(gòu)等方面都與其他操作系統(tǒng)有較大的區(qū)別。由于分布計(jì)算機(jī)系統(tǒng)的資源分布于系統(tǒng)的不同計(jì)算機(jī)上,操作系統(tǒng)對(duì)用戶的資源需求不能像一般的操作系統(tǒng)那樣等待有資源時(shí)直接分配的簡(jiǎn)單做法而是要在系統(tǒng)的各臺(tái)計(jì)算機(jī)上搜索,找到所需資源后才可進(jìn)行分配。對(duì)于有些資源,如具有多個(gè)副本的文件,還必須考慮一致性。所謂一致性是指若

62、干個(gè)用戶對(duì)同一個(gè)文件所同時(shí)讀出的數(shù)據(jù)是一致的。為了保證一致性,操作系統(tǒng)須控制文件的讀、寫、操作,使得多個(gè)用戶可同時(shí)讀一個(gè)文件,而任一時(shí)刻最多只能有一個(gè)用戶在修改文件。分布操作系統(tǒng)的通信功能類似于網(wǎng)絡(luò)操作系統(tǒng)。由于分布計(jì)算機(jī)系統(tǒng)不像網(wǎng)絡(luò)分布得很廣,同時(shí)分布操作系統(tǒng)還要支持并行處理,因此它提供的通信機(jī)制和網(wǎng)絡(luò)操作系統(tǒng)提供的有所不同,它要求通信速度高。分布操作系統(tǒng)的結(jié)構(gòu)也不同于其他操作系統(tǒng),它分布于系統(tǒng)的各臺(tái)計(jì)算機(jī)上,能并行地處理用戶的各種需

63、求,有較強(qiáng)的容錯(cuò)能力。</p><p>  1.6 系統(tǒng)開發(fā)技術(shù)</p><p>  1.6.1 Visual C++概述</p><p>  在這次課程設(shè)計(jì)中,我們采用的是Visual C++環(huán)境。</p><p>  它是一種使用非常廣泛的計(jì)算機(jī)編程語言。C++是一種靜態(tài)數(shù)據(jù)類型檢查的,支持多重編程范式的通用程序設(shè)計(jì)語言。它支持過程化程序

64、設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、制作圖標(biāo)等等泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。</p><p>  Visual C++是Microsoft公司于1993年推出的一個(gè)可視化集成開發(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)境由很多工具和向?qū)ЫM成,要真正掌握它們的使用方法必須結(jié)合具體的編程內(nèi)容。</p><p>  Visual C++是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具,它不僅是一個(gè)C++編譯器,還是一個(gè)基于Windows操作系統(tǒng)的集成開發(fā)環(huán)境。Visual C++由許多組件組成,包括編輯器、編譯器、調(diào)試器以及程序向?qū)ppWizard、類

66、向?qū)lassWizard等。</p><p>  1.6.2 C++發(fā)展歷史簡(jiǎn)單介紹 </p><p>  C語言之所以要起名為“C”,是因?yàn)樗侵饕獏⒖寄莻€(gè)時(shí)候的一門叫B的語言,它的設(shè)計(jì)者認(rèn)為C語言是B語言的進(jìn)步,所以就起名為C語言;但是B語言并不是因?yàn)橹斑€有個(gè)A語言,而是B語言的作者為了紀(jì)念他的妻子,他的妻子名字的第一個(gè)字母是B;當(dāng)C語言發(fā)展到頂峰的時(shí)刻,出現(xiàn)了一個(gè)版本叫C wit

67、h Class,那就是C++最早的版本,在C語言中增加class關(guān)鍵字和類,那個(gè)時(shí)候有很多版本的C都希望在C語言中增加類的概念;后來C標(biāo)準(zhǔn)委員會(huì)決定為這個(gè)版本的C起個(gè)新的名字,那個(gè)時(shí)候征集了很多種名字,最后采納了其中一個(gè)人的意見,以C語言中的++運(yùn)算符來體現(xiàn)它是C語言的進(jìn)步,所以就叫C++,也成立了C++標(biāo)準(zhǔn)委員會(huì)。</p><p>  美國AT&T貝爾實(shí)驗(yàn)室的本賈尼·斯特勞斯特盧普(Bjarn

68、e Stroustrup)博士在20世紀(jì)80年代初期發(fā)明并實(shí)現(xiàn)了C++(最初這種語言被稱作“C with Classes”)。一開始C++是作為C語言的增強(qiáng)版出現(xiàn)的,從給C語言增加類開始,不斷的增加新特性。虛函數(shù)(virtual function)、運(yùn)算符重載(operator overloading)、多重繼承(multiple inheritance)、模板(template)、異常(exception)、RTTI、命名空間(nam

69、e space)逐漸被加入標(biāo)準(zhǔn)。1998年國際標(biāo)準(zhǔn)組織(ISO)頒布了C++程序設(shè)計(jì)語言的國際標(biāo)準(zhǔn)ISO/IEC 1488-1998。C++是具有國際標(biāo)準(zhǔn)的編程語言,通常稱作ANSI/ISO C++。1998年是C++標(biāo)準(zhǔn)委員會(huì)成立的第一年,以后每5年視實(shí)際需要更新一次標(biāo)準(zhǔn),下一次標(biāo)準(zhǔn)更新將是在2009年,目前我們一般稱該標(biāo)準(zhǔn)C++0x。遺憾的是,由于C++語言過于復(fù)雜,以及他經(jīng)歷了長(zhǎng)年的演變,直到現(xiàn)在(2009年)只有Visual C

70、++ 2010 CTP開發(fā)環(huán)境的編譯器完全符合這個(gè)標(biāo)準(zhǔn)。</p><p>  另外,就目前學(xué)習(xí)C++而言,可以認(rèn)為他是一門獨(dú)立的語言;他并不依賴C語言,我們可以完全不學(xué)C語言,而直接學(xué)習(xí)C++。根據(jù)《C++編程思想》(Thinking in C++)一書所評(píng)述的,C++與C的效率往往相差在正負(fù)5%之間。所以有人認(rèn)為在大多數(shù)場(chǎng)合C++ 完全可以取代C語言(然而我們?cè)趩纹瑱C(jī)等需要謹(jǐn)慎利用空間、直接操作硬件的地方還是要

71、使用C語言)。 </p><p>  1.6.3 Visual C++的特點(diǎn) </p><p>  Visual C++中源程序采用C/C++語言編寫,它支持面向?qū)ο蟪绦蛟O(shè)計(jì),并能夠使用功能強(qiáng)大的微軟基礎(chǔ)類庫MFC(Microsoft foundation class),充分體現(xiàn)了Microsoft公司的技術(shù)精華。由于Windows操作系統(tǒng)的市場(chǎng)壟斷地位,利用Visual C++開發(fā)出來的

72、軟件具有穩(wěn)定性好、可移植性強(qiáng)的特點(diǎn)。</p><p>  利用Visual C++可以編制各種類型的Windows應(yīng)用程序,從簡(jiǎn)單的單文檔、多文檔和對(duì)話框程序到復(fù)雜的組合界面程序。并且,Visual C++作為Visual Studio可視化家族中最重要的一個(gè)成員,它與其他可視化開發(fā)工具如Visual J++、Visual Basic及Visual C#緊密集成,可進(jìn)行不同類型以及綜合軟件項(xiàng)目的開發(fā),適用于開發(fā)非

73、常專業(yè)的Windows、Web和企業(yè)級(jí)應(yīng)用程序。</p><p>  Visual C++6.0源代碼編輯器功能強(qiáng)大,使用非常方便。它提供了語句自動(dòng)完成功能,編輯輸入源程序時(shí)能自動(dòng)顯示當(dāng)前對(duì)象的成員變量和成員函數(shù),并表明函數(shù)的參數(shù)類型。Visual C++6.0的編譯器增加了新的編譯參數(shù),改進(jìn)了對(duì)ANSI C++標(biāo)準(zhǔn)的支持,并采用Microsoft的代碼優(yōu)化技術(shù),使生成的目標(biāo)代碼更精練,程序運(yùn)行的速度更快。比較其

74、他程序調(diào)試工具,Visual C++6.0程序調(diào)試器Debug功能更強(qiáng)大,它提供了診斷映射機(jī)制、無須重編譯的調(diào)試、遠(yuǎn)程調(diào)試和實(shí)時(shí)調(diào)試等功能。</p><p>  Visual C++6.0的聯(lián)機(jī)幫助系統(tǒng)MSDN Library(Microsoft developer network library)可以稱得上是一本內(nèi)容非常豐富的電子參考書。它既能與集成開發(fā)環(huán)境有機(jī)地結(jié)合在一起,使程序員在編程進(jìn)可以隨時(shí)查詢需要的幫

75、助信息和技術(shù)文檔,又能脫離集成開發(fā)環(huán)境而獨(dú)立地運(yùn)行,并且用戶還可以通過因特網(wǎng)獲取實(shí)時(shí)的幫助信息和實(shí)例。</p><p>  Visual C++6.0通過Visual Studio還為用戶提供了很多實(shí)用工具,如Spy++查看器、ActiveX Control Test Container控件測(cè)試窗口及Register Control控件注冊(cè)程序等,擴(kuò)展了Visual C++的功能,有利于專業(yè)程序的開發(fā)。</

76、p><p>  除了Visual C++,其他一些知名公司也推出了自己的C++集成開發(fā)環(huán)境,如Borland的C++ Bulider和IBM的VisualAge C++。迄今為止,Visual C++可以說是一個(gè)功能最強(qiáng)大和使用范圍最廣泛的軟件開發(fā)工具。當(dāng)然,由于Windows編程的困難和MFC類庫功能的龐大,加上應(yīng)用程序向?qū)傻某绦蚩蚣艿膹?fù)雜,使得學(xué)習(xí)Visual C++比學(xué)習(xí)其他軟件開發(fā)工具更困難。但當(dāng)熟練掌握

77、Visual C++編程方法后,就會(huì)感受到作為Visual C++程序員的無比優(yōu)越性。</p><p>  1.6.4 C++語言發(fā)展及設(shè)計(jì)原則 </p><p>  1. C++語言發(fā)展</p><p>  C++語言發(fā)展大概可以分為三個(gè)階段:</p><p>  第一階段從80年代到1995年。這一階段C++語言基本上是傳統(tǒng)類型上的面向?qū)?/p>

78、象語言,并且憑借著接近C語言的效率,在工業(yè)界使用的開發(fā)語言中占據(jù)了相當(dāng)大份額;</p><p>  第二階段從1995年到2000年,這一階段由于標(biāo)準(zhǔn)模板庫(STL)和后來的Boost等程序庫的出現(xiàn),泛型程序設(shè)計(jì)在C++中占據(jù)了越來越多的比重性。當(dāng)然,同時(shí)由于Java、C#等語言的出現(xiàn)和硬件價(jià)格的大規(guī)模下降,C++受到了一定的沖擊;</p><p>  第三階段從2000年至今,由于以Lo

79、ki、MPL等程序庫為代表的產(chǎn)生式編程和模板元編程的出現(xiàn),C++出現(xiàn)了發(fā)展歷史上又一個(gè)新的高峰,這些新技術(shù)的出現(xiàn)以及和原有技術(shù)的融合,使C++已經(jīng)成為當(dāng)今主流程序設(shè)計(jì)語言中最復(fù)雜的一員。 </p><p>  2. C++設(shè)計(jì)原則</p><p>  ⑴ C++設(shè)計(jì)成靜態(tài)類型、和C同樣高效且可移植的多用途程序設(shè)計(jì)語言。 </p><p> ?、?C++設(shè)計(jì)成直接的和

80、廣泛的支援多種程序設(shè)計(jì)風(fēng)格(程序化程序設(shè)計(jì)、資料抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì))。 </p><p> ?、?C++設(shè)計(jì)成給程序設(shè)計(jì)者更多的選擇,即使可能導(dǎo)致程序設(shè)計(jì)者選擇錯(cuò)誤。 </p><p>  ⑷ C++設(shè)計(jì)成盡可能與C兼容,籍此提供一個(gè)從C到C++的平滑過渡。 </p><p> ?、?C++避免平臺(tái)限定或沒有普遍用途的特性。 </p>

81、<p> ?、?C++不使用會(huì)帶來額外開銷的特性。 </p><p> ?、?C++設(shè)計(jì)成無需復(fù)雜的程序設(shè)計(jì)環(huán)境。</p><p>  出于保證語言的簡(jiǎn)潔和運(yùn)行高效等方面的考慮,C++的很多特性都是以庫而沒有直接添加到語言本身里。關(guān)于此類話題,C++之父的《C++語言的設(shè)計(jì)和演化》 里做了詳盡的陳述。</p><p>  1.6.5 C++編程技巧&l

82、t;/p><p>  1. 使用new和delete進(jìn)行動(dòng)態(tài)內(nèi)存分配和釋放 </p><p>  運(yùn)算符new和delete是C++新增的運(yùn)算符,提供了存儲(chǔ)的動(dòng)態(tài)分配和釋放功能。它的作用相當(dāng)于C語言的函數(shù)malloc()和free(),但是性能更為優(yōu)越。使用new較之使用malloc()有以下的幾個(gè)優(yōu)點(diǎn): </p><p> ?、?new自動(dòng)計(jì)算要分配類型的大小,不使用

83、sizeof運(yùn)算符,比較省事,可以避免錯(cuò)誤。 </p><p> ?、?自動(dòng)地返回正確的指針類型,不用進(jìn)行強(qiáng)制指針類型轉(zhuǎn)換。 </p><p> ?、?可以用new對(duì)分配的對(duì)象進(jìn)行初始化。 </p><p>  2. 使用inline內(nèi)聯(lián)函數(shù)替代宏調(diào)用 </p><p>  對(duì)于頻繁使用的函數(shù),C語言建議使用宏調(diào)用代替函數(shù)調(diào)用以加快代碼執(zhí)行,

84、減少調(diào)用開銷。但是宏調(diào)用有許多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)((a)<0?(-a):(a)), 當(dāng)使用abs(i++)時(shí),這個(gè)宏就會(huì)出錯(cuò)。 </p><p>  所以在C++中應(yīng)該使用inline內(nèi)聯(lián)函數(shù)替代宏調(diào)用,這樣既可達(dá)到宏調(diào)用的目的,又避免了宏調(diào)用的弊端。 </p><p>  使用內(nèi)聯(lián)函數(shù)只須把inline關(guān)鍵字放在函數(shù)返回類型的前面。

85、例如: </p><p>  inline int Add(int a,int b);//聲明Add()為內(nèi)聯(lián)函數(shù) </p><p>  這樣編譯器在遇到Add()函數(shù)時(shí),就不再進(jìn)行函數(shù)調(diào)用,而是直接嵌入函數(shù)代碼以加快程序的執(zhí)行。 </p><p>  3. 使用函數(shù)重載 </p><p>  在C語言中,兩個(gè)函數(shù)的名稱不能相同,否則會(huì)導(dǎo)致編

86、譯錯(cuò)誤。而在C++中,函數(shù)名相同而參數(shù)數(shù)據(jù)類型不同的兩個(gè)函數(shù)被解釋為重載。例如: </p><p>  void PutHz(char* str);//在當(dāng)前位置輸出漢字 </p><p>  void PutHz(int x,int y,char * str);//在x,y處輸入數(shù)字 </p><p>  使用函數(shù)重載可以幫助程序員處理更多的復(fù)雜問題,避免了使用諸

87、如intabs()、fabs()、dabs()等繁雜的函數(shù)名稱;同時(shí)在大型程序中,使函數(shù)名易于管理和使用,而不必絞盡腦汁地去處理函數(shù)名。同時(shí)必須注意,參數(shù)數(shù)據(jù)類型相同,但是函數(shù)返回類型不同的兩個(gè)函數(shù)不能重載。</p><p>  4. 使用引用(reference)代替指針進(jìn)行參數(shù)傳遞 </p><p>  在C語言中,如果一個(gè)函數(shù)需要修改用作參數(shù)的變量值的時(shí)候 ,參數(shù)應(yīng)該聲明為指針類型。

88、例如: </p><p>  void Add(int *a)</p><p><b>  {</b></p><p><b>  (*a)++;</b></p><p><b>  }</b></p><p><b>  調(diào)用時(shí)則使用 <

89、;/b></p><p>  Add(&x);//其中x為int或可以轉(zhuǎn)化為int的類型,如unsigned int, 但這時(shí)候編譯器通過回給出warning。</p><p>  對(duì)于復(fù)雜的程序,使用指針容易出錯(cuò),程序也難以讀懂。在C++中,對(duì)于上述情況 可以使用引用來代替指針,使程序更加清晰易懂。引用就是對(duì)變量取的一個(gè)別名,對(duì)引用進(jìn)行操作,這就相當(dāng)于對(duì)原有變量進(jìn)行操作。例

90、如使用引用的函數(shù)定義為: </p><p>  void Add(int& a)</p><p><b>  {</b></p><p>  a++; //a為一個(gè)整數(shù)的引用 </p><p><b>  }</b></p><p><b>  調(diào)用時(shí)使用

91、</b></p><p>  Add(x);//其中x為int</p><p>  這個(gè)函數(shù)與使用指針的上一個(gè)函數(shù)的功能是一樣的,然而代碼卻更為簡(jiǎn)潔和清晰易懂。 </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>  可以有三種方式調(diào)用函數(shù)PutHzxy(),例如: </p><p>  PutHzxy(&quo

94、t;C++語言");//使用缺省參數(shù)在當(dāng)前位置輸出 </p><p>  PutHzxy("C++語言",10,10);//沒有使用缺省參數(shù) </p><p>  PutHzxy("C++語言",10);//對(duì)y使用缺省參數(shù),指定x的位置</p><p>  通常的情況下,一個(gè)函數(shù)應(yīng)該具有盡可能大的靈活性。使用缺省

95、參數(shù)為程序員處理更大的復(fù)雜性和靈活性問題提供了有效的方法,所以在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)//錯(cuò)誤 </p><p><b>  6. 使用STL </b></p><p>  STL(Standard Template Library,標(biāo)準(zhǔn)模板庫),STL的代碼從廣義上講分為三類:

97、algorithm(算法)、container(容器)和iterator(迭代器),并包括一些工具類如auto_ptr。幾乎所有的代碼都采用了模板類和模版函數(shù)的方式,這相比于傳統(tǒng)的由函數(shù)和類組成的庫來說提供了更好的代碼重用機(jī)會(huì)。</p><p>  #include<vector>// 包含相關(guān)的頭文件/</p><p>  typedef std::vector<int

98、> intvector;//使用typedef 使代碼看起來更簡(jiǎn)潔</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章 設(shè)計(jì)原理</b></p><p>  用戶使用操作系統(tǒng)的主要目的是作業(yè)處理。一個(gè)作業(yè)進(jìn)入系統(tǒng)到運(yùn)行結(jié)束,一般需經(jīng)歷收容、運(yùn)行、完成三個(gè)階段,與這三個(gè)階段對(duì)應(yīng)的作業(yè)處于后備、運(yùn)行和完成三種狀態(tài)。作業(yè)調(diào)度的主要功能是按照某種原則從后備作業(yè)隊(duì)列中選取作業(yè)進(jìn)入主存,并為作業(yè)做好運(yùn)行前的準(zhǔn)備工作和作業(yè)完成后的善后處理工作。常用的作業(yè)調(diào)度算法有:先來先服務(wù)、短作業(yè)優(yōu)先、響應(yīng)比高者優(yōu)先、優(yōu)先數(shù)優(yōu)先等調(diào)

101、度算法。衡量作業(yè)調(diào)度算法性能的主要指標(biāo)有:作業(yè)的周轉(zhuǎn)時(shí)間、作業(yè)的平均周轉(zhuǎn)時(shí)間和平均帶權(quán)周轉(zhuǎn)時(shí)間。</p><p>  2.1先來先服務(wù)調(diào)度算法</p><p>  先來先服務(wù)(FCFS)調(diào)度算法是一種最簡(jiǎn)單的調(diào)度算法。當(dāng)在作業(yè)調(diào)度中采取該算法時(shí),每次調(diào)度都是從后備作業(yè)隊(duì)列中選擇一個(gè)或多個(gè)最先進(jìn)入該隊(duì)列的作業(yè),將它們調(diào)入內(nèi)存,為它們分配資源、創(chuàng)建進(jìn)程,然后放入就緒對(duì)列。</p>

102、<p>  當(dāng)程序運(yùn)行選擇些算法時(shí),我們可以輸入要打開的文件名,從打開的文件中按照作業(yè)依次寫入文件的順序把已寫入文件的作業(yè)流信息調(diào)入到內(nèi)存中,采用FCFS算法分別求出其每個(gè)作業(yè)的開始時(shí)間、完成時(shí)間、周轉(zhuǎn)時(shí)間。FCFS算法比較有利于長(zhǎng)作業(yè),而不利于短作業(yè)。最后求出平均周轉(zhuǎn)時(shí)間。</p><p>  最簡(jiǎn)單的調(diào)度原則是先進(jìn)先出就緒隊(duì)列完成。根據(jù)作業(yè)到達(dá)就緒隊(duì)列的時(shí)間來分配中央處理機(jī),一旦一個(gè)作業(yè)獲得了中央

103、處理機(jī),就一直運(yùn)行到結(jié)束,先來先服務(wù)是非剝奪調(diào)度。這種調(diào)度從形式上講是公平的,但它使短作業(yè)要等待長(zhǎng)作業(yè)的完成,重要的作業(yè)要等待不重要作業(yè)的完成。從這個(gè)意義上講又是不公平的。先進(jìn)先出調(diào)度使響應(yīng)時(shí)間的變化較小,因此它比其它大多數(shù)調(diào)度都可預(yù)測(cè)。由于這種調(diào)度方法不能保證良好的響應(yīng)時(shí)間,在處理交互式用戶時(shí)很少用這種方法。在當(dāng)今系統(tǒng)中,先進(jìn)先出很少作為調(diào)度模式,而是常常嵌套在其它的調(diào)度模式中。 </p><p>  2.2短

104、作業(yè)優(yōu)先調(diào)度算法</p><p>  短作業(yè)優(yōu)先調(diào)度算法SJF,是指對(duì)短作業(yè)或短進(jìn)程優(yōu)先調(diào)度的算法。短作業(yè)(SJF)的調(diào)度算法可以照顧到實(shí)際上在所有作業(yè)中占很大比例的短作業(yè),使它們能比長(zhǎng)作業(yè)優(yōu)先執(zhí)行。當(dāng)程序運(yùn)行選擇些算法時(shí),我們可以輸入要打開的文件名,從打開的文件中按照作業(yè)依次寫入文件的順序把已寫入文件的作業(yè)流信息調(diào)入到內(nèi)存中,然后按照作業(yè)的運(yùn)行時(shí)間將其從小到大依次利用鏈表鏈接起來,按照鏈表鏈接的順序依次運(yùn)行短作

105、業(yè),并求出其每個(gè)作業(yè)的開始時(shí)間、完成時(shí)間、周轉(zhuǎn)時(shí)間。最后求出平均周轉(zhuǎn)時(shí)間。</p><p>  2.3高響應(yīng)比優(yōu)先調(diào)度算法</p><p>  高響應(yīng)比優(yōu)先調(diào)度算法XYB,是通過計(jì)算出作業(yè)的優(yōu)先權(quán),比較哪個(gè)作業(yè)的優(yōu)先權(quán)最大就采用本調(diào)度算法運(yùn)行哪個(gè)作業(yè),優(yōu)先權(quán)的計(jì)算工公式為:優(yōu)先權(quán)=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間。當(dāng)程序運(yùn)行選擇些算法時(shí),我們可以輸入要打開的文件名,從打開的文件中按

106、照作業(yè)依次寫入文件的順序把已寫入文件的作業(yè)流信息調(diào)入到內(nèi)存中,然后利用循環(huán)依次求出每個(gè)作業(yè)的優(yōu)先權(quán),依次把優(yōu)先權(quán)最大的作業(yè)采用鏈表鏈接起來,按照鏈表鏈接的順序依次運(yùn)行高響應(yīng)比作業(yè),并求出其每個(gè)作業(yè)的開始時(shí)間、完成時(shí)間、周轉(zhuǎn)時(shí)間。最后求出平均周轉(zhuǎn)時(shí)間。由于等待時(shí)間與服務(wù)時(shí)間之和就是系統(tǒng)對(duì)該作業(yè)的響應(yīng)時(shí)間,故該優(yōu)先權(quán)又相當(dāng)于響應(yīng)比Rp。據(jù)此,又可表示為: Rp=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間=響應(yīng)時(shí)間/要求服務(wù)時(shí)間。</p&

107、gt;<p>  通過優(yōu)先權(quán)計(jì)算公式可以看出:如果作業(yè)等待時(shí)間相同,則要求運(yùn)行的時(shí)間愈短,因而算法有利于短作業(yè);當(dāng)要求運(yùn)行的時(shí)間相同時(shí),作業(yè)的優(yōu)先權(quán)決定于其等待時(shí)間,因而是實(shí)現(xiàn)了先來先服務(wù);對(duì)于長(zhǎng)作業(yè),當(dāng)其等待時(shí)間足夠長(zhǎng)時(shí),其優(yōu)先權(quán)便可升到很高,從而也右獲得處理機(jī)。所以,該算法既照顧了短作業(yè),又考慮了作業(yè)到達(dá)的先后次序,也不會(huì)使長(zhǎng)作業(yè)長(zhǎng)期得不到服務(wù)。因此,該算法彌補(bǔ)了前兩種算法的不足之處,但在利用該算法進(jìn)行調(diào)度作業(yè)時(shí),第個(gè)

108、作業(yè)的響應(yīng)比的計(jì)算也是很復(fù)雜的。</p><p>  響應(yīng)比R定義如下: R =(W+T)/T = 1+W/T。其中T為該作業(yè)估計(jì)需要的執(zhí)行時(shí)間,W為作業(yè)在后備狀態(tài)隊(duì)列中的等待時(shí)間。每當(dāng)要進(jìn)行作業(yè)調(diào)度時(shí),系統(tǒng)計(jì)算每個(gè)作業(yè)的響應(yīng)比,選擇其中R最大者投入執(zhí)行。這樣,即使是長(zhǎng)作業(yè),隨著它等待時(shí)間的增加,W / T也就隨著增加,也就有機(jī)會(huì)獲得調(diào)度執(zhí)行。這種算法是介于FCFS和SJF之間的一種折中算法。由于長(zhǎng)作業(yè)也有機(jī)會(huì)投

109、入運(yùn)行,在同一時(shí)間內(nèi)處理的作業(yè)數(shù)顯然要少于SJF法,從而采用HRN方式時(shí)其吞吐量將小于采用SJF 法時(shí)的吞吐量。另外,由于每次調(diào)度前要計(jì)算響應(yīng)比,系統(tǒng)開銷也要相應(yīng)增加。</p><p><b>  第3章 程序分析</b></p><p>  當(dāng)程序運(yùn)行時(shí)輸出主界面,在主界面中提供了調(diào)用FCFS先來先服務(wù)優(yōu)先調(diào)度算法、SJF短作業(yè)優(yōu)先調(diào)度算法、XYB高響應(yīng)比優(yōu)先調(diào)度算

110、法、創(chuàng)建文件(輸入數(shù)據(jù)并寫入文件中)、判斷最佳算法、退出此程序。</p><p><b>  3.1系統(tǒng)操作</b></p><p>  第一種操作:先來先服務(wù)調(diào)度算法,程序運(yùn)行時(shí)輸入要進(jìn)行調(diào)度的作業(yè)文件名,之后用先來先服務(wù)調(diào)度算法調(diào)度作業(yè)。</p><p>  第二種操作:短作業(yè)優(yōu)先調(diào)度算法,程序運(yùn)行時(shí)輸入要進(jìn)行調(diào)度的作業(yè)文件名,之后用短作業(yè)

111、優(yōu)先調(diào)度算法調(diào)度作業(yè)。</p><p>  第三種操作:高響應(yīng)比優(yōu)先調(diào)度算法,程序運(yùn)行時(shí)輸入要進(jìn)行調(diào)度的作業(yè)文件名,之后用高響應(yīng)比優(yōu)先調(diào)度算法調(diào)度作業(yè)。</p><p>  第四種操作:創(chuàng)建文件,可輸入一批作業(yè)的數(shù)據(jù),并且把數(shù)據(jù)保存在文本文件以免數(shù)據(jù)丟失。以后每次調(diào)度算法時(shí),可直接運(yùn)用此文件中的數(shù)據(jù)信息。</p><p>  第五種操作:判斷最佳算法,調(diào)度完三種調(diào)度

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論