版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
操作系統(tǒng)教程主編第1章操作系統(tǒng)概述1.1操作系統(tǒng)的定義、作用和目標(biāo)1.2操作系統(tǒng)的歷史1.3操作系統(tǒng)的特征與功能1.4現(xiàn)代主要操作系統(tǒng)簡(jiǎn)介
1.1操作系統(tǒng)的定義、作用和目標(biāo)1.1.1操作系統(tǒng)的定義
要想了解什么是操作系統(tǒng),必須先了解計(jì)算機(jī)系統(tǒng)的組成和操作系統(tǒng)在整個(gè)計(jì)算機(jī)系統(tǒng)中的地位。
計(jì)算機(jī)系統(tǒng)包括計(jì)算機(jī)硬件系統(tǒng)和計(jì)算機(jī)軟件系統(tǒng)。操作系統(tǒng)(OperatingSystem,簡(jiǎn)稱(chēng)OS)是系統(tǒng)軟件中的一種,而且是系統(tǒng)軟件的核心。操作系統(tǒng)定義
對(duì)計(jì)算機(jī)系統(tǒng)的軟硬件資源進(jìn)行全面統(tǒng)一的控制和管理,協(xié)調(diào)計(jì)算機(jī)系統(tǒng)的各種動(dòng)作,并提供方便用戶(hù)使用的用戶(hù)界面的大型系統(tǒng)軟件。
操作系統(tǒng)向用戶(hù)提供各種服務(wù)功能,使得用戶(hù)能夠靈活、方便和有效地使用計(jì)算機(jī),使整個(gè)計(jì)算機(jī)系統(tǒng)能高效地運(yùn)行。圖1計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)1.1.2操作系統(tǒng)的作用管理和控制系統(tǒng)資源管理硬件、軟件資源合理組織工作流程保證程序安全性和共享性提供良好的用戶(hù)界面命令接口GUI圖形接口程序接口提供軟件的開(kāi)發(fā)與運(yùn)行環(huán)境1.1.3操作系統(tǒng)的目標(biāo)1.方便性直接使用命令或圖形界面完成各種操作設(shè)計(jì)程序讓計(jì)算機(jī)完成各種操作2.有效性
提高系統(tǒng)資源的利用率增加系統(tǒng)的吞吐量
3.可擴(kuò)充性
在設(shè)計(jì)操作系統(tǒng)的體系結(jié)構(gòu)時(shí),要采用合理的結(jié)構(gòu)使其能夠不斷地?cái)U(kuò)充和完善。4.開(kāi)放性可移植性互操作性1.2操作系統(tǒng)的歷史1.2.1推動(dòng)操作系統(tǒng)發(fā)展的動(dòng)力1.不斷提高資源利用率的需要
在計(jì)算機(jī)發(fā)展的初期,計(jì)算機(jī)系統(tǒng)特別昂貴,人們必須千方百計(jì)地提高計(jì)算機(jī)系統(tǒng)中各種資源的利用率,這就推動(dòng)了人們不斷發(fā)展操作系統(tǒng)的功能,由此產(chǎn)生了批處理系統(tǒng)。它能自動(dòng)地對(duì)一批作業(yè)進(jìn)行處理。
2.方便用戶(hù)操作
當(dāng)資源利用率不高的問(wèn)題得到解決以后,用戶(hù)在上機(jī)操作、調(diào)試程序上的不方便就成為主要矛盾。于是,人們就想方設(shè)法改善用戶(hù)的上機(jī)和調(diào)試程序的環(huán)境,隨之便形成了允許人機(jī)交互的分時(shí)系統(tǒng),或稱(chēng)為多用戶(hù)系統(tǒng)。
隨之交互界面又從單一的命令行方式進(jìn)化到豐富多彩的GUI圖形用戶(hù)界面。
3.硬件的不斷更新?lián)Q代
由于計(jì)算機(jī)硬件的更新?lián)Q代,使得計(jì)算機(jī)的性能不斷提高,同時(shí)硬件成本的不斷下降促使人們的購(gòu)買(mǎi)力也在不斷增強(qiáng),這些因素都在很大程度上推動(dòng)了操作系統(tǒng)的性能和功能的不斷發(fā)展。4.計(jì)算機(jī)體系結(jié)構(gòu)的發(fā)展
計(jì)算機(jī)由單處理器系統(tǒng)發(fā)展為多處理器系統(tǒng)時(shí),操作系統(tǒng)也從單處理器操作系統(tǒng)發(fā)展為多處理器操作系統(tǒng)。隨著計(jì)算機(jī)網(wǎng)絡(luò)的出現(xiàn)和發(fā)展,出現(xiàn)了分布式操作系統(tǒng)和網(wǎng)絡(luò)操作系統(tǒng)。隨著信息家電的發(fā)展,又出現(xiàn)了嵌入式操作系統(tǒng)。1.2.2操作系統(tǒng)的發(fā)展1.無(wú)操作系統(tǒng)
(1)人工操作方式
時(shí)間:第一臺(tái)計(jì)算機(jī)(1946年)~50年代中期工作方式:用戶(hù):用戶(hù)既是程序員、操作員,還是計(jì)算機(jī)專(zhuān)業(yè)人員;編程語(yǔ)言:為機(jī)器語(yǔ)言;輸入輸出:紙帶或卡片;特點(diǎn):系統(tǒng)資源利用率低
(2)脫機(jī)輸入輸出方式
為了解決計(jì)算機(jī)主機(jī)與I/O設(shè)備之間速度不匹配矛盾,引入了脫機(jī)輸入輸出方式。
脫機(jī)輸入輸出方式是指程序和數(shù)據(jù)的輸入輸出是在外圍機(jī)的控制下,而不是在主機(jī)的控制下完成的。圖2脫機(jī)輸入輸出方式工作原理
脫機(jī)輸入輸出技術(shù)是指事先將裝有用戶(hù)程序和數(shù)據(jù)的紙帶(或卡片)裝入紙帶(或卡片)輸入機(jī),在一臺(tái)外圍機(jī)的控制下把紙帶(卡片)上的數(shù)據(jù)(程序)輸入到磁盤(pán)(帶)上。當(dāng)計(jì)算機(jī)主機(jī)需要這些程序和數(shù)據(jù)時(shí),再?gòu)拇疟P(pán)(帶)上高速地調(diào)入主存。類(lèi)似地,當(dāng)計(jì)算機(jī)主機(jī)需要輸出時(shí),可以由計(jì)算機(jī)主機(jī)直接高速地把數(shù)據(jù)從主存送到磁盤(pán)(帶)上,然后再在另一臺(tái)外圍機(jī)的控制下,將磁盤(pán)(帶)上的結(jié)果通過(guò)相應(yīng)的輸出設(shè)備輸出。特點(diǎn)提高CPU執(zhí)行效率
2.批處理系統(tǒng)
批處理技術(shù)是計(jì)算機(jī)系統(tǒng)對(duì)一批作業(yè)自動(dòng)進(jìn)行處理的一種技術(shù)。批處理系統(tǒng)分為單道批處理系統(tǒng)和多道批處理系統(tǒng)兩種形式。(1)單道批處理系統(tǒng)時(shí)間:20世紀(jì)50年代應(yīng)用機(jī)型IBM701計(jì)算機(jī)IBM1401、IBM7094工作流程1.用戶(hù)將自己的作業(yè)編在紙帶或卡片上,交給計(jì)算機(jī)管理員。2.管理員在收到一定數(shù)量的用戶(hù)作業(yè)后,將紙帶和卡片上的作業(yè)通過(guò)計(jì)算機(jī)讀入,并寫(xiě)到磁帶上。3.計(jì)算機(jī)操作員將這盤(pán)磁帶加載到IBM7094上,逐個(gè)運(yùn)行用戶(hù)作業(yè),運(yùn)行的結(jié)果寫(xiě)在另一個(gè)磁帶上。4.當(dāng)所有作業(yè)運(yùn)行結(jié)束后,將存有結(jié)果的磁帶取下來(lái),連接到IBM1401計(jì)算器上打印結(jié)果。5.最后,將打印結(jié)果交給各個(gè)用戶(hù)。特點(diǎn)
1.自動(dòng)性。磁盤(pán)(帶)上的一批作業(yè)能自動(dòng)地依次逐個(gè)執(zhí)行,而無(wú)需人工干預(yù)。2.順序性。磁盤(pán)(帶)上的作業(yè)是順序地進(jìn)入主存的,先調(diào)入主存的作業(yè)先完成。3.單道性。只能有一個(gè)程序調(diào)入主存并運(yùn)行。(2)多道批處理系統(tǒng)
在單道批處理系統(tǒng)中引入了多道程序設(shè)計(jì)技術(shù),形成了多道批處理系統(tǒng)。時(shí)間:20世紀(jì)60年代概念
多道程序設(shè)計(jì)技術(shù):是指同時(shí)把多個(gè)作業(yè)放入主存并且允許它們交替執(zhí)行,共享系統(tǒng)中的各類(lèi)資源。工作原理
用戶(hù)提交的作業(yè)先在外存上排成一個(gè)隊(duì)列,稱(chēng)為“后備作業(yè)隊(duì)列”。主存儲(chǔ)器可以同時(shí)存放多道作業(yè),處理機(jī)調(diào)用一道作業(yè)執(zhí)行,如發(fā)現(xiàn)作業(yè)因輸入輸出產(chǎn)生等待,監(jiān)督程序就引導(dǎo)處理機(jī)去執(zhí)行在內(nèi)存的另一道程序,這樣就使處理機(jī)總是處于工作狀態(tài)。特點(diǎn)多道性、無(wú)序性、調(diào)度性。優(yōu)點(diǎn)1.資源利用率高2.系統(tǒng)吞吐量大不足1.作業(yè)平均周轉(zhuǎn)時(shí)間長(zhǎng)2.無(wú)交互能力(3)分時(shí)操作系統(tǒng)
批處理系統(tǒng)雖然提高了系統(tǒng)資源的利用率和系統(tǒng)的吞吐量,但是對(duì)用戶(hù)而言與計(jì)算機(jī)無(wú)交互性極不方便,這時(shí),分時(shí)系統(tǒng)產(chǎn)生。時(shí)間:20世紀(jì)60年代概念分時(shí)技術(shù):處理器的運(yùn)行時(shí)間分成很短的時(shí)間片,根據(jù)時(shí)間片輪流把處理器分配給各聯(lián)機(jī)作業(yè)使用。分時(shí)操作系統(tǒng):指采用了分時(shí)技術(shù)的操作系統(tǒng)。工作原理
在分時(shí)系統(tǒng)中,一臺(tái)計(jì)算機(jī)可以和許多終端相連,每個(gè)用戶(hù)通過(guò)終端向系統(tǒng)發(fā)出命令,請(qǐng)求完成某項(xiàng)工作。而系統(tǒng)則分析從終端發(fā)來(lái)的命令,完成用戶(hù)提出的要求。然后,用戶(hù)可以根據(jù)系統(tǒng)提供的運(yùn)行結(jié)果,向系統(tǒng)提出進(jìn)一步的要求,這樣重復(fù)上述交互過(guò)程,直到用戶(hù)完成預(yù)計(jì)的全部工作。實(shí)現(xiàn)方式單道分時(shí)系統(tǒng)、多道分時(shí)系統(tǒng)、具有“前臺(tái)”和“后臺(tái)”的分時(shí)系統(tǒng)典型代表UNIX、MULTICS特點(diǎn)1.多路性2.獨(dú)立性3.及時(shí)性:較弱,以人們能夠接收的響應(yīng)時(shí)間確定,通常2-3秒。4.交互性:交互性較強(qiáng)。(4)實(shí)時(shí)操作系統(tǒng)
有些領(lǐng)域需要的是能夠立即響應(yīng)、利用中斷驅(qū)動(dòng)、執(zhí)行專(zhuān)門(mén)的處理程序和具有高可靠性的系統(tǒng),于是,實(shí)時(shí)系統(tǒng)就產(chǎn)生了。實(shí)時(shí)系統(tǒng)是指系統(tǒng)能及時(shí)響應(yīng)外部事件的請(qǐng)求,在規(guī)定的時(shí)間內(nèi),完成對(duì)該事件的處理,并且控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致地運(yùn)行。
實(shí)時(shí)控制系統(tǒng),又稱(chēng)為硬實(shí)時(shí)系統(tǒng)。
實(shí)時(shí)信息處理系統(tǒng),又稱(chēng)為軟實(shí)時(shí)系統(tǒng),或弱實(shí)時(shí)系統(tǒng)特征即時(shí)響應(yīng)高可靠性和安全性弱交互性實(shí)時(shí)系統(tǒng)與分時(shí)系統(tǒng)的區(qū)別系統(tǒng)的設(shè)計(jì)目標(biāo)不同響應(yīng)時(shí)間的長(zhǎng)短不同交互性的強(qiáng)弱不同商業(yè)實(shí)時(shí)系統(tǒng)典型代表VxWorksEMC的DART系統(tǒng)(5)微機(jī)操作系統(tǒng)概念
微機(jī)操作系統(tǒng)是指配置在微機(jī)上的操作系統(tǒng)。最早出現(xiàn)的微機(jī)操作系統(tǒng)是CP/M操作系統(tǒng)。分類(lèi)單用戶(hù)單任務(wù)系統(tǒng):CP/M、MS-DOS單用戶(hù)多任務(wù)系統(tǒng):Windows9x多用戶(hù)多任務(wù)系統(tǒng):UNIX(6)網(wǎng)絡(luò)操作系統(tǒng)概念網(wǎng)絡(luò)操作系統(tǒng)是網(wǎng)絡(luò)的心臟和靈魂,是向網(wǎng)絡(luò)計(jì)算機(jī)提供網(wǎng)絡(luò)通信和網(wǎng)絡(luò)資源共享功能的特殊的操作系統(tǒng)。模式客戶(hù)機(jī)/服務(wù)器模式(C/S模式)20世紀(jì)80年代發(fā)展起來(lái)目前使用最廣泛對(duì)等模式網(wǎng)絡(luò)操作系統(tǒng)主流UNIX類(lèi)Netware類(lèi)WindowsLinux(7)分布式操作系統(tǒng)概念所謂分布式處理系統(tǒng)是指由多個(gè)分散的處理單元經(jīng)互聯(lián)網(wǎng)的連接而形成的系統(tǒng)。在分布式系統(tǒng)上配置的操作系統(tǒng)稱(chēng)為分布式操作系統(tǒng)。特點(diǎn)分布性、透明性并行性、健壯性分布式系統(tǒng)與網(wǎng)絡(luò)操作系統(tǒng)的區(qū)別能否適用不同的操作系統(tǒng)。網(wǎng)絡(luò)操作系統(tǒng)可以構(gòu)架于不同的操作系統(tǒng)之上;而分布式操作系統(tǒng)是由一種操作系統(tǒng)構(gòu)架的。對(duì)資源的訪問(wèn)方式不同。網(wǎng)絡(luò)操作系統(tǒng)在訪問(wèn)系統(tǒng)資源時(shí),需要指明資源的位置和類(lèi)型,對(duì)本地資源和異地資源的訪問(wèn)要區(qū)別對(duì)待;而分布式操作系統(tǒng)對(duì)所有資源,包括本地資源和異地資源,都用同一方式進(jìn)行管理和訪問(wèn),用戶(hù)不必關(guān)心資源在哪里,或資源是怎樣存儲(chǔ)的。(8)嵌入式操作系統(tǒng)概念是一種完全嵌入受控器件內(nèi)部,為特定應(yīng)用而設(shè)計(jì)的專(zhuān)用計(jì)算機(jī)系統(tǒng)。特點(diǎn)可裝卸性強(qiáng)實(shí)時(shí)性操作方便簡(jiǎn)單、界面友好接口統(tǒng)一固化代碼良好的移植性1.3操作系統(tǒng)的功能與特征
1.3.1操作系統(tǒng)的特征
不同操作系統(tǒng)的特征各不相同。批處理操作系統(tǒng)主要突出成批處理的特點(diǎn),分時(shí)操作系統(tǒng)主要突出交互性的特點(diǎn),實(shí)時(shí)操作系統(tǒng)主要突出及時(shí)處理的特點(diǎn)。但是,這幾種操作系統(tǒng)都具有以下基本特征。并發(fā)性宏觀并發(fā),微觀交替共享性
根據(jù)資源的屬性,把共享分為互斥共享和同時(shí)共享虛擬性通過(guò)某種技術(shù)把一個(gè)物理實(shí)體變成若干個(gè)邏輯實(shí)體。異步性進(jìn)程的執(zhí)行不是“一氣呵成”的,是“走走停停”的。1.3.2操作系統(tǒng)的功能處理器管理存儲(chǔ)器管理設(shè)備管理文件管理作業(yè)管理
1.4現(xiàn)代主要操作系統(tǒng)簡(jiǎn)介1.4.1Windows操作系統(tǒng)Windows,即窗戶(hù)、視窗的意思。Windows操作系統(tǒng)采用了GUI圖形化操作模式,比起從前的指令操作系統(tǒng)DOS具有界面直觀、操作方便、人性化等特點(diǎn)。Windows操作系統(tǒng)是目前世界上使用最廣泛的操作系統(tǒng),根據(jù)2013年1月最新的調(diào)查數(shù)據(jù)顯示,微軟的Windows家族占據(jù)全球PC操作系統(tǒng)市場(chǎng)份額的91.49%,位列PC行業(yè)首位。主要特點(diǎn)圖形界面、操作直觀新的內(nèi)存管理方式(實(shí)現(xiàn)虛擬存儲(chǔ))提供各種系統(tǒng)管理工具提供數(shù)據(jù)庫(kù)接口、網(wǎng)絡(luò)通信接口允許裝入和運(yùn)行DOS下開(kāi)發(fā)的程序發(fā)展歷程1.4.2Linux操作系統(tǒng)Linux是由芬蘭藉科學(xué)家LinusTorvalds于1991年編寫(xiě)完成的一個(gè)操作系統(tǒng)內(nèi)核,當(dāng)時(shí)他還是芬蘭首都赫爾辛基大學(xué)的學(xué)生。Linus把這個(gè)系統(tǒng)放在Internet上,允許自由下載,許多人對(duì)這個(gè)系統(tǒng)進(jìn)行改進(jìn)、擴(kuò)充、完善。主要特點(diǎn):高效性、靈活性發(fā)行版本RedHat、Ubuntu、Fedora、OpenSUSE、Debian、Mandriva1.4.3Macintosh操作系統(tǒng)1986年,美國(guó)Apple公司推出Macintosh計(jì)算機(jī)操作系統(tǒng)。MAC是全圖形化界面和操作方式的鼻祖。主要特點(diǎn)①采用面向?qū)ο蠹夹g(shù);②全圖形化界面;③虛擬存儲(chǔ)管理技術(shù);④應(yīng)用程序間的相互通信;⑤強(qiáng)有力的多媒體功能;⑥簡(jiǎn)便的分布式網(wǎng)絡(luò)支持;⑦豐富的應(yīng)用軟件。主要應(yīng)用領(lǐng)域桌面彩色印刷系統(tǒng)、廣告和市場(chǎng)經(jīng)營(yíng)、教育、財(cái)會(huì)和營(yíng)銷(xiāo)1.4.4Android操作系統(tǒng)Android(安卓)是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。本章小結(jié)操作系統(tǒng)是一組控制和管理計(jì)算機(jī)硬件和軟件資源,合理地調(diào)度各類(lèi)作業(yè),以方便用戶(hù)使用的程序集合。通過(guò)本章的學(xué)習(xí),讀者應(yīng)熟悉和掌握以下基本知識(shí):(1)操作系統(tǒng)的作用(2)操作系統(tǒng)的設(shè)計(jì)目標(biāo)(3)操作系統(tǒng)的特征(4)操作系統(tǒng)的基本功能操作系統(tǒng)教程主編第2章處理器管理2.1處理器管理概述2.2進(jìn)程描述2.3進(jìn)程控制2.4線(xiàn)程2.5進(jìn)程同步與互斥2.6進(jìn)程通信2.7進(jìn)程調(diào)度2.8進(jìn)程死鎖2.1處理器管理概述2.1.1處理器管理的功能處理器管理的主要任務(wù)是對(duì)處理器進(jìn)行分配,并對(duì)其運(yùn)行進(jìn)行有效的控制和管理。在現(xiàn)代操作系統(tǒng)中,處理器的分配和運(yùn)行都是以進(jìn)程為基本單位的,因而對(duì)處理器的管理也可以視為對(duì)進(jìn)程的管理。進(jìn)程是程序的一次執(zhí)行過(guò)程。處理器管理包括以下功能:
1.進(jìn)程控制。在并發(fā)運(yùn)行環(huán)境中,要使程序運(yùn)行,必須先為它創(chuàng)建一個(gè)或幾個(gè)進(jìn)程,并給它分配必要的資源。程序運(yùn)行結(jié)束時(shí),要撤消這些進(jìn)程,并回收這些進(jìn)程所占用的各類(lèi)資源。進(jìn)程控制的主要任務(wù)就是為程序創(chuàng)建進(jìn)程,撤消已結(jié)束的進(jìn)程,以及控制進(jìn)程在運(yùn)行過(guò)程中的狀態(tài)轉(zhuǎn)換。2.1.1處理器管理的功能2.進(jìn)程同步。在并發(fā)環(huán)境中,進(jìn)程是以異步方式工作的,并且以不可預(yù)知的速度向前推進(jìn)。為了使多個(gè)進(jìn)程能有條不紊地運(yùn)行,系統(tǒng)中必須設(shè)置進(jìn)程同步機(jī)制。進(jìn)程同步的主要任務(wù)是對(duì)眾多的進(jìn)程運(yùn)行進(jìn)行協(xié)調(diào)。協(xié)調(diào)方式有兩種:
(1)進(jìn)程互斥方式。(2)
進(jìn)程同步方式。2.1.1處理器管理的功能3.進(jìn)程通信。在系統(tǒng)中,經(jīng)常會(huì)有多個(gè)進(jìn)程需要相互配合去完成一個(gè)共同的任務(wù),而在這些進(jìn)程之間,往往需要相互交換信息。進(jìn)程通信的任務(wù)就是用來(lái)實(shí)現(xiàn)相互合作進(jìn)程之間的信息交換。進(jìn)程的通信方式有:(1)當(dāng)相互合作的進(jìn)程處于同一臺(tái)計(jì)算機(jī)系統(tǒng)時(shí),通常采用直接通信方式。由源進(jìn)程利用發(fā)送命令直接將消息發(fā)送到目標(biāo)進(jìn)程的消息隊(duì)列上,然后由目標(biāo)進(jìn)程利用接收命令從其消息隊(duì)列中取出消息。(2)當(dāng)相互合作的進(jìn)程處于不同計(jì)算機(jī)系統(tǒng)時(shí),通常采用間接通信方式。由源進(jìn)程利用發(fā)送命令將信息發(fā)送到一個(gè)專(zhuān)門(mén)存放消息的中間實(shí)體中,然后由目標(biāo)進(jìn)程利用接收命令從中間實(shí)體中取出消息。這個(gè)中間實(shí)體通常稱(chēng)為“郵箱”,相應(yīng)的通信系統(tǒng)稱(chēng)為電子郵件系統(tǒng)。2.1.1處理器管理的功能4.調(diào)度。等待在后備隊(duì)列上的作業(yè),通常要經(jīng)過(guò)處理器調(diào)度才能執(zhí)行。處理器調(diào)度包括作業(yè)調(diào)度(也稱(chēng)為高級(jí)調(diào)度)、進(jìn)程調(diào)度(也稱(chēng)為低級(jí)調(diào)度)和中級(jí)調(diào)度。
(1)作業(yè)調(diào)度的基本任務(wù)是從后備隊(duì)列中按照一定的算法,選擇出若干個(gè)作業(yè),為它們分配必要的資源,將它們調(diào)入主存,然后為它們建立進(jìn)程,使之成為可能獲得處理器的就緒進(jìn)程,并按照一定的算法將其插入到就緒隊(duì)列。
(2)進(jìn)程調(diào)度的基本任務(wù)是從進(jìn)程的就緒隊(duì)列中,按照一定的調(diào)度算法選出一個(gè)進(jìn)程,把處理器分配給它,并為它設(shè)置運(yùn)行現(xiàn)場(chǎng),使進(jìn)程投入運(yùn)行。本章主要介紹進(jìn)程調(diào)度。
(3)中級(jí)調(diào)度的基本任務(wù)是把那些暫時(shí)不能運(yùn)行的進(jìn)程從主存移到外存上,釋放其所占有的寶貴資源,讓其他進(jìn)程運(yùn)行。當(dāng)移到外存上的進(jìn)程具備運(yùn)行條件時(shí),再由中級(jí)調(diào)度把它們重新調(diào)入主存,等待運(yùn)行。2.1.2程序的執(zhí)行
程序執(zhí)行是指程序在計(jì)算機(jī)中的運(yùn)行過(guò)程。程序的執(zhí)行可以用前趨圖表示,程序的執(zhí)行方式有順序執(zhí)行和并發(fā)執(zhí)行。
1.前趨圖。它是一個(gè)有向無(wú)循環(huán)圖。圖中的每個(gè)結(jié)點(diǎn)可用于表示一條語(yǔ)句、一個(gè)程序段等;結(jié)點(diǎn)間的有向邊表示在兩個(gè)結(jié)點(diǎn)之間存在的前趨關(guān)系。如Pi→Pj,稱(chēng)Pi是Pj的前趨,而Pj是Pi的后繼。在前趨圖中,沒(méi)有前趨的結(jié)點(diǎn)稱(chēng)為初始結(jié)點(diǎn),沒(méi)有后繼的結(jié)點(diǎn)稱(chēng)為終止結(jié)點(diǎn)。應(yīng)當(dāng)注意的是,前趨圖中不能存在循環(huán)。2.1.2程序的執(zhí)行1.前趨圖。在下圖所示的前趨圖中存在下述前趨關(guān)系:P1→P2,P1→P3,P2→P5,P3→P4,P4→P5,P5→P62.1.2程序的執(zhí)行2.程序的順序執(zhí)行。程序在執(zhí)行時(shí),必須按照某種先后次序逐個(gè)執(zhí)行操作,只有當(dāng)前一個(gè)操作執(zhí)行完后,才能執(zhí)行后一個(gè)操作。例如:在進(jìn)行計(jì)算時(shí),總是先輸入需要的數(shù)據(jù),然后才能進(jìn)行計(jì)算,計(jì)算完成后再將結(jié)果輸出。如果用I代表輸入,C代表計(jì)算,P代表打印,則上述情況可用下圖所示的前趨圖表示。2.1.2程序的執(zhí)行
2.程序的順序執(zhí)行。
程序的順序執(zhí)行通常表現(xiàn)出如下特征:順序性。嚴(yán)格按照程序所規(guī)定的順序執(zhí)行。封閉性。程序在封閉的環(huán)境下執(zhí)行。程序在運(yùn)行時(shí)獨(dú)占所有資源,其執(zhí)行結(jié)果不受外界因素的影響??稍佻F(xiàn)性。只要程序執(zhí)行的環(huán)境和初始條件相同,程序無(wú)論重復(fù)執(zhí)行多少次,按照何種方式執(zhí)行,都將獲得相同的結(jié)果。2.1.2程序的執(zhí)行
3.程序的并發(fā)執(zhí)行。是指在一個(gè)時(shí)間段內(nèi)執(zhí)行多個(gè)程序。程序在并發(fā)執(zhí)行的特征:間斷性。在程序并發(fā)執(zhí)行時(shí),由于它們之間共享資源或相互合作,致使它們之間形成了相互制約的關(guān)系,導(dǎo)致并發(fā)程序在執(zhí)行中因?yàn)槭艿接绊?,表現(xiàn)為“執(zhí)行—暫停執(zhí)行—執(zhí)行”的間斷性活動(dòng)規(guī)律。失去封閉性。程序并發(fā)執(zhí)行時(shí),多個(gè)程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個(gè)程序來(lái)改變,致使程序的運(yùn)行失去了封閉性。這樣,程序在執(zhí)行時(shí),必然會(huì)受到其他程序的影響。不可再現(xiàn)性。由于程序執(zhí)行時(shí)失去了封閉性,也將導(dǎo)致失去可再現(xiàn)性。既使并發(fā)程序執(zhí)行的環(huán)境和初始條件相同,程序的多次執(zhí)行或以不同的方式執(zhí)行,可能獲得不相同的結(jié)果。2.1.2程序的執(zhí)行
3.程序的并發(fā)執(zhí)行?!纠?-1】程序A和程序B為并發(fā)執(zhí)行,它們共享變量M,假設(shè)M初值為3;程序A執(zhí)行M=M+1;程序B執(zhí)行printM;M=1。程序A和程序B執(zhí)行的順序若不相同,M的結(jié)果將產(chǎn)生不同的變化。順序1.M=M+1;printM;M=1。M值依次為4、4、1。順序2.printM;M=M+1;M=1。M值依次為3、4、1。順序3.printM;M=1;M=M+1。M值依次為3、1、2。按照順序1執(zhí)行,M的輸出結(jié)果為4;按照順序2執(zhí)行,M的輸出結(jié)果為3;按照順序3執(zhí)行,M的輸出結(jié)果為3。所以,當(dāng)執(zhí)行的條件不同時(shí),并發(fā)程序有可能產(chǎn)生不同的執(zhí)行順序,也就會(huì)得到不同的執(zhí)行結(jié)果。這樣并發(fā)程序就形成了結(jié)果的不可再現(xiàn)性。2.1.2程序的執(zhí)行【例2-2】已知一個(gè)求值公式(a2+3b)/(b+5a),若a、b已賦值,試畫(huà)出該公式求值過(guò)程的前趨圖,并判斷哪些求值過(guò)程可以并發(fā)執(zhí)行?!窘狻堪压?a2+3b)/(b+5a)按照運(yùn)算順序分解,可以產(chǎn)生如下運(yùn)算步驟:s1~s6,如圖(a)所示;根據(jù)分解的運(yùn)算順序畫(huà)出它的前趨圖,如圖(b)所示。2.1.2程序的執(zhí)行根據(jù)前趨圖,可以看出能夠并發(fā)執(zhí)行的運(yùn)算是:s1與s2、s1與s3、s2與s3、s1與s5、s2與s5、s3與s4、s4與s5,其余運(yùn)算不能并發(fā)執(zhí)行。2.2進(jìn)程描述2.2.1進(jìn)程的概念
1.進(jìn)程的定義。
“進(jìn)程”這一術(shù)語(yǔ),在20世紀(jì)60年代初期,首先出現(xiàn)在麻省理工學(xué)院的MULTICS系統(tǒng)和IBM公司的CTSS/360系統(tǒng)中。其后,人們對(duì)它不斷加以改進(jìn),從不同的方面對(duì)它進(jìn)行描述。關(guān)于進(jìn)程的定義有以下一些描述:進(jìn)程是程序的一次執(zhí)行。進(jìn)程可以定義為一個(gè)數(shù)據(jù)結(jié)構(gòu)及能在其上進(jìn)行操作的一個(gè)程序。
進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上的運(yùn)行過(guò)程,是系統(tǒng)資源分配和調(diào)度的一個(gè)獨(dú)立單位。
2.2.1進(jìn)程的概念
2.進(jìn)程的特征。進(jìn)程的五個(gè)基本特征:
(1)動(dòng)態(tài)性。進(jìn)程的動(dòng)態(tài)性是進(jìn)程的最基本特征,它表現(xiàn)為“進(jìn)程因創(chuàng)建而產(chǎn)生,因調(diào)度而執(zhí)行,因得不到資源而暫停,以及因撤消而消亡”。因此,進(jìn)程具有一定的生命周期,其狀態(tài)也會(huì)不斷發(fā)生變化,是一個(gè)動(dòng)態(tài)實(shí)體。(2)并發(fā)性。進(jìn)程的并發(fā)性是指多個(gè)進(jìn)程在一段時(shí)間內(nèi)同時(shí)運(yùn)行,交替使用處理器的情況。并發(fā)性是進(jìn)程也是操作系統(tǒng)的重要特征。(3)獨(dú)立性。進(jìn)程的獨(dú)立性是指進(jìn)程實(shí)體是一個(gè)能獨(dú)立運(yùn)行的基本單位,同時(shí)也是獨(dú)立獲得資源和獨(dú)立調(diào)度的基本單位。沒(méi)有創(chuàng)建進(jìn)程的程序,是不能參加運(yùn)行的。(4)異步性。進(jìn)程的異步性是指系統(tǒng)中的進(jìn)程按照各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn),即進(jìn)程按照異步方式運(yùn)行。(5)結(jié)構(gòu)性。進(jìn)程的結(jié)構(gòu)性是指在結(jié)構(gòu)上進(jìn)程實(shí)體由程序段、數(shù)據(jù)段和進(jìn)程控制塊組成,這三部分也統(tǒng)稱(chēng)為“進(jìn)程映像”。
2.2.1進(jìn)程的概念
2.進(jìn)程的特征。舉一個(gè)例子來(lái)說(shuō)明程序和進(jìn)程。例如從北京西站發(fā)往長(zhǎng)沙的T1次列車(chē),它有自己的運(yùn)行步驟:始發(fā)時(shí)間、站臺(tái),中間??康能?chē)站及??繒r(shí)間,到達(dá)終點(diǎn)站的時(shí)間等,這相當(dāng)于一個(gè)程序。而2007年3月18日從北京西站發(fā)往長(zhǎng)沙的T1次列車(chē)就相當(dāng)于一個(gè)進(jìn)程,它是一個(gè)過(guò)程,15:00從北京西站出發(fā),第二天6:10到達(dá)長(zhǎng)沙結(jié)束。2.2.2進(jìn)程的狀態(tài)1.進(jìn)程的三種基本狀態(tài)(1)就緒狀態(tài)。當(dāng)進(jìn)程已分配到除處理器(CPU)以外的所有必要資源后,只要再獲得處理器就可以執(zhí)行的狀態(tài)稱(chēng)為就緒狀態(tài)。在一個(gè)系統(tǒng)里,可以有多個(gè)進(jìn)程同時(shí)處于就緒狀態(tài),通常把這些就緒進(jìn)程排成一個(gè)或多個(gè)隊(duì)列,稱(chēng)為就緒隊(duì)列。(2)執(zhí)行狀態(tài)。處于就緒狀態(tài)的進(jìn)程一旦獲得了處理器,就可以運(yùn)行,進(jìn)程狀態(tài)也就處于執(zhí)行狀態(tài)。在單處理器系統(tǒng)中,只能有一個(gè)進(jìn)程處于執(zhí)行狀態(tài)。(3)阻塞狀態(tài)。正在執(zhí)行的進(jìn)程因?yàn)榘l(fā)生某些事件(如請(qǐng)求輸入/輸出、申請(qǐng)額外空間等)而暫停運(yùn)行,這種受阻暫停的狀態(tài)稱(chēng)為阻塞狀態(tài),也可以稱(chēng)為等待狀態(tài)。通常將處于阻塞狀態(tài)的進(jìn)程排成一個(gè)隊(duì)列,稱(chēng)為阻塞隊(duì)列。2.2.2進(jìn)程的狀態(tài)2.進(jìn)程的其它兩種狀態(tài)(1)新?tīng)顟B(tài)。當(dāng)一個(gè)新進(jìn)程剛剛建立,還未將其放入就緒隊(duì)列時(shí)的狀態(tài),稱(chēng)為新?tīng)顟B(tài)。(2)終止?fàn)顟B(tài)。當(dāng)一個(gè)進(jìn)程已經(jīng)正常結(jié)束或異常結(jié)束,操作系統(tǒng)已將其從系統(tǒng)隊(duì)列中移出,但是,尚未撤消,這時(shí)稱(chēng)為終止?fàn)顟B(tài)。2.2.2進(jìn)程的狀態(tài)3.進(jìn)程狀態(tài)間的轉(zhuǎn)換。
(1)新?tīng)顟B(tài)→就緒狀態(tài)。當(dāng)就緒隊(duì)列能夠接納新的進(jìn)程時(shí),操作系統(tǒng)就會(huì)把處于新?tīng)顟B(tài)的進(jìn)程移入就緒隊(duì)列,此時(shí)進(jìn)程就從新?tīng)顟B(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。(2)就緒狀態(tài)→執(zhí)行狀態(tài)。處于就緒狀態(tài)的進(jìn)程,當(dāng)進(jìn)程調(diào)度程序按照一定的算法為之分配了處理器后,該進(jìn)程就可以獲得執(zhí)行,從而使進(jìn)程狀態(tài)由就緒狀態(tài)變?yōu)閳?zhí)行狀態(tài)。處于執(zhí)行狀態(tài)的進(jìn)程也稱(chēng)為當(dāng)前進(jìn)程。(3)執(zhí)行狀態(tài)→阻塞狀態(tài)。正在執(zhí)行的進(jìn)程因?yàn)樽陨硇枨蟀l(fā)生某種事件(如I/O請(qǐng)求或等待某一資源等)而無(wú)法繼續(xù)執(zhí)行時(shí),只好暫停執(zhí)行,此時(shí)進(jìn)程就由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)。2.2.3進(jìn)程的狀態(tài)3.進(jìn)程狀態(tài)間的轉(zhuǎn)換。
(4)執(zhí)行狀態(tài)→就緒狀態(tài)。正在執(zhí)行的進(jìn)程,如果因系統(tǒng)分配給的時(shí)間片結(jié)束或優(yōu)先權(quán)較低,而暫停執(zhí)行時(shí),該進(jìn)程將會(huì)從執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。(5)阻塞狀態(tài)→就緒狀態(tài)。處于阻塞隊(duì)列中的進(jìn)程,如果需要的資源得到滿(mǎn)足或完成輸入輸出響應(yīng),就會(huì)變?yōu)榫途w狀態(tài),進(jìn)入就緒隊(duì)列,等待下一次調(diào)度。(6)執(zhí)行狀態(tài)→終止?fàn)顟B(tài)。當(dāng)一個(gè)進(jìn)程正常結(jié)束或出現(xiàn)異常錯(cuò)誤結(jié)束時(shí),進(jìn)程將由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榻K止?fàn)顟B(tài)。
2.2.3進(jìn)程的狀態(tài)3.進(jìn)程狀態(tài)間的轉(zhuǎn)換。
下圖給出了具有五種基本狀態(tài)的進(jìn)程狀態(tài)轉(zhuǎn)換圖。2.2.3進(jìn)程的掛起狀態(tài)1.掛起狀態(tài)的引入。
(1)用戶(hù)的需求。當(dāng)用戶(hù)在進(jìn)程運(yùn)行期間,發(fā)現(xiàn)有可疑問(wèn)題時(shí),希望進(jìn)程暫時(shí)停止下來(lái),但是,并不終止進(jìn)程。若進(jìn)程處于執(zhí)行狀態(tài),則暫停執(zhí)行;若進(jìn)程處于就緒狀態(tài),則暫時(shí)不接受調(diào)度,以便研究進(jìn)程執(zhí)行情況或?qū)Τ绦蜻M(jìn)行修改。這種靜止?fàn)顟B(tài)稱(chēng)為掛起狀態(tài)。(2)父進(jìn)程的需求。父進(jìn)程往往希望考查和修改子進(jìn)程,或者協(xié)調(diào)各個(gè)子進(jìn)程之間的活動(dòng),此時(shí)需要掛起自己的子進(jìn)程。(3)操作系統(tǒng)的需求。操作系統(tǒng)有時(shí)需要掛起某些進(jìn)程,然后檢查系統(tǒng)中資源的使用情況,進(jìn)行記賬控制,以便改善系統(tǒng)運(yùn)行的性能。(4)對(duì)換的需求。為了緩和主存與系統(tǒng)其他資源的緊張情況,并且提高系統(tǒng)性能,有些系統(tǒng)希望將處于阻塞狀態(tài)的進(jìn)程從主存換到外存。而換到外存的進(jìn)程,當(dāng)?shù)却氖录瓿?,它仍然不具備?zhí)行的條件,不能進(jìn)入就緒隊(duì)列,所以需要一個(gè)有別于阻塞狀態(tài)的新?tīng)顟B(tài)來(lái)表示,即掛起狀態(tài)。2.2.3進(jìn)程的掛起狀態(tài)2.引入進(jìn)程掛起狀態(tài)后進(jìn)程狀態(tài)的轉(zhuǎn)換。
(1)執(zhí)行狀態(tài)→靜止就緒。正在執(zhí)行的進(jìn)程,如果用掛起原語(yǔ)將該進(jìn)程掛起后,此時(shí)進(jìn)程就暫停執(zhí)行,轉(zhuǎn)變?yōu)殪o止就緒狀態(tài)。(2)靜止就緒→活動(dòng)就緒。處于靜止就緒狀態(tài)的進(jìn)程,若用激活原語(yǔ)將該進(jìn)程激活后,進(jìn)程狀態(tài)就由靜止就緒狀態(tài)變?yōu)榛顒?dòng)就緒狀態(tài),激活后的進(jìn)程就可以被調(diào)度執(zhí)行了。(3)活動(dòng)就緒→靜止就緒。當(dāng)進(jìn)程處于未被掛起的就緒狀態(tài)時(shí),稱(chēng)之為活動(dòng)就緒狀態(tài),在用掛起原語(yǔ)將該進(jìn)程掛起后,此時(shí)進(jìn)程就轉(zhuǎn)變?yōu)殪o止就緒狀態(tài)。處于靜止就緒狀態(tài)的進(jìn)程,不能再被調(diào)度執(zhí)行。2.2.3進(jìn)程的掛起狀態(tài)2.引入進(jìn)程掛起狀態(tài)后進(jìn)程狀態(tài)的轉(zhuǎn)換。
(4)活動(dòng)阻塞→靜止阻塞。當(dāng)進(jìn)程處于未被掛起的阻塞狀態(tài)時(shí),稱(chēng)之為活動(dòng)阻塞狀態(tài)。在用掛起原語(yǔ)將該進(jìn)程掛起后,此時(shí)進(jìn)程就轉(zhuǎn)變?yōu)殪o止阻塞狀態(tài)。(5)靜止阻塞→活動(dòng)阻塞。處于靜止阻塞狀態(tài)的進(jìn)程,若用激活原語(yǔ)將該進(jìn)程激活,進(jìn)程狀態(tài)就由靜止阻塞狀態(tài)變?yōu)榛顒?dòng)阻塞狀態(tài)。(6)靜止阻塞→靜止就緒。處于靜止阻塞狀態(tài)的進(jìn)程,在其所需要的資源滿(mǎn)足或完成等待的事件后,就會(huì)變?yōu)殪o止就緒狀態(tài)。2.3進(jìn)程控制2.3.1進(jìn)程控制塊PCB
1.
進(jìn)程控制塊的概念。進(jìn)程控制塊PCB(ProcessControlBlock)是進(jìn)程實(shí)體的重要組成部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)。在進(jìn)程控制塊中記錄了操作系統(tǒng)所需要的、用于描述進(jìn)程情況及控制進(jìn)程運(yùn)行所需要的全部信息。通過(guò)PCB,使得原來(lái)不能獨(dú)立運(yùn)行的程序(數(shù)據(jù)),成為一個(gè)可以獨(dú)立運(yùn)行的基本單位,一個(gè)能夠并發(fā)執(zhí)行的進(jìn)程。換句話(huà)說(shuō),在進(jìn)程的整個(gè)生命周期中,操作系統(tǒng)都要通過(guò)進(jìn)程的PCB來(lái)對(duì)并發(fā)執(zhí)行的進(jìn)程進(jìn)行管理和控制。由此看來(lái),進(jìn)程控制塊是系統(tǒng)對(duì)進(jìn)程控制采用的數(shù)據(jù)結(jié)構(gòu)。系統(tǒng)是根據(jù)進(jìn)程的PCB而感知進(jìn)程存在的。所以,進(jìn)程控制塊是進(jìn)程存在的惟一標(biāo)志。
2.3.1進(jìn)程控制塊PCB
2.
進(jìn)程控制塊的內(nèi)容。
進(jìn)程控制塊主要包括下述四個(gè)方面的信息。2.3.1進(jìn)程控制塊PCB
2.
進(jìn)程控制塊的內(nèi)容。(1)進(jìn)程標(biāo)識(shí)信息。進(jìn)程標(biāo)識(shí)符用于標(biāo)識(shí)一個(gè)進(jìn)程,通常有外部標(biāo)識(shí)符和內(nèi)部標(biāo)識(shí)符兩種。(2)說(shuō)明信息(進(jìn)程調(diào)度信息)。說(shuō)明信息是與進(jìn)程調(diào)度有關(guān)的狀態(tài)信息:進(jìn)程狀態(tài)、優(yōu)先級(jí)、阻塞原因等。(3)現(xiàn)場(chǎng)信息(處理器狀態(tài)信息)。現(xiàn)場(chǎng)信息是用于保留進(jìn)程存放在處理器中的各種信息,主要由處理器中的各個(gè)寄存器的內(nèi)容組成。(4)管理信息(進(jìn)程控制信息)。管理信息包括進(jìn)程資源、控制機(jī)制等一些進(jìn)程執(zhí)行所需要的信息:程序和數(shù)據(jù)的地址、進(jìn)程同步和通信機(jī)制、資源清單、鏈接指針等。2.3.1進(jìn)程控制塊PCB
3.
進(jìn)程控制塊的組織方式。(1)鏈接方式。把具有相同狀態(tài)的PCB,用鏈接指針鏈接成隊(duì)列,如就緒隊(duì)列、阻塞隊(duì)列和空閑隊(duì)列等。圖2-7給出了一種PCB鏈接隊(duì)列的組織方式。2.3.1進(jìn)程控制塊PCB
3.
進(jìn)程控制塊的組織方式。(2)索引方式。系統(tǒng)根據(jù)各個(gè)進(jìn)程的狀態(tài),建立不同索引表,例如就緒索引表、阻塞索引表等。并把各個(gè)索引表在主存的首地址記錄在主存中的專(zhuān)用單元里,也可以稱(chēng)為表指針。在每個(gè)索引表的表目中,記錄著具有相同狀態(tài)的各個(gè)PCB在表中的地址。圖2-8給出了PCB組織的索引方式。2.3.1進(jìn)程控制塊PCB
4.
進(jìn)程控制原語(yǔ)。
原語(yǔ)是指具有特定功能的不可被中斷的過(guò)程。它主要用于實(shí)現(xiàn)操作系統(tǒng)的一些專(zhuān)門(mén)控制操作。用于進(jìn)程控制的原語(yǔ)有:(1)創(chuàng)建原語(yǔ)。用于為一個(gè)進(jìn)程分配工作區(qū)和建立PCB,置該進(jìn)程為就緒狀態(tài)。(2)撤消原語(yǔ)。用于一個(gè)進(jìn)程工作完后,收回它的工作區(qū)和PCB。(3)阻塞原語(yǔ)。用于進(jìn)程在運(yùn)行過(guò)程中發(fā)生等待事件時(shí),把進(jìn)程的狀態(tài)改為阻塞狀態(tài)。(4)喚醒原語(yǔ)。用于當(dāng)進(jìn)程等待的事件結(jié)束時(shí),把進(jìn)程的狀態(tài)改為就緒狀態(tài)。2.3.2進(jìn)程的創(chuàng)建與撤銷(xiāo)在系統(tǒng)中,只有進(jìn)程才能得到運(yùn)行。因此,程序想要執(zhí)行,就必須為之創(chuàng)建進(jìn)程。進(jìn)程執(zhí)行結(jié)束,就必須撤消它。1.
進(jìn)程的創(chuàng)建。(1)引起進(jìn)程創(chuàng)建的事件。
引起進(jìn)程創(chuàng)建的事件有以下四類(lèi):用戶(hù)登錄。作業(yè)調(diào)度。提供服務(wù)。應(yīng)用請(qǐng)求。2.3.2進(jìn)程的創(chuàng)建與撤銷(xiāo)1.
進(jìn)程的創(chuàng)建。(2)進(jìn)程創(chuàng)建的過(guò)程。一旦操作系統(tǒng)發(fā)現(xiàn)了要求創(chuàng)建進(jìn)程的事件后,便調(diào)用進(jìn)程創(chuàng)建原語(yǔ),按照下列步驟創(chuàng)建一個(gè)新進(jìn)程。①為新進(jìn)程分配惟一的進(jìn)程標(biāo)識(shí)符,并從PCB隊(duì)列中申請(qǐng)一個(gè)空閑的PCB。②為新進(jìn)程的程序和數(shù)據(jù),以及用戶(hù)棧分配相應(yīng)的主存空間及其他必要的資源。③初始化PCB中的相應(yīng)信息,如標(biāo)識(shí)信息、處理器信息、進(jìn)程控制信息等。④如果就緒隊(duì)列可以接納新進(jìn)程,便將新進(jìn)程加入到就緒隊(duì)列中。2.3.2進(jìn)程的創(chuàng)建與撤銷(xiāo)2.
進(jìn)程的撤銷(xiāo)。(1)引起進(jìn)程撤消的事件。
引起進(jìn)程撤消的事件有三類(lèi):進(jìn)程正常結(jié)束。在進(jìn)程運(yùn)行期間,由于出現(xiàn)某些錯(cuò)誤和故障而使進(jìn)程被迫中止。進(jìn)程應(yīng)外界的請(qǐng)求而終止運(yùn)行。2.3.2進(jìn)程的創(chuàng)建與撤銷(xiāo)2.
進(jìn)程的撤銷(xiāo)。(2)進(jìn)程撤消的過(guò)程。一旦操作系統(tǒng)發(fā)現(xiàn)了要求終止進(jìn)程的事件后,便調(diào)用進(jìn)程終止原語(yǔ),按照下列步驟終止指定的進(jìn)程。①根據(jù)被終止進(jìn)程的標(biāo)識(shí)符,從PCB集合中檢索該進(jìn)程的PCB,讀出進(jìn)程狀態(tài)。②若該進(jìn)程處于執(zhí)行狀態(tài),則立即終止該進(jìn)程的執(zhí)行。③若該進(jìn)程有子孫進(jìn)程,還要將其子孫進(jìn)程終止。④將該進(jìn)程所占用的資源回收,歸還給父進(jìn)程或操作系統(tǒng)。⑤將被終止進(jìn)程的PCB從所在隊(duì)列中移出,撤消該進(jìn)程的PCB,并將其加入到空閑的PCB隊(duì)列中。2.3.3進(jìn)程的阻塞與喚醒1.
進(jìn)程的阻塞。(1)引起進(jìn)程阻塞的事件。
引起進(jìn)程阻塞的事件有四類(lèi):請(qǐng)求系統(tǒng)服務(wù)。啟動(dòng)某種操作。新數(shù)據(jù)尚未到達(dá)。無(wú)新工作可做。2.3.3進(jìn)程的阻塞與喚醒1.
進(jìn)程的阻塞。(2)進(jìn)程阻塞的過(guò)程。一旦操作系統(tǒng)發(fā)現(xiàn)了要求阻塞進(jìn)程的事件后,便調(diào)用進(jìn)程阻塞原語(yǔ),按照下列步驟阻塞指定的進(jìn)程。①立即停止執(zhí)行該進(jìn)程。②修改進(jìn)程控制塊中的相關(guān)信息。把進(jìn)程控制塊中的運(yùn)行狀態(tài)由“執(zhí)行”狀態(tài)改為“阻塞”狀態(tài),并填入阻塞的原因,以及進(jìn)程的各種狀態(tài)信息。③把進(jìn)程控制塊插入到阻塞隊(duì)列。根據(jù)阻塞隊(duì)列的組織方式,把阻塞進(jìn)程的進(jìn)程控制塊插入阻塞隊(duì)列中。④轉(zhuǎn)調(diào)度程序重新調(diào)度,運(yùn)行就緒隊(duì)列中的其他進(jìn)程。2.3.3進(jìn)程的阻塞與喚醒2.
進(jìn)程的喚醒。(1)引起進(jìn)程喚醒的事件。
引起進(jìn)程喚醒的事件有四類(lèi):請(qǐng)求系統(tǒng)服務(wù)得到滿(mǎn)足。啟動(dòng)某種操作完成。新數(shù)據(jù)已經(jīng)到達(dá)。有新工作可做。2.3.3進(jìn)程的阻塞與喚醒2.
進(jìn)程的喚醒。(2)進(jìn)程喚醒的過(guò)程。一旦操作系統(tǒng)發(fā)現(xiàn)了要求喚醒進(jìn)程的事件后,便調(diào)用進(jìn)程喚醒原語(yǔ),按照下列步驟喚醒指定的進(jìn)程。①?gòu)淖枞?duì)列中找到該進(jìn)程。②修改該進(jìn)程控制塊中的相關(guān)內(nèi)容,把阻塞狀態(tài)改為就緒狀態(tài),刪除阻塞原因等。③把進(jìn)程控制塊插入到就緒隊(duì)列中。按照就緒隊(duì)列的組織方式,把被喚醒的進(jìn)程的進(jìn)程控制塊插入到就緒隊(duì)列中。2.4線(xiàn)程2.4.1線(xiàn)程的基本概念1.線(xiàn)程的引入進(jìn)程作為系統(tǒng)中的一個(gè)基本單位,具有兩個(gè)屬性:一是資源分配和擁有的基本單位。二是一個(gè)可以獨(dú)立調(diào)度和執(zhí)行的基本單位。在進(jìn)程操作過(guò)程中,因?yàn)檫M(jìn)程是一個(gè)資源的擁有者,所以,系統(tǒng)要不斷地進(jìn)行資源的分配與回收、現(xiàn)場(chǎng)的保存與恢復(fù)等工作。系統(tǒng)要為此付出較大的時(shí)間與空間的開(kāi)銷(xiāo)。另外,在系統(tǒng)中所設(shè)置的進(jìn)程數(shù)目不能過(guò)多,進(jìn)程切換的頻率也不能過(guò)高,這就限制了系統(tǒng)并發(fā)程度的進(jìn)一步提高。設(shè)想如果將進(jìn)程的兩個(gè)屬性分開(kāi),由操作系統(tǒng)分別處理,即進(jìn)程只作為資源分配與擁有的單位,不再是調(diào)度和執(zhí)行的基本單位,而對(duì)資源分配與擁有的基本單位,不進(jìn)行頻繁的切換處理,以減少系統(tǒng)開(kāi)銷(xiāo)。正是因?yàn)檫@種思想,產(chǎn)生了一個(gè)新的概念——線(xiàn)程。2.4.1線(xiàn)程2.線(xiàn)程的概念
線(xiàn)程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和執(zhí)行的基本單位。線(xiàn)程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器、一組寄存器和棧),但是它可以與同屬于一個(gè)進(jìn)程的其他線(xiàn)程共享進(jìn)程所擁有的全部資源。一個(gè)線(xiàn)程可以創(chuàng)建和撤消另一個(gè)線(xiàn)程,同一進(jìn)程中的多個(gè)線(xiàn)程之間可以并發(fā)執(zhí)行。線(xiàn)程之間也會(huì)相互制約,使其在運(yùn)行中呈現(xiàn)異步性。因此,線(xiàn)程同樣具有就緒、執(zhí)行、阻塞三種基本狀態(tài)。2.4.1線(xiàn)程3.線(xiàn)程的組成每個(gè)線(xiàn)程有一個(gè)thread結(jié)構(gòu),即線(xiàn)程控制塊,用于保存自己私有的信息,主要由以下4個(gè)基本部分組成:①一個(gè)惟一的線(xiàn)程標(biāo)識(shí)符。②描述處理器工作情況的一組寄存器(如程序計(jì)數(shù)器、狀態(tài)寄存器、通用寄存器等)值。③每個(gè)thread結(jié)構(gòu)有兩個(gè)棧指針。一個(gè)指向核心棧,一個(gè)指向用戶(hù)棧。當(dāng)用戶(hù)線(xiàn)程轉(zhuǎn)變到核心態(tài)方式下運(yùn)行時(shí),就使用核心棧;當(dāng)線(xiàn)程用戶(hù)態(tài)下執(zhí)行時(shí),就使用自己的用戶(hù)棧。④一個(gè)私有存儲(chǔ)區(qū),存放現(xiàn)場(chǎng)保護(hù)信息和其他與該線(xiàn)程相關(guān)的統(tǒng)計(jì)信息等。2.4.1線(xiàn)程3.線(xiàn)程的組成線(xiàn)程必須在某個(gè)進(jìn)程內(nèi)執(zhí)行。它所需的其他資源,如代碼段、數(shù)據(jù)段、打開(kāi)的文件和信號(hào)等,都由它所屬的進(jìn)程擁有。即操作系統(tǒng)分配這些資源時(shí)以進(jìn)程為單位。一個(gè)進(jìn)程可以包含一個(gè)線(xiàn)程或多個(gè)線(xiàn)程。其實(shí),傳統(tǒng)的進(jìn)程就是只有一個(gè)線(xiàn)程的進(jìn)程。當(dāng)一個(gè)進(jìn)程包含多個(gè)線(xiàn)程時(shí),這些線(xiàn)程除自己私有的少量資源外,要共享所屬進(jìn)程的全部資源。核心棧調(diào)度狀態(tài)信息核心棧指針用戶(hù)棧指針?biāo)接写鎯?chǔ)區(qū)線(xiàn)程標(biāo)識(shí)符用戶(hù)棧2.4.1線(xiàn)程4.線(xiàn)程的狀態(tài)線(xiàn)程也有若干種狀態(tài),如運(yùn)行狀態(tài)、阻塞狀態(tài)、就緒狀態(tài)和終止?fàn)顟B(tài)。線(xiàn)程是一個(gè)動(dòng)態(tài)進(jìn)程。它的狀態(tài)轉(zhuǎn)換是在一定的條件下實(shí)現(xiàn)的。通常,當(dāng)一個(gè)新進(jìn)程創(chuàng)建時(shí),該進(jìn)程的一個(gè)線(xiàn)程也被創(chuàng)建。以后,這個(gè)線(xiàn)程還可以在它所屬的進(jìn)程內(nèi)部創(chuàng)建另外的線(xiàn)程,為新線(xiàn)程提供指令指針和參數(shù),同時(shí)為新線(xiàn)程提供私有的寄存器內(nèi)容和棧空間,并且放入就緒隊(duì)列中。當(dāng)CPU空閑時(shí),線(xiàn)程調(diào)度程序就從就緒隊(duì)列中選擇一個(gè)線(xiàn)程,令其投入運(yùn)行。線(xiàn)程在運(yùn)行過(guò)程中如果需要等待某個(gè)事件,它就讓出CPU,進(jìn)入阻塞狀態(tài)。以后,當(dāng)該事件發(fā)生時(shí),這個(gè)線(xiàn)程就從阻塞狀態(tài)變?yōu)榫途w狀態(tài)。2.4.1線(xiàn)程5.線(xiàn)程的管理①線(xiàn)程創(chuàng)建。一個(gè)線(xiàn)程通過(guò)調(diào)用過(guò)程庫(kù)中的thread_create可以創(chuàng)建新線(xiàn)程。使用thread_create時(shí)要提供參數(shù)——新線(xiàn)程運(yùn)行的過(guò)程名,但沒(méi)有必要指明新線(xiàn)程的地址空間,因?yàn)樗詣?dòng)運(yùn)行在創(chuàng)建者線(xiàn)程的地址空間內(nèi)。創(chuàng)建新線(xiàn)程時(shí)將為新線(xiàn)程建立thread結(jié)構(gòu),分配棧結(jié)構(gòu)等。最后把它設(shè)置為就緒狀態(tài),放入就緒隊(duì)列。②線(xiàn)程終止。一個(gè)線(xiàn)程完成自己的工作后,通過(guò)調(diào)用過(guò)程庫(kù)中的thread_exit終止自身。此后,它將從系統(tǒng)中消失,不再被調(diào)度。③線(xiàn)程等待。在某些線(xiàn)程系統(tǒng)中,一個(gè)線(xiàn)程通過(guò)調(diào)用過(guò)程庫(kù)中的thread_wait可以等待指定線(xiàn)程終止。這個(gè)過(guò)程使調(diào)用者線(xiàn)程變?yōu)樽枞麪顟B(tài),直到指定的線(xiàn)程終止,它才轉(zhuǎn)為就緒狀態(tài)。④線(xiàn)程讓權(quán)。當(dāng)一個(gè)線(xiàn)程自愿放棄CPU,讓給另外的線(xiàn)程運(yùn)行時(shí),它可調(diào)用過(guò)程thread_yield。2.4.2線(xiàn)程與進(jìn)程的比較1.線(xiàn)程與進(jìn)程的比較線(xiàn)程具有許多傳統(tǒng)進(jìn)程的特征,所以又稱(chēng)為輕型進(jìn)程。傳統(tǒng)的進(jìn)程稱(chēng)為重型進(jìn)程,相當(dāng)于只有一個(gè)線(xiàn)程的任務(wù)。在引入線(xiàn)程的操作系統(tǒng)中,通常一個(gè)進(jìn)程擁有若干個(gè)線(xiàn)程,至少也有一個(gè)線(xiàn)程。(1)調(diào)度(2)并發(fā)(3)擁有資源(4)系統(tǒng)開(kāi)銷(xiāo)2.4.2線(xiàn)程與進(jìn)程的比較2.引入線(xiàn)程的好處①易于調(diào)度②提高并發(fā)性③開(kāi)銷(xiāo)少④利于充分發(fā)揮多處理器的功能2.4.2線(xiàn)程與進(jìn)程的比較2.引入線(xiàn)程的好處線(xiàn)程的引入和應(yīng)用,也給系統(tǒng)設(shè)計(jì)帶來(lái)若干復(fù)雜性問(wèn)題。例如,父進(jìn)程有多個(gè)線(xiàn)程,當(dāng)父進(jìn)程利用fork系統(tǒng)調(diào)用創(chuàng)建子進(jìn)程時(shí),子進(jìn)程是否也有這些線(xiàn)程?如果子進(jìn)程也擁有像父進(jìn)程一樣多的線(xiàn)程,那么,當(dāng)父進(jìn)程中的一個(gè)線(xiàn)程由于從鍵盤(pán)上讀取數(shù)據(jù)而阻塞時(shí),會(huì)發(fā)生什么情況?在父進(jìn)程和子進(jìn)程中是否各有一個(gè)線(xiàn)程被阻塞?當(dāng)輸入行數(shù)據(jù)后,兩個(gè)線(xiàn)程是否都得到該數(shù)據(jù)?另一類(lèi)問(wèn)題是,若干線(xiàn)程共享多個(gè)數(shù)據(jù)結(jié)構(gòu),當(dāng)一個(gè)線(xiàn)程關(guān)閉一個(gè)文件而另一個(gè)線(xiàn)程還在從中讀取信息時(shí),會(huì)發(fā)生什么情況?如果一個(gè)線(xiàn)程發(fā)現(xiàn)內(nèi)存不足,要求分配更多內(nèi)存,當(dāng)分配工作進(jìn)行一半時(shí),發(fā)生線(xiàn)程切換,后面的線(xiàn)程也發(fā)現(xiàn)內(nèi)存不足,要求分配內(nèi)存,是否分配兩次內(nèi)存?2.4.3線(xiàn)程的類(lèi)型1.在用戶(hù)空間實(shí)現(xiàn)線(xiàn)程在用戶(hù)空間實(shí)現(xiàn)線(xiàn)程是把線(xiàn)程庫(kù)整個(gè)地放在用戶(hù)空間,核心對(duì)線(xiàn)程一無(wú)所知。所以,核心只關(guān)心對(duì)常規(guī)進(jìn)程進(jìn)行管理,并不知道線(xiàn)程是否存在,管理線(xiàn)程的工作全部由應(yīng)用程序完成。這種方式最明顯的優(yōu)點(diǎn)是:在不支持線(xiàn)程的操作系統(tǒng)上也可以實(shí)現(xiàn)用戶(hù)級(jí)線(xiàn)程。所有的操作系統(tǒng)都可歸為這一類(lèi),常見(jiàn)的用戶(hù)線(xiàn)程庫(kù)包括MachC-threads、Solaris2UI-threads等。在用戶(hù)空間中管理線(xiàn)程,每個(gè)進(jìn)程有一個(gè)私有的線(xiàn)程表,其中記載該進(jìn)程所擁有的各個(gè)線(xiàn)程的情況,如程序計(jì)數(shù)器、棧指針、寄存器的值及線(xiàn)程狀態(tài)等信息。這與核心空間中的進(jìn)程表有些類(lèi)似。2.4.3線(xiàn)程的類(lèi)型1.在用戶(hù)空間實(shí)現(xiàn)線(xiàn)程內(nèi)核用戶(hù)空間核心空間進(jìn)程線(xiàn)程運(yùn)行時(shí)系統(tǒng)線(xiàn)程表進(jìn)程表2.4.3線(xiàn)程的類(lèi)型1.在用戶(hù)空間實(shí)現(xiàn)線(xiàn)程(1)在用戶(hù)空間實(shí)現(xiàn)線(xiàn)程的優(yōu)點(diǎn)①線(xiàn)程切換速度很快②調(diào)度算法可以是應(yīng)用程序?qū)S玫?。一個(gè)應(yīng)用程序可能最適宜簡(jiǎn)單的輪轉(zhuǎn)調(diào)度算法,面另外的應(yīng)用程序可能適于優(yōu)先級(jí)調(diào)度算法。這樣,就允許不同的應(yīng)用程序采用適合自己要求的不同的調(diào)度算法,并且不干擾底層的操作系統(tǒng)的調(diào)度程序。③用戶(hù)級(jí)線(xiàn)程可以運(yùn)行在任何操作系統(tǒng)上,包括不支持線(xiàn)程機(jī)制的操作系統(tǒng)。線(xiàn)程庫(kù)是一組應(yīng)用級(jí)的實(shí)用程序,所有應(yīng)用程序都可共享。2.4.3線(xiàn)程的類(lèi)型1.在用戶(hù)空間實(shí)現(xiàn)線(xiàn)程
(2)用戶(hù)級(jí)線(xiàn)程的主要缺點(diǎn)①系統(tǒng)調(diào)用的阻塞問(wèn)題。在典型的操作系統(tǒng)中,多數(shù)系統(tǒng)調(diào)用是阻塞式的。當(dāng)一個(gè)線(xiàn)程執(zhí)行系統(tǒng)調(diào)用時(shí),不僅它自己被阻塞,而且在同一個(gè)進(jìn)程內(nèi)的所有線(xiàn)程都被阻塞。解決此問(wèn)題的一種方案是把應(yīng)用程序編寫(xiě)成多進(jìn)程式,而不是多線(xiàn)程的,但這樣做就失去了線(xiàn)程機(jī)制的主要優(yōu)點(diǎn)。另一種方案是把系統(tǒng)調(diào)用都改為非阻塞式,這樣做要修改現(xiàn)行的操作系統(tǒng),還要改變有關(guān)系統(tǒng)調(diào)用的語(yǔ)義。②在單純用戶(hù)級(jí)線(xiàn)程方式中,多線(xiàn)程應(yīng)用程序不具有多處理器的優(yōu)點(diǎn)。因?yàn)椴僮飨到y(tǒng)內(nèi)核只為每個(gè)進(jìn)程一次分配一個(gè)處理器,每次只有該進(jìn)程的一個(gè)線(xiàn)程得以運(yùn)行,在該線(xiàn)程自愿放棄CPU之前,該進(jìn)程內(nèi)的其他線(xiàn)程不會(huì)運(yùn)行。實(shí)際上,這是在單個(gè)進(jìn)程中實(shí)現(xiàn)應(yīng)用級(jí)多道程序設(shè)計(jì)。一種解決方案是讓運(yùn)行時(shí)系統(tǒng)申請(qǐng)一個(gè)時(shí)鐘信號(hào),每秒中斷一次,以便實(shí)現(xiàn)線(xiàn)程切換。但是,這種強(qiáng)行切換會(huì)使會(huì)導(dǎo)致線(xiàn)程混亂。另外,這樣做也會(huì)增加系統(tǒng)開(kāi)銷(xiāo),而且還會(huì)干擾線(xiàn)程所需的正常時(shí)鐘中斷。2.4.3線(xiàn)程的類(lèi)型2.在核心空間實(shí)現(xiàn)線(xiàn)程線(xiàn)程可在核心空間實(shí)現(xiàn)。在這種方式下,核心知道線(xiàn)程存在,并對(duì)它們實(shí)施管理。線(xiàn)程表不在每個(gè)進(jìn)程的空間中,而是在核心空間中。線(xiàn)程表中記載系統(tǒng)中所有線(xiàn)程情況。當(dāng)一個(gè)線(xiàn)程想創(chuàng)建一個(gè)新線(xiàn)程或者刪除一個(gè)現(xiàn)有線(xiàn)程時(shí),必須執(zhí)行系統(tǒng)調(diào)用,后者通過(guò)更新核心空間的線(xiàn)程表來(lái)完成上述工作。線(xiàn)程表中的信息與用戶(hù)級(jí)線(xiàn)程相同。另外,核心空間除保存一個(gè)線(xiàn)程表外,還保存一個(gè)傳統(tǒng)的進(jìn)程表,其中記載系統(tǒng)中所有進(jìn)程的信息。在核心級(jí)線(xiàn)程方式下,將進(jìn)程作為一個(gè)整體來(lái)管理,它的有關(guān)信息由核心保管。核心進(jìn)行調(diào)度時(shí)以線(xiàn)程為基本單位,這種方式克服了用戶(hù)級(jí)線(xiàn)程方式的兩個(gè)主要缺陷:①在多處理器系統(tǒng)中,核心可以同時(shí)調(diào)度同一進(jìn)程的多個(gè)線(xiàn)程;②如果一個(gè)進(jìn)程的某個(gè)線(xiàn)程阻塞了,核心可以調(diào)度同一個(gè)進(jìn)程的另一個(gè)線(xiàn)程。核心級(jí)線(xiàn)程方式的一個(gè)優(yōu)點(diǎn)是,核心線(xiàn)程本身也可以是多線(xiàn)程的。2.4.3線(xiàn)程的類(lèi)型2.在核心空間實(shí)現(xiàn)線(xiàn)程與用戶(hù)級(jí)線(xiàn)程相比,核心級(jí)線(xiàn)程方式也存在一些缺點(diǎn),主要是控制轉(zhuǎn)移開(kāi)銷(xiāo)大。在同一個(gè)進(jìn)程中,從一個(gè)線(xiàn)程切換到另一個(gè)線(xiàn)程時(shí),需將模式切換到核心態(tài)。統(tǒng)計(jì)表明,在單CPU系統(tǒng)中,針對(duì)線(xiàn)程的創(chuàng)建、調(diào)度、執(zhí)行直至完成的時(shí)間以及線(xiàn)程間同步開(kāi)銷(xiāo)的時(shí)間,核心級(jí)線(xiàn)程方式都比用戶(hù)級(jí)線(xiàn)程方式高一個(gè)數(shù)量級(jí)。從表面上看,利用核心級(jí)線(xiàn)程比采用單線(xiàn)程進(jìn)程可以明顯加快速度;同樣,利用用戶(hù)級(jí)線(xiàn)程又可得到更快的速度。然而,能否獲得這種效益取決于運(yùn)行的應(yīng)用程序。如果一個(gè)應(yīng)用程序內(nèi)多數(shù)線(xiàn)程切換都要進(jìn)入核心模式,那么,用戶(hù)級(jí)線(xiàn)程方式就不比核心級(jí)線(xiàn)程方式快。2.4.3線(xiàn)程的類(lèi)型2.在核心空間實(shí)現(xiàn)線(xiàn)程內(nèi)核進(jìn)程線(xiàn)程運(yùn)行時(shí)系統(tǒng)線(xiàn)程表進(jìn)程表2.4.3線(xiàn)程的類(lèi)型3.組合方式有些操作系統(tǒng)把用戶(hù)級(jí)線(xiàn)程和核心級(jí)線(xiàn)程這兩種方式結(jié)合在一起,從而取長(zhǎng)補(bǔ)短。同一個(gè)進(jìn)程的多個(gè)用戶(hù)級(jí)線(xiàn)程位于某個(gè)或全部核心級(jí)線(xiàn)程之上。在組合方式中,核心只知道核心級(jí)線(xiàn)程,也只對(duì)它們實(shí)施調(diào)度。某些核心級(jí)線(xiàn)程對(duì)應(yīng)多個(gè)用戶(hù)級(jí)線(xiàn)程。這些用戶(hù)級(jí)線(xiàn)程的創(chuàng)建、刪除和調(diào)度完全在用戶(hù)空間中進(jìn)行。利用組合方式,同一個(gè)進(jìn)程內(nèi)的多個(gè)線(xiàn)程可在多個(gè)處理器上并行運(yùn)行,且阻塞式系統(tǒng)調(diào)用不必將整個(gè)進(jìn)程阻塞。所以,這種方式吸收了上述二者的優(yōu)點(diǎn),克服了各自的不足。實(shí)現(xiàn)組合方式有不同的模型,即多對(duì)一模型、一對(duì)一模型和多對(duì)多模型。2.4.3線(xiàn)程的類(lèi)型3.組合方式
(1)多對(duì)一模型:多對(duì)一模型把多個(gè)用戶(hù)級(jí)線(xiàn)程映像到一個(gè)核心線(xiàn)程上。線(xiàn)程管理是在用戶(hù)空間完成的,所以效率高。問(wèn)題是如果其中有一個(gè)線(xiàn)程因執(zhí)行系統(tǒng)調(diào)用而阻塞,那么整個(gè)進(jìn)程都被阻塞。另外每次只能有一個(gè)線(xiàn)程訪問(wèn)核心,所以多個(gè)線(xiàn)程不能在多處理器上并行。在Solaris2的線(xiàn)程庫(kù)中就采用這種模型。(2)一對(duì)一模型:一對(duì)一模型是每個(gè)用戶(hù)線(xiàn)程映像到一個(gè)核心線(xiàn)程。當(dāng)一個(gè)線(xiàn)程因執(zhí)行系統(tǒng)調(diào)用而阻塞時(shí),允許調(diào)度另一個(gè)線(xiàn)程運(yùn)行,也允許多個(gè)線(xiàn)程在多處理器上并行,因而并行能力比多對(duì)一模型強(qiáng)。不足之處是創(chuàng)建一個(gè)用戶(hù)線(xiàn)程就要相應(yīng)地創(chuàng)建一個(gè)核心線(xiàn)程,因而開(kāi)銷(xiāo)大。在實(shí)現(xiàn)這種模型的系統(tǒng)上多數(shù)都限制線(xiàn)程的數(shù)量。WindowsNT,Windows2000和OS/2系統(tǒng)上都實(shí)現(xiàn)了一對(duì)一模型。(3)多對(duì)多模型:多對(duì)多模型把多個(gè)用戶(hù)級(jí)線(xiàn)程映像到較少或相等個(gè)數(shù)的核心線(xiàn)程上。核心線(xiàn)程的個(gè)數(shù)可隨應(yīng)用程序或所用機(jī)器而變化,如一個(gè)應(yīng)用程序在多處理器系統(tǒng)上分配的線(xiàn)程數(shù)就比單處理器系統(tǒng)的多。多對(duì)多模型克服了上述兩種模型的缺點(diǎn):開(kāi)發(fā)者可以根據(jù)需要?jiǎng)?chuàng)建多個(gè)用戶(hù)線(xiàn)程,而且相應(yīng)的核心線(xiàn)程可以在多處理器上并行。也就是說(shuō),當(dāng)一個(gè)線(xiàn)程因執(zhí)行系統(tǒng)調(diào)用而阻塞時(shí),核心可以調(diào)度另一個(gè)線(xiàn)程運(yùn)行。Solaris2,IRIX,HP-UX和Tru64UNIX系統(tǒng)都支持這種模型。2.4.4線(xiàn)程池實(shí)現(xiàn)線(xiàn)程池的思想是:在進(jìn)程建立時(shí)就創(chuàng)建若干線(xiàn)程,把它們放在一個(gè)池中,它們?cè)谀抢锏却ぷ鳌.?dāng)服務(wù)器接到一個(gè)請(qǐng)求時(shí),就喚醒池中的一個(gè)線(xiàn)程,并把那個(gè)請(qǐng)求傳給它,由該線(xiàn)程進(jìn)行服務(wù)。一旦它完成工作,便返回池中,等待進(jìn)行下面的服務(wù)。如果池中沒(méi)有可用的線(xiàn)程,服務(wù)器就要等待,直至有一個(gè)線(xiàn)程被釋放。使用線(xiàn)程池有以下兩個(gè)好處:①利用池中現(xiàn)存的線(xiàn)程去實(shí)現(xiàn)服務(wù)比等待創(chuàng)建一個(gè)線(xiàn)程后再去服務(wù)更快。②線(xiàn)程池限定了任何時(shí)刻存在的線(xiàn)程數(shù)量。對(duì)于那些不支持同時(shí)存在大量線(xiàn)程的系統(tǒng)來(lái)說(shuō),這一點(diǎn)尤為重要。確定池中線(xiàn)程的個(gè)數(shù),需要考慮若干因素,如系統(tǒng)中CPU個(gè)數(shù)、物理內(nèi)存容量,以及預(yù)計(jì)同時(shí)到來(lái)的客戶(hù)請(qǐng)求的數(shù)量。當(dāng)然,也可動(dòng)態(tài)調(diào)整池中線(xiàn)程的數(shù)量,但這需要更復(fù)雜的線(xiàn)城池構(gòu)造。2.4.5超線(xiàn)程1.超線(xiàn)程的概念超線(xiàn)程技術(shù),簡(jiǎn)而言之就是利用特殊的硬件指令,在一顆實(shí)體處理器中放入兩個(gè)邏輯處理單元,從而模擬成兩個(gè)工作環(huán)境,讓單個(gè)處理器都能使用線(xiàn)程級(jí)并行計(jì)算,同時(shí)處理多項(xiàng)任務(wù),進(jìn)而兼容多線(xiàn)程操作系統(tǒng)和軟件,減少了CPU的閑置時(shí)間,提高的CPU的運(yùn)行效率。操作系統(tǒng)或應(yīng)用軟件的多線(xiàn)程可以同時(shí)運(yùn)行于一個(gè)處理器上,兩個(gè)邏輯處理部件共享一組處理器執(zhí)行單元,并行完成加、乘、負(fù)載等操作,這樣就可以使得運(yùn)行性能提高40%。原來(lái)的芯片每秒鐘能夠處理成千上萬(wàn)條指令,但是在任一時(shí)刻只能夠?qū)σ粭l指令進(jìn)行操作。而“超線(xiàn)程”技術(shù)可以使芯片同時(shí)進(jìn)行多個(gè)處理,使芯片性能得到提升。發(fā)揮超線(xiàn)程技術(shù)的效能首先需要有操作系統(tǒng)的支持,現(xiàn)有的Windows各個(gè)版本、Linux都是支持多處理器的操作系統(tǒng)。另外還需要應(yīng)用軟件的支持。因?yàn)槌€(xiàn)程技術(shù)是在線(xiàn)程級(jí)別上并行處理命令,按線(xiàn)程動(dòng)態(tài)分配處理器等資源。該技術(shù)的核心理念是“并行度(Parallelism)”,也就是提高命令執(zhí)行的并行度、提高每個(gè)時(shí)鐘的效率。這就需要軟件在設(shè)計(jì)上線(xiàn)程化,提高并行處理的能力。2.4.5超線(xiàn)程2.SMT同步多線(xiàn)程技術(shù)同步多線(xiàn)程技術(shù)(SMT)是一種體系結(jié)構(gòu)模型,其目的是在現(xiàn)有硬件條件下,通過(guò)提高計(jì)算能力來(lái)提高處理器的性能。SMT結(jié)構(gòu)中,不僅在一周期內(nèi)啟動(dòng)多條指令,而且也能在同一周期內(nèi)啟動(dòng)來(lái)自相互獨(dú)立的線(xiàn)程(或上下文)的指令。在理論上,這種改進(jìn)運(yùn)用了指令級(jí)并行性(ILP)和線(xiàn)程級(jí)并行性(TLP)技術(shù)來(lái)提高執(zhí)行功能單元的效率。SMT可以最有效的利用多重啟動(dòng)和多線(xiàn)程結(jié)構(gòu),而不必實(shí)質(zhì)性的增加開(kāi)銷(xiāo)和晶體管數(shù)量。DEC/Compaq的AlphaEV-8處理器就是利用SMT技術(shù)的典型機(jī)器。EV-8的設(shè)計(jì)者之一JoelEmer說(shuō)“它看上去像4個(gè)芯片,用起來(lái)像兩個(gè),而實(shí)際上只有一個(gè),但它相比于一個(gè)非多線(xiàn)程的只增加了5%的晶體管?!?.4.5超線(xiàn)程3.超線(xiàn)程的工作原理超線(xiàn)程是同時(shí)多線(xiàn)程技術(shù)(SMT)的一種,這種技術(shù)可經(jīng)由復(fù)制處理器上的結(jié)構(gòu)狀態(tài),讓同一個(gè)處理器上的多個(gè)線(xiàn)程同步執(zhí)行并共享處理器的執(zhí)行資源。對(duì)支持多處理器功能的應(yīng)用程序而言,超線(xiàn)程處理器被視為兩個(gè)分離的邏輯處理器。應(yīng)用程序不須修正就可使用這兩個(gè)邏輯處理器。同時(shí),每個(gè)邏輯處理器都可獨(dú)立響應(yīng)中斷。第一個(gè)邏輯處理器可追蹤一個(gè)軟件線(xiàn)程,而第二個(gè)邏輯處理器則可同時(shí)追蹤另一個(gè)軟件線(xiàn)程。由于兩個(gè)線(xiàn)程共同使用同樣的執(zhí)行資源,因此不會(huì)產(chǎn)生一個(gè)線(xiàn)程執(zhí)行的同時(shí),另一個(gè)線(xiàn)程閑置的狀況。這種方式可以大大提升每個(gè)實(shí)體處理器中的執(zhí)行資源使用率。使用這項(xiàng)技術(shù)后,每個(gè)實(shí)體處理器可成為兩個(gè)邏輯處理器,讓多線(xiàn)程的應(yīng)用程序能在實(shí)體處理器上平行處理線(xiàn)程級(jí)的工作,提升了系統(tǒng)效能。隨著應(yīng)用程序針對(duì)平行處理技術(shù)的逐步優(yōu)化,超線(xiàn)程技術(shù)為新功能及用戶(hù)不斷增長(zhǎng)的需求提供了更大的改善空間。2.4.5超線(xiàn)程4.英特爾P4的超線(xiàn)程技術(shù)Intel讓CPU可以同時(shí)執(zhí)行多重線(xiàn)程,就能夠讓CPU發(fā)揮更大效率,即所謂“超線(xiàn)程(Hyper-Threading,簡(jiǎn)稱(chēng)“HT”)”技術(shù)。超線(xiàn)程技術(shù)是在一顆CPU同時(shí)執(zhí)行多個(gè)程序而共同分享一顆CPU內(nèi)的資源,理論上要像兩顆CPU一樣在同一時(shí)間執(zhí)行兩個(gè)線(xiàn)程,在Intel的P4處理器中多加入了一個(gè)LogicalCPUPointer(邏輯處理單元)。因此Intel的P4(奔騰4)HT的面積比以往的P4增大了5%。而其余部分如ALU(整數(shù)運(yùn)算單元)、FPU(浮點(diǎn)運(yùn)算單元)、L2Cache(二級(jí)緩存)則保持不變,這些部分是被分享的。雖然采用超線(xiàn)程技術(shù)能同時(shí)執(zhí)行兩個(gè)線(xiàn)程,但它并不象兩個(gè)真正的CPU那樣,每個(gè)CPU都具有獨(dú)立的資源。當(dāng)兩個(gè)線(xiàn)程都同時(shí)需要某一個(gè)資源時(shí),其中一個(gè)要暫時(shí)停止,并讓出資源,直到這些資源閑置后才能繼續(xù)。因此超線(xiàn)程的性能并不等于兩顆CPU的性能。英特爾P4超線(xiàn)程有兩個(gè)運(yùn)行模式,SingleTaskMode(單任務(wù)模式)及MultiTaskMode(多任務(wù)模式)。2.4.6多核技術(shù)1.雙核及多核技術(shù)的概念“雙核技術(shù)”,就是在處理器上擁有兩個(gè)一樣功能的處理器核心,即將兩個(gè)物理處理器核心整合到一個(gè)內(nèi)核中。兩個(gè)處理核心在共享芯片組存儲(chǔ)界面的同時(shí),可以完全獨(dú)立地完成各自地工作,從而能在平衡功耗的基礎(chǔ)上極大地提高CPU性能。多核CPU,即單芯片多處理器(CMP)是指在一個(gè)芯片上集成多個(gè)微處理器核心,可以并行地執(zhí)行程序代碼,在不提升CPU工作頻率的情況下,降低CPU的功耗,并獲得很高的聚合性能根據(jù)芯片上集成的多個(gè)微處理器核心是否相同,多核CPU可分為同構(gòu)和異構(gòu)兩種:同構(gòu)多核CPU大多數(shù)由通用的處理器組成,核心相同,核心間平等;異構(gòu)多核CPU使用不同的核心組成,它們分為主處理器和協(xié)處理器。通用多核CPU多數(shù)采用同構(gòu)結(jié)構(gòu),多個(gè)處理器執(zhí)行相同或者類(lèi)似的任務(wù)。同構(gòu)原理簡(jiǎn)單,結(jié)構(gòu)對(duì)稱(chēng),硬件上較易實(shí)現(xiàn);異構(gòu)CPU通常含有一個(gè)主處理器和多個(gè)協(xié)處理器。主處理器主要負(fù)責(zé)控制和管理,協(xié)處理器主要用來(lái)運(yùn)算。2.4.6多核技術(shù)2.具有代表性的多核CPU產(chǎn)品第一個(gè)商用的多核CPU是2001年IBM推出的雙核RISC處理器Power4。2004年IBM又推出后繼產(chǎn)品Power5,并在雙核的基礎(chǔ)上引入多線(xiàn)程技術(shù)。同時(shí),HP也推出多核CPU產(chǎn)品PA—RISC8800,SUN也發(fā)布雙核產(chǎn)品UltraSPARCIV。2005年,多核CPU得到全面發(fā)展,AMD迅速推出面向服務(wù)器、支持x86指令集的雙核心Opteron處理器。Intel則推出面向桌面系統(tǒng)的雙核CPU——PentiumD及PentiumExtremeEdition。另外,IBM在超級(jí)計(jì)算機(jī)系統(tǒng)BlueGene/L中使用的CPU也是一種雙核CPU,與索尼和東芝聯(lián)合推出的Cell處理器具備多達(dá)9個(gè)核心。2.4.6多核技術(shù)3.CMP單芯片多核心處理器介紹
CMP是指在一個(gè)芯片上集成多個(gè)微處理器核心,實(shí)質(zhì)上每個(gè)微處理器都是一個(gè)相對(duì)簡(jiǎn)單的單線(xiàn)程微處理器,而且這多個(gè)核心間聯(lián)系非常緊密,甚至共享L1、L2和L3等。其核間通過(guò)高速總線(xiàn)連接在一起。同構(gòu)CMP大多數(shù)由通用的處理器組成,多個(gè)處理器執(zhí)行相同或者類(lèi)似的任務(wù)。異構(gòu)CMP除含有通用處理器作為控制、通用計(jì)算之外,多集成DSP、ASIC、媒體處理器、VLIW處理器等針對(duì)特定的應(yīng)用提高計(jì)算的性能?;赬86技術(shù)的多核處理器多采用類(lèi)似技術(shù),其中AMDOpteron處理器在設(shè)計(jì)上與傳統(tǒng)的RISC處理器設(shè)計(jì)較為接近。Intel產(chǎn)品由于是從單路處理器發(fā)展而來(lái),在多路產(chǎn)品中與上述結(jié)構(gòu)差別較大,但在設(shè)計(jì)上也引用了不少類(lèi)似技術(shù)。CMP的結(jié)構(gòu)可根據(jù)微處理器在存儲(chǔ)層次上互連分為三類(lèi):共享一級(jí)Cache的CMP,共享二級(jí)Cache的CMP以及共享主存的CMP。通常,CMP采用共享二級(jí)Cache的CMP結(jié)構(gòu),即每個(gè)處理器核心擁有私有的一級(jí)Cache,且所有處理器核心共享二級(jí)Cache。2.4.6多核技術(shù)3.CMP單芯片多核心處理器介紹由于CMP采用單線(xiàn)程微處理器作為處理器核心,因此,CMP在實(shí)際使用中體現(xiàn)出了很多優(yōu)點(diǎn)。首先,微處理器廠商一般采用現(xiàn)有的成熟單核處理器作為處理器核心,從而可縮短設(shè)計(jì)和驗(yàn)證周期,節(jié)省研發(fā)成本。其次,控制邏輯簡(jiǎn)單,擴(kuò)展性好,,易于實(shí)現(xiàn)。再次,通過(guò)動(dòng)態(tài)調(diào)節(jié)電壓/頻率、負(fù)載優(yōu)化分布等,可有效降低CMP功耗。最后,CMP采用共享Cache或者內(nèi)存的方式,多線(xiàn)程的通信延遲較低。相比于SMT,CMP的最大優(yōu)勢(shì)體現(xiàn)在模塊化設(shè)計(jì)的簡(jiǎn)潔性。不光復(fù)制簡(jiǎn)單設(shè)計(jì)非常容易,指令調(diào)度也更加簡(jiǎn)單,同時(shí)也不存在SMT中多個(gè)線(xiàn)程對(duì)共享資源的爭(zhēng)用,因此當(dāng)應(yīng)用的線(xiàn)程級(jí)并行性較高時(shí),CMP性能一般要優(yōu)于SMT。此外在設(shè)計(jì)上,更短的芯片連線(xiàn)使CMP比長(zhǎng)導(dǎo)線(xiàn)集中式設(shè)計(jì)的SMT更容易提高芯片的運(yùn)行頻率,從而在一定程度上起到性能優(yōu)化的效果。2.4.6多核技術(shù)4.CMP的關(guān)鍵技術(shù)首先在Cache設(shè)計(jì)。在CMP中,多個(gè)處理器核心對(duì)共享單一內(nèi)存空間,因此在設(shè)計(jì)中采用多級(jí)Cache來(lái)緩解這一矛盾;此外,Cache自身的體系結(jié)構(gòu)設(shè)計(jì)也直接關(guān)系到系統(tǒng)整體性能。很多CMP設(shè)計(jì)都采用了分布一級(jí)Cache,共享二級(jí)Cache和三級(jí)Cache的結(jié)構(gòu)。其次,核間通信機(jī)制也很重要。CMP處理器由多個(gè)CPU核心組成,因此,每個(gè)CPU核間通信機(jī)制的優(yōu)劣直接關(guān)系到CMP處理器的性能,高效的通信機(jī)制是CMP處理器高性能的重要保障。目前比較主流的片上高效通信機(jī)制有兩種,一種基于總線(xiàn)共享的Cache結(jié)構(gòu),以斯坦福大學(xué)的Hydra處理器為代表;一種基于片上的互連結(jié)構(gòu),以麻省理工學(xué)院的RAW處理器為代表。總線(xiàn)共享Cache結(jié)構(gòu)是指每個(gè)CPU內(nèi)核擁有共享的二級(jí)或三級(jí)Cache,用于保存比較常用的數(shù)據(jù),并通過(guò)連接核心的總線(xiàn)進(jìn)行通信?;谄匣ミB的結(jié)構(gòu)是指每個(gè)CPU核心具有獨(dú)立的處理單元和Cache,各個(gè)CPU核心通過(guò)交叉開(kāi)關(guān)或片上網(wǎng)絡(luò)等方式連接在一起。此外,高性能系統(tǒng)總線(xiàn)接口設(shè)計(jì)、低功耗設(shè)計(jì)以及編譯/運(yùn)行時(shí)優(yōu)化等因素也是十分重要的。2.4.6多核技術(shù)5.AMD和Intel的技術(shù)比較目前流行的雙核概念主要是指基于X86開(kāi)放架構(gòu)的雙核技術(shù)。在這方面,起領(lǐng)導(dǎo)地位的主要有AMD和Intel兩家。AMD將兩個(gè)內(nèi)核做在一個(gè)Die(晶元)上,通過(guò)直連架構(gòu)連接起來(lái),集成度更高。AMD從一開(kāi)始設(shè)計(jì)時(shí)就考慮到了對(duì)多核心的支持。所有組件都直接連接到CPU,消除系統(tǒng)架構(gòu)方面的挑戰(zhàn)和瓶頸。兩個(gè)處理器核心直接連接到同一個(gè)內(nèi)核上,核心之間以芯片速度通信,進(jìn)一步降低了處理器之間的延遲。Intel則是將放在不同Die(晶元)上的兩個(gè)內(nèi)核封裝在一起,采用多個(gè)核心共享前端總線(xiàn)的方式,因此有人將Intel的方案稱(chēng)為“雙芯”。專(zhuān)家認(rèn)為,AMD的架構(gòu)對(duì)于更容易實(shí)現(xiàn)雙核以至多核,Intel的架構(gòu)會(huì)遇到多個(gè)內(nèi)核爭(zhēng)用總線(xiàn)資源的瓶頸問(wèn)題。從用戶(hù)端的角度來(lái)看,AMD的方案能夠使雙核CPU的管腳、功耗等指標(biāo)跟單核CPU保持一致,從單核升級(jí)到雙核,不需要更換電源、芯片組、散熱系統(tǒng)和主板,只需要刷新BIOS軟件即可,這對(duì)于主板廠商、計(jì)算機(jī)廠商和最終用戶(hù)的投資保護(hù)是非常有利的??蛻?hù)可以利用其現(xiàn)有基礎(chǔ)設(shè)施,通過(guò)BIOS更改移植到基于雙核心的系統(tǒng)。2.4.6多核技術(shù)6.雙核心技術(shù)與超線(xiàn)程技術(shù)的區(qū)別雙核心技術(shù)理解為兩個(gè)“物理”處理器,是一種“硬”的方式;而超線(xiàn)程技術(shù)只是兩個(gè)“邏輯”處理器,是一種“軟”的方式。從原理上來(lái)說(shuō),超線(xiàn)程技術(shù)屬于Intel版本的多線(xiàn)程技術(shù)。這種技術(shù)可以讓單CPU擁有處理多線(xiàn)程的能力,而物理上只使用一個(gè)處理器。超線(xiàn)程技術(shù)為每個(gè)物理處理器設(shè)置了兩個(gè)入口,即AS(ArchitectureState,架構(gòu)狀態(tài))接口,從而使操作系統(tǒng)等軟件將其識(shí)別為兩個(gè)邏輯處理器。超線(xiàn)程中的兩個(gè)邏輯處理器并沒(méi)有獨(dú)立的執(zhí)行單元、整數(shù)單元、寄存器甚至緩存等等資源。它們?cè)谶\(yùn)行過(guò)程中仍需要共用執(zhí)行單元、緩存和系統(tǒng)總線(xiàn)接口。在執(zhí)行多線(xiàn)程時(shí)兩個(gè)邏輯處理器均是交替工作,如果兩個(gè)線(xiàn)程都同時(shí)需要某一個(gè)資源時(shí),其中一個(gè)要暫停并要讓出資源,等待那些資源閑置時(shí)才能繼續(xù)。因此,超線(xiàn)程技術(shù)所帶來(lái)的性能提升遠(yuǎn)不能等同于兩個(gè)相同時(shí)鐘頻率處理器帶來(lái)的性能提升。可以說(shuō)Intel的超線(xiàn)程技術(shù)僅可以看做是對(duì)單個(gè)處理器運(yùn)算資源的優(yōu)化利用。雙核心技術(shù)則是通過(guò)“硬”的物理核心實(shí)現(xiàn)多線(xiàn)程工作:每個(gè)核心擁有獨(dú)立的指令集、執(zhí)行單元,與超線(xiàn)程中所采用的模擬共享機(jī)制完全不一樣。在操作系統(tǒng)看來(lái),它是實(shí)實(shí)在在的雙處理器,可以同時(shí)執(zhí)行多項(xiàng)任務(wù),能讓處理器資源真正實(shí)現(xiàn)并行處理模式,其效率和性能提升要比超線(xiàn)程技術(shù)要高得多。2.5進(jìn)程的同步與互斥2.5.1進(jìn)程的并發(fā)性并發(fā)進(jìn)程相互之間可能沒(méi)有關(guān)系,也可能存在某種關(guān)系。如果進(jìn)程間彼此毫無(wú)關(guān)系,互不影響,這種情況不會(huì)對(duì)系統(tǒng)產(chǎn)生什么影響,通常不是要研究的對(duì)象。如果進(jìn)程間彼此相關(guān),互相影響,那么就需要進(jìn)行合理的控制和協(xié)調(diào)才能正確執(zhí)行。進(jìn)程間的關(guān)系可以分為:(1)資源共享關(guān)系。系統(tǒng)中的某些進(jìn)程需要訪問(wèn)共同的資源,即當(dāng)一個(gè)進(jìn)程訪問(wèn)共享資源時(shí),訪問(wèn)該共享資源的其他進(jìn)程必須等待,當(dāng)這個(gè)進(jìn)程使用完后,其他進(jìn)程才能使用。這時(shí)要求進(jìn)程應(yīng)互斥地訪問(wèn)共享資源。(2)相互合作關(guān)系。系統(tǒng)中的某些進(jìn)程之間存在相互合作的關(guān)系,即一個(gè)進(jìn)程執(zhí)行完后,另一個(gè)進(jìn)程才能開(kāi)始。否則,另一個(gè)進(jìn)程不能開(kāi)始。這時(shí)就要保證相互合作的進(jìn)程在執(zhí)行次序上要同步。2.5.2同步與互斥的基本概念
1.進(jìn)程同步與互斥的定義對(duì)于相關(guān)進(jìn)程間的同步和互斥,必須進(jìn)行有效的控制。這種控制涉及幾個(gè)基本概念,即臨界資源、臨界區(qū)、進(jìn)程同步和進(jìn)程互斥的概念。(1)臨界資源。
在系統(tǒng)中有許多硬件或軟件資源,如打印機(jī)、公共變量等,這些資源在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程訪問(wèn)或使用,這種資源稱(chēng)為臨界資源。(2)臨界區(qū)。
作為臨界資源,不論是硬件臨界資源,還是軟件臨界資源,多個(gè)并發(fā)進(jìn)程都必須互斥地訪問(wèn)或使用,這時(shí)把每個(gè)進(jìn)程中訪問(wèn)臨界資源的那段代碼稱(chēng)為臨界區(qū)。而這些并發(fā)進(jìn)程中涉及臨界資源訪問(wèn)的那些程序段稱(chēng)為相關(guān)臨界區(qū)。2.5.2同步與互斥的基本概念
1.進(jìn)程同步與互斥的定義(3)進(jìn)程同步。
進(jìn)程同步是指多個(gè)相關(guān)進(jìn)程在執(zhí)行次序上的協(xié)調(diào),這些進(jìn)程相互合作,在一些關(guān)鍵點(diǎn)上需要相互等待或相互通信。通過(guò)臨界區(qū)可以協(xié)調(diào)進(jìn)程間相互合作的關(guān)系,這就是進(jìn)程同步。(4)進(jìn)程互斥。
進(jìn)程互斥是指當(dāng)一個(gè)進(jìn)程進(jìn)入臨界區(qū)使用臨界資源時(shí),另一個(gè)進(jìn)程必須等待。當(dāng)占用臨界資源的進(jìn)程退出臨界區(qū)后,另一個(gè)進(jìn)程才被允許使用臨界資源。通過(guò)臨界區(qū)協(xié)調(diào)進(jìn)程間資源共享的關(guān)系,就是進(jìn)程互斥。進(jìn)程互斥是同步的一種特例。2.5.2同步與互斥的基本概念
2.進(jìn)程同步機(jī)制應(yīng)遵循的原則
(1)空閑讓進(jìn)。當(dāng)無(wú)進(jìn)程處于臨界區(qū)時(shí),臨界資源處于空閑狀態(tài),可以允許一個(gè)請(qǐng)求進(jìn)入臨界區(qū)的進(jìn)程進(jìn)入自己的臨界區(qū),有效地使用臨界資源。(2)忙則等待。當(dāng)已有進(jìn)程進(jìn)入自己的臨界區(qū)時(shí),意味著臨界資源正被訪問(wèn),因而其他試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待,以保證進(jìn)程互斥地使用臨界資源。(3)有限等待。對(duì)要求訪問(wèn)臨界資源的進(jìn)程,應(yīng)保證該進(jìn)程在有效的時(shí)間內(nèi)進(jìn)入自己的臨界區(qū),以免陷入“死等”狀態(tài)。(4)讓權(quán)等待。當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理器,以免陷入“忙等”。2.5.2同步與互斥的基本概念
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年L-乳酸合作協(xié)議書(shū)
- 八年級(jí)英語(yǔ)下冊(cè) Unit 4 單元綜合測(cè)試卷(人教河南版 2025年春)
- 2022高等教育自學(xué)考試《心理學(xué)》能力測(cè)試試題-含答案
- 2025年二手商鋪購(gòu)房合同格式版(2篇)
- 2025年五年級(jí)英語(yǔ)下學(xué)期工作總結(jié)(二篇)
- 2025年個(gè)人房屋租賃合同條款范文(2篇)
- 2025年五年級(jí)班主任工作總結(jié)例文(5篇)
- 2025年事業(yè)單位試用期勞動(dòng)合同樣本(2篇)
- 2025年五年級(jí)讀書(shū)活動(dòng)總結(jié)模版(二篇)
- 2025年個(gè)人房買(mǎi)賣(mài)合同范文(2篇)
- 2025年1月浙江省高考政治試卷(含答案)
- 教體局校車(chē)安全管理培訓(xùn)
- 湖北省十堰市城區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末質(zhì)量檢測(cè)綜合物理試題(含答案)
- 導(dǎo)播理論知識(shí)培訓(xùn)班課件
- 空氣能安裝合同
- 電廠檢修安全培訓(xùn)課件
- 初二上冊(cè)的數(shù)學(xué)試卷
- 四大名繡課件-高一上學(xué)期中華傳統(tǒng)文化主題班會(huì)
- 起重機(jī)械生產(chǎn)單位題庫(kù)質(zhì)量安全員
- 高中生物選擇性必修1試題
- 電氣工程及其自動(dòng)化專(zhuān)業(yè)《畢業(yè)設(shè)計(jì)(論文)及答辯》教學(xué)大綱
評(píng)論
0/150
提交評(píng)論