




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第1章操作系統(tǒng)概 操作系統(tǒng)的概念、特征、功能和提供的服 操作系統(tǒng)的發(fā)展與分 操作系統(tǒng)的運行環(huán) 操作系統(tǒng)體系結(jié) 第2章進程管 進程與線 處理機調(diào) 同步與互 死 第3章內(nèi)存管 內(nèi)存管理基 虛擬內(nèi)存管 第4章文件管 文件系統(tǒng)基 文件系統(tǒng)實 磁盤組織與管 第5章輸入輸出管 I/O管理概 I/O子系 第6章總 1章操作系統(tǒng)概操作系統(tǒng)的概念、特征、功能和提供的服務(wù)操作系統(tǒng)的概念操作系統(tǒng)是計算機系統(tǒng)中最重要、最基本的系統(tǒng)軟件,操作系統(tǒng)位于硬件和用戶程序之間。操作系統(tǒng)的目方便性(用戶的觀點有效性(系統(tǒng)管理人員的觀點OS時,人們似乎更重視如何使用戶能更為方便地使用計算機, 應(yīng)采用層次化結(jié)構(gòu),以便于增加新的功能層次和模塊,并能修改老的功能層次和塊遵循,方便地實現(xiàn)互連,實現(xiàn)應(yīng)用的可移植性和互操作性。開放性是指系統(tǒng)能遵循世界,特別是遵循開放系統(tǒng)互連(OSI)國際標(biāo)準。凡遵循國際標(biāo)準所開發(fā)的硬件20世紀90年代以后計算機技術(shù)的一個問題,也是一個新推出的系統(tǒng)或軟件能否被廣泛應(yīng)用的至關(guān)重要的因素。操作系統(tǒng)的特征并發(fā)正是系統(tǒng)中的程序能并發(fā)執(zhí)行這一特征,才使得OS能有效地提高系統(tǒng)中的資源利用率,并行與并I/O程序之間只能是順行只在程執(zhí)一才許/O之執(zhí)行I/O操作時,計算程序也不能執(zhí)行。為計算程序和/O程序分別建立一個進程(roces)后,這兩個進可并發(fā)執(zhí)行。若對內(nèi)存中的多個程序都分別建立一個進程,就可以并發(fā)執(zhí)行,極大地提高系統(tǒng)資源的利用率,增加吞吐量。共享一般情況下的共享與操作系統(tǒng)環(huán)境下的共享其含義并不完全相同。在操作系統(tǒng)環(huán)境下,所謂共享(Sharing),是指系統(tǒng)中的資源可供內(nèi)存中多個并發(fā)執(zhí)行的進程(線程)共同使用,相應(yīng)地,把這種資源共同使用稱為資源共享,或稱為資源復(fù)用?;コ夤蚕矸较到y(tǒng)中的某些資源,如、磁帶機等,雖然可以提供給多個進程(線程)使用,但應(yīng)規(guī)定在一段時間內(nèi),只允許一個進程該資源。在系統(tǒng)中應(yīng)建立一種機制,以保證多個進程對這類資源的互斥。同時方行的。典型的可供多個進程“同時”的資源是磁盤設(shè)備。一些用重入碼編寫的文件也可以虛擬操作系統(tǒng)中的所謂“虛擬”(irtual),是指通過某種技術(shù)把一個物理實體變?yōu)槿舾蓚€邏輯上的對應(yīng)物。物理實體(前者)是實的,即實際存在的,而后者是虛的,僅是用戶感覺上的東西。相應(yīng)地,用于實現(xiàn)虛擬的技術(shù)稱為虛擬技術(shù)。在操作系統(tǒng)中利用了兩種方式實現(xiàn)虛擬技術(shù),即時分復(fù)用技術(shù)和空分復(fù)用技術(shù)。時分復(fù)用技虛擬處理機技術(shù)虛擬設(shè)備技術(shù)空分復(fù)用技20世紀初,電信業(yè)中就已使用頻分復(fù)用技術(shù)來提高信道的利用率。它是指將一個頻率范圍比較寬的信道劃分成多個頻率范圍較窄的信道(稱為頻帶),其中的任何一個頻帶都一展到成千上萬條話路,每條話路供一對用戶通話。在計算機中也把空分復(fù)用技術(shù)用于對空間的管理,用以提高空間的利用率。異步多道程序環(huán)境下,系統(tǒng)允許多個進程并發(fā)執(zhí)行。單處理機環(huán)境下,由于系統(tǒng)中只有一臺處理機,因而每次只允許一個進程執(zhí)行,其余進程只能等待。當(dāng)正在執(zhí)行的進程提出某種資源要求時,如打印請求,而此時正在為其它進程打印,由于屬于臨界資源,因此正在執(zhí)行的進程必須等待,并釋放出處理機,直到空閑,并再次獲得處理機時,該進程方能繼續(xù)執(zhí)行。由于資源等因素的限制,使進程的執(zhí)行通常都不可能“一氣呵成”,而是以“停停走走”的方式運行。操作系統(tǒng)的功能引入OS不紊地、高效地運行,并能最大程度地提高系統(tǒng)中各種資源的利用率,方便用戶的使用。傳統(tǒng)的S中應(yīng)具有處理機管理、器管理、設(shè)備管理和文件管理等基本功能。為了方便用戶使用OS,還需向用戶提供方便的用戶接口。(1)處理機管理功調(diào)作業(yè)調(diào)度進程調(diào)度(2)器管理功內(nèi)存分配的主要任務(wù)為每道程序分配內(nèi)存空間,使它們“各得其所”提高器的利用率,盡量減少不可用的內(nèi)存空間(碎片)允許正在運行的程序申請附加的內(nèi)存空間,以適應(yīng)程序和數(shù)據(jù)動態(tài)增長的需OS在實現(xiàn)內(nèi)存分配時,可采取兩種方式靜態(tài)分配方式。每個作業(yè)的內(nèi)存空間是在作業(yè)裝入時確定的,在作業(yè)裝入后的整個運行期間不允許該作業(yè)再申請新的內(nèi)存空間,也不允許作業(yè)在內(nèi)存中“移動”。動態(tài)分配方式。每個作業(yè)所要求的基本內(nèi)存空間雖然也是在裝入時確定的,但允許作業(yè)在運行過程中繼續(xù)申請新的附加內(nèi)存空間,以適應(yīng)程序和數(shù)據(jù)的動態(tài)增長,也允許作業(yè)在內(nèi)存保護的主要任務(wù)①確保每道用戶程序都僅在自己的內(nèi)存空間內(nèi)運行,彼此互不干擾②絕不允許用戶程序操作系統(tǒng)的程序和數(shù)據(jù),也不允許用戶程序轉(zhuǎn)移到非共享的在多道程序環(huán)境下,由于每道程序經(jīng)編譯和后所形成的可裝入程序其地址都是從0開始的,但不可能將它們從“0”地址(物理)開始裝入內(nèi)存,致使(各程序段的)地址空間內(nèi)的邏輯地址與其在內(nèi)存空間中的物理地址并不相一致。內(nèi)存擴充并非是從物理上去擴大內(nèi)存的容量,而是借助于虛 技術(shù),從邏輯上擴使感存實容量便的能存擴充機制(包含少量的硬件),用于實現(xiàn)下述各功能:請求調(diào)入功能置換功能設(shè)備管理功設(shè)備管理的主要任務(wù)如下完成用戶進程I/O請求,為用戶進程分配所需的I/O設(shè)備,并完成指定的文件管理功文件空間的管管文件的讀/寫管理和保文件的讀/文件保護操作系統(tǒng)所能提供的服務(wù) 作為用戶與計算機硬件系統(tǒng)之間的接OS處于用戶與計算機硬件系統(tǒng)之間,用戶通過OS來使用計算機系統(tǒng)。用戶在OS幫 1-1OS的示意圖1-1可看出,用戶可通過以下三種方式使用計算機。1)命令方式。這是指由OS提供了一組聯(lián)機應(yīng)用程序。系統(tǒng)調(diào)用方式。OS提供了一組系統(tǒng)調(diào)用,用戶可在自己的應(yīng)用程序中通過相應(yīng)的系OS作為計算機系統(tǒng)資源的管理硬件和軟件資源分為四類:處理機、器、I/O設(shè)備和文件(數(shù)據(jù)和程序)。OS的主處理機管理是用于分配和控制處理機2)器管理主要負責(zé)內(nèi)存的分配與回收I/O設(shè)備管理是負責(zé)I/O設(shè)備的分配(回收)與文件管理是用于實現(xiàn)對文件的存取、共享和保護。OS使用。為了方便用戶使用I/O設(shè)備,人們在機上覆蓋上一層I/O設(shè)備管理軟件,由它來實現(xiàn)對I/O設(shè)備操作的細節(jié),并向上將I/O設(shè)備抽象為一組數(shù)據(jù)結(jié)構(gòu)以及一組I/O操作命令,readwrite命令,這樣用戶即可利用這些數(shù)據(jù)結(jié)構(gòu)及操作命令來進行數(shù)據(jù)輸入或輸出,而無需關(guān)心I/O是如何具體實現(xiàn)的。1-2I/O軟件隱藏了I/O操作實現(xiàn)的細操作系統(tǒng)的發(fā)展與分類操作系統(tǒng)的發(fā)展在20世紀50年代中期,出現(xiàn)了第一個簡單的批處理60年代中期開發(fā)出多道程序批處理系統(tǒng);不久又推出分時系統(tǒng),與此同時,用于工業(yè)和控制的實時S也相繼問世。207090VLSI和計算機體系結(jié)構(gòu)大發(fā)展的年代,導(dǎo)致了微型機、多處理機和計算機網(wǎng)絡(luò)的誕生和發(fā)展,與此相應(yīng)地,也相繼開發(fā)出了微機OS、多處理機OS和OS,并得到極為迅猛的發(fā)展。未配置操作系統(tǒng)的計算機系統(tǒng)人工操作方早期的操作方式是由程序員將事先已穿孔的紙帶(或卡片)(或卡片輸入機),再啟動它們將紙帶(或卡片)上的程序和數(shù)據(jù)輸入計算機,然后啟動計算機運行。僅當(dāng)程序運行完畢并取走計算結(jié)果后,才允許下一個用戶上機。用戶獨占全機,即一臺計算機的全部資源由上機用戶所獨占CPU等待人工操作。當(dāng)用戶進行裝帶(卡)、卸帶(卡)等人工操作時,CPU及內(nèi)存等資脫機輸入/輸出(Off-LineI/O)方脫機I/O技術(shù)。該技術(shù)是事先將裝有用戶程序和數(shù)據(jù)的紙帶裝入紙帶輸入機,在一 機的控制下速地調(diào)入內(nèi)存。減少了CPU的空閑時間,提高I/O速度。1-3I/O單道批處理系統(tǒng)單道批處理系統(tǒng)(SimpleBatchProcessingSystem)為實現(xiàn)對作業(yè)的連續(xù)處理,需要先把一批作業(yè)以脫機方式輸入到磁帶上,并在系統(tǒng)中配上監(jiān)督程序(Monitor),在它的控制下,使這批作業(yè)能一個接一個地連續(xù)處理。其自動處理過程是:首先,由監(jiān)督程序?qū)⒋艓系牡谝粋€作業(yè)裝入內(nèi)存,并把運行控制權(quán)交給該作業(yè)。當(dāng)該作業(yè)處理完成時,又把控制權(quán)交還給監(jiān)督程序,再由監(jiān)督程序把磁帶(盤)上的第二個作業(yè)調(diào)入內(nèi)存。計算機系統(tǒng)就這樣自動地一個作業(yè)一個作業(yè)地進行處理,直至磁帶(盤)(SimpleachProcessngSysem)。1-4單道批處理系統(tǒng)的缺系統(tǒng)中的資源得不到充分的利用。因為在內(nèi)存中僅有一道程序,每逢該程序在運行中CPU的利用率顯著降低。如圖1-5t2~t3、t6~t7CPU空閑。1-5多道批處理系統(tǒng)(MultiprogrammedBatchProcessing多道程序設(shè)計的基本為了進一步提高資源的利用率和系統(tǒng)吞吐量,在20世紀60年代中期引入了多道程序設(shè)計技術(shù),由此形成了多道批處理系統(tǒng)。在該系統(tǒng)中,用戶所提交的作業(yè)都先存放在外存上并排成一個隊列,稱為“后備個作業(yè)調(diào)入內(nèi)存,使它們共享CPU和系統(tǒng)中的各種資源。1-6多道批處理系統(tǒng)的優(yōu)多道批處理系統(tǒng)的優(yōu)缺點如下內(nèi)存中裝入多道程序可提高內(nèi)存的利用率;此外還可以提高I/O設(shè)備的利用率。系統(tǒng)吞吐量大 僅當(dāng)作業(yè)完成時或運行不下去時才進行切換,系統(tǒng)開銷小平均周轉(zhuǎn)時間長。由于作業(yè)要排隊依次進行處理,因而作業(yè)的周轉(zhuǎn)時間較長,通常需幾個小時,甚至幾天。無交互能力。用戶一旦把作業(yè)提交給系統(tǒng)后,直至作業(yè)完成,用戶都不能與自己的作業(yè)進行交互,修改和調(diào)試程序極不方便。多道批處理系統(tǒng)需要解決的問處理機爭用問題。既要能滿足各道程序運行的需要,又要能提高處理機的利用率內(nèi)存分配和保護問題。系統(tǒng)應(yīng)能為每道程序分配必要的內(nèi)存空間,使它們“各得其文件的組織和管理問題。系統(tǒng)應(yīng)能有效地組織存放在系統(tǒng)中的大量的程序和數(shù)據(jù),使它們既便于用戶使用,又能保證數(shù)據(jù)的安全性。用戶與系統(tǒng)的接口問題。為使用戶能方便的使用操作系統(tǒng) 還應(yīng)提供用戶與之間的接為此,應(yīng)在計算機系統(tǒng)中增加一組軟件,用以對上述問題進行妥善、有效的處理。這組軟件應(yīng)包括:能控制和管理四大資源的軟件,合理地對各類作業(yè)進行調(diào)度的軟件,以及方便用戶使用計算機的軟件。正是這樣一組軟件構(gòu)成了操作系統(tǒng)。據(jù)此,我們可把操作系統(tǒng)定義為:操作系統(tǒng)是一組控制和管理計算機硬件和軟件資源,合理地對各類作業(yè)進行調(diào)度,以及方便用戶使用的程序的集合。分時系統(tǒng)的引OS。用戶的需求具體表現(xiàn)在以下幾個方面: 免有些錯誤或不當(dāng)之處需要修改,因而希望能像早期使用計算機時一樣對它進行直接控制,并能以邊運行邊修改的方式,對程序中的錯誤進行修改,亦即,希望能進行人-機交互。共享主機2060年代計算機非常昂貴,不可能像現(xiàn)在這樣每人獨占一臺微機,而只能是由多個用戶共臺計算機,但用戶在使用機器時應(yīng)能夠像自己獨占計算機一分時系統(tǒng)實現(xiàn)中的關(guān)鍵問在多道批處理系統(tǒng)中,用戶無法與自己的作業(yè)進行交互的主要原因是:作業(yè)都先駐留在外行交互。及時接收 要及時接收用戶鍵入令或數(shù)據(jù)并不,為此,只需在系統(tǒng)中配置一多卡。如當(dāng)要主上連接8個終端時,須配置一個8用戶的多路卡。多路卡的用是使主機能同時接收各用戶從終端上輸入的數(shù)據(jù)。此外,還須為每個終端配置一個緩沖區(qū),用來暫存用戶鍵入令(或數(shù)據(jù))。及時處理 人機交互的關(guān)鍵,是使用戶鍵入命令后地控制自己作業(yè)的運行,或修改自己的作業(yè)。為此,各個用戶的作業(yè)都必須在內(nèi)存中,且應(yīng)能頻繁地獲得處理機而運行;輪轉(zhuǎn)運行方式,引入時間片概念,每個作業(yè)每次只能運行一個時間片分時系統(tǒng)的特多路性。允許在一臺主機上同時聯(lián)接多臺聯(lián)機終端,系統(tǒng)按分時原則為每個用戶服行一個時間片。多路性即同時性,它提高了資源利用率,降低了使用費用,從而促進了計算機更廣泛的應(yīng)用。獨立性。每個用戶各占一個終端,彼此獨立操作,互不干擾。因此,用戶所感覺到的,就像是他一人獨占主機。及時性。用戶的請求能在很短的時間內(nèi)獲得響應(yīng)。此時間間隔是以人們所能接受的等待時間來確定的,通常僅為1~3秒鐘。求系統(tǒng)提供多方面的服務(wù),如文件編輯、數(shù)據(jù)處理和資源共享等實時系統(tǒng)(RealTime實時系統(tǒng)的類隨著計算機應(yīng)用的普及,實時系統(tǒng)的類型也相應(yīng)增多,下面列出當(dāng)前常見的幾種工業(yè)()控制系統(tǒng)信息查詢系統(tǒng)多系統(tǒng)嵌入式系統(tǒng)實時任務(wù)的類周期性實時任務(wù)和非周期性實時任務(wù)性,但都必須聯(lián)系著一個截止時間(Deadline)。它又可分為開始截止時間(某任務(wù)在某時間以前必須開始執(zhí)行)和完成截止時間(某任務(wù)在某時間以前必須完成)兩部分。硬實時任務(wù)和軟實時任務(wù)HRT:系統(tǒng)必須滿足任務(wù)對截止時間的要SRT:若偶爾錯過了任務(wù)的截止時間,對系統(tǒng)產(chǎn)生的影響也不會太實時系統(tǒng)與分時系統(tǒng)特征的比多路性。實時信息處理系統(tǒng)也按分時原則為多個終端用戶服務(wù)。實時控制系統(tǒng)的多路性則主要表現(xiàn)在系統(tǒng)周期性地對多路現(xiàn)場信息進行,以及對多個對象或多個執(zhí)行機構(gòu)進行控制。而分時系統(tǒng)中的多路性則與用戶情況有關(guān),時多時少。獨立性。實時信息處理系統(tǒng)中的每個終端用戶在向?qū)崟r系統(tǒng)提出服務(wù)請求時,是彼此獨立地操作,互不干擾;而實時控制系統(tǒng)中,對信息和對對象的控制也都是彼此互不干擾。及時性。實時信息處理系統(tǒng)對實時性的要求與分時系統(tǒng)類似,都是以人所能接受的完成截止時間來確定的,一般為秒級到毫秒級,甚至有的要低于100微秒。交互性。實時信息處理系統(tǒng)雖然也具有交互性,但這里人與系統(tǒng)的交互僅限于系統(tǒng)中某些特定的服務(wù)程序。它不像分時系統(tǒng)那樣能向終端用戶提供數(shù)據(jù)處理和資源共享等服務(wù)可靠性。分時系統(tǒng)雖然也要求系統(tǒng)可靠,但相比之下,實時系統(tǒng)則要求系統(tǒng)具有高,所以實時系統(tǒng)中,往往都采取了多級容錯措施來保障系統(tǒng)的安全性及數(shù)據(jù)的安全性。操作系統(tǒng)的分類單用戶單任務(wù)操作系1974年第一代通用8位微處理機In8080出現(xiàn)后的第二年,DigitalResearch公司就開發(fā)出帶有軟盤系統(tǒng)的8位微機操作系統(tǒng)。1977年DigitalResearch公司對CP/M進行了重寫,使其可配置在以In 、、Z80等8位為基礎(chǔ)的多種微機上。1979年又推出帶有硬盤管理功能的CP/M2.2版本。由于CP/M具有較好的體系結(jié)構(gòu),可適應(yīng)性強,且具有可移植性以及易學(xué)易用等優(yōu)點,使之在8位微機中占據(jù)了地位。MS-1981IBMIBM-PC個人計算機(16位微機),在微機中采用了微軟MS-DOS(DiskOperatingSystem)CP/M的基礎(chǔ)上進行了較大的擴充,使其在功能上有很大的增強。1983年IBM推出PC/AT(配有In80286),相應(yīng)地,微軟又開發(fā)出MS-DOS2.0版本,它不僅能支持硬盤設(shè)備,還采用了樹形結(jié)構(gòu)的文件系統(tǒng)。1987MS-DOS3.3MS-DOS1.03.3為DOS640KB19891993年又先后推出了多個MS-DOS版本,它們都可以配置在In、等32位微208090年代初,由于MS-DOS性能優(yōu)越而受到當(dāng)時用戶的廣泛歡迎,成為事實上的16位單用戶單任務(wù)操作系統(tǒng)標(biāo)單用戶多任務(wù)操作系32位微機上配置的操作系統(tǒng)基本上都是單用戶多任務(wù)操作系統(tǒng),其中最有代表性的是由微軟公司推出的Windows。年和1987年微軟公司先后推出了Windows1.0和Windows2.0當(dāng)時的硬件只是16位微機,對1.0和2.0版本不能很好的支持。1990年微軟公Windows3.0Windows3.1版本,它們主要是針對386386486等微機的主流操作系統(tǒng)。1995Windows95Windows3.1有許多重大改進,采用了全32位的處理技術(shù),并兼容以前的16位應(yīng)用程序,在該系統(tǒng)中還集成了支持Internet的網(wǎng)絡(luò)功能。1998Windows95Windows98,它已是最后一個仍然兼容以前的16位應(yīng)用程序的Windows,其最主要的改進是把微軟公司自己開發(fā)的Internet瀏覽器整合到系統(tǒng)中,大大方便了用戶上網(wǎng)瀏覽,另一個特點是增加了對多的支持。2001年微軟又發(fā)布了32位版本的WindowsXP,同時提供了家用和商業(yè)工作站兩種版本,它是當(dāng)前使用最廣泛的個人操作系統(tǒng)。2001年還發(fā)布了64位版本的WindowsXP。多用戶多任務(wù)操作系主機系統(tǒng)中的各種資源,而每個用戶程序又可進一步分為幾個任務(wù),使它們能并發(fā)執(zhí)行,從而可進一步提高資源利用率和系統(tǒng)吞吐量。在大、中和小型機中所配置的大多是多用戶多任務(wù)操作系統(tǒng),而在32位微機上,也有不少配置的是多用戶多任務(wù)操作系統(tǒng),其中最有代表性的是UNIXOS。SolarisOS:SUN公司于1982年推出的SUNOS1.0是一個運行在Motorola680x0UNIXOS1988SUNOS4.0Motorola680x0平臺遷移到SPARC平臺,并開始支持In公司的In80x86;1992年SUN發(fā)Solaris2.01998年開始,Sun64Solaris2.72.8,這LinuxOS:LinuxUNIXLinusTorvalds針對In80386開發(fā)的。1991年在Internet網(wǎng)上發(fā)布第一個Linux版本,由于源代碼公開,InternetLinux的性能迅速提高,其應(yīng)用范圍也日益擴大。UNIXUNIX上運行的軟件(包括1000多種實用工具軟件和大量的網(wǎng)絡(luò)軟件)被移植到Linux上,而且可以在主要的微機上運行,如In80x86Pentium等。操作系統(tǒng)的運行環(huán)境內(nèi)核態(tài)與用戶態(tài)用戶誤用這些指令,稱為指令,將故障中斷。程序狀態(tài)字寄存器的指令存取特殊寄存器(如用于內(nèi)存保護的寄存器)其他系統(tǒng)狀態(tài)和直接系統(tǒng)資源的指令等具有較高的級別,又稱為態(tài)、系統(tǒng)態(tài)或管態(tài);后者一般指用戶程序運行時的狀態(tài),具有較低的級別,又稱為普通態(tài)、目態(tài)。目態(tài):程序執(zhí)行時不可使用指令,I/O指令、時鐘設(shè)置、中斷機制、系統(tǒng)管理等,管態(tài):程序執(zhí)行時可以使用指令。執(zhí)行系統(tǒng)管理程序,態(tài)、系統(tǒng)態(tài)、內(nèi)核態(tài)、?CPU如何判斷用戶程序和系統(tǒng)程序程序狀態(tài)字PSW記錄CPU的運行模式和狀態(tài)信一類是反映當(dāng)前指令執(zhí)行結(jié)果的各種狀態(tài)信息,稱為狀態(tài)標(biāo)志,如進位標(biāo)志位(CF)標(biāo)志位(OF)、結(jié)果正負標(biāo)志位(SF)、結(jié)果是否為0標(biāo)志位(Z)、奇偶標(biāo)志位()等;一類存放控制信息,稱為控制狀態(tài),如中斷標(biāo)志位(IF)、CPU的工作狀態(tài)位(態(tài)還?狀態(tài)如何轉(zhuǎn)態(tài)到用戶態(tài)--用戶態(tài)到態(tài)--用戶不能修改--系統(tǒng)調(diào)--訪管指 通過中斷實現(xiàn)從用戶態(tài)到態(tài)的改變 在態(tài)下由操作系統(tǒng)代替用戶完成其請求(指定的操作)③操作系統(tǒng)完成指定操作后再通過修改程序狀態(tài)字(PSW)由態(tài)切換回用戶態(tài)(用戶態(tài)下執(zhí)行的指令。當(dāng)源程序中有需要操作系統(tǒng)服務(wù)的要求序行時處理若到了訪指令就生個斷,斷裝就會相的并返回到用戶程序。值得注意的是,訪管指令不是指令。指令是指用于操作系統(tǒng)或中斷、異常中斷是指程序執(zhí)行過程中,當(dāng)發(fā)生某個時,中止CPU上現(xiàn)行程序的運行,引出處理該的程序執(zhí)行的過程。從中斷的性質(zhì)和激活的來說,可以分成兩類:強迫性中斷和自愿性中斷。強迫性中斷不是正在運行的程序所期待的,而是由于某種事故或外部請求信息所引起的,分為:機器故障中斷。程序性中斷。外部中斷。愿行序。行對作統(tǒng)有某種需求,一旦機器執(zhí)行到一條訪管指令時,便自愿停止現(xiàn)行程序的執(zhí)行而轉(zhuǎn)入訪管中斷處理程序處理。按照中斷信號的來源,可把中斷分為外中斷和內(nèi)中斷兩類:外中斷(又稱中斷)指來自處(又稱異常)故障中斷、時鐘中斷、控制臺中斷、它機中斷和/O常是不能被的,一旦出現(xiàn)應(yīng)立即響應(yīng)并加以處理中斷和異常的區(qū)別:中斷是由與現(xiàn)行指令無關(guān)的中斷信號觸發(fā)的(異步的),且中斷的發(fā)生與CPU處在用戶模式或內(nèi)核模式無關(guān),在兩條機器指令之間才可響應(yīng)中斷,一般來說,出錯和陷入的區(qū)別如下:它們發(fā)生時保存的返回指令地址不同,出錯保存指向觸發(fā)異常的中斷和異常要通過硬件設(shè)施來產(chǎn)生中斷請求,可看作硬中斷。不必由硬件發(fā)信號而能的中斷稱軟中斷,軟中斷是利用硬件中斷的概念,用軟件方式進行模擬,實現(xiàn)宏觀上的異步執(zhí)之間用來模擬硬中斷的一種信號通信方式。理斷的序稱中處理序它的要務(wù)處中斷恢復(fù)常作。不同中斷源對應(yīng)不同中斷處理程序,故快速找到中斷處理程序的地址是一個關(guān)鍵問題。中斷的原因。處理發(fā)生的中斷。恢復(fù)正常操作。1-7如何來響應(yīng)同時發(fā)生的中斷呢?它按照預(yù)定順序來響應(yīng),這個預(yù)定順序稱中斷的優(yōu)先級,首先響應(yīng)優(yōu)先級高的中斷2、中斷的:主機可允許或某類中斷的響應(yīng),如允許或所有的I/O中斷、外部中斷、及某些程序性中斷。有些中斷是不能被的,例如,計算機中的自愿性訪管中斷就不能被。1)再發(fā)生中斷:運行中斷處理程序時,對任何新產(chǎn)生的中斷不予理睬,這可以通過某些中斷來實現(xiàn)。系統(tǒng)調(diào)用是中斷或者異常處理,把控制流程轉(zhuǎn)移到程序內(nèi)的一些特定的位置。同時,處理器模式轉(zhuǎn)變成模式。其次,由程序執(zhí)行被請求的功能代碼。這個功能代碼代表著對一段標(biāo)準程序段的執(zhí)行,用以完成所請求的功能。第三,處理結(jié)束之后,程序恢復(fù)系統(tǒng)調(diào)用之系統(tǒng)調(diào)用與一般程序調(diào)用的不同運行在不同的系統(tǒng)狀態(tài)。調(diào)用的程序是運行在用戶態(tài),被調(diào)用的程序運行在態(tài)進入的方式不同。過程調(diào)用語句直接跳轉(zhuǎn)到被調(diào)用過程;而系統(tǒng)調(diào)用則必須通過運行系統(tǒng)調(diào)用命令。返回方式不同。過程調(diào)用直接返回;系統(tǒng)調(diào)用則不直接返回,有重新調(diào)度過代碼層次不同。過程調(diào)用是用戶級程序,而系統(tǒng)調(diào)用是系統(tǒng)級程序系統(tǒng)調(diào)用一般不能嵌套或遞歸圖1- 運行環(huán)境示意1-9操作系統(tǒng)體系結(jié)構(gòu)無結(jié)構(gòu)操作系在早期開發(fā)操作系統(tǒng)時,設(shè)計者只是把他的注意力放在功能的實現(xiàn)和獲得高的效率上,缺乏首尾一致的設(shè)計思想。OS是為數(shù)眾多的一組過程的集合,每個過程可以任意地相用其它過程,致使操作系統(tǒng)內(nèi)部既復(fù)雜又,因此,這種S是無結(jié)構(gòu)的,也有人把它稱為整體系統(tǒng)結(jié)構(gòu)。模塊化結(jié)構(gòu)模塊化程序設(shè)計技術(shù)的基本概模塊化程序設(shè)計技術(shù)是20世紀60年代出現(xiàn)的一種結(jié)構(gòu)化程序設(shè)計技術(shù)。該技術(shù)基于“分解”和“模塊化”的原則來控制大型軟件的復(fù)雜度。為使OS具有較清晰的結(jié)構(gòu),OS不再是由1-10模塊獨立在模塊-接口法中,關(guān)鍵問題是模塊的劃分和規(guī)定好模塊之間的接口。如果在劃分模塊時將模塊劃分得太小,雖然可以降低模塊本身的復(fù)雜性,但會引起模塊之間的聯(lián)系過多,從而會造成系統(tǒng)比較;如果將模塊劃分得過大,又會增加模塊內(nèi)部的復(fù)雜性,使內(nèi)部的聯(lián)系加,因此在劃分模塊時,應(yīng)在兩者間進行權(quán)衡。利用模塊-接口法開發(fā)的OS,較之無結(jié)構(gòu)OS具有以下明顯的優(yōu)點提高OS設(shè)計的正確性、可理解性和可性增強OS的可適應(yīng)性加速OS的開發(fā)過程模塊化結(jié)構(gòu)設(shè)計仍存在下述問題在 設(shè)計時,對各模塊間的接口規(guī)定很難滿足在模塊設(shè)計完成后對接口的實際求在S設(shè)計階段,設(shè)計者必須做出一系列的決定(決策),每一個決定必須建立在上一個決定的基礎(chǔ)上,但模塊化結(jié)構(gòu)設(shè)計中,各模塊的設(shè)計齊頭并進,無法尋找一個可靠的決定順序,造成各種決定的“無序性”,這將使程序人員很難做到“設(shè)計中的每一步?jīng)Q定”都是建立在可靠的基礎(chǔ)上,因此模塊-分層式結(jié)構(gòu)分層式結(jié)構(gòu)的基本概為了將模塊-接口法中“決定順序”的無序性變?yōu)橛行蛐?,引入了有序分層法,分層法的設(shè)計任務(wù)是,在目標(biāo)系統(tǒng)An和機系統(tǒng)(又稱宿主系統(tǒng))A0之間,鋪設(shè)若干個層次的軟件A1、A2、A3、…、An-1,使An通過An-1、An-2、…、A2、A1層,最終能在A0上運行。在操分層結(jié)構(gòu)的優(yōu)缺分層結(jié)構(gòu)的主要優(yōu)點易保證系統(tǒng)的正確性易擴充和易性分層結(jié)構(gòu)的主要缺點是系統(tǒng)效率降低由于層次結(jié)構(gòu)是分層單向依賴的,必須在每層之間都建立層次間的通信機制,S每執(zhí)行一個功能,通常要自上而下地穿越多個層次,這無疑會增加系統(tǒng)的通信開銷,從而導(dǎo)致系統(tǒng)效率的降低。4、微OS結(jié)足夠小的內(nèi)在微內(nèi)核操作系統(tǒng)中,內(nèi)核是指精心設(shè)計的、能實現(xiàn)現(xiàn)代OS最基本功能的小型內(nèi)核,微內(nèi)核并非是一個完整的OS與硬件處理緊密相關(guān)的部分OS最基本的部分只是為構(gòu)建通用OS提供一個重要基礎(chǔ),可以確保把操作系統(tǒng)內(nèi)核做基于客戶/服務(wù)器模由于客戶/服務(wù)器模式具有非常多的優(yōu)點,故在單機微內(nèi)核操作系統(tǒng)中幾乎無一例外地都采用客戶/服務(wù)器模式,將操作系統(tǒng)中最基本的部分放入內(nèi)核中,而把操作系統(tǒng)的絕大部分功能都放在微內(nèi)核外面的一組服務(wù)器(進程)中實現(xiàn),用于提供對進程(線程)進行管理的進程(線程)服務(wù)器、提供虛擬器管理功能的虛擬器服務(wù)器、提供I/O設(shè)備管理的/O微內(nèi)核提供的消息傳遞機制來實現(xiàn)信息交互的。應(yīng)用“機制與策略分離”原和算法來實現(xiàn)該功能的優(yōu)化,或達到不同的功能目標(biāo)采用面向?qū)ο蠹迹?).微內(nèi)核應(yīng)具有哪些功能,或者說哪些功能應(yīng)放在微內(nèi)核內(nèi),哪些應(yīng)放在微內(nèi)核外,目前尚的部分放入微內(nèi)核中,微內(nèi)核通常具有如下幾方面的功能:進程(線程)管低級器管中斷和陷入處(3).OS結(jié)構(gòu)是建立在模塊化、層次化結(jié)構(gòu)的基礎(chǔ)上的,并采用了客戶/服務(wù)器提高了系統(tǒng)的可擴展增強了系統(tǒng)的可靠性可移植性強提供了對分布式系統(tǒng)的支持融入了面向?qū)ο蠹夹g(shù)(4)應(yīng)當(dāng),在微內(nèi)核操作系統(tǒng)中,由于采用了非常小的內(nèi)核,客戶/服務(wù)器模式和消息傳遞機制雖給微內(nèi)核操作系統(tǒng)帶來了許多優(yōu)點,但由此也使微內(nèi)核OS存在著潛在缺點,其還會引起的上下文切換。例如,當(dāng)某個服務(wù)器自身尚力完成客戶請求而需要其它服務(wù)8次上下文的切換。2章進程管進程與線程進程的概念1、程序的順序執(zhí)一個應(yīng)用程序由若干個程序段組成,每一個程序段完成特定的功能,它們在執(zhí)行時,都需應(yīng)先運行輸入程序,用于輸入用戶的程序和數(shù)據(jù);然后運行計算程序,對所輸入的數(shù)據(jù)進行計算;最后是運行打印程序,打印計算結(jié)果。用結(jié)點(Node)代表各程序段的操作,其中I代表輸入操作,C代表計算操作,P為打印操作,用箭頭指示操作的先后次序。段S1:a=x+y;S2:b=a-5;S3:c2-1S2S1后(a被賦值)S3b被賦值后2.由上所述可以得知,在程序順序執(zhí)行時,具有這樣三個特征 可再現(xiàn)性:指只要程序執(zhí)行時的環(huán)境和初始條件相同,當(dāng)程序重復(fù)執(zhí)行時,不論是從頭到尾不停頓地執(zhí)行,還是“停停走走”地執(zhí)行,都可獲得相同的結(jié)果程序順序執(zhí)行時的這種特性,為程序員檢測和校正程序的錯誤帶來了很大的3、程序的并發(fā)執(zhí)程序三者之間,存在著Ii→Ci→Pi這樣的前趨關(guān)系,對一個作業(yè)的輸入、計算和打印三個程序2-2由圖可以看出,存趨關(guān)系Ii→Ci,Ii→Ii+1,Ci→Pi,Ci→Ci+1,Pi→Pi+1,而和Ci及Pi-1是的,即在Pi-1和Ci以及Ii+1之間,不存趨關(guān)系,可以并發(fā)執(zhí)行。S1:a:=x+2S2:bS3:c:=a+bS4:d可畫出圖所示的前趨關(guān)系。S3ab被賦值后方能執(zhí)行;S4S3之后執(zhí)行;但S1和S2則可以并發(fā)執(zhí)行,因為它們彼此互不依賴。2-34、程序并發(fā)執(zhí)行時的特必將形成相互制約的關(guān)系,由此會給程序并發(fā)執(zhí)行帶來新的特征間斷性。"走走停停",一個程序可能走到中途停下來,失去原有的時序關(guān)系不可再現(xiàn)性。外界環(huán)境在程序的兩次執(zhí)行期間發(fā)生變化,失去原5、進程的定的運行也就失去了意義。為了能使程序并發(fā)執(zhí)行,并且可以對并發(fā)執(zhí)行的程序加以描述和控制,人們引入了“進程”的概念。對于進程的定義,從不同的角度可以有不同的定義,其中較典型的定義有進程是程序的一次執(zhí)進程是一個程序及其數(shù)據(jù)在處理機上順序執(zhí)行時所發(fā)生的活動進程是具有獨立功能的程序在一個數(shù)據(jù)集合上運行的過程,它是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。6、進程的特PCB結(jié)構(gòu)外,還具有,地址空間上包括:代碼(指令CPU狀態(tài)的改變)數(shù)據(jù)(變量的生成和賦值系統(tǒng)控制信息(進程控制塊的建立和系統(tǒng)收回獨立性。各進程的地址空間相互獨立,除非采用進程間通信異步性。各進程按各自獨立的、不可預(yù)知的速度向前進程的狀態(tài)與轉(zhuǎn)換所以進程在其生命周期內(nèi)可能具有多種狀態(tài)。每一個進程至少應(yīng)處于三種基本狀態(tài)之一:(Running(Blocked:就緒狀態(tài)(Ready:進程已分配到除處理機以外的所有必要資源,具備了運行的條件,可能會有多個進程處于就緒狀態(tài),排成就緒隊列。處理機之后便可執(zhí)行,相應(yīng)地,其狀態(tài)就由就緒態(tài)轉(zhuǎn)變?yōu)閳?zhí)行態(tài);正在執(zhí)行的進程(當(dāng)前進程)如果因分配給它的時間片已完而被處理機暫停執(zhí)行時,其狀態(tài)便由執(zhí)行轉(zhuǎn)為就緒;如果因發(fā)生某,致使當(dāng)前進程的執(zhí)行受阻(例如進程某臨界資源,而該資源正被其它進程訪問時),使之無法繼續(xù)執(zhí)行,則該進程狀態(tài)將由執(zhí)行轉(zhuǎn)變?yōu)樽枞_\行狀態(tài)到阻塞狀態(tài):正在運行的進程因需要等待某而無法運行,讓出處理機。 塞狀態(tài)到就緒狀態(tài):進程所等待的發(fā)生了,進程就從阻塞狀態(tài)進入就緒狀態(tài)。 圖2-4進程的三種基本狀態(tài)及其轉(zhuǎn)進程是由創(chuàng)建而產(chǎn)生。創(chuàng)建一個進程是個很復(fù)雜的過程,基本步驟:如首先由進程申請一個空白PCB,并向PCB中填寫用于控制和管理進程的信息;然后為該進程分配運行時所必于是把此時進程所處的狀態(tài)稱為創(chuàng)建狀態(tài)。進程的終止也要通過兩個步驟:首先,是等待操作系統(tǒng)進行善后處理,最后將其PCB,并將PCB空間返還系統(tǒng)。當(dāng)一個進程到達了自然結(jié)束點,或是出現(xiàn)了無法克服的錯作終被止進將止終止態(tài)的進程以后不能再執(zhí)行,但在操作系統(tǒng)中依然保留一個記錄,其中保存狀態(tài)碼和一些計時統(tǒng)即將其PCB,并將該空白PCB返還系統(tǒng)。4、掛起操作的引
圖2-5進程的五種基本狀態(tài)及轉(zhuǎn)引入掛起操作的原因,是基于系統(tǒng)和用戶的如下需要終端用戶的需要父進程請求負荷調(diào)節(jié)的需要操作系統(tǒng)的需要5、引入掛起原語操作后三個進程狀態(tài)的轉(zhuǎn)活動就緒→靜止就緒。當(dāng)進程處于未被掛起的就緒狀態(tài)時,稱此為活動就緒狀態(tài),表示為Readya。當(dāng)用掛起原語Supend將該進程掛起后,該進轉(zhuǎn)變?yōu)殪o止就緒狀態(tài),表示為Readys,處于Readys狀態(tài)的進程不再被調(diào)度執(zhí)行?;顒幼枞o止阻塞。當(dāng)進程處于未被掛起的阻塞狀態(tài)時,稱它是處于活動阻塞狀態(tài),表示為Blockeda。當(dāng)用Suspend原語將它掛起后,進轉(zhuǎn)變?yōu)殪o止阻塞狀態(tài),表示為Blocked。處于該狀態(tài)的進程在其所期待的出現(xiàn)后,將從靜止阻塞變?yōu)殪o止就緒。ReadysActive激活后,該進程將轉(zhuǎn)變?yōu)镽eadya狀態(tài)。BlockedsActive激活后,該進程將轉(zhuǎn)變?yōu)锽lockeda狀態(tài)。6、引入掛起操作后五個進程狀態(tài)的轉(zhuǎn)NULL→創(chuàng)創(chuàng)建→活動就緒創(chuàng)建→靜止就緒執(zhí)行→終止圖2-6具有掛起狀態(tài)的進程狀態(tài)圖2-7具有創(chuàng)建、終止和掛起狀態(tài)的進程狀態(tài)進程控制某而使其無法運行下去的進程,還可負責(zé)進程運行中的狀態(tài)轉(zhuǎn)換。如當(dāng)一個正在執(zhí)行的進程因等待某而暫時不能繼續(xù)執(zhí)行時,將其轉(zhuǎn)換為阻塞狀態(tài),而當(dāng)該進程所期待的出現(xiàn)時,又將該進程轉(zhuǎn)換為就緒狀態(tài)等等。進程控制一般是由S的內(nèi)核中的原語來實現(xiàn)的。所謂原語即原子操作,要么全做,要么不做,一般是通過中斷來完成的1)進程創(chuàng)建。creat2)進程撤銷。halt3)進程阻塞。block4)進起。suspend6)進程的創(chuàng)進程的層次結(jié)在OS中,允許一個進程創(chuàng)建另一個進程,通常把創(chuàng)建進程的進程稱為父進程,而把被創(chuàng)建的進程稱為子進程。子進程可繼續(xù)創(chuàng)建的孫進程,由此便形成了一個進程的層次結(jié)構(gòu)。如在UNIX中,進程與其子孫進程共同組成一個進程(組)。為了形象地描述一個進程的關(guān)系而引入了進程圖(rocessraph)。所謂進程圖就是用于描述進程間關(guān)系的一棵有向樹。2-8典型有四類:用戶登錄作業(yè)調(diào)度提供服務(wù)應(yīng)用請求在系統(tǒng)中每當(dāng)出現(xiàn)了創(chuàng)建新進程的請求后,OSCreat按下述步驟PCB。備和CPU時間等。初始化進程控制塊(PCB)如果進程就緒隊列能夠接納新進程,便將新進程插入就緒隊列進程的終引起進程終止(TerminationofProcess)進程的終止過如果系統(tǒng)中發(fā)生了要求終止進程的某,S便調(diào)用進程終止原語,按下述過程去終止指定的進程:若被終止進程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進程的執(zhí)行,并置調(diào)度標(biāo)志為真,用于指示該進程被終止后應(yīng)重新進行調(diào)度;若該進程還有子孫進程,還應(yīng)將其所有子孫進程也都予以終止,以防它們成為不可控的進程將被終止進程所擁有的全部資源或者歸還給其父進程,或者歸還給系統(tǒng)將被終止進程(PCB)從所在隊列(或鏈表)進程的阻塞與喚引起進程阻塞和喚醒的有下述幾類會引起進程阻塞或被喚醒向系統(tǒng)請求共享資源失敗等待某種操作的完成新數(shù)據(jù)尚未到達進程阻塞過block過程后,由于該進程還處于執(zhí)行狀態(tài),所以PCB插入阻塞即,保留被阻塞進程的處理機狀態(tài),按新進程的PCB中的處理機狀態(tài)設(shè)置CPU的環(huán)境。進程喚醒過當(dāng)被阻塞進程所期待的發(fā)生時,比如它所啟動的I/O操作已完成,或其所期待的據(jù)已經(jīng)到達,則由有關(guān)進程(比如提供數(shù)據(jù)的進程)調(diào)用喚醒原語wakeup,將等待該的進程喚醒。wakeup執(zhí)行的過程是:首先把被阻塞的進程從等待該的阻塞隊列中移出,將其PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將該PCB插入到就緒隊列中。進程的掛起與激supend()原語的執(zhí)行過程:首先檢查被掛起進程的狀態(tài),若處于活動就緒狀態(tài),便將其改為靜止就緒;對于活動阻塞狀態(tài)的進程,則將之改為靜止阻塞。為了方便用戶或父進程考查該進程的運行情況而把該進程的PCB到某指定的內(nèi)存區(qū)域。若被掛起的進程正在執(zhí)行,則轉(zhuǎn)向調(diào)度程序重新調(diào)度進程的激活過當(dāng)發(fā)生激活進程的時,系統(tǒng)將利用激活原語active()將指定進程激活active()原語執(zhí)行過程:激活原語先將進程從外存調(diào)入內(nèi)存,檢查該進程的現(xiàn)行狀態(tài),若是靜止就緒,便將之改為活動就緒;若為靜止阻塞便將之改為活動阻塞。若采用搶占調(diào)度策略,則每當(dāng)有新進程(激活進入就緒隊列時,應(yīng)檢查是否要進行重新調(diào)度,即由調(diào)度程序?qū)⒈患ち⒓串?dāng)前進程的運行,把處理機分配給剛被激活的進程。進程組織程序:描述進程所要完成的功能,特指二進制的指令代碼數(shù)據(jù)集合:程序運行所需要的數(shù)據(jù)結(jié)構(gòu)。包括常數(shù),變量,堆,數(shù)據(jù)棧等。進程控制塊:進程控制塊包含了進程的描述信息、控制信息和資源信息。在計算機系統(tǒng)中,對于每個資源和每個進程都設(shè)置了一個數(shù)據(jù)結(jié)構(gòu),用于表征其實體,我們稱之為資源信息表或進程信息表,包含了資源或進程的標(biāo)識、描述、狀態(tài)等信息以及一批成不同的隊列,便于操作系統(tǒng)進行查找。OS管理的這些數(shù)據(jù)結(jié)構(gòu)一般分為四類:內(nèi)存表、設(shè)備表、文件表和用于進程管理的進程表,通常進程表又被稱為進程控制塊PCB。進程控制塊PCB作為獨立運行基本單位的標(biāo)志能實現(xiàn)間斷性運行方提供進程管理所需要的信息提供進程調(diào)度所需要的信息實現(xiàn)與其它進程的同步與通信在進程控制塊中,主要包括四個方面信息進程標(biāo)識進程標(biāo)識符用于唯一地標(biāo)識一個進程。一個進程通常有兩種標(biāo)識符外部標(biāo)識符。它由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是由用戶(進程)在該進程時使用。為了描述進程的關(guān)系,還應(yīng)設(shè)置父進程標(biāo)識及子進程標(biāo)識。此外,還可設(shè)置用戶標(biāo)識,以指示擁有該進程的用戶。處理機狀處理機狀態(tài)信息主要是由處理機的各種寄存器中的內(nèi)容組成的。處理機在運行時,許多信息都放在寄存器中。當(dāng)處理機被中斷時,所有這些信息都必須保存在PCB中,以便在該進程重新執(zhí)行時,能從斷點繼續(xù)執(zhí)行。這些寄存器包括:①通用寄存器,又稱為用戶可視寄存器,它們是用戶程序可以的,用于暫存信息 指令計數(shù)器,其中存放了要的下一條指令的地址 程序狀態(tài)字PSW,其中含有狀態(tài)信息,如條件碼、執(zhí)行方式、中斷標(biāo)志等進程調(diào)度信在 進行調(diào)度時,必須了解進程的狀態(tài)及有關(guān)進程調(diào)度的信息,這些信息包括 進程狀態(tài),指明進程的當(dāng)前狀態(tài),它是作為進程調(diào)度和對換時的依據(jù) 進程調(diào)度所需的其它信息,它們與所采用的進程調(diào)度算法有關(guān),比如,進程已等待 的時間總和、進程已執(zhí)行的時間總和 ,是指進程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)所等待發(fā)生的,即阻塞原因進程控制信是指用于進程控制所必須的信息,它包括(首)址,以便再調(diào)度到該進程執(zhí)行時,能從PCB中找到其程序和數(shù)據(jù);針、信號量等,它們可能全部或部分地放在PCB中; 指針,它給出了本進程(PCB)所在隊列中的下一個進程的PCB的首地址進程控制塊的組織方在一個系統(tǒng)中,通常可擁有數(shù)十個、數(shù)百個乃至數(shù)千個PCB。目前常用的組織方式有三種。(1)線性方式,即將系統(tǒng)中所有的PCB都組織在一張線性表中,將該表的首址存放在內(nèi)存的一個區(qū)域中。該方式實現(xiàn)簡單、開銷小,但每次查找時都需要掃描整張表,因此適(2)方式,即把具有相同狀態(tài)進程的PCB分別通過PCB中的字成一個隊列。形成就緒隊列、若干個阻塞隊列和空白隊列等。就緒隊列而言,往往按進程的優(yōu)先級將PCB從高到低進行排列,將優(yōu)先級高的進程PCB排在隊列的前面。把處于阻塞狀態(tài)進程的PCB根據(jù)其阻塞原因的不同,排成多個阻塞隊列,如等待I/O操作完成的隊列和等待分配內(nèi)存圖2-11PCB隊列示意PCBPCB表中的地址。進程通信進程通信是指進程之間的信息交換。由于進程的互斥與同步,需要在進程間交換一定的信來說明,它們之所以低級的原因在于:①效率低,生產(chǎn)者每次只能向緩沖池投放一個產(chǎn)品(消息),消費者每次只能從緩沖區(qū)②通信對用戶不透明,OS只為進程之間的通信提供了共享器在進程之間要傳送大量數(shù)據(jù)時,應(yīng)當(dāng)利用OS提供的高級通信工具,該工具最主要的特使用方便。OS隱藏了實現(xiàn)進程通信的具體細節(jié),向用戶提供了一組用于實現(xiàn)高級通信令(原語),用戶可方便地直接利用它實現(xiàn)進程之間的通信?;蛘哒f,通信過程對用戶是透明的。這樣就大大減少了通信程序編制上的復(fù)雜性。(原語)高效地傳送大量的數(shù)據(jù)。后續(xù)PV信方式。高級通信方式可分為三大類:共享內(nèi)存、消息傳遞以及管道機制共享器系統(tǒng)(Shared-Memory基于共享數(shù)據(jù)結(jié)構(gòu)的通信方式基于共享區(qū)的通信方式管道(pipe)通信又名pipe文件。向管道(共享文件)提供輸入的發(fā)送進程(即寫進程)以字符流形式將大量的數(shù)據(jù)送入管道;而接受管道輸出的接收進程(即讀進程)則從管道中接收(讀)數(shù)據(jù)。由于發(fā)送進接收進程是利用管道進行通信的,故又稱為管道通信。這種方式首創(chuàng)于UNIX系統(tǒng),由于機制必須提供以下面的協(xié)調(diào)能力: 互斥,即當(dāng)一個進程正在對pipe執(zhí)行讀/寫操作時,其它(另一)進程必須等待②同步,指當(dāng)寫(輸入)進程把一定數(shù)量(如4KB)的數(shù)據(jù)寫入pipe,便去睡眠等待,直到讀(輸出)進程取走數(shù)據(jù)后再把它喚醒。當(dāng)讀進程讀一空pipe時,也應(yīng)睡眠等待,直至寫進程③確定對方是否存在,只有確定了對方已存在時才能進行通信息(mesage)為單位,將通信的數(shù)據(jù)封裝在消息中,并利用操作系統(tǒng)提供的一組通信命令(原語)式的不同,可進一步分成兩類:直接通信方式:基于OS的發(fā)送原間接通信方式:基于共享中間實4、消息傳遞通信的實現(xiàn)方(1).OS所提供的發(fā)送命令(原直接通信原a對稱尋址方式。一對一Send(Receiver,message);發(fā)送一個消息給接收進程;Receive(Sender,message);接收Sender發(fā)來的消息;bsend(,message;recee(d,esage;消息的格進接收進處于同一臺器中,有相同的環(huán),所消息的格比較簡單,采用為戶提供,進程發(fā)消息長是可的對于長息系無論處方面還是方面,都可能會付出的開銷,但其優(yōu)點在于方便了用戶。進程的同步方在進程之間進行通信時,同樣需要有進程同步機制,以使諸進程間能協(xié)調(diào)通信。不論是發(fā)(或接收)或者阻塞。為使在發(fā)送進接收進程之間能進行通信,必須在兩者之間建立一條通信鏈路。有兩種立鏈。是發(fā)程信顯“立”(原語)請求系統(tǒng)為之建立一條通信鏈路,在鏈路使用完后拆除鏈路。用于計算機網(wǎng)絡(luò)。第二種方式是發(fā)送進程無須明確提出建立鏈路的請求,只須利用系統(tǒng)提供的發(fā)送命令(原語),系統(tǒng)會自動地為之建立一條鏈路。這種方式主要用于單機系統(tǒng)中。而根據(jù)通信方式的不同,則又可把鏈路分成兩種 單向通信鏈路,只允許發(fā)送進程向接收進程發(fā)送消息,或者相反bABBA發(fā)(2).信箱的結(jié)信箱定義為一種數(shù)據(jù)結(jié)構(gòu)。在邏輯上,可以將其分為兩個部分 2-13信箱通信原系統(tǒng)為郵箱通信提供了若干條原語abmessage);從指定信箱中接收一個消息;信箱的類類 公用郵箱。由操作系統(tǒng)創(chuàng)建,并提供給系統(tǒng)中的所有核準進程使用5、直接消息傳遞系統(tǒng)實消息緩沖隊列通信機制首先由的Hansan提出,并在RC4000系統(tǒng)上實現(xiàn),后來被廣泛應(yīng)用于本地進程之間的通信中。在這種通信機制中,發(fā)送進程利用Send原語將消息直接發(fā)送給接收進程;接收進程則利用Receive原語接收消息。消息緩沖區(qū)PCB中有關(guān)通信的數(shù)據(jù)項mq消息隊列指針,mutex互斥信號量2.發(fā)送進程在利用發(fā)送原語發(fā)送消息之前,應(yīng)先在自己的內(nèi)存空間設(shè)置一發(fā)送區(qū)a,把給目標(biāo)(接收)進程,發(fā)送原語首先根據(jù)發(fā)送區(qū)a中所設(shè)置的消息長度a.size來申請一緩沖區(qū)i,接著,把發(fā)送區(qū)a中的信息到緩沖區(qū)i中。為了能將i掛在接收進程的消息隊列mq上,應(yīng)先獲得接收進程的內(nèi)部標(biāo)識符j,然后將i掛在j.mq上。由于該隊列屬于臨界資源,故在insert操作的前后都要執(zhí)waitsignal操作。2-143.接收進程調(diào)用接收原語receive(b),從自己的消息緩沖隊列mq中摘下第一個消息緩沖區(qū)i,并將其中的數(shù)據(jù)到以b為首址的指定消息接收區(qū)內(nèi)。線程概念與多線程模型線程的引入在OS中引入進程的目的是為了使多個程序能并發(fā)執(zhí)行,以提高資源利用率和系統(tǒng)吞吐量,OS具有更好的并發(fā)性。首先讓我們來回顧進程的兩個基本屬①進程是一個可擁有資源的獨立單位,一個進程要能獨立運行,它必須擁有一定的資源,包括用于存放程序正文、數(shù)據(jù)的磁盤和內(nèi)存地址空間,以及它在運行時所需要的I/O設(shè)備、②進程同時又是一個可獨立調(diào)度和分派的基本單位,一個進程要能獨立運行,它還必須是一個可獨立調(diào)度和分派的基本單位。每個進程在系統(tǒng)中有唯一的PCB,系統(tǒng)可根據(jù)其PCB感知進程的存在,也可以根據(jù)其PCB中的信息,對進程進行調(diào)度,還可將斷點信息保存在其PCB中。反之,再利用進程PCB中的信息來恢復(fù)進程運行的現(xiàn)場。正是由于進程有這兩個基本屬性,才使進程成為一個能獨立運行的基本單位,從而也就構(gòu)成了進程并發(fā)執(zhí)行的基礎(chǔ)。程序并發(fā)執(zhí)行所需付出的時空開為使程序能并發(fā)執(zhí)行,系統(tǒng)必須進行以下的一系列操創(chuàng)建進程,系統(tǒng)在創(chuàng)建一個進程時,必須為它分配其所必需的、除處理機以外的所有資源,如內(nèi)存空間、I/O設(shè)備,以及建立相應(yīng)的PCB;撤消進程,系統(tǒng)在撤消進程時,又必須先對其所占有的資源執(zhí)行回收操作,然后再撤消PCB;進程切換,對進程進行上下文切換時,需要保留當(dāng)前進程的CPU環(huán)境,設(shè)置新選中進程的CPU環(huán)境,因而須花費不少的處理機時間。線程如何能使多個程序更好地并發(fā)執(zhí)行,同時又盡量減少系統(tǒng)的開銷,已成為近年來設(shè)計操作系統(tǒng)時所追求的重要目標(biāo)。有不少研究操作系統(tǒng)的學(xué)者們想到,要設(shè)法將進程的上述兩個屬性分開,由S的指導(dǎo)下,形成了線程的概念。線程與進程的比較調(diào)度的基本單位進程內(nèi),切換代價在一個進的多個線程之間亦可并發(fā)執(zhí)行,使得操作系統(tǒng)具有更好的并發(fā)性線程自己不擁有系統(tǒng)資源(也有一點必不可少的資源),但它可以其隸屬進程的資源,即一個進程的代碼段、數(shù)據(jù)段及所擁有的系統(tǒng)資源,線程控制塊TCB。獨立性,切換代價而言,進程也是遠高于線程的。由于一個進的多個線程具有相同的地址空間,在同步和通信的實現(xiàn)方面線程也比進程容易支持多處理機系 多線程多處理線程的狀態(tài)和線程控制塊執(zhí)行狀態(tài),線程已獲得處理機而正在運行就緒狀態(tài),已具備了各種執(zhí)行條件,只須再獲得CPU阻塞狀態(tài),在執(zhí)行中因某受阻而處于暫停狀態(tài),例如,當(dāng)一個線程執(zhí)行從鍵盤讀入數(shù)據(jù)的系統(tǒng)調(diào)用時,該線程就被阻塞。線程控制塊TCB,將所有用于控制和管理線程的信息記錄程控制塊中。 線程運行狀態(tài),用于描述線程正處于何種運行狀態(tài)④優(yōu)先級,描述線程執(zhí)行的優(yōu)先程度 線程專有器,用于保存線程自己的局部變量拷貝⑥,即對某些信號加以多線程OS通常在多線程OS中的進程都包含了多個線程,并為它們提供資源。OS支持在一個進程是一個可擁有資源的基本單位多個線程可并發(fā)執(zhí)行進程已不是可執(zhí)行的實體線程的實現(xiàn)方式線程已在許多系統(tǒng)中實現(xiàn),但各系統(tǒng)的實現(xiàn)方式并不完全相同。在有的系統(tǒng)中,特別是一些數(shù)據(jù)庫管理系統(tǒng),如nfomix所實現(xiàn)的是用戶級線程;另一些系統(tǒng)(如Macinosh和OS/2操作系統(tǒng))所實現(xiàn)的是內(nèi)核支持線程;還有一些系統(tǒng)如Soaris操作系統(tǒng),則同時實現(xiàn)了這兩種類型的線程。KST(KernelSupportedOS的,是與內(nèi)核緊密相關(guān)的。內(nèi)核支持線程KST同樣也是在內(nèi)核的支持下運行的,它們的創(chuàng)建、阻塞、撤消和切換等,也都是在內(nèi)核空間實現(xiàn)的。為了對內(nèi)核線程進行控制和管理,在內(nèi)核對其加以控制。當(dāng)前大多數(shù)OS在多處理器系統(tǒng)中,內(nèi)核能夠同時調(diào)度同一進的多個線程并行執(zhí)行如果進的一個線程被阻塞了,內(nèi)核可以調(diào)度該進的其它線程占有處理器運行,也可以運行其它進的線程;內(nèi)核支持線程具有很小的數(shù)據(jù)結(jié)構(gòu)和堆棧,線程的切換比較快,切換開銷小內(nèi)核本身也可以采用多線程技術(shù),可以提高系統(tǒng)的執(zhí)行速度和效率ULT(UserLevel用戶級線程是在用戶空間中實現(xiàn)的。對線程的創(chuàng)建、撤消、同步與通信等功能,都無線程切換不需要轉(zhuǎn)換到內(nèi)核空間調(diào)度算法可以是進程的OS平臺無關(guān),因為對于線程管理的代碼是屬于用戶程序而用戶級線程方式的主要缺點則在于系統(tǒng)調(diào)用的阻塞問題。在基于進程機制的OS中,大多數(shù)系統(tǒng)調(diào)用將使進程阻塞,因此,當(dāng)線程執(zhí)行一個系統(tǒng)調(diào)用時,不僅該線程被阻塞,而且,進程內(nèi)的所有線程會被阻塞。而在內(nèi)核支持線程方式中,則進的其它線程仍然可以運行。在單純的用戶級線程實現(xiàn)方式中,多線程應(yīng)用不能利用多處理機進行多重處理的優(yōu)點,內(nèi)核每次分配給一個進程的僅有一個CPU,因此,進僅有一個線程能執(zhí)行,在該線程放棄CPU之前,其它線程只能等待。有些S把用戶級線內(nèi)核支持線程兩種方式進行組合,提供了組合方式UT/ST線程。在組合方式線程系統(tǒng)中,內(nèi)核支持多個內(nèi)核支持線程的建立、調(diào)度和管理,同時,也允許用戶應(yīng)用程序建立、調(diào)度和管理用戶級線程。2-15線程的實現(xiàn)在僅設(shè)置了內(nèi)核支持線程的OS中,一種可能的線程控制方法是,系統(tǒng)在創(chuàng)建一個新進程時,便為它分配一個任務(wù)數(shù)據(jù)區(qū)PTDA(PerTaskDataArea),其中包括若干個線程控制塊TCB空間2-16用戶級線程的實運行時系統(tǒng)(Runtime(過程)的集合,其中包括用于創(chuàng)建和撤消線程的函數(shù)、線程同步和通信的函數(shù),以及實現(xiàn)線程調(diào)度的函數(shù)等。正因為有這些函數(shù),才能使用戶級線程與內(nèi)核無關(guān)。運行時系統(tǒng)中的所有函數(shù)都駐留在用戶空間,并作為用戶級線程與內(nèi)核之間的接口。內(nèi)核控制線這種線程又稱為輕型進LWP(LightWeightProcess)。每一個進程都可擁有LWP,LWP都有自己的數(shù)據(jù)結(jié)構(gòu)(TCB),其中包括線程標(biāo)識符、優(yōu)先級、狀態(tài),另外還有棧和局部區(qū)等。LWP也可以共享進程所擁有的資源。LWP可通過LWP上,此時它便具有了內(nèi)核支持線程的所有屬性。這種線程實現(xiàn)方式就是組合方式。圖2- 利用輕型進程作為中間系線程的創(chuàng)建和終線程的創(chuàng)應(yīng)用程序在啟動時,通常僅有一個線程在執(zhí)行,人們把線程稱為“初始化線程”,它主要功能是用于創(chuàng)建新線程。創(chuàng)建新線程時,需要利用一個線程創(chuàng)建函數(shù)(或系統(tǒng)調(diào)用),并提供相應(yīng)的參數(shù),如指向線程主程序的指針、堆棧的大小,用于調(diào)度的優(yōu)先級等。程的創(chuàng)建函數(shù)執(zhí)行完后,將返回一個線程標(biāo)識符供以后使用。線程的終由終止線程通過調(diào)用相應(yīng)的函數(shù)(或系統(tǒng)調(diào)用)(主要是系統(tǒng)線程),它們一旦被建立起來之后,便一直運行下去而不被終止。在大多數(shù)的S中,線程被中止后處理機調(diào)度調(diào)度的基本概念作業(yè)與作業(yè)調(diào)度的作業(yè)通過相應(yīng)的輸入設(shè)備輸入到磁盤器,并保存在一個后備作業(yè)隊列中。再由作業(yè)調(diào)度程序?qū)⑵鋸耐獯嬲{(diào)入內(nèi)存。作業(yè)和作業(yè)作業(yè)(Job)作業(yè)步(JobStep)為了管理和調(diào)度作業(yè),在多道批處理系統(tǒng)中,為每個作業(yè)設(shè)置了一個作業(yè)控制塊JCB,它是作業(yè)在系統(tǒng)中存在的標(biāo)志,其中保存了系統(tǒng)對作業(yè)進行管理和調(diào)度所需的全部信息。JCB(CPU繁忙型、I/O端型)、作業(yè)狀態(tài)、調(diào)度信息(優(yōu)先級、作業(yè)運行時間)、資源需求(預(yù)計運行時間、要求內(nèi)存大小等)、資源使用情況等。作業(yè)運行的三個階段和三種狀收容階段運行階段完成階段作業(yè)調(diào)度的主要任務(wù)作業(yè)調(diào)度的主要任務(wù)是,根據(jù)JCB中的信息,檢查系統(tǒng)中的資源能否滿足作業(yè)對資源的需求,以及按照一定的調(diào)度算法,從外存的后備隊列中選取某些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)納調(diào)度(AdmissionScheduling)。在每次執(zhí)行作業(yè)調(diào)度時,都需做出以下兩個決定。接納哪些作業(yè)調(diào)度三級調(diào)度高級調(diào)度(HighScheduling),作業(yè)調(diào)度或長程調(diào)度(Long-ermScheduling,主要任務(wù)是按一定的原則對外存上處于后備狀態(tài)的作業(yè)進行選擇,給選中的作業(yè)分配內(nèi)存、輸入/輸出設(shè)備等必要的資源,并建立相應(yīng)的進程,放入就緒隊列,以使該作業(yè)的進程獲得競爭處理機的權(quán)利。也稱為接納調(diào)度(AdmissionScheduing。高級調(diào)度的時間尺度通常是分鐘、小時或天。(Shor-ermScheduling,主要任務(wù)是按照某種策略和方法選取一個處于就緒狀態(tài)的進程,將處理機分配給它,常見的低級調(diào)度有非搶占式和搶占式兩高效。中級調(diào)度(Intermediate中級調(diào)度(Intermediate-LevelScheduling),中程調(diào)度(Medium-TermScheduling),引入目把阻塞狀態(tài)進一步分成內(nèi)存阻塞和外存阻塞兩種狀態(tài)。在調(diào)出操作的作用下,可使進程狀態(tài)由為內(nèi)存就緒。2-18調(diào)度的時機、切換和過程調(diào)度的時正在運行的進程運行完畢或發(fā)生某而不能再繼續(xù)運行;在進程通信或同步過運行了某種原語操作,如 操作等在可搶先式調(diào)度中,有一個比當(dāng)前進程優(yōu)先級更高的進程進入就緒隊列;在時間片輪轉(zhuǎn)法中,時間片用完。進程調(diào)度的任進程調(diào)度的任務(wù)主要有三保存處理機的現(xiàn)場信按某種算法選取進程把處理器分配給進程進程調(diào)度的切換和過為了實現(xiàn)進程調(diào)度,在進程調(diào)度機制中,應(yīng)具有如下三個基本部分上下文切換器調(diào)度的基本準則處理機調(diào)度算法的共同目平衡性。由于在系統(tǒng)中可能具有多種類型的進程,有的屬于計算型作業(yè),有的屬于I/OCPU和各種外部設(shè)備都能經(jīng)常處于忙碌狀態(tài),調(diào)度算法應(yīng)盡可能保策略強制執(zhí)行。對所制訂的策略其中包括安全策略,只要需要,就必須予以準確地執(zhí)行,即使會造成某些工作的延遲也要執(zhí)行。批處理系統(tǒng)的目平均周轉(zhuǎn)時間短平均周轉(zhuǎn)時間:為了進一步反映調(diào)度的性能,更清晰地描述各進程在其周轉(zhuǎn)時間中,等待和執(zhí)行時間的具體分配狀況,往往使用帶權(quán)周轉(zhuǎn)時間,即作業(yè)的周轉(zhuǎn)時間T與系統(tǒng)為它提供服務(wù)的時間s之比,即W=T。平均帶權(quán)周轉(zhuǎn)時間:系統(tǒng)吞吐量高。由于吞吐量是指在單位時間內(nèi)系統(tǒng)所完成的作業(yè)數(shù),因而它與批處理處理機利用率高。對于大、中型計算機,CPU價格十分昂貴,致使處理機的利用率成為衡量系統(tǒng)性能的十分重要的指標(biāo);而調(diào)度方式和算法又對處理機的利用率起著十分重要的作著一定的。分時系統(tǒng)的目響應(yīng)時間快實時系統(tǒng)的目截止時間的保證可預(yù)測性調(diào)度方式非搶占方式(Nonpreemptive在采用這種調(diào)度方式時,一旦把處理機分配給某進程后,就一直讓它運行下去,決不會因件而被阻塞時,才把處理機分配給其它進程。搶占方式(Preemptive程的處理機重新分配給另一進程。在現(xiàn)代OS中廣泛采用搶占方式,這是因為:對于批處方式能滿足實時任務(wù)的需求,搶占方式比較復(fù)雜,所需付出的系統(tǒng)開銷也較大典型調(diào)度算法1、先來先服務(wù)(FCFS)調(diào)度算照作業(yè)到達的先后次序來進行調(diào)度,或者說它是優(yōu)先考慮在系統(tǒng)中等待時間最長的作業(yè),而調(diào)入內(nèi)存,為它們分配資源和創(chuàng)建進程。然后把它放入就緒隊列。由于在實際情況中,短作業(yè)(進程)占有很大比例,為了能使它們能比長作業(yè)優(yōu)先執(zhí)行,而產(chǎn)生了短作業(yè)優(yōu)先調(diào)度算法。短作業(yè)優(yōu)先算SJFSJF優(yōu)先將它們調(diào)入內(nèi)存運行。短作業(yè)優(yōu)先算法的缺必須預(yù)知作業(yè)的運行時間。在采用這種算法時,要先知道每個作業(yè)的運行時間。即使的運行,但此時作業(yè)并未完成,故一般都會偏長估計。對長作業(yè)非常不利,長作業(yè)的周轉(zhuǎn)時間會明顯地增長。更嚴重的是,該算法完全忽視作業(yè)的等待時間,可能使作業(yè)等待時間過長,出現(xiàn)饑餓現(xiàn)象。在采用FCFS算法時該調(diào)度算法完全未考慮作業(yè)的緊迫程度,故不能保證緊迫性作業(yè)能得到及時處理圖2- 3、優(yōu)先級調(diào)度算法(priority-scheduling優(yōu)先級調(diào)度算法的類非搶占式優(yōu)先級調(diào)度算法搶占式優(yōu)先級調(diào)度算優(yōu)先級的類靜態(tài)優(yōu)先范圍內(nèi)的一個整數(shù)來表示的,例如0~255中的某一整數(shù),把該整數(shù)稱為優(yōu)先數(shù)。確定進程進程類型用戶要求動態(tài)優(yōu)先對于先來先服務(wù)調(diào)度算法,作業(yè)的等待時間就是作業(yè)的優(yōu)先級,等待時間越長,其優(yōu)先級其優(yōu)先級越高,但上述兩種優(yōu)先級都作業(yè)的緊迫程度。FCFS算法所考慮的只是作業(yè)的等待時間,而忽視了作業(yè)的運行時間。SJF算法正好與之相反,只考慮作業(yè)的運行時間,而忽視了作業(yè)的等待時間。高響應(yīng)比優(yōu)先調(diào)度算法則是既考業(yè)的等待時間過長,從而改善了處理機調(diào)度的性能。高響應(yīng)比優(yōu)先算法是如何實現(xiàn)的呢?夠的時間后,必然有機會獲得處理機。該優(yōu)先級的變化規(guī)律可描述RP如果作業(yè)的等待時間相同,則要求服務(wù)的時間愈短,其優(yōu)先權(quán)愈高,因而該算法有利于短作業(yè)。當(dāng)要求服務(wù)的時間相同時,作業(yè)的優(yōu)先權(quán)決定于其等待時間,等待時間愈長,其優(yōu)先權(quán)愈高,因而它實現(xiàn)的是先來先服務(wù)。對于長作業(yè),作業(yè)的優(yōu)先級可以隨等待時間的增加而提高,當(dāng)其等待時間足夠長時,其優(yōu)先級便可升到很高,從而也可獲得處理機因此,該算法實現(xiàn)了一種較好的折衷。5、時間片輪轉(zhuǎn)調(diào)度算法(RR(1).在輪轉(zhuǎn)(RR)法中,系統(tǒng)將所有的就緒進程按FCFS策略排成一個就緒隊列。 系統(tǒng)可設(shè)置每隔一定時間(如30ms)便產(chǎn)生一次中斷去激活進程調(diào)度程序進行調(diào)度把CPU分配給隊首進程并令其執(zhí)行一個時間片當(dāng)它運行完畢后又把處理機分配給就緒隊列中新的隊首進程,也讓它執(zhí)行一個時間片。就可以保證就緒隊列中的所有進程在確定的時間段內(nèi),都能獲得一個時間片的處理機時間。(2).在RR調(diào)度算法中,應(yīng)在何時進行進程的切換,可分為兩種情況 若一個時間片尚未用完,正在運行的 已經(jīng)完成,就立即激活調(diào)度程序,將從就緒隊列中刪除,再調(diào)度就緒隊列中隊首的進程運行,并啟動一個新的時間片(3).時間片的大小對系統(tǒng)性能有很大的影2-216、多隊列調(diào)度算7、多級反饋隊列調(diào)度算(1).設(shè)置多個就緒隊列。為各個隊列賦予不同的優(yōu)先級。第一個最高,依次降低。各個隊列中進程執(zhí)行時間片的大小設(shè)置為:優(yōu)先權(quán)越高,時間片越短。2-22每個隊列都采用FCFS算法FCFS原則等待調(diào)度。當(dāng)輪到片后仍未完成,再依次將它放入第三隊列,……,依此類推。當(dāng)進程最后被降到第n隊列后,在第n隊列中便采取按RR方式運行。按隊列優(yōu)先級調(diào)度。調(diào)度程序首先調(diào)度最高優(yōu)先級隊列中的諸進程運行,僅當(dāng)?shù)谝魂犃锌臻e時才調(diào)度第二隊列中的進程運行;換言之,僅當(dāng)?shù)?~(i-1)所有隊列均空時,才會調(diào)度第i隊列中的進程運行。如果處理機正在第i隊列中為某進程服務(wù)時又有新進程進入任一優(yōu)先級較高的隊列,此時須立即把正在運行的進程放回到第i隊列的末尾,而把處理機分配給新到的高優(yōu)先級進程。(2).終端型用戶。大多屬于較小的交互性作業(yè),只要能使作業(yè)在第一隊列的時間片內(nèi)完成,便可令用戶滿意。短批處理作業(yè)用戶。周轉(zhuǎn)時間仍然較短,至多在第二到三隊列即可完成長批處理作業(yè)用戶。將依次在1~n級隊列中輪轉(zhuǎn)執(zhí)行,不必擔(dān)心作業(yè)長期得不到理對于上述調(diào)度算法的比較,見表2-12-1否能能能能能能能否平均等待時間兼顧長短作有較好的響應(yīng)型作業(yè)和短批不利于短作業(yè),不利用I/O繁忙型估計時間不易計算響應(yīng)比的平均等待時文切換浪費能能能否否能能能能能同步與互斥進程同步的基本概念間接相互制約關(guān)同處于一個系統(tǒng)中的進程必然共享某種資源,如CPU、I/O設(shè)備等,間接相互制約即源于資源共享。如A、B共享,若A申請打印時,已分配給B,則A只能阻塞,等B釋放后再改為就緒,又稱為"互斥"直接相互制約關(guān)這種制約源于進程之間的合作關(guān)系。如進程A向B提供數(shù)據(jù),當(dāng)輸入緩沖空時,B不能得到數(shù)據(jù)而阻塞;反之當(dāng)緩沖滿時,A無法寫入而阻塞,又稱為"同步"臨界資源(Critical許多硬件資源如、磁帶機等,都屬于臨界資源,諸進程間應(yīng)采取互斥方式,實生產(chǎn)者-消費者(producer-consumer具有n區(qū)中取走產(chǎn)品去消費。盡管所有的生產(chǎn)者進消費者進程都是以異步方式運行的,但它們之間必須保持同步,即不允許消費者進程到一個空緩沖區(qū)去取產(chǎn)品;也不允許生產(chǎn)者進一個已裝滿產(chǎn)品且尚未被取走的緩沖區(qū)中投放產(chǎn)品。來指示下一個可投放產(chǎn)品的緩沖區(qū),每當(dāng)生產(chǎn)者進程生產(chǎn)并投放一個產(chǎn)品后,輸入指針 用一個輸出指針out來指示下一個可從中獲取產(chǎn)品的緩沖區(qū),每當(dāng)消費者進程取走一個產(chǎn)品后,輸出1。設(shè)緩沖池的組織是循環(huán)緩沖1in=(in+1)modn;(in+1)modn=out時表示緩沖;in=out則表示緩沖池空int …ITEM; ITEMbuffer[n];//分配緩沖區(qū)intin=0,out=0;//定義指針intcounter=0;//定義計數(shù)器在生產(chǎn)者進設(shè)一局部變量nextp,用于暫時存放每次剛生產(chǎn)出來的產(chǎn)品;而在消費者進,則設(shè)一個局部變量nextc,用于存放每次要消費的產(chǎn)品voidproducer(void*生產(chǎn)者進程produceaniteminnextp; while(counter==n); }voidconsumer(void){ while(counter==0);nextc=buffer[out];out=(out+1)%n;consumetheitemin}雖然上面的生產(chǎn)者程序和消費者程序,在分別看時都是正確的,而且兩者在順序執(zhí)行其結(jié)果也會是正確的,但若并發(fā)執(zhí)行時,就會出現(xiàn)差錯,問題就在于這兩個進程共享變量counter。生產(chǎn)者對它做加1操作,消費者對它做減1操作,這兩個操作在用機器語言實現(xiàn)時,??捎孟旅娴男问矫枋錾a(chǎn)者 消費者 register1=register1+1;register2=register2- counter=register...counter5。如果生產(chǎn)者進程先執(zhí)行左列的三條機器語言語句,然后counter5;值也還是5,但是,如果按下述順序執(zhí)行:register1:=counter;(register1=5)register1:=register1+1;(register1=6)register2:=counter;(register2=5)register2:=register2-1;(register2=4) 正確的counter5,4。讀者可以自己試試,倘若再將兩段程序中counter=6counter臨界資源處理,亦即,令生產(chǎn)者進消費者進程互斥地變量counter。臨界區(qū)(critical由前所述可知,不論是硬件臨界資源還是軟件臨界資源,多個進程必須互斥地對它進行訪問。人們把在每個進臨界資源的那段代碼稱為臨界區(qū)(criticalsection)每個進程進入臨界區(qū)之前應(yīng)先對欲的臨界資源進行檢查,看是否正在被。如果此刻該臨資源未被,該進程可進入臨界區(qū),并設(shè)置它正在被的標(biāo)志,在臨界區(qū)之前執(zhí)行的這段代碼稱為進入?yún)^(qū)(entrysection。在臨界區(qū)之后也要加上一段代碼,用于將臨界區(qū)被的標(biāo)志恢復(fù)為未被的標(biāo)志,稱為退出區(qū)(exitsection)同步機制應(yīng)遵循的規(guī)空閑讓進。當(dāng)臨界區(qū)空閑時,進程可以立即進入,以便有效地利用臨界資源忙則等待。當(dāng)已有進程進入其臨界區(qū)時,其它進程必須等待,以保證互斥讓權(quán)等待。對于等待的進程,它必須立即釋放處理機,以避免進程忙等實現(xiàn)臨界區(qū)互斥的基本方法用軟件實現(xiàn)的同步互斥機while(turn!=i);criticalsection算法思想:使Pi進程輪流臨界資源,設(shè)置一個變量,存放當(dāng)前有權(quán)使用臨界資源數(shù)據(jù)結(jié)構(gòu):整型變量當(dāng)turn=i時,表示進程i可以或正在使用臨界資源。當(dāng)turn=j時,表示進程j可以或正在使用臨界資源。算法分析:對Pj進程的描述。remaider算法分析:當(dāng)Pi釋放資源后,turn=1,若Pj總處于不臨界資源的程序段運行(turn用于實現(xiàn)對的互斥而Pj總不進入打印功能)則turn總等于1,而Pi要再次訪算法二:雙標(biāo)志檢remainder若i,j兩個進程共享某臨界資源flag[i]=true,表示進程i正使用臨界資源。flag[j]=true,表示進程j正使用臨界資源。flag[i]=false,表示進程i沒有使用臨界資源。flag[j]=false,表示進程j沒有使用臨界資源。Pi,Pj同時Pi進程執(zhí)while(flag[j])flag[j]false后,CPU又轉(zhuǎn)Pjjflag[i]=false,也得以進入臨界區(qū),因PiPj檢測到flag時還沒來得及把flag標(biāo)志改為True這樣,出現(xiàn)了Pi,Pj同時進入臨界區(qū)的情況。分析:實現(xiàn)了空閑臨界資源的空閑讓Pi,PjPi,Pj同時進注意:在理解這四個算法時,要時刻記住一個前題,PiPj是并發(fā)執(zhí)行的進程。CPU,而只能執(zhí)行一個小小的時間片。算法三:雙標(biāo)志法后Pi進程:while(flag[j]);criticalsectionremainderPj進程:whileflag[i]);criticalsectionremaindersection算法2是:同時想進,又都進了CS。Pi剛執(zhí)行完flag[i]:=truePj又執(zhí)行算法3是:同時想進,互相“擠”,結(jié)果誰也進不了CSpiPjflagtrue后,又都立即去檢查對方的標(biāo)志,因而都發(fā)現(xiàn)對方也要進入臨界區(qū),即對方的標(biāo)志也為true,于是雙方算法3可以有效防止兩個進程同時進入臨界區(qū),但會造成兩個進程都不能臨界資源的while(flag[j]&&turn=j);criticalsection(i,j都想進時,進入者取決于若進程j想進入CS而且進程j正在使用CS則等待CS。 while(flag[j]&& flag[i&&turn==i為假進入CS忙則等待,空閑讓進雖然可以利用軟件方法解決諸進程互斥進入臨界區(qū)的問題,但有一定難度,并且存在很大的局限性,因而現(xiàn)在已很少采用。目前許多計算機已提供了一些特殊的硬件指令,允許對一個字中的內(nèi)容進行檢測和修正,或者是對兩個字的內(nèi)容進行交換等。可利用這些特殊的指令來解決臨界區(qū)問題。上鎖之后才能打開中斷。進程在臨界區(qū)執(zhí)行期間,計算機系統(tǒng)不響應(yīng)中斷,從而不會調(diào)度,關(guān)中斷的方法存在許多缺點①關(guān)中斷權(quán)力可能導(dǎo)致嚴重 關(guān)中斷時間過長,會影響系統(tǒng)效率,限制了處理器交叉執(zhí)行程序的能利用Test-and-Set指令實現(xiàn)互這是一種借助一條硬件指令——“測試并建立”指令TS(Test-and-Set)以實現(xiàn)互斥的方法。在許多計算機中都提供了這種指令。booleanTS(Boolean booleanreturnwhileTS(&lock;criticalsectionlock=FALSE;remaindersection;}利用Swap指令實現(xiàn)進程互voidswap(Boolean*a,Boole
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 研學(xué)基地課程創(chuàng)新與學(xué)科發(fā)展方案
- 機床電工基礎(chǔ)知識培訓(xùn)課件
- 柳州市初三數(shù)學(xué)試卷
- 茂名一模高考數(shù)學(xué)試卷
- 七上2024數(shù)學(xué)試卷
- 沛縣初一上期中數(shù)學(xué)試卷
- 羅山縣新羅高數(shù)學(xué)試卷
- 2025年小學(xué)美術(shù)教資試題及答案
- 2025年小學(xué)科學(xué)天氣試題及答案
- 2025年小學(xué)生筆試題及答案
- 2025重慶對外建設(shè)集團招聘41人筆試參考題庫附答案解析
- 2025年機關(guān)事業(yè)單位技能資格考試-文秘資料技師歷年參考題庫含答案解析(5套)
- HG-T 2006-2022 熱固性和熱塑性粉末涂料
- J-STD-020D[1].1中文版
- 四講業(yè)主業(yè)主大會業(yè)主委員會PPT課件
- 永磁渦流傳動器的應(yīng)用示范及產(chǎn)業(yè)化20150706
- EPC項目—承包人建議書、承包人實施計劃
- 被執(zhí)行人財產(chǎn)申報表
- 赫章縣地質(zhì)災(zāi)害防治規(guī)劃
- 復(fù)合活性羥基磷灰石陶瓷的研制及其生物相容性研究
- 《放射物理與防護》第四章
評論
0/150
提交評論