操作系統(tǒng)-進(jìn)程管理_第1頁(yè)
操作系統(tǒng)-進(jìn)程管理_第2頁(yè)
操作系統(tǒng)-進(jìn)程管理_第3頁(yè)
操作系統(tǒng)-進(jìn)程管理_第4頁(yè)
操作系統(tǒng)-進(jìn)程管理_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章進(jìn)程管理,共69頁(yè),共69頁(yè),第2頁(yè),在操作系統(tǒng)中,最核心的概念是進(jìn)程,其他所有的內(nèi)容都是圍繞著進(jìn)程展開的。,共69頁(yè),第3頁(yè),本章主要內(nèi)容,進(jìn)程的引入和概念進(jìn)程的描述:PCB、狀態(tài)、進(jìn)程的控制:創(chuàng)建、撤消、阻塞、喚醒處理機(jī)調(diào)度:分配CPU給某一進(jìn)程線程的引入,共69頁(yè),第4頁(yè),2.1進(jìn)程的引入及其概念,1.程序的順序執(zhí)行簡(jiǎn)單,但資源利用率低2.程序的并行執(zhí)行復(fù)雜,但資源利用率高,1.程序的順序執(zhí)行,一次只運(yùn)行一道程序。如,單道批處理系統(tǒng)。封閉性:程序在運(yùn)行時(shí)獨(dú)占全機(jī)資源,因此,這些資源的狀態(tài)只由一個(gè)程序決定和改變,不受外界因素影響??稍佻F(xiàn)性:只要初始條件相同,無(wú)論程序連續(xù)運(yùn)行,還是斷斷續(xù)續(xù)地運(yùn)行,程序的執(zhí)行結(jié)果不變。,共69頁(yè),第5頁(yè),共69頁(yè),第6頁(yè),2.程序的并行執(zhí)行,并行執(zhí)行:計(jì)算機(jī)同時(shí)運(yùn)行多個(gè)程序,即多個(gè)程序在CPU上交叉運(yùn)行。以資源共享為條件,提高資源利用率。增強(qiáng)計(jì)算機(jī)系統(tǒng)的處理能力。,共69頁(yè),第7頁(yè),例作業(yè)i的輸入、計(jì)算和輸出操作分別用Ii、Ci、Pi表示。多個(gè)作業(yè)的并行執(zhí)行如下圖所示。,共69頁(yè),第8頁(yè),程序并行執(zhí)行的特征:(1,2,3),(1)失去了程序的封閉性和可再現(xiàn)性在并行執(zhí)行時(shí),多個(gè)程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個(gè)程序來(lái)改變,致使程序的運(yùn)行環(huán)境失去了封閉性,也將導(dǎo)致運(yùn)行結(jié)果失去了可再現(xiàn)性。,共69頁(yè),第9頁(yè),因共享資源或協(xié)調(diào)完成同一任務(wù)而引起的。,例typea.c|more這條命令就需要管道符號(hào)兩邊的程序相互協(xié)作。這是一種直接制約關(guān)系。,例并行執(zhí)行的程序A和B共享一臺(tái)打印機(jī)。A和B之間就產(chǎn)生了間接制約關(guān)系。,(2)并行執(zhí)行的程序間產(chǎn)生了相互制約關(guān)系,共69頁(yè),第10頁(yè),程序是完成特定功能的指令序列,是靜態(tài)的CPU執(zhí)行的活動(dòng)是一個(gè)動(dòng)態(tài)概念,是程序的執(zhí)行過程。,(3)程序與CPU執(zhí)行的活動(dòng)之間不再一一對(duì)應(yīng),例一個(gè)編譯程序多個(gè)編譯活動(dòng):分時(shí)系統(tǒng)中,多個(gè)用戶都調(diào)用C編譯器對(duì)自己的源程序進(jìn)行編譯。實(shí)際系統(tǒng)只保留一個(gè)編譯程序,而CPU正在為多個(gè)用戶進(jìn)行編譯。,共69頁(yè),第11頁(yè),進(jìn)程的概念,為了描述系統(tǒng)中各“并發(fā)活動(dòng)”,而引入了“進(jìn)程”。進(jìn)程(process)又叫做任務(wù)(task)進(jìn)程是程序的一次執(zhí)行過程進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上順序執(zhí)行時(shí)發(fā)生的活動(dòng),共69頁(yè),第12頁(yè),進(jìn)程具有的特性,動(dòng)態(tài)性。進(jìn)程是程序的一次執(zhí)行過程,是臨時(shí)的,有生命期的。獨(dú)立性。進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。并發(fā)性。多個(gè)進(jìn)程可在處理機(jī)上交替執(zhí)行。結(jié)構(gòu)性。系統(tǒng)為每個(gè)進(jìn)程建立一個(gè)進(jìn)程控制塊。,共69頁(yè),第13頁(yè),進(jìn)程和程序,進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的。程序是有序代碼的集合,進(jìn)程是程序的執(zhí)行,沒有程序就沒有進(jìn)程。通常,進(jìn)程不可以在計(jì)算機(jī)之間遷移,而程序可以復(fù)制。進(jìn)程是暫時(shí)的,程序是永久的。進(jìn)程包括程序、數(shù)據(jù)和進(jìn)程控制塊。通過多次執(zhí)行,一個(gè)程序可對(duì)應(yīng)多個(gè)進(jìn)程;通過調(diào)用關(guān)系,一個(gè)進(jìn)程可包括多個(gè)程序。進(jìn)程可創(chuàng)建其他進(jìn)程,而程序不能形成新的程序。,共69頁(yè),第14頁(yè),2.2進(jìn)程的描述,PCB是進(jìn)程存在的唯一標(biāo)識(shí)通常,一個(gè)進(jìn)程的信息包括:至少一個(gè)可執(zhí)行程序一個(gè)獨(dú)立的地址空間一個(gè)執(zhí)行棧區(qū)(子程序調(diào)用,系統(tǒng)調(diào)用,進(jìn)程切換)打開的文件、申請(qǐng)使用的I/O設(shè)備等,進(jìn)程控制塊(PCB,processcontrolblock)進(jìn)程描述符(processdescriptor),共57頁(yè),第15頁(yè),進(jìn)程地址空間,內(nèi)核代碼可以訪問當(dāng)前進(jìn)程的整個(gè)4GB地址空間,共69頁(yè),第16頁(yè),PCB中的基本信息,進(jìn)程標(biāo)識(shí)數(shù):用于唯一地標(biāo)識(shí)一個(gè)進(jìn)程,通常是一個(gè)整數(shù)。外部標(biāo)識(shí)符,由用戶使用。如:send進(jìn)程、print進(jìn)程等。進(jìn)程的狀態(tài)、調(diào)度、存儲(chǔ)器管理信息:是調(diào)度進(jìn)程所必需的信息,包括進(jìn)程狀態(tài)、優(yōu)先級(jí)、程序在主存地址、在外存的地址等。進(jìn)程使用的資源信息:分配給進(jìn)程的I/O設(shè)備、正在打開的文件等。,共69頁(yè),第17頁(yè),CPU現(xiàn)場(chǎng)保護(hù)區(qū):保存進(jìn)程運(yùn)行的現(xiàn)場(chǎng)信息。包括:程序計(jì)數(shù)器(PC)、程序狀態(tài)字、通用寄存器、堆棧指針等。記帳信息:包括使用CPU時(shí)間量、帳號(hào)等。進(jìn)程之間的家族關(guān)系:類UNIX系統(tǒng),進(jìn)程之間存在著家族關(guān)系,父/子進(jìn)程。Windows進(jìn)程之間不具有父子關(guān)系。進(jìn)程的鏈接指針:鏈接相同狀態(tài)的進(jìn)程。,共69頁(yè),第18頁(yè),Unix:structproc;Linux:structtask_struct;P146Windows執(zhí)行體進(jìn)程塊(EPROCESS)P284,內(nèi)核實(shí)現(xiàn)線程調(diào)度,調(diào)度信息在KTHREAD結(jié)構(gòu)中,實(shí)例,共69頁(yè),第19頁(yè),進(jìn)程的狀態(tài),進(jìn)程在其生命期內(nèi)一直處在一個(gè)狀態(tài)不斷變化的過程中。為了刻畫這一變化過程,操作系統(tǒng)把進(jìn)程狀態(tài)分成若干種,并約定各種狀態(tài)之間的轉(zhuǎn)換條件。狀態(tài)信息記錄在進(jìn)程的PCB結(jié)構(gòu)中。,共69頁(yè),第20頁(yè),(1)運(yùn)行態(tài)(running):進(jìn)程正在CPU上運(yùn)行。單CPU系統(tǒng)一次只有一個(gè)運(yùn)行進(jìn)程;多CPU系統(tǒng)可能有多個(gè)運(yùn)行進(jìn)程。(2)阻塞態(tài)(blocked):又稱等待態(tài)。當(dāng)進(jìn)程因等待某個(gè)條件發(fā)生而不能運(yùn)行時(shí)所處的狀態(tài)。等待I/O完成,等待一個(gè)消息(3)就緒態(tài)(ready):已獲得除CPU之外的全部資源,只要再獲得CPU,就可執(zhí)行。,共69頁(yè),第21頁(yè),運(yùn)行態(tài),就緒態(tài),阻塞態(tài),被搶先,進(jìn)程調(diào)度,等待事件,事件完成,進(jìn)程的三個(gè)基本狀態(tài)及其轉(zhuǎn)換,共69頁(yè),第22頁(yè),運(yùn)行態(tài)-阻塞態(tài):是由運(yùn)行進(jìn)程自己主動(dòng)改變的。例一個(gè)正在運(yùn)行的進(jìn)程啟動(dòng)了某一I/O設(shè)備后,使自己由運(yùn)行態(tài)變?yōu)樽枞麘B(tài),等待該I/O設(shè)備傳輸完成。阻塞態(tài)-就緒態(tài):是由外界事件引起的。例當(dāng)I/O設(shè)備傳輸完成時(shí),請(qǐng)求中斷,由I/O中斷處理程序把因等待這一I/O完成而阻塞的進(jìn)程變?yōu)榫途w態(tài)。,由進(jìn)程狀態(tài)轉(zhuǎn)換圖可以看出,共69頁(yè),第23頁(yè),運(yùn)行態(tài)-就緒態(tài):處于運(yùn)行態(tài)的進(jìn)程被剝奪CPU。例(1)采用時(shí)間片輪轉(zhuǎn)法調(diào)度:當(dāng)前進(jìn)程用完時(shí)間片,由運(yùn)行態(tài)變?yōu)榫途w態(tài)。(2)采用優(yōu)先級(jí)調(diào)度:若有更高優(yōu)先級(jí)的進(jìn)程變?yōu)榫途w態(tài),當(dāng)前進(jìn)程被剝奪CPU,由運(yùn)行態(tài)變?yōu)榫途w態(tài)。就緒態(tài)-運(yùn)行態(tài):被進(jìn)程調(diào)度程序選中。,共69頁(yè),第24頁(yè),(4)創(chuàng)建態(tài):剛剛建立,未進(jìn)就緒隊(duì)列。(5)終止態(tài):已正常結(jié)束或故障中斷,但尚未撤消。暫留在系統(tǒng)中,方便其它進(jìn)程去收集該進(jìn)程的有關(guān)信息。,創(chuàng)建態(tài)就緒態(tài):操作系統(tǒng)準(zhǔn)備好再接納一個(gè)進(jìn)程時(shí),把一個(gè)進(jìn)程從創(chuàng)建態(tài)變?yōu)榫途w態(tài)。為了確保系統(tǒng)的性能,大多數(shù)系統(tǒng)都限制創(chuàng)建的進(jìn)程數(shù)量。,共69頁(yè),第25頁(yè),圖2.3進(jìn)程的五種狀態(tài),共69頁(yè),第26頁(yè),進(jìn)程的組織,(1)線性表:把所有進(jìn)程的PCB存放在一個(gè)數(shù)組中,系統(tǒng)通過數(shù)組下標(biāo)訪問每個(gè)PCB。,共69頁(yè),第27頁(yè),(2)鏈接表:把具有相同狀態(tài)的PCB組成一個(gè)隊(duì)列。處于就緒態(tài)的進(jìn)程可按照某種策略排成多個(gè)就緒隊(duì)列。處于阻塞態(tài)的進(jìn)程又可以根據(jù)阻塞的原因不同組織成多個(gè)阻塞隊(duì)列。如,等待磁盤I/O隊(duì)列,等待磁帶I/O隊(duì)列等。,共69頁(yè),第28頁(yè),共69頁(yè),第29頁(yè),2.3進(jìn)程控制,進(jìn)程控制:是指系統(tǒng)使用一些具有特定功能的程序段來(lái)創(chuàng)建、撤消進(jìn)程,以及完成進(jìn)程各狀態(tài)之間的轉(zhuǎn)換。進(jìn)程控制是由操作系統(tǒng)內(nèi)核實(shí)現(xiàn)的。是屬于原語(yǔ)一級(jí)的操作,不能被中斷。,共69頁(yè),第30頁(yè),(1)創(chuàng)建進(jìn)程的時(shí)機(jī)批處理系統(tǒng)中,會(huì)為每個(gè)提交的作業(yè)創(chuàng)建一個(gè)進(jìn)程。分時(shí)系統(tǒng)中,系統(tǒng)會(huì)為每個(gè)登錄用戶創(chuàng)建一個(gè)終端進(jìn)程。交互式系統(tǒng)中,鍵入一個(gè)命令或點(diǎn)擊一個(gè)圖標(biāo)都會(huì)開始一個(gè)新進(jìn)程。,創(chuàng)建原語(yǔ),共69頁(yè),第31頁(yè),在UNIX和Windows系統(tǒng)中,用戶可以同時(shí)打開多個(gè)窗口,每個(gè)窗口都對(duì)應(yīng)一個(gè)進(jìn)程。UNIX的系統(tǒng)調(diào)用fork()會(huì)創(chuàng)建一個(gè)與調(diào)用進(jìn)程具有相同副本的進(jìn)程,子進(jìn)程通過execve()系統(tǒng)調(diào)用會(huì)運(yùn)行一個(gè)新的程序。Windows中的Win32函數(shù)調(diào)用CreateProcess()創(chuàng)建新進(jìn)程,運(yùn)行新程序。,共69頁(yè),第32頁(yè),(2)創(chuàng)建原語(yǔ)的功能,掃描進(jìn)程表,找到一個(gè)空閑的PCB。為新進(jìn)程的程序、數(shù)據(jù)、用戶棧分配內(nèi)存初始化PCB。把調(diào)用者提供的參數(shù)(進(jìn)程名、進(jìn)程優(yōu)先級(jí)、實(shí)體所在主存的起始地址、所需的資源清單、記帳信息及進(jìn)程家族關(guān)系等)填入PCB中。將新進(jìn)程插入就緒隊(duì)列。,共69頁(yè),第33頁(yè),進(jìn)程執(zhí)行完或因故障不能繼續(xù)運(yùn)行。功能:在PCB集合中尋找要撤銷的進(jìn)程;若有子進(jìn)程,也須終止,以防成為不可控的;將其占用的系統(tǒng)資源歸還系統(tǒng);撤銷其PCB。,(UNIX中用exit();Windows用ExitProcess()),撤消原語(yǔ),共69頁(yè),第34頁(yè),在運(yùn)行過程中進(jìn)程期待某一事件發(fā)生時(shí),自己執(zhí)行阻塞原語(yǔ),由運(yùn)行態(tài)變?yōu)樽枞麘B(tài)。(等待鍵盤輸入;等待磁盤數(shù)據(jù)傳輸完成;等待其它進(jìn)程發(fā)送一個(gè)信息)功能:中斷CPU;將其運(yùn)行現(xiàn)場(chǎng)信息保存在PCB中;置狀態(tài)為阻塞態(tài),插入相應(yīng)事件的阻塞隊(duì)列中;轉(zhuǎn)進(jìn)程調(diào)度。,阻塞原語(yǔ),共69頁(yè),第35頁(yè),喚醒原語(yǔ),若進(jìn)程等待的事件是I/O完成。I/O完成后,CPU響應(yīng)中斷,在中斷處理中,將等待I/O完成而阻塞的進(jìn)程喚醒,并置為就緒態(tài)。若等待某進(jìn)程發(fā)信息。由發(fā)送進(jìn)程調(diào)用喚醒原語(yǔ)把等待者喚醒,置為就緒態(tài)。插入就緒隊(duì)列。,共69頁(yè),第36頁(yè),UNIX阻塞/喚醒,Sleep()將在指定時(shí)間內(nèi)阻塞本進(jìn)程Pause()阻塞本進(jìn)程以等待信號(hào)。Wait()阻塞本進(jìn)程以等待子進(jìn)程的結(jié)束。Kill()向指定進(jìn)程或進(jìn)程組發(fā)送信號(hào)。Wakeup(),共69頁(yè),第37頁(yè),實(shí)時(shí)系統(tǒng),根據(jù)實(shí)時(shí)現(xiàn)場(chǎng)的需要,會(huì)將正在執(zhí)行的或沒有執(zhí)行的進(jìn)程掛起一段時(shí)間。被掛起的進(jìn)程由活動(dòng)狀態(tài)變?yōu)殪o止?fàn)顟B(tài)(靜止就緒、靜止阻塞)。分時(shí)系統(tǒng),把進(jìn)程從內(nèi)存換到外存,進(jìn)程就處于靜止?fàn)顟B(tài),不被調(diào)度。,掛起原語(yǔ),共69頁(yè),第38頁(yè),解掛原語(yǔ),當(dāng)掛起進(jìn)程的原因被解除時(shí),系統(tǒng)調(diào)用解掛原語(yǔ)將指定的進(jìn)程解掛,使其由靜止?fàn)顟B(tài)變?yōu)榛顒?dòng)狀態(tài)。當(dāng)被解掛的進(jìn)程變?yōu)榛顒?dòng)就緒時(shí),通常立即轉(zhuǎn)進(jìn)程調(diào)度。,共69頁(yè),第39頁(yè),2.4處理機(jī)調(diào)度,進(jìn)程數(shù)大于處理機(jī)數(shù)。多進(jìn)程競(jìng)爭(zhēng)處理機(jī)。進(jìn)程調(diào)度就是為進(jìn)程分配處理機(jī)。系統(tǒng)運(yùn)行性能在很大程度上取決于調(diào)度。吞吐量大小、周轉(zhuǎn)時(shí)間長(zhǎng)短、響應(yīng)及時(shí)性。,共69頁(yè),第40頁(yè),處理機(jī)的調(diào)度級(jí)別,作業(yè)調(diào)度:高級(jí)調(diào)度。多道批處理系統(tǒng)。多個(gè)用戶作業(yè)以成批的形式提交到外存,形成后備作業(yè)隊(duì)列。被作業(yè)調(diào)度選中進(jìn)內(nèi)存,就處于運(yùn)行態(tài)。進(jìn)程調(diào)度:低級(jí)調(diào)度。交換調(diào)度:中級(jí)調(diào)度。將主存就緒或主存阻塞等暫不具備運(yùn)行條件的進(jìn)程換出到外存交換區(qū);或?qū)⑼獯娼粨Q區(qū)中的已具備運(yùn)行條件的進(jìn)程換入主存。交換調(diào)度可以控制進(jìn)程對(duì)主存的使用。,共69頁(yè),第41頁(yè),(1)記錄系統(tǒng)中各進(jìn)程的執(zhí)行狀況管理進(jìn)程控制塊,將進(jìn)程的狀態(tài)變化及資源需求情況及時(shí)地記錄到PCB中。(2)選擇就緒進(jìn)程占有CPU(3)進(jìn)行進(jìn)程上下文的切換將正在執(zhí)行進(jìn)程的上下文保存在該進(jìn)程的PCB中,將剛選中進(jìn)程的運(yùn)行現(xiàn)場(chǎng)恢復(fù)起來(lái),以便執(zhí)行。,進(jìn)程調(diào)度的功能,共69頁(yè),第42頁(yè),進(jìn)程上下文,用戶級(jí)上下文:進(jìn)程的程序和數(shù)據(jù),用戶棧。寄存器級(jí)上下文:是CPU的現(xiàn)場(chǎng)信息,包括程序計(jì)數(shù)器、PSW、棧指針、用來(lái)保存變量和臨時(shí)結(jié)果的通用寄存器的值等。系統(tǒng)級(jí)上下文:包括進(jìn)程的PCB、核心棧等,進(jìn)程的運(yùn)行環(huán)境和物理實(shí)體,共69頁(yè),第43頁(yè),棧記錄進(jìn)程的執(zhí)行歷程。棧幀中存放有關(guān)的輸入?yún)?shù)、局部變量、過程調(diào)用之后的返回地址、沒有保存在寄存器中的臨時(shí)變量。通常,每個(gè)進(jìn)程會(huì)調(diào)用不同的過程,從而有一個(gè)各自不同的執(zhí)行歷程。,共69頁(yè),第44頁(yè),非搶先方式(非剝奪方式)某一進(jìn)程占用CPU,直到運(yùn)行完或不能運(yùn)行為止,其間不被剝奪。用在批處理系統(tǒng)。主要優(yōu)點(diǎn):簡(jiǎn)單、系統(tǒng)開銷小。搶先方式(剝奪方式)允許調(diào)度程序基于某種策略(優(yōu)先級(jí)、時(shí)間片等)剝奪現(xiàn)行進(jìn)程的CPU給其它進(jìn)程。用在分時(shí)系統(tǒng)、實(shí)時(shí)系統(tǒng)。,進(jìn)程調(diào)度的方式,共69頁(yè),第45頁(yè),(1)現(xiàn)行進(jìn)程完成或錯(cuò)誤終止;(2)提出I/O請(qǐng)求,等待I/O完成時(shí);(3)在分時(shí)系統(tǒng),按照時(shí)間片輪轉(zhuǎn),分給進(jìn)程的時(shí)間片用完時(shí);(4)優(yōu)先級(jí)調(diào)度,有更高優(yōu)先級(jí)進(jìn)程就緒;(5)進(jìn)程執(zhí)行了某種原語(yǔ)操作,如阻塞原語(yǔ)和喚醒原語(yǔ),都可能引起進(jìn)程調(diào)度。,進(jìn)程調(diào)度的時(shí)機(jī),共69頁(yè),第46頁(yè),(1)先來(lái)先服務(wù)(FCFS)(2)最短作業(yè)優(yōu)先(SJF)(3)響應(yīng)比高者優(yōu)先(HRN)(4)優(yōu)先級(jí)調(diào)度法(5)輪轉(zhuǎn)法(RoundRobin)(6)多級(jí)反饋隊(duì)列輪轉(zhuǎn)法,進(jìn)程調(diào)度算法,共69頁(yè),第47頁(yè),(1)先來(lái)先服務(wù)(FCFS):簡(jiǎn)單,節(jié)省機(jī)器時(shí)間。缺點(diǎn):容易被大作業(yè)壟斷,使得平均周轉(zhuǎn)時(shí)間延長(zhǎng)。例幾乎同時(shí)到達(dá)的三個(gè)作業(yè)j1、j2、j3。j1運(yùn)行2小時(shí),j2和j3只需1分鐘。三個(gè)作業(yè)的平均周轉(zhuǎn)時(shí)間為2個(gè)小時(shí)多。增長(zhǎng)了短作業(yè)的周轉(zhuǎn)時(shí)間。(系統(tǒng)先運(yùn)行j1,j2和j3要等2個(gè)小時(shí)。j1完成之后,j2和j3再分別運(yùn)行1分鐘。),共69頁(yè),第48頁(yè),(2)最短作業(yè)優(yōu)先(SJF):選取運(yùn)行時(shí)間最短的作業(yè)運(yùn)行。對(duì)短作業(yè)有利,作業(yè)的平均周轉(zhuǎn)時(shí)間最佳。若系統(tǒng)不斷進(jìn)入短作業(yè),長(zhǎng)作業(yè)就沒有機(jī)會(huì)運(yùn)行,出現(xiàn)饑餓現(xiàn)象。,共69頁(yè),第49頁(yè),(3)響應(yīng)比高者優(yōu)先(HRN)Rp=(作業(yè)等待時(shí)間+作業(yè)估計(jì)運(yùn)行時(shí)間)/作業(yè)估計(jì)運(yùn)行時(shí)間=1+作業(yè)等待時(shí)間/作業(yè)估計(jì)運(yùn)行時(shí)間特點(diǎn):結(jié)合了先來(lái)先服務(wù)、短作業(yè)優(yōu)先的方法。優(yōu)先運(yùn)行短作業(yè)和等待時(shí)間足夠長(zhǎng)的長(zhǎng)作業(yè)。缺點(diǎn):算法比較復(fù)雜。,共69頁(yè),第50頁(yè),(4)優(yōu)先級(jí)調(diào)度法將CPU分配給就緒隊(duì)列中優(yōu)先級(jí)最高的進(jìn)程靜態(tài)優(yōu)先級(jí):在進(jìn)程創(chuàng)建時(shí)確定的,運(yùn)行時(shí)保持不變。通常賦予系統(tǒng)進(jìn)程較高優(yōu)先級(jí);申請(qǐng)資源量少的賦予較高優(yōu)先級(jí)??赡軐?dǎo)致低優(yōu)先級(jí)的長(zhǎng)進(jìn)程沒有機(jī)會(huì)運(yùn)行。動(dòng)態(tài)優(yōu)先級(jí):原優(yōu)先級(jí)可隨進(jìn)程的推進(jìn)而改變。根據(jù)進(jìn)程占用CPU時(shí)間的長(zhǎng)短或等待CPU時(shí)間的長(zhǎng)短動(dòng)態(tài)調(diào)整。,共69頁(yè),第51頁(yè),(5)輪轉(zhuǎn)法(RoundRobin)用在分時(shí)系統(tǒng),輪流調(diào)度所有就緒進(jìn)程。利用一個(gè)定時(shí)時(shí)鐘,使之定時(shí)地發(fā)出中斷。時(shí)鐘中斷處理程序在設(shè)置新的時(shí)鐘常量后,立即轉(zhuǎn)入進(jìn)程調(diào)度程序。時(shí)間片長(zhǎng)短的確定原則:既要保證系統(tǒng)各個(gè)用戶進(jìn)程及時(shí)地得到響應(yīng),又不要因時(shí)間片太短而增加調(diào)度的開銷,降低效率。,共69頁(yè),第52頁(yè),(6)多級(jí)反饋隊(duì)列輪轉(zhuǎn)法因就緒原因不同,系統(tǒng)通常設(shè)置多個(gè)就緒隊(duì)列。多個(gè)就緒隊(duì)列可采用前后臺(tái)運(yùn)行。前臺(tái)隊(duì)列采用RR調(diào)度;后臺(tái)采用FCFS。高優(yōu)先級(jí)進(jìn)程的時(shí)間片較短,低則較長(zhǎng)。剛創(chuàng)建的進(jìn)程和因請(qǐng)求I/O而未用完時(shí)間片的進(jìn)程排在高優(yōu)先級(jí)隊(duì)列。運(yùn)行23個(gè)時(shí)間片還未完成的進(jìn)程降級(jí)。,共69頁(yè),第53頁(yè),(時(shí)間片:s1s2sn),共69頁(yè),第54頁(yè),實(shí)時(shí)系統(tǒng)的調(diào)度算法,時(shí)鐘驅(qū)動(dòng)法:各任務(wù)的調(diào)度在系統(tǒng)運(yùn)行前就確定了,調(diào)度程序依次調(diào)度任務(wù)執(zhí)行。加權(quán)輪轉(zhuǎn)法:進(jìn)程的權(quán)就是分配給它的一小部分處理機(jī)時(shí)間。輪轉(zhuǎn)時(shí),不同的進(jìn)程可以獲得不同的處理機(jī)時(shí)間。廣泛用在高速開關(guān)網(wǎng)的實(shí)時(shí)控制中。,共69頁(yè),第55頁(yè),進(jìn)程在邏輯上表示OS要做的一個(gè)作業(yè),線程表示組成該作業(yè)的許多可能的子任務(wù)。線程是進(jìn)程中的一個(gè)可執(zhí)行實(shí)體。以進(jìn)程為單位分配資源,以線程為單位調(diào)度執(zhí)行。,2.5線程的引入,共69頁(yè),第56頁(yè),多線程字處理:一個(gè)線程與用戶交互另一個(gè)線程在后臺(tái)進(jìn)行格式化處理。一旦在某一頁(yè)中的語(yǔ)句被刪除掉,交互線程就立即通知格式化線程對(duì)整本書重新進(jìn)行處理。同時(shí),交互線程繼續(xù)監(jiān)控鍵盤和鼠標(biāo)。第三個(gè)線程可以做磁盤備份。,共69頁(yè),第57頁(yè),分派線程(dispatcher)從網(wǎng)絡(luò)讀入請(qǐng)求,之后選一個(gè)工作線程提交請(qǐng)求,當(dāng)該工作線程阻塞在磁盤操作上時(shí),分派線程可另選一個(gè)工作線程運(yùn)行。,共69頁(yè),第58頁(yè),進(jìn)程地址空間,進(jìn)程控制塊,線程控制塊,堆棧,寄存器組,線程控制塊,堆棧,寄存器組,線程控制塊,堆棧,寄存器組,程序段,數(shù)據(jù)段,打開文件,線程1,線程2,線程3,共69頁(yè),第59頁(yè),一個(gè)線程的組成,有一個(gè)唯一的標(biāo)識(shí)符表示處理機(jī)狀態(tài)和運(yùn)行現(xiàn)場(chǎng)的一組寄存器兩個(gè)堆棧,分別用于用戶態(tài)和核心態(tài)調(diào)用時(shí)進(jìn)行參數(shù)傳遞一個(gè)獨(dú)立的程序計(jì)數(shù)器關(guān)聯(lián)的進(jìn)程和線程指針,共69頁(yè),第60頁(yè),進(jìn)程擁有一個(gè)獨(dú)立的地址空間,用來(lái)存放若干代碼段和數(shù)據(jù)段。若干打開文件,以及至少一個(gè)線程。一個(gè)進(jìn)程內(nèi)的多線程共享該進(jìn)程的所有資源,線程自己擁有很少資源。,線程與進(jìn)程的比較,(1)擁有的資源,進(jìn)程調(diào)度需進(jìn)行進(jìn)程上下文的切換,開銷大。同一進(jìn)程內(nèi)的線程切換,僅把線程擁有的一小部分資源變換了即可,效率高。同一進(jìn)程內(nèi)的線程切換比進(jìn)程切換快得多。不同進(jìn)程的線程切換,(2)調(diào)度,共69頁(yè),第61頁(yè),(3)并發(fā)性引入線程后,使得系統(tǒng)的并發(fā)執(zhí)行程度更高。進(jìn)程之間、進(jìn)程內(nèi)的多線程之間可并發(fā)執(zhí)行。(4)安全性同一進(jìn)程的多線程共享進(jìn)程的所有資源,一個(gè)線程可以改變另一個(gè)線程的數(shù)據(jù),共享數(shù)據(jù)方便。多進(jìn)程實(shí)現(xiàn),安全性好。,共69頁(yè),第62頁(yè),系統(tǒng)對(duì)線程的支持,1)用戶級(jí)線程有關(guān)線程的所有管理工作都由用戶程序通過調(diào)用用戶態(tài)運(yùn)行的線程庫(kù)完成。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論