2021考研計(jì)算機(jī)操作系統(tǒng)知識點(diǎn)總結(jié)全面詳細(xì)_第1頁
2021考研計(jì)算機(jī)操作系統(tǒng)知識點(diǎn)總結(jié)全面詳細(xì)_第2頁
2021考研計(jì)算機(jī)操作系統(tǒng)知識點(diǎn)總結(jié)全面詳細(xì)_第3頁
2021考研計(jì)算機(jī)操作系統(tǒng)知識點(diǎn)總結(jié)全面詳細(xì)_第4頁
2021考研計(jì)算機(jī)操作系統(tǒng)知識點(diǎn)總結(jié)全面詳細(xì)_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2021考研計(jì)算機(jī)基礎(chǔ)課程操作系統(tǒng)知識點(diǎn)總結(jié)第1章操作系統(tǒng)概述11操作系統(tǒng)的概念、特征、功能和提供的服務(wù)11.2操作系統(tǒng)的發(fā)展與分類31.3操作系統(tǒng)的運(yùn)行環(huán)境61.4操作系統(tǒng)體系結(jié)構(gòu)8第2章進(jìn)程管理92進(jìn)程與線程92.2處理機(jī)調(diào)度1823同步與互斥232.4死鎖36第3章內(nèi)存管理443內(nèi)存管理基礎(chǔ)443.2虛擬內(nèi)存管理53第4章文件管理574文件系統(tǒng)基礎(chǔ)574.2文件系統(tǒng)實(shí)現(xiàn)604.3磁盤組織與管理64第5章輸入輸出管理665I/O管理概述665.2 I/O核心子系統(tǒng)68第6章總結(jié)71第章 操作系統(tǒng)概述1.1操作系統(tǒng)的概念、特征、功能和提供的服務(wù)1.1.1操作系統(tǒng)的概念操作系統(tǒng)的目標(biāo)1) 方便

2、性(用戶的觀點(diǎn))提供良好的、一致的用戶接口,彌補(bǔ)硬件系統(tǒng)的類型和數(shù)量差別,使計(jì)算機(jī)更容易使用。2) 有效性(系統(tǒng)管理人員的觀點(diǎn))使CPU、I/O設(shè)備和存儲空間得到有效利用:管理和分配硬件、軟件資源,介理地組織汁算機(jī)的工作流程。3) 可擴(kuò)充性O(shè)S應(yīng)采用層次化結(jié)構(gòu),以便于增加新的功能層次和模塊,并能修改老的功能層次和模塊。4) 開放性遵循標(biāo)準(zhǔn)規(guī)范,方便地實(shí)現(xiàn)互連,實(shí)現(xiàn)應(yīng)用的可移植性和互操作性。開放性是指系統(tǒng)能遵循世界標(biāo)準(zhǔn)規(guī) 范,特別是遵循開放系統(tǒng)互連(OSI)國際標(biāo)準(zhǔn)。凡遵循國際標(biāo)準(zhǔn)所開發(fā)的硬件和軟件,均能彼此兼容,可方 便地實(shí)現(xiàn)互連。1.1.2操作系統(tǒng)的特征操作系統(tǒng)具有并發(fā)、共享、虛擬和不確泄性

3、四大特征。英中,最重要的是并發(fā)特征,英他三個特征都是 以并發(fā)為前提的。(1) 并發(fā)(Concurrence)正是系統(tǒng)中的程序能并發(fā)執(zhí)行這一特征,才使得OS能有效地提高系統(tǒng)中的資源利用率,增加系統(tǒng)的 吞吐雖:。并行性和并發(fā)性是既相似又有區(qū)別的兩個概念。并行性是指兩個或多個事件在同一時刻發(fā)生。并發(fā)性是 指兩個或多個事件在同一時間間隔內(nèi)發(fā)生。(2) 共享(Sharing)一般情況下的共享與操作系統(tǒng)環(huán)境下的共享其含義并不完全相同。在操作系統(tǒng)環(huán)境下,所謂共享 (Sharing),是指系統(tǒng)中的資源可供內(nèi)存中多個并發(fā)執(zhí)行的進(jìn)程(線程)共同使用,相應(yīng)地,把這種資源共同使 用稱為資源共享,或稱為資源復(fù)用。1.

4、互斥共享方式2. 同時訪問方式(3) 虛擬(Virtual)操作系統(tǒng)中的所謂"虛擬” (Virtual),是指通過某種技術(shù)把一個物理實(shí)體變?yōu)槿舾蓚€邏輯上的對應(yīng)物。 物理實(shí)體(前者)是實(shí)的,即實(shí)際存在的,而后者是虛的,僅是用戶感覺上的東西。相應(yīng)地,用于實(shí)現(xiàn)虛擬的 技術(shù)稱為虛擬技術(shù)。在操作系統(tǒng)中利用了兩種方式實(shí)現(xiàn),即時分復(fù)用技術(shù)和空分復(fù)用技術(shù)。(4)異步(Asynchronism)多道程序環(huán)境下,系統(tǒng)允許多個進(jìn)程并發(fā)執(zhí)行。單處理機(jī)環(huán)境下,由于系統(tǒng)中只有一臺處理機(jī),因而每 次只允許一個進(jìn)程執(zhí)行,其余進(jìn)程只能等待。由于資源等因素的限制,使進(jìn)程的執(zhí)行通常都不可能"一氣呵 成”,而是以

5、“停停走走”的方式運(yùn)行。1.1.3操作系統(tǒng)的功能傳統(tǒng)的OS中應(yīng)具有處理機(jī)管理、存儲器管理、設(shè)備管理和文件管理等基本功能。為了方便用戶使用 OS,還需向用戶提供方便的用戶接口。(1)處理機(jī)管理功能1. 進(jìn)程控制2. 進(jìn)程同步3. 進(jìn)程通信4. 調(diào)度1)作業(yè)調(diào)度。2)進(jìn)程調(diào)度。(2)存儲器管理功能1. 內(nèi)存分配內(nèi)存分配的主要任務(wù)是:1)為每道程序分配內(nèi)存空間,使它們“各得其所”。2)提高存儲器的利用率,盡量減少不可用的內(nèi)存空間(碎片)。3)允許正在運(yùn)行的程序申請附加的內(nèi)存空間,以適應(yīng)程序和數(shù)據(jù)動態(tài)增長的需要。OS在實(shí)現(xiàn)內(nèi)存分配時,可采取兩種方式:1)靜態(tài)分配方式。每個作業(yè)的內(nèi)存空間是在作業(yè)裝入時確

6、定的,在作業(yè)裝入后的整個運(yùn)行期間不允許 該作業(yè)再申請新的內(nèi)存空間,也不允許作業(yè)在內(nèi)存中“移動”。2)動態(tài)分配方式。每個作業(yè)所要求的基本內(nèi)存空間雖然也是在裝入時確定的,但允許作業(yè)在運(yùn)行過程 中繼續(xù)申請新的附加內(nèi)存空間,以適應(yīng)程序和數(shù)據(jù)的動態(tài)增長,也允許作業(yè)在內(nèi)存中'移動”。2. 內(nèi)存保護(hù)內(nèi)存保護(hù)的主要任務(wù)是: 確保每道用戶程序都僅在自己的內(nèi)存空間內(nèi)運(yùn)行,彼此互不干擾。 絕不允許用戶程序訪問操作系統(tǒng)的程序和數(shù)據(jù),也不允許用戶程序轉(zhuǎn)移到非共享的其它用戶程序中 去執(zhí)行。3. 地址映射4. 內(nèi)存擴(kuò)充為了能在邏輯上擴(kuò)充內(nèi)存,系統(tǒng)必須設(shè)置內(nèi)存擴(kuò)充機(jī)制(包含少量的硬件),用于實(shí)現(xiàn)下述各功能:1)請求調(diào)

7、入功能。2)置換功能。(3)設(shè)備管理功能設(shè)備管理的主要任務(wù)如下:1)完成用戶進(jìn)程提岀的"0請求,為用戶進(jìn)程分配所需的I/O設(shè)備,并完成指泄的I/O操作。2)提高CPU和I/O設(shè)備的利用率,提高I/O速度,方便用戶使用I/O設(shè)備。 設(shè)備管理應(yīng)具有緩沖管理、設(shè)備分配和設(shè)備處理以及虛擬設(shè)備等功能。1. 緩沖管理2. 設(shè)備分配3. 設(shè)備處理(4)文件管理功能1. 文件存儲空間的管理2. 目錄管理3. 文件的讀/寫管理和保護(hù)1)文件的讀/寫管理。2)文件保護(hù)。1.1.4操作系統(tǒng)所能提供的服務(wù)1.OS作為用戶與計(jì)算機(jī)硬件系統(tǒng)之間的接口OS處于用戶與計(jì)算機(jī)硬件系統(tǒng)之間,用戶通過OS來使用計(jì)算機(jī)系統(tǒng)

8、。用戶在OS幫助下能夠方便、 快捷、可靠地操縱計(jì)算機(jī)硬件和運(yùn)行自己的程序。1)命令方式。這是指由OS提供了一組聯(lián)機(jī)應(yīng)用程序。2)系統(tǒng)調(diào)用方式。OS提供了一組系統(tǒng)調(diào)用,用戶可在自己的應(yīng)用程序中通過相應(yīng)的系統(tǒng)調(diào)用,來實(shí)現(xiàn) 與操作系統(tǒng)的通信,并取得它的服務(wù)。3)圖形、窗口方式。這是當(dāng)前使用最為方便、最為廣泛的接口,它允許用戶通過屏幕上的窗口和圖標(biāo)來 實(shí)現(xiàn)與操作系統(tǒng)的通信,并取得它的服務(wù)。2.OS作為計(jì)算機(jī)系統(tǒng)資源的管理者硬件和軟件資源分為四類:處理機(jī)、存儲器、I/O設(shè)備和文件(數(shù)據(jù)和程序)。OS的主要功能是對這類 資源進(jìn)行有效的管理:1)處理機(jī)管理是用于分配和控制處理機(jī):2)存儲器管理主要負(fù)責(zé)內(nèi)存的

9、分配與回收:3)I/O設(shè)備管理是負(fù)責(zé)I/O設(shè)備的分配(回收)與操縱:4)文件管理是用于實(shí)現(xiàn)對文件的存取、共享和保護(hù)。OS的確是計(jì)算機(jī)系統(tǒng)資源的管理者。3.OS實(shí)現(xiàn)了對計(jì)算機(jī)資源的抽象1.2操作系統(tǒng)的發(fā)展與分類1.2.1操作系統(tǒng)的發(fā)展(1)未配置操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)1. 人工操作方式早期的操作方式是由程序員將事先已穿孔的紙帶(或卡片),裝入紙帶輸入機(jī)(或卡片輸入機(jī)),再啟動它 們將紙帶(或卡片)上的程序和數(shù)據(jù)輸入計(jì)算機(jī),然后啟動il算機(jī)運(yùn)行。僅當(dāng)程序運(yùn)行完畢并取走訃算結(jié)果后, 才允許下一個用戶上機(jī)。缺點(diǎn):1) 用戶獨(dú)占全機(jī),即一臺計(jì)算機(jī)的全部資源由上機(jī)用戶所獨(dú)占。2) CPU等待人工操作。當(dāng)用戶

10、進(jìn)行裝帶(卡)、卸帶(卡)等人工操作時,CPU及內(nèi)存等資源是空閑的。2.脫機(jī)輸入/輸岀(Off-Line I/O)方式為了解決人機(jī)矛盾及CPU和I/O設(shè)備之間速度不匹配的矛盾,20世紀(jì)50年代末出現(xiàn)了脫機(jī)I/O技術(shù)。該技術(shù)是事先將裝有用戶程序和數(shù)據(jù)的紙帶裝入紙帶輸入機(jī),在一臺外用機(jī)的控制下,把紙帶(卡片)上 的數(shù)據(jù)(程序)輸入到磁帶上。當(dāng)CPU需要這些程序和數(shù)據(jù)時,再從磁帶上髙速地調(diào)入內(nèi)存。減少了 CPU 的空閑時間,提髙I/O速度。(2) 單道批處理系統(tǒng)1. 單道批處理系統(tǒng)(Simple Batch Processing System)的處理過程為實(shí)現(xiàn)對作業(yè)的連續(xù)處理,需要先把一批作業(yè)以脫機(jī)

11、方式輸入到磁帶上,并在系統(tǒng)中配上監(jiān)督程序 (Monitor),在它的控制下,使這批作業(yè)能一個接一個地連續(xù)處理。英自動處理過程是:首先,由監(jiān)督程序?qū)?磁帶上的第一個作業(yè)裝入內(nèi)存,并把運(yùn)行控制權(quán)交給該作業(yè)。當(dāng)該作業(yè)處理完成時,又把控制權(quán)交還給監(jiān)督 程序,再由監(jiān)督程序把磁帶(盤)上的第二個作業(yè)調(diào)入內(nèi)存。計(jì)算機(jī)系統(tǒng)就這樣自動地一個作業(yè)一個作業(yè)地進(jìn) 行處理,直至磁帶(盤)上的所有作業(yè)全部完成,這樣便形成了早期的批處理系統(tǒng)。由于系統(tǒng)對作業(yè)的處理都 是成批地進(jìn)行的,且在內(nèi)存中始終只保持一道作業(yè),故稱此系統(tǒng)為單道批處理系統(tǒng)(Simple Batch Processing System) o2. 單道批處理系統(tǒng)

12、的缺點(diǎn)系統(tǒng)中的資源得不到充分的利用。因?yàn)樵趦?nèi)存中僅有一道程序,每逢該程序在運(yùn)行中發(fā)岀I/O請求后, CPU便處于等待狀態(tài),必須在其I/O完成后才繼續(xù)運(yùn)行。I/O設(shè)備的低速性,更使CPU的利用率顯著降低。 如圖1-5所示,在t2t3、t6t7時間間隔內(nèi)CPU空閑。中斷請求V0中騎求朋掰一亠 啟動K) K)完成啟動1/0 I/O完成L-1r-15r-1躲中斷価邸 緘中斷圖1-1單道程序的運(yùn)行情況(3) 多道批處理系統(tǒng)(Multiprogrammed Batch Processing System)1. 多道程序設(shè)計(jì)的基本概念為了進(jìn)一步提高資源的利用率和系統(tǒng)吞吐量,在20世紀(jì)60年代中期引入了多道程

13、序設(shè)計(jì)技術(shù),由此形 成了多道批處理系統(tǒng)。在該系統(tǒng)中,用戶所提交的作業(yè)都先存放在外存上并排成一個隊(duì)列,稱為“后備隊(duì) 列”;然后,由作業(yè)調(diào)度程序按一左的算法從后備隊(duì)列中選擇若干個作業(yè)調(diào)入內(nèi)存,使它們共享CPU和系 統(tǒng)中的各種資源。圖1-2多道程序的運(yùn)行情況2. 多逍批處理系統(tǒng)的優(yōu)缺點(diǎn)多道批處理系統(tǒng)的優(yōu)缺點(diǎn)如下:1)資源利用率高。引入多道批處理能使多道程序交替運(yùn)行,以保持CPU處于忙碌狀態(tài):在內(nèi)存中裝 入多道程序可提高內(nèi)存的利用率;此外還可以提髙I/O設(shè)備的利用率。2)系統(tǒng)吞吐疑大。 CPU和其它資源保持“忙碌”狀態(tài); 僅當(dāng)作業(yè)完成時或運(yùn)行不下去時才進(jìn)行切換,系統(tǒng)開銷小。3)平均周轉(zhuǎn)時間長。由于作業(yè)

14、要排隊(duì)依次進(jìn)行處理,因而作業(yè)的周轉(zhuǎn)時間較長,通常需幾個小時,甚 至幾天。4)無交互能力。用戶一旦把作業(yè)提交給系統(tǒng)后,直至作業(yè)完成,用戶都不能與自己的作業(yè)進(jìn)彳亍交互, 修改和調(diào)試程序極不方便。3. 多逍批處理系統(tǒng)需要解決的問題多道批處理系統(tǒng)是一種復(fù)雜有效的系統(tǒng),為使系統(tǒng)中的多道程序間能協(xié)調(diào)地運(yùn)行,系統(tǒng)必須解決下述一 系列問題:1)處理機(jī)爭用問題。既要能滿足各道程序運(yùn)行的需要,又要能提髙處理機(jī)的利用率。2)內(nèi)存分配和保護(hù)問題。系統(tǒng)應(yīng)能為每道程序分配必要的內(nèi)存空間,使它們“各得其所”,且不會因某 道程序出現(xiàn)異常情況而破壞其它程序。3)I/O設(shè)備分配問題。系統(tǒng)應(yīng)采取適當(dāng)?shù)牟呗詠矸峙湎到y(tǒng)中的I/O設(shè)備,

15、以達(dá)到既能方便用戶對設(shè)備 的使用,又能提高設(shè)備利用率的目的。4)文件的組織和管理問題。系統(tǒng)應(yīng)能有效地組織存放在系統(tǒng)中的大量的程序和數(shù)據(jù),使它們既便于用 戶使用,又能保證數(shù)據(jù)的安全性。5)作業(yè)管理問題。系統(tǒng)中存在著各種作業(yè)(應(yīng)用程序),系統(tǒng)應(yīng)能對系統(tǒng)中所有的作業(yè)進(jìn)行合理的組織, 以滿足這些作業(yè)用戶的不同要求。6)用戶與系統(tǒng)的接口問題。為使用戶能方便的使用操作系統(tǒng),OS還應(yīng)提供用戶與OS之間的接口。(4)分時系統(tǒng)(Time Sharing System)1. 分時系統(tǒng)的引入推動分時系統(tǒng)形成和發(fā)展的主要動力,是為了滿足用戶對人一機(jī)交互的需求,形成一種新型OS。2. 分時系統(tǒng)實(shí)現(xiàn)中的關(guān)鍵問題在多道批處

16、理系統(tǒng)中,用戶無法與自己的作業(yè)進(jìn)行交互的主要原因是:作業(yè)都先駐留在外存上,即使以 后被調(diào)入內(nèi)存,也要經(jīng)過較長時間的等待后方能運(yùn)行,用戶無法與自己的作業(yè)進(jìn)行交互。1) 及時接收2) 及時處理(5) 實(shí)時系統(tǒng)(Real Time System)1. 實(shí)時系統(tǒng)的類型隨著汁算機(jī)應(yīng)用的普及,實(shí)時系統(tǒng)的類型也相應(yīng)增多,下而列出當(dāng)前常見的幾種:1) 工業(yè)(武器)控制系統(tǒng)。2) 信息査詢系統(tǒng)。3) 多媒體系統(tǒng)。4) 嵌入式系統(tǒng)。2. 實(shí)時任務(wù)的類型1) 周期性實(shí)時任務(wù)和非周期性實(shí)時任務(wù)。2) 硬實(shí)時任務(wù)和軟實(shí)時任務(wù)。1.2.2操作系統(tǒng)的分類1. 單用戶單任務(wù)操作系統(tǒng)1) CP/M2) MS-DOS2. 單用戶

17、多任務(wù)操作系統(tǒng)單用戶多任務(wù)操作系統(tǒng)的含義是,只允許一個用戶上機(jī),但允許用戶把程序分為若干個任務(wù),使它們并 發(fā)執(zhí)行,從而有效地改善了系統(tǒng)的性能。目前在32位微機(jī)上配宜的操作系統(tǒng)基本上都是單用戶多任務(wù)操作 系統(tǒng),其中最有代表性的是由微軟公司推出的Windowso3. 多用戶多任務(wù)操作系統(tǒng)多用戶多任務(wù)操作系統(tǒng)的含義是,允許多個用戶通過各自的終端,使用同一臺機(jī)器,共享主機(jī)系統(tǒng)中的 各種資源,而每個用戶程序又可進(jìn)一步分為幾個任務(wù),使它們能并發(fā)執(zhí)行,從而可進(jìn)一步提高資源利用率和 系統(tǒng)吞吐量。在大、中和小型機(jī)中所配巻的大多是多用戶多任務(wù)操作系統(tǒng),而在32位微機(jī)上,也有不少配巻的是 多用戶多任務(wù)操作系統(tǒng),其中

18、最有代表性的是UNIX OS。1.3操作系統(tǒng)的運(yùn)行環(huán)境1.3.1內(nèi)核態(tài)與用戶態(tài)特權(quán)指令:有少數(shù)指令是為編制系統(tǒng)管理程序?qū)iT設(shè)宜的,只有操作系統(tǒng)才能使用。如果用戶誤用這些 特權(quán)指令,稱為非法指令,將引發(fā)故障中斷。(1) 有關(guān)I/O的指令。(2) 訪問程序狀態(tài)字寄存器的指令。(3) 存取特殊寄存器(如用于內(nèi)存保護(hù)的寄存器)的指令。(4) 其他訪問系統(tǒng)狀態(tài)和直接訪問系統(tǒng)資源的指令等。多數(shù)系統(tǒng)將處理器工作狀態(tài)劃分為內(nèi)核態(tài)和用戶態(tài)。前者一般指操作系統(tǒng)管理程序運(yùn)行的狀態(tài),具有較 高的特權(quán)級別,又稱為特權(quán)態(tài)、系統(tǒng)態(tài)或管態(tài):后者一般指用戶程序運(yùn)行時的狀態(tài),具有較低的特權(quán)級別, 又稱為普通態(tài)、目態(tài)。目態(tài):程序執(zhí)

19、行時不可使用特權(quán)指令,I/O指令、時鐘設(shè)宜、中斷機(jī)制、系統(tǒng)管理等,是用戶程序運(yùn)行 時的狀態(tài),較低的特權(quán)級別,普通態(tài)(普態(tài))、用戶態(tài)。管態(tài):程序執(zhí)行時可以使用特權(quán)指令。執(zhí)行系統(tǒng)管理程序,特權(quán)態(tài)、系統(tǒng)態(tài)、內(nèi)核態(tài)、核心態(tài)。注意:訪管指令不是特權(quán)指令。用戶從用戶態(tài)進(jìn)入內(nèi)核態(tài)必立通過訪管指令。從內(nèi)核態(tài)返回用戶態(tài)可以 修改狀態(tài)字實(shí)現(xiàn)。1.3.2中斷、異常中斷是指程序執(zhí)行過程中,當(dāng)發(fā)生某個事件時,中止CPU上現(xiàn)行程序的運(yùn)行,引出處理該事件的程序 執(zhí)行的過程。從中斷事件的性質(zhì)和激活的手段來說,可以分成兩類:強(qiáng)迫性中斷事件和自愿性中斷事件。強(qiáng)迫性中斷事件不是正在運(yùn)行的程序所期待的,而是由于某種事故或外部請求信息

20、所引起的,分為:機(jī) 器故障中斷事件。程序性中斷事件。外部中斷事件。輸入輸出中斷事件。自愿性中斷事件是正在運(yùn)行的程序 所期待的事件。正在運(yùn)行的程序?qū)Σ僮飨到y(tǒng)有某種需求,一旦機(jī)器執(zhí)行到一條訪管指令時,便自愿停止現(xiàn)行 程序的執(zhí)行而轉(zhuǎn)入訪管中斷處理程序處理。中斷和異常的區(qū)別:中斷是由與現(xiàn)行指令無關(guān)的中斷信號觸發(fā)的(異步的),且中斷的發(fā)生與CPU處在用戶 模式或內(nèi)核模式無關(guān),在兩條機(jī)器指令之間才可響應(yīng)中斷,一般來說,中斷處理程序提供的服務(wù)不是為當(dāng)前進(jìn) 程所需的,如時鐘中斷、硬盤讀寫服務(wù)請求中斷:異常是由處理器正在執(zhí)行現(xiàn)行指令而引起的,一條指令執(zhí)行 期間允許響應(yīng)異常,異常處理程序提供的服務(wù)是為當(dāng)前進(jìn)程所用

21、的。異常包括很多方而,有出錯(fault),也有陷 入(trap)。處理中斷事件的程序稱為中斷處理程序。它的主要任務(wù)是處理中斷事件和恢復(fù)正常操作。不同中斷源對應(yīng) 不同中斷處理程序,故快速找到中斷處理程序的入口地址是一個關(guān)鍵問題。中斷處理程序主要做四項(xiàng)工作:保 護(hù)未被硬件保護(hù)的一些必需的處理狀態(tài)。識別各個中斷源,分析產(chǎn)生中斷的原因。處理發(fā)生的中斷事件?;?復(fù)正常操作。圖1-3中斷處理過程1.3.3系統(tǒng)調(diào)用系統(tǒng)調(diào)用的處理過程是這樣的,當(dāng)系統(tǒng)調(diào)用發(fā)生時,處理器通過一種特殊的機(jī)制,通常是中斷或者異常處 理,把控制流程轉(zhuǎn)移到監(jiān)控程序內(nèi)的一些特定的位宜。同時,處理器模式轉(zhuǎn)變成特權(quán)模式。英次,由監(jiān)控程序 執(zhí)

22、行被請求的功能代碼。這個功能代碼代表著對一段標(biāo)準(zhǔn)程序段的執(zhí)行,用以完成所請求的功能。第三,處理 結(jié)朿之后,監(jiān)控程序恢復(fù)系統(tǒng)調(diào)用之前的現(xiàn)場:把運(yùn)行模式從特權(quán)模式恢復(fù)成為用戶方式:最后將控制權(quán)轉(zhuǎn)移 回原來的用戶程序。1.4操作系統(tǒng)體系結(jié)構(gòu)1. 無結(jié)構(gòu)操作系統(tǒng)2. 模塊化結(jié)構(gòu)OS3. 分層式結(jié)構(gòu)OS4. 微內(nèi)核OS結(jié)構(gòu)(1)微內(nèi)核操作系統(tǒng)的基本概念在微內(nèi)核操作系統(tǒng)中,內(nèi)核是指精心設(shè)計(jì)的、能實(shí)現(xiàn)現(xiàn)代OS最基本核心功能的小型內(nèi)核,微內(nèi)核并非 是一個完整的OS,而只是將操作系統(tǒng)中最基本的部分放入微內(nèi)核,通常包含有與硬件處理緊密相關(guān)的部分:2)基于客戶/服務(wù)器模式3)應(yīng)用"機(jī)制與策略分離”原理4)

23、采用面向?qū)ο蠹夹g(shù)(2).微內(nèi)核的基本功能1)進(jìn)程(線程)管理2)低級存儲器管理3)中斷和陷入處理(3).微內(nèi)核操作系統(tǒng)的優(yōu)點(diǎn)由于微內(nèi)核OS結(jié)構(gòu)是建立在模塊化、層次化結(jié)構(gòu)的基礎(chǔ)上的,并采用了客戶/服務(wù)器模式和面向?qū)ο蟮?程序設(shè)計(jì)技術(shù),具有如下優(yōu)點(diǎn):(1)提高了系統(tǒng)的可擴(kuò)展性。(2)增強(qiáng)了系統(tǒng)的可靠性。(3)可移植性強(qiáng)。(4)提供了對分布式系統(tǒng)的支持。(5)融入了而向?qū)ο蠹夹g(shù)。(4).微內(nèi)核操作系統(tǒng)存在的問題應(yīng)當(dāng)指出,在微內(nèi)核操作系統(tǒng)中,由于采用了非常小的內(nèi)核,客戶/服務(wù)器模式和消息傳遞機(jī)制雖給微 內(nèi)核操作系統(tǒng)帶來了許多優(yōu)點(diǎn),但由此也使微內(nèi)核OS存在著潛在缺點(diǎn),英中最主要的是,較之早期的操作 系統(tǒng)

24、,微內(nèi)核操作系統(tǒng)的運(yùn)行效率有所降低。實(shí)際情況是往往還會引起更多的上下文切換。第2章進(jìn)程管理2.1進(jìn)程與線程2.1.1進(jìn)程的概念1. 程序的順序執(zhí)行一個應(yīng)用程序由若干個程序段組成,每一個程序段完成特定的功能,它們在執(zhí)行時,都需要按照某種先 后次序順序執(zhí)行,僅當(dāng)前一程序段執(zhí)行完后,才運(yùn)行后一程序段。在進(jìn)行計(jì)算時,應(yīng)先運(yùn)行輸入程序,用于 輸入用戶的程序和數(shù)據(jù):然后運(yùn)行計(jì)算程序,對所輸入的數(shù)據(jù)進(jìn)行計(jì)算:最后是運(yùn)行打印程序,打印il算結(jié) 果。用結(jié)點(diǎn)(Node)代表各程序段的操作,其中I代表輸入操作,C代表計(jì)算操作,P為打印操作,用箭頭指 示操作的先后次序。上述的三個程序段間就存在著這樣的前趨關(guān)系:Ii-

25、Ci-Pi,其執(zhí)行的順序可用前趨圖(a)描述。即使是一個程序段,也可能存在著執(zhí)行順序問題,下而示出了一個包含了三條語句的程序段:SI: a =x+y:S2:b=a-5:S3: c =b+l:(a)程序的順序執(zhí)行(b)三條語句的順序執(zhí)行圖2-1程序的執(zhí)行其中,語句S2必須在語句S1后(即a被賦值)才能執(zhí)行,語句S3也只能在b被賦值后才能執(zhí)行,三 條語句存在著這樣的前趨關(guān)系:S1-S2-S3,應(yīng)按前趨(b)所示的順序執(zhí)行。2. 程序順序執(zhí)行時的特征由上所述可以得知,在程序順序執(zhí)行時,具有這樣三個特征: 順序性:指處理機(jī)嚴(yán)格地按照程序所規(guī)定的順序執(zhí)行,即每一操作必須在下一個操作開始之前結(jié)束; 封閉性

26、:指程序在封閉的環(huán)境下運(yùn)行,即程序運(yùn)行時獨(dú)占全機(jī)資源,資源的狀態(tài)(除初始狀態(tài)外)只有 本程序才能改變它,程序一旦開始執(zhí)行,其執(zhí)行結(jié)果不受外界因素影響: 可再現(xiàn)性:指只要程序執(zhí)行時的環(huán)境和初始條件相同,當(dāng)程序重復(fù)執(zhí)行時,不論它是從頭到尾不停 頓地執(zhí)行,還是“停停走走”地執(zhí)行,都可獲得相同的結(jié)果。程序順序執(zhí)行時的這種特性,為程序員檢測和校正程序的錯誤帶來了很大的方便。3. 程序的并發(fā)執(zhí)行一個常見的例子來說明程序的順序執(zhí)行和并發(fā)執(zhí)行。在圖中的輸入程序、計(jì)算程序和打印程序三者之間, 存在著Ii-Ci-Pi這樣的前趨關(guān)系,對一個作業(yè)的輸入、il算和打印三個程序段必須順序執(zhí)行。但若是對一批 作業(yè)進(jìn)行處理時

27、,每道作業(yè)的輸入、計(jì)算和打印程序段的執(zhí)行情況如圖所示。9(3) 進(jìn)程是具有獨(dú)立功能的程序在一個數(shù)據(jù)集合上運(yùn)行的過程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú) 立單位。6.進(jìn)程的特征進(jìn)程和程序是兩個截然不同的概念,除了進(jìn)程具有程序所沒有的PCB結(jié)構(gòu)外,還具有下而一些特征:(1) 動態(tài)性。(2) 并發(fā)性。(3) 獨(dú)立性。(4) 異步性。2.1.2進(jìn)程的狀態(tài)與轉(zhuǎn)換1. 進(jìn)程的三種基本狀態(tài)由于多個進(jìn)程在并發(fā)執(zhí)行時共享系統(tǒng)資源,致使它們在運(yùn)行過程中呈現(xiàn)間斷性的運(yùn)行規(guī)律,所以進(jìn)程在 其生命周期內(nèi)可能具有多種狀態(tài)。每一個進(jìn)程至少應(yīng)處于三種基本狀態(tài)之一:運(yùn)行狀態(tài)(Running):進(jìn)程占用處理機(jī)正在運(yùn)行其程序。單處

28、理機(jī)系統(tǒng)中只能有一個進(jìn)程處于運(yùn)行狀態(tài), 多處理機(jī)系統(tǒng)中可能有多個進(jìn)程處于運(yùn)行狀態(tài)。阻塞狀態(tài)(Blocked):也叫等待或睡眠狀態(tài),是進(jìn)程由于等待某種事件的發(fā)生而處于暫停運(yùn)行的狀態(tài)。 如進(jìn)程因等待輸入/輸出的完成、等待數(shù)據(jù)到達(dá)、等待緩沖空間等。就緒狀態(tài)(Ready):進(jìn)程已分配到除處理機(jī)以外的所有必要資源,具備了運(yùn)行的條件,可能會有多個進(jìn) 程處于就緒狀態(tài),排成就緒隊(duì)列。2. 三種基本狀態(tài)的轉(zhuǎn)換(1) 就緒狀態(tài)到運(yùn)行狀態(tài):調(diào)度程序?yàn)榫途w狀態(tài)的進(jìn)程分配處理機(jī)后,進(jìn)入運(yùn)行狀態(tài)。(2) 運(yùn)行狀態(tài)到阻塞狀態(tài):正在運(yùn)行的進(jìn)程因需要等待某事件而無法運(yùn)行,讓出處理機(jī)。(3) 阻塞狀態(tài)到就緒狀態(tài):進(jìn)程所等待的事件

29、發(fā)生了,進(jìn)程就從阻塞狀態(tài)進(jìn)入就緒狀態(tài)。(4) 運(yùn)行狀態(tài)到就緒狀態(tài):正在運(yùn)行的進(jìn)程因時間片用完而被暫停運(yùn)行:或者在可搶先式調(diào)度方式中,一 個優(yōu)先級髙的進(jìn)程到來后,正在運(yùn)行的優(yōu)先級低的進(jìn)程被強(qiáng)制撤下處理機(jī),轉(zhuǎn)換為就緒狀態(tài)。圖2-4進(jìn)程的三種基本狀態(tài)及其轉(zhuǎn)換3. 創(chuàng)建狀態(tài)和終止?fàn)顟B(tài)1) 創(chuàng)建狀態(tài)2) 終止?fàn)顟B(tài)圖2-5進(jìn)程的五種基本狀態(tài)及轉(zhuǎn)換4. 掛起操作的引入引入掛起操作的原因,是基于系統(tǒng)和用戶的如下需要:(1) 終端用戶的需要。(2) 父進(jìn)程請求。(3) 負(fù)荷調(diào)節(jié)的需要。(4) 操作系統(tǒng)的需要。5. 引入掛起原語操作后三個進(jìn)程狀態(tài)的轉(zhuǎn)換在引入掛起原語Suspend和激活原語Active后,在它們的

30、作用下,進(jìn)程將可能發(fā)生以下幾種狀態(tài)的轉(zhuǎn)換:(1) 活動就緒一靜止就緒。當(dāng)進(jìn)程處于未被掛起的就緒狀態(tài)時,稱此為活動就緒狀態(tài),表示為Readya. 當(dāng)用掛尼原語Suspend將該進(jìn)程掛起后,該進(jìn)程便轉(zhuǎn)變?yōu)殪o止就緒狀態(tài),表示為Readys,處于Readys狀 態(tài)的進(jìn)程不再被調(diào)度執(zhí)行。(2) 活動阻塞一靜止阻塞。當(dāng)進(jìn)程處于未被掛起的阻塞狀態(tài)時,稱它是處于活動阻塞狀態(tài),表示為 Blockcda。當(dāng)用Suspend原語將它掛起后,進(jìn)程便轉(zhuǎn)變?yōu)殪o止阻塞狀態(tài),表示為Blockcds。處于該狀態(tài)的 進(jìn)程在其所期待的事件出現(xiàn)后,將從靜止阻塞變?yōu)殪o止就緒。(3) 靜止就緒一活動就緒。處于Readys狀態(tài)的進(jìn)程,若用

31、激活原語Active激活后,該進(jìn)程將轉(zhuǎn)變?yōu)?Rcadya 狀態(tài)。(4) 靜止阻塞一活動阻塞。處于Blockeds狀態(tài)的進(jìn)程,若用激活原語Active激活后,該進(jìn)程將轉(zhuǎn)變?yōu)?Blockeda 狀態(tài)。6. 引入掛起操作后五個進(jìn)程狀態(tài)的轉(zhuǎn)換引進(jìn)創(chuàng)建和終止?fàn)顟B(tài)后,在進(jìn)程狀態(tài)轉(zhuǎn)換時,與進(jìn)程五狀態(tài)轉(zhuǎn)換相比較,要增加考慮下而的幾種情況:(1) NULL 創(chuàng)建:(2) 創(chuàng)建一活動就緒:(3) 創(chuàng)建一靜止就緒:(4) 執(zhí)行一終止:圖2-6具有掛起狀態(tài)的進(jìn)程狀態(tài)圖圖2-7具有創(chuàng)建、終止和掛起狀態(tài)的進(jìn)程狀態(tài)圖2.1.3進(jìn)程控制所謂原語即原子操作,要么全做,要么不做,一般是通過屏蔽中斷來完成的。1)進(jìn)程創(chuàng)建。crea

32、t2)進(jìn)程撤銷。halt3)進(jìn)程阻塞。block4)進(jìn)程喚醒o wakeup5)進(jìn)程掛起。suspend6)進(jìn)程激活。Active(1)進(jìn)程的創(chuàng)建1. 引起創(chuàng)建進(jìn)程的事件為使程序之間能并發(fā)運(yùn)行,應(yīng)先為它們分別創(chuàng)建進(jìn)程。導(dǎo)致一個進(jìn)程去創(chuàng)建另一個進(jìn)程的典型事件有四類:1)用戶登錄。2)作業(yè)調(diào)度。3)提供服務(wù)。4)應(yīng)用請求。2.進(jìn)程的創(chuàng)建(Creation of Process)在系統(tǒng)中每當(dāng)出現(xiàn)了創(chuàng)建新進(jìn)程的請求后,OS便調(diào)用進(jìn)程創(chuàng)建原語Creat按下述步驟創(chuàng)建一個新進(jìn)程:1)申請空白PCB,為新進(jìn)程申請獲得唯一的數(shù)字標(biāo)識符,并從PCB集合中索取一個空白PCB。2)為新進(jìn)程分配貝運(yùn)行所需的資源,包括

33、各種物理和邏輯資源,如內(nèi)存、文件、I/O設(shè)備和CPU時間等。3)初始化進(jìn)程控制塊(PCB)。4)如果進(jìn)程就緒隊(duì)列能夠接納新進(jìn)程,便將新進(jìn)程插入就緒隊(duì)列。(2)進(jìn)程的終止1. 引起進(jìn)程終 lh(Tennination of Process)的事件1)正常結(jié)朿2)異常結(jié)朿3)外界干預(yù)2. 進(jìn)程的終止過程如果系統(tǒng)中發(fā)生了要求終止進(jìn)程的某事件,OS便調(diào)用進(jìn)程終I上原語,按下述過程去終止指左的進(jìn)程:1)根據(jù)被終止進(jìn)程的標(biāo)識符,從PCB集合中檢索岀該進(jìn)程的PCB,從中讀岀該進(jìn)程的狀態(tài):2)若被終止進(jìn)程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進(jìn)程的執(zhí)行,并宜調(diào)度標(biāo)志為真,用于指示該進(jìn)程被 終止后應(yīng)重新進(jìn)行調(diào)度:3)若該

34、進(jìn)程還有子孫進(jìn)程,還應(yīng)將其所有子孫進(jìn)程也都予以終止,以防它們成為不可控的進(jìn)程4)將被終止進(jìn)程所擁有的全部資源或者歸還給英父進(jìn)程,或者歸還給系統(tǒng):5)將被終止進(jìn)程(PCB)從所在隊(duì)列(或鏈表)中移出,等待其它程序來搜集信息。(3)進(jìn)程的阻塞與喚醒1. 引起進(jìn)程阻塞和喚醒的事件有下述幾類事件會引起進(jìn)程阻塞或被喚醒:1) 向系統(tǒng)請求共享資源失敗。2) 等待某種操作的完成。3) 新數(shù)據(jù)尚未到達(dá)。4) 等待新任務(wù)的到達(dá)。2. 進(jìn)程阻塞過程正在執(zhí)行的進(jìn)程,如果發(fā)生了上述某事件,進(jìn)程便通過調(diào)用阻塞原語block將自己阻塞。阻塞是進(jìn)程自 身的一種主動行為。進(jìn)入block過程后,由于該進(jìn)程還處于執(zhí)行狀態(tài),所以應(yīng)

35、先立即停止執(zhí)行,把進(jìn)程控 制塊中的現(xiàn)行狀態(tài)由“執(zhí)行”改為阻塞,并將PCB插入阻塞隊(duì)列。如果系統(tǒng)中設(shè)宜了因不同事件而阻塞的 多個阻塞隊(duì)列,應(yīng)將本進(jìn)程插入到具有相同事件的阻塞隊(duì)列。轉(zhuǎn)調(diào)度程序進(jìn)行重新調(diào)度,將處理機(jī)分配給另 一就緒進(jìn)程,并進(jìn)行切換,亦即,保留被阻塞進(jìn)程的處理機(jī)狀態(tài),按新進(jìn)程的PCB中的處理機(jī)狀態(tài)設(shè)宜CPU 的環(huán)境。3. 進(jìn)程喚醒過程當(dāng)被阻塞進(jìn)程所期待的事件發(fā)生時,比如它所啟動的I/O操作已完成,或英所期待的數(shù)據(jù)已經(jīng)到達(dá),則 由有關(guān)進(jìn)程(比如提供數(shù)據(jù)的進(jìn)程)調(diào)用喚醒原語wakeup,將等待該事件的進(jìn)程喚醒。wake叩執(zhí)行的過程是: 首先把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出,將英P

36、CB中的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將 該P(yáng)CB插入到就緒隊(duì)列中。(4) 進(jìn)程的掛起與激活1. 進(jìn)程的掛起 當(dāng)出現(xiàn)引起進(jìn)程掛起的事件時,系統(tǒng)將利用掛起原語suspend()將指泄進(jìn)程或處于阻塞 狀態(tài)的進(jìn)程掛起。2. 進(jìn)程的激活過程當(dāng)發(fā)生激活進(jìn)程的事件時,系統(tǒng)將利用激活原IS active()將指立進(jìn)程激活。2.1.4進(jìn)程組織1. 進(jìn)程實(shí)體程序:描述進(jìn)程所要完成的功能,特指二進(jìn)制的指令代碼。數(shù)據(jù)集合:程序運(yùn)行所需要的數(shù)據(jù)結(jié)構(gòu)。包括常數(shù),變量,堆,數(shù)據(jù)棧等。 進(jìn)程控制塊:進(jìn)程控制塊包含了進(jìn)程的描述信息、控制信息和資源信息。2. 進(jìn)程控制塊PCB的作用(1) 作為獨(dú)立運(yùn)行基本單位的標(biāo)志。(2) 能

37、實(shí)現(xiàn)間斷性運(yùn)行方式。(3) 提供進(jìn)程管理所需要的信息。(4) 提供進(jìn)程調(diào)度所需要的信息。(5) 實(shí)現(xiàn)與英它進(jìn)程的同步與通信。3. 進(jìn)程控制塊中的信息在進(jìn)程控制塊中,主要包括四個方而信息。1)進(jìn)程標(biāo)識符進(jìn)程標(biāo)識符用于唯一地標(biāo)識一個進(jìn)程。一個進(jìn)程通常有兩種標(biāo)識符:(1) 內(nèi)部標(biāo)識符。在所有的操作系統(tǒng)中,都為每一個進(jìn)程賦予了一個惟一的數(shù)字標(biāo)識符,它通常是一個 進(jìn)程的序號。設(shè)置內(nèi)部標(biāo)識符主要是為了方便系統(tǒng)使用。(2) 外部標(biāo)識符。它由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是由用戶(進(jìn)程)在訪問該進(jìn)程時使 用。為了描述進(jìn)程的家族關(guān)系,還應(yīng)設(shè)宜父進(jìn)程標(biāo)識及子進(jìn)程標(biāo)識。此外,還可設(shè)宜用戶標(biāo)識,以指示擁有

38、該進(jìn)程的用戶。2) 處理機(jī)狀態(tài)處理機(jī)狀態(tài)信息主要是由處理機(jī)的各種寄存器中的內(nèi)容組成的。處理機(jī)在運(yùn)行時,許多信息都放在寄存 器中。當(dāng)處理機(jī)被中斷時,所有這些信息都必須保存在PCB中,以便在該進(jìn)程重新執(zhí)行時,能從斷點(diǎn)繼續(xù) 執(zhí)行。3) 進(jìn)程調(diào)度信息在OS進(jìn)行調(diào)度時,必須了解進(jìn)程的狀態(tài)及有關(guān)進(jìn)程調(diào)度的信息.4) 進(jìn)程控制信息2.1.5進(jìn)程通信進(jìn)程通信是指進(jìn)程之間的信息交換。后續(xù)P、V操作稱為低級通信。高級通信是指進(jìn)程之間以較髙的效 率傳送大量數(shù)據(jù)的通信方式。高級通信方式可分為三大類:共享內(nèi)存、消息傳遞以及管道機(jī)制。2.1.6線程概念與多線程模型(1) 線程的引入在OS中引入進(jìn)程的目的是為了使多個程序能

39、并發(fā)執(zhí)行,以提高資源利用率和系統(tǒng)吞吐量,引入線程, 則是為了減少程序在并發(fā)執(zhí)行時所付出的時空開銷,使OS具有更好的并發(fā)性。1. 進(jìn)程的兩個基本屬性首先讓我們來回顧進(jìn)程的兩個基本屬性: 進(jìn)程是一個可擁有資源的獨(dú)立單位,一個進(jìn)程要能獨(dú)立運(yùn)行,它必須擁有一左的資源,包括用于存 放程序正文、數(shù)據(jù)的磁盤和內(nèi)存地址空間,以及它在運(yùn)行時所需要的I/O設(shè)備、已打開的文件、信號量等; 進(jìn)程同時又是一個可獨(dú)立調(diào)度和分派的基本單位,一個進(jìn)程要能獨(dú)立運(yùn)行,它還必須是一個可獨(dú)立 調(diào)度和分派的基本單位。2. 線程一一作為調(diào)度和分派的基本單位如何能使多個程序更好地并發(fā)執(zhí)行,同時又盡量減少系統(tǒng)的開銷,已成為近年來設(shè)訃操作系統(tǒng)

40、時所追求 的重要目標(biāo)。有不少研究操作系統(tǒng)的學(xué)者們想到,要設(shè)法將進(jìn)程的上述兩個屬性分開,由OS分開處理,亦 即并不把作為調(diào)度和分派的基本單位也同時作為擁有資源的單位,以做到“輕裝上陣”;而對于擁有資源的 基本單位,又不對之施以頻繁的切換。正是在這種思想的指導(dǎo)下,形成了線程的概念。(2) 線程與進(jìn)程的比較1調(diào)度的基本單位進(jìn)程內(nèi),切換代價低在同一進(jìn)程中,線程的切換不會引起進(jìn)程的切換,但從一個進(jìn)程中的線程切換到対一個進(jìn)程中的線程時, 將會引起進(jìn)程的切換。2.并發(fā)性在一個進(jìn)程中的多個線程之間亦可并發(fā)執(zhí)行,使得操作系統(tǒng)具有更好的并發(fā)性。3. 擁有資源線程自己不擁有系統(tǒng)資源(也有一點(diǎn)必不可少的資源),但它可

41、以訪問其隸屬進(jìn)程的資源,即一個進(jìn)程的 代碼段、數(shù)拯段及所擁有的系統(tǒng)資源,線程控制塊TCB.4. 獨(dú)立性,相對進(jìn)程來言,獨(dú)立性低5. 系統(tǒng)開銷切換代價而言,進(jìn)程也是遠(yuǎn)高于線程的。由于一個進(jìn)程中的多個線程具有相同的地址空間,在同步和通信的實(shí)現(xiàn)方而線程也比進(jìn)程容易6. 支持多處理機(jī)系統(tǒng)多線程多處理器(3)線程的狀態(tài)和線程控制塊1. 線程運(yùn)行的三個狀態(tài)與傳統(tǒng)的進(jìn)程一樣,在各線程之間也存在著共享資源和相互合作的制約關(guān)系,致使線程在運(yùn)行時也具有 間斷性。2. 線程控制塊TCB如同每個進(jìn)程有一個進(jìn)程控制塊一樣,系統(tǒng)也為每個線程配置了一個線程控制塊TCB,將所有用于控 制和管理線程的信息記錄在線程控制塊中。

42、線程標(biāo)識符 寄存器狀態(tài),它包括程序計(jì)數(shù)器PC和堆棧指針中的內(nèi)容:堆棧,在堆棧中通常保存有局部變量和 返回地址: 線程運(yùn)行狀態(tài),用于描述線程正處于何種運(yùn)行狀態(tài): 優(yōu)先級,描述線程執(zhí)行的優(yōu)先程度: 線程專有存儲器,用于保存線程自己的局部變雖:拷貝; 信號屏蔽,即對某些信號加以屏蔽。(4)線程的實(shí)現(xiàn)方式線程已在許多系統(tǒng)中實(shí)現(xiàn),但齊系統(tǒng)的實(shí)現(xiàn)方式并不完全相同。在有的系統(tǒng)中,特別是一些數(shù)據(jù)庫管理 系統(tǒng),如infomix所實(shí)現(xiàn)的是用戸級線程;另一些系統(tǒng)(如Macintosh和OS/2操作系統(tǒng))所實(shí)現(xiàn)的是內(nèi)核支持 線程:還有一些系統(tǒng)如Solaris操作系統(tǒng),則同時實(shí)現(xiàn)了這兩種類型的線程。1. 內(nèi)核支持線程

43、KST(Kcrnel Supported Threads)在OS中的所有進(jìn)程,無論是系統(tǒng)進(jìn)程還是用戶進(jìn)程,都是在操作系統(tǒng)內(nèi)核的支持下運(yùn)行的,是與內(nèi)核 緊密相關(guān)的。內(nèi)核支持線程KST同樣也是在內(nèi)核的支持下運(yùn)行的,它們的創(chuàng)建、阻塞、撤消和切換等,也 都是在內(nèi)核空間實(shí)現(xiàn)的。為了對內(nèi)核線程進(jìn)行控制和管理,在內(nèi)核空間也為每一個內(nèi)核線程設(shè)置了一個線程 控制塊,內(nèi)核根據(jù)該控制塊而感知某線程的存在,并對英加以控制。當(dāng)前大多數(shù)OS都支持內(nèi)核支持線程。 這種線程實(shí)現(xiàn)方式主要有四個主要優(yōu)點(diǎn):1)在多處理器系統(tǒng)中,內(nèi)核能夠同時凋度同一進(jìn)程中的多個線程并行執(zhí)行:2)如果進(jìn)程中的一個線程被阻塞了,內(nèi)核可以訓(xùn)度該進(jìn)程中的英

44、它線程占有處理器運(yùn)行,也可以運(yùn)行 其它進(jìn)程中的線程:3)內(nèi)核支持線程具有很小的數(shù)據(jù)結(jié)構(gòu)和堆棧,線程的切換比較快,切換開銷小:4)內(nèi)核本身也可以采用多線程技術(shù),可以提高系統(tǒng)的執(zhí)行速度和效率。302. 用戶級線程 ULT(User Level Threads)用戶級線程是在用戶空間中實(shí)現(xiàn)的。對線程的創(chuàng)建、撤消、同步與通信等功能,都無需內(nèi)核的支持, 即用戶級線程是與內(nèi)核無關(guān)的。在一個系統(tǒng)中的用戶級線程的數(shù)目可以達(dá)到數(shù)百個至數(shù)千個。由于這些線程 的任務(wù)控制塊都是設(shè)置在用戶空間,而線程所執(zhí)行的操作也無需內(nèi)核的幫助,因而內(nèi)核完全不知道用戶級線 程的存在。使用用戶級線程方式有許多優(yōu)點(diǎn):1)線程切換不需要轉(zhuǎn)換

45、到內(nèi)核空間。2)調(diào)度算法可以是進(jìn)程專用的。3)用戶級線程的實(shí)現(xiàn)與OS平臺無關(guān),因?yàn)閷τ诰€程管理的代碼是屬于用戶程序的一部分,所有的應(yīng) 用程序都可以對之進(jìn)行共宇。而用戶級線程方式的主要缺點(diǎn)則在于:1)系統(tǒng)調(diào)用的阻塞問題。在基于進(jìn)程機(jī)制的OS中,大多數(shù)系統(tǒng)調(diào)用將使進(jìn)程阻塞,因此,當(dāng)線程執(zhí)行 一個系統(tǒng)調(diào)用時,不僅該線程被阻塞,而且,進(jìn)程內(nèi)的所有線程會被阻塞。而在內(nèi)核支持線程方式中,則進(jìn) 程中的其它線程仍然可以運(yùn)行。2)在單純的用戶級線程實(shí)現(xiàn)方式中,多線程應(yīng)用不能利用多處理機(jī)進(jìn)行多重處理的優(yōu)點(diǎn),內(nèi)核每次分 配給一個進(jìn)程的僅有一個CPU.因此,進(jìn)程中僅有一個線程能執(zhí)行,在該線程放棄CPU之前,其它線程只

46、 能等待。3. 組合方式有些OS把用戶級線程和內(nèi)核支持線程兩種方式進(jìn)行組合,提供了組合方式ULT/KST線程。在組合方 式線程系統(tǒng)中,內(nèi)核支持多個內(nèi)核支持線程的建立、訓(xùn)度和管理,同時,也允許用戶應(yīng)用程序建立、調(diào)度和 管理用戶級線程。用戶空間內(nèi)核空間巾)-對我型圖2-8多線程模型(5)線程的實(shí)現(xiàn)1. 內(nèi)核支持線程的實(shí)現(xiàn)在僅設(shè)置了內(nèi)核支持線程的OS中,一種可能的線程控制方法是,系統(tǒng)在創(chuàng)建一個新進(jìn)程時,便為它 分配一個任務(wù)數(shù)據(jù)區(qū)PTDA(PerTask Data Area),其中包括若干個線程控制塊TCB空間。2. 用戶級線程的實(shí)現(xiàn)1)運(yùn)行時系統(tǒng)(Runtime System)所謂“運(yùn)行時系統(tǒng)”,實(shí)

47、質(zhì)上是用于管理和控制線程的函數(shù)(過程)的集合,其中包括用于創(chuàng)建和撤消線程 的函數(shù)、線程同步和通信的函數(shù),以及實(shí)現(xiàn)線程調(diào)度的函數(shù)等。正因?yàn)橛羞@些函數(shù),才能使用戶級線程與內(nèi) 核無關(guān)。運(yùn)行時系統(tǒng)中的所有函數(shù)都駐留在用戶空間,并作為用戶級線程與內(nèi)核之間的接口。2) 內(nèi)核控制線程這種線程又稱為輕型進(jìn)程LWP(Light Weight Process)。每一個進(jìn)程都可擁有多個LWP,同用戶級線程 一樣,每個LWP都有自己的數(shù)據(jù)結(jié)構(gòu)(如TCB),其中包括線程標(biāo)識符、優(yōu)先級、狀態(tài),另外還有棧和局 部存儲區(qū)等。LWP也可以共享進(jìn)程所擁有的資源。LWP可通過系統(tǒng)調(diào)用來獲得內(nèi)核提供的服務(wù),這樣,當(dāng) 一個用戶級線程運(yùn)

48、行時,只須將它連接到一個LWP上,此時它便具有了內(nèi)核支持線程的所有屬性。這種 線程實(shí)現(xiàn)方式就是組合方式。2.2處理機(jī)調(diào)度2.2.1調(diào)度的基本概念(1) 作業(yè)與作業(yè)調(diào)度在多道批處理系統(tǒng)中,作業(yè)是用戶提交給系統(tǒng)的一項(xiàng)相對獨(dú)立的工作。操作員把用戶提交的作業(yè)通過相 應(yīng)的輸入設(shè)備輸入到磁盤存儲器,并保存在一個后備作業(yè)隊(duì)列中。再由作業(yè)調(diào)度程序?qū)⑵鋸耐獯嬲{(diào)入內(nèi)存。1. 作業(yè)和作業(yè)步1) 作業(yè)(Job)o2) 作業(yè)步(Job Step)o2. 作業(yè)控制塊(Job Control Block, JCB)3. 作業(yè)運(yùn)行的三個階段和三種狀態(tài)作業(yè)從進(jìn)入系統(tǒng)到運(yùn)行結(jié)束,通常需要經(jīng)歷收容、運(yùn)行和完成三個階段。相應(yīng)的作業(yè)也

49、就有“后備狀態(tài)”、“運(yùn)行狀態(tài)”和“完成狀態(tài)”。1) 收容階段。2) 運(yùn)行階段。3) 完成階段。(2) 作業(yè)調(diào)度的主要任務(wù)作業(yè)調(diào)度的主要任務(wù)是,根據(jù)JCB中的信息,檢查系統(tǒng)中的資源能否滿足作業(yè)對資源的需求,以及按 照一泄的調(diào)度算法,從外存的后備隊(duì)列中選取某些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進(jìn)程、分配必要的資源。然 后再將新創(chuàng)建的進(jìn)程排在就緒隊(duì)列上等待調(diào)度。作業(yè)訓(xùn)度稱為接納調(diào)度(Admission Scheduling)<>在每次執(zhí)行 作業(yè)調(diào)度時,都需做出以下兩個決定。1. 接納多少個作業(yè)多道程序度2. 接納哪些作業(yè)調(diào)度算法(3) 三級調(diào)度1. 高級調(diào)度(High Level Schedul

50、ing)2. 低級調(diào)度(Low Level Scheduling)3. 中級調(diào)度(Intermediate Scheduling)同時具有三級調(diào)度的調(diào)度隊(duì)列模型:當(dāng)在OS中引入中級調(diào)度后,人們可把進(jìn)程的就緒狀態(tài)分為內(nèi)存就緒(表示進(jìn)程在內(nèi)存中就緒)和外存就緒(進(jìn)程在外存中就緒)。類似地,也可把阻塞狀態(tài)進(jìn)一步分成內(nèi)存阻塞 和外存阻塞兩種狀態(tài)。在調(diào)出操作的作用下,可使進(jìn)程狀態(tài)由內(nèi)存就緒轉(zhuǎn)為外存就緒,由內(nèi)存阻塞轉(zhuǎn)為外存 阻塞:在中級調(diào)度的作用下,又可使外存就緒轉(zhuǎn)為內(nèi)存就緒。作業(yè)調(diào)度進(jìn)程調(diào)度進(jìn)程龍成30交互型作業(yè)爭件出現(xiàn)中級詛度I 就緒,九起隊(duì)列-'iTTii iii率,小起隊(duì)列HIIIIIIH

51、阻那隊(duì)列圖29三級凋度2.2.2調(diào)度的時機(jī).切換和過程1 調(diào)度的時機(jī)正在運(yùn)行的進(jìn)程運(yùn)行完畢或發(fā)生某事件而不能再繼續(xù)運(yùn)行:運(yùn)行中的進(jìn)程因提出輸入/輸出請求而暫停運(yùn)行;在進(jìn)程通信或同步過程中運(yùn)行了某種原語操作,如P操作等:在可搶先式調(diào)度中,有一個比當(dāng)前進(jìn)程優(yōu)先級更髙的進(jìn)程進(jìn)入就緒隊(duì)列: 在時間片輪轉(zhuǎn)法中,時間片用完。2. 進(jìn)程訓(xùn)度的任務(wù)進(jìn)程調(diào)度的任務(wù)主要有三:(1) 保存處理機(jī)的現(xiàn)場信息。(2) 按某種算法選取進(jìn)程。(3) 把處理器分配給進(jìn)程。3. 進(jìn)程調(diào)度的切換和過程為了實(shí)現(xiàn)進(jìn)程調(diào)度,在進(jìn)程調(diào)度機(jī)制中,應(yīng)具有如下三個基本部分。(1) 排隊(duì)器。(2) 分派器。(3) 上下文切換器。2.2.3調(diào)度的

52、基本準(zhǔn)則1.處理機(jī)調(diào)度算法的共同目標(biāo)(1) 資源利用率。為提高系統(tǒng)的資源利用率,應(yīng)使系統(tǒng)中的處理機(jī)和并它所有資源都盡可能地保持忙碌 狀態(tài),處理機(jī)利用率:,CPU有效工作時間CPU的利用率=CPU有效工作時間+ CPU空閑等待時間(2) 公平性。公平性是指應(yīng)使諸進(jìn)程都獲得合理的CPU時間,不會發(fā)生進(jìn)程饑餓現(xiàn)象。公平性是相對 的,對相同類型的進(jìn)程應(yīng)獲得相同的服務(wù);但對于不同類型的進(jìn)程,由于其緊急程度或重要性的不同,則應(yīng) 提供不同的服務(wù)。(3) 平衡性。由于在系統(tǒng)中可能具有多種類型的進(jìn)程,有的屬于計(jì)算型作業(yè),有的屬于I/O型。為使 系統(tǒng)中的CPU和各種外部設(shè)備都能經(jīng)常處于忙碌狀態(tài),調(diào)度算法應(yīng)盡可能保

53、持系統(tǒng)資源使用的平衡性。(4) 策略強(qiáng)制執(zhí)行。對所制訂的策略英中包括安全策略,只要需要,就必須予以準(zhǔn)確地執(zhí)行,即使會造 成某些工作的延遲也要執(zhí)行。2. 批處理系統(tǒng)的目標(biāo)(1) 平均周轉(zhuǎn)時間短。平均周轉(zhuǎn)時間:為了進(jìn)一步反映調(diào)度的性能,更淸晰地描述各進(jìn)程在苴周轉(zhuǎn)時間中,等待和執(zhí)行時間的 具體分配狀況,往往使用帶權(quán)周轉(zhuǎn)時間,即作業(yè)的周轉(zhuǎn)時間T與系統(tǒng)為它提供服務(wù)的時間Ts之比,即二 T/Tso平均帶權(quán)周轉(zhuǎn)時間:(2) 系統(tǒng)吞吐呈:高。(3) 處理機(jī)利用率高。2.2.4調(diào)度方式1) 非搶占方式(Nonpireemptive Mode)2) 搶占方式(Preemptive Mode)2.2.5典型調(diào)度算法

54、1、先來先服務(wù)(FCFS)調(diào)度算法該算法既可用于作業(yè)調(diào)度,也可用于進(jìn)程調(diào)度。當(dāng)在作業(yè)調(diào)度中采用該算法時,系統(tǒng)將按照作業(yè)到達(dá)的 先后次序來進(jìn)行調(diào)度,或者說它是優(yōu)先考慮在系統(tǒng)中等待時間最長的作業(yè),而不管該作業(yè)所需執(zhí)行時間的長 短,從后備作業(yè)隊(duì)列中選擇幾個最先進(jìn)入該隊(duì)列的作業(yè),將它們調(diào)入內(nèi)存,為它們分配資源和創(chuàng)建進(jìn)程。然 后把它放入就緒隊(duì)列。2、短作業(yè)優(yōu)先(short job first, SJF)的調(diào)度算法由于在實(shí)際情況中,短作業(yè)(進(jìn)程)占有很大比例,為了能使它們能比長作業(yè)優(yōu)先執(zhí)行,而產(chǎn)生了短作業(yè) 優(yōu)先調(diào)度算法。1) 短作業(yè)優(yōu)先算法SJF算法是以作業(yè)的長短來計(jì)算優(yōu)先級,作業(yè)越短,英優(yōu)先級越髙。作業(yè)

55、的長短是以作業(yè)所要求的運(yùn)行 時間來衡量的。SJF算法可以分別用于作業(yè)調(diào)度和進(jìn)程調(diào)度。在把短作業(yè)優(yōu)先調(diào)度算法用于作業(yè)調(diào)度時,它 將從外存的作業(yè)后備隊(duì)列中選擇若干個估計(jì)運(yùn)行時間最短的作業(yè),優(yōu)先將它們調(diào)入內(nèi)存運(yùn)行。2) 短作業(yè)優(yōu)先算法的缺點(diǎn)(1) 必須預(yù)知作業(yè)的運(yùn)行時間。在采用這種算法時,要先知道每個作業(yè)的運(yùn)行時間。即使是程序員也很 難準(zhǔn)確估訃作業(yè)的運(yùn)行時間,如果估il過低,系統(tǒng)就可能按估計(jì)的時間終止作業(yè)的運(yùn)行,但此時作業(yè)并未完 成,故一般都會偏長估計(jì)。(2) 對長作業(yè)非常不利,長作業(yè)的周轉(zhuǎn)時間會明顯地增長。更嚴(yán)重的是,該算法完全忽視作業(yè)的等待時 間,可能使作業(yè)等待時間過長,出現(xiàn)饑餓現(xiàn)象。(3) 在采用FCFS算法時,人一機(jī)無法實(shí)現(xiàn)交互(4) 該調(diào)度算法完全未考慮作業(yè)的緊迫程度,故不能保證緊迫性作業(yè)能得到及時處理。進(jìn)租名ABCDE平均情況 調(diào)度算叢到達(dá)時何0134眼務(wù)時問43524fctsQ)完應(yīng)時間4?121418周牧?xí)r何461011149帶權(quán)用轉(zhuǎn)時何1225.53 52.8SJF(b)完成肘間49186134816398帶杈丹轉(zhuǎn)時間12.673 11522S2.1圖 2-10 FCFS 和 SJF3、優(yōu)先級調(diào)度算法(priority-scheduling algor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論