版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第十三章 UNIX進(jìn)程子系統(tǒng)13.1 UNIX概述13.2 UNIX進(jìn)程控制子系統(tǒng)13.3 UNIX進(jìn)程調(diào)度13.4 UNIX進(jìn)程通信7/16/202213.1.1 UNIX的特征 核心部分設(shè)計(jì)簡單且功能全面 支持多用戶多任務(wù) 文件系統(tǒng)可裝卸 有良好的開放性及可移植性 具有強(qiáng)大的命令解釋功能 具有完善的安全機(jī)制 具有網(wǎng)絡(luò)特性13.1 UNIX概述7/16/202213.1.2 UNIX系統(tǒng)結(jié)構(gòu)硬件kernelShell edit編譯程序?qū)嵱贸绦蛴脩舫绦騏NIX簡略結(jié)構(gòu)7/16/2022用戶程序系統(tǒng)調(diào)用接口程序庫文件子系統(tǒng)緩存硬件控制硬 件設(shè)備驅(qū)動(dòng)字符塊進(jìn)程控制子系統(tǒng)IPC調(diào)度程序存儲(chǔ)管理陷入核
2、心部分UNIX核心框圖7/16/2022 硬件:可以是便攜機(jī)、個(gè)人機(jī)、工作站、大中小型機(jī)等 內(nèi)核:包括中斷、存儲(chǔ)、進(jìn)程、I/O、文件等管理程序 Shell:具有多種功能的系統(tǒng)程序 實(shí)用程序:完成大部分UNIX高級(jí)命令的功能UNIX層次結(jié)構(gòu)說明7/16/202213.2 UNIX進(jìn)程控制子系統(tǒng) 13.2.1 UNIX中進(jìn)程創(chuàng)建機(jī)制 13.2.2 UNIX中的進(jìn)程描述 13.2.3 UNIX進(jìn)程狀態(tài)及其轉(zhuǎn)換 13.2.4 進(jìn)程映象7/16/20221、進(jìn)程創(chuàng)建層次結(jié)構(gòu)引導(dǎo)核心創(chuàng)建0#0#創(chuàng)建1#終端1終端2終端n。13.2.1 UNIX中進(jìn)程創(chuàng)建機(jī)制7/16/2022 0#進(jìn)程 由內(nèi)核程序創(chuàng)建,初
3、始化時(shí)創(chuàng)建1#進(jìn)程 負(fù)責(zé)進(jìn)程調(diào)度與對換 1#進(jìn)程 是所有用戶進(jìn)程的祖先進(jìn)程2、UNIX中的兩個(gè)特殊進(jìn)程7/16/202213.2.2 UNIX中的進(jìn)程描述UNIX采用段頁式存儲(chǔ)管理,段稱為區(qū)。有程序區(qū)、數(shù)據(jù)區(qū)、棧區(qū)等。每個(gè)區(qū)又可分頁。UNIX把PCB分為四部分:proc結(jié)構(gòu)(進(jìn)程基本控制塊)User結(jié)構(gòu)(進(jìn)程擴(kuò)充控制塊)系統(tǒng)區(qū)表:各區(qū)的頁表位置本進(jìn)程區(qū)表pprt(Per Process Region Table):指向系統(tǒng)區(qū)表7/16/2022proc結(jié)構(gòu)(進(jìn)程基本控制塊)進(jìn)程狀態(tài)進(jìn)程用戶標(biāo)識(shí)進(jìn)程標(biāo)識(shí)進(jìn)程存儲(chǔ)大小進(jìn)程調(diào)度參數(shù)軟中斷信號(hào)項(xiàng)執(zhí)行時(shí)間及資源使用User結(jié)構(gòu)起始址進(jìn)程區(qū)表指針被掛起事件
4、描述7/16/2022user結(jié)構(gòu)(進(jìn)程擴(kuò)充控制塊)指向proc的指針系統(tǒng)調(diào)用參數(shù)與用戶標(biāo)識(shí)有關(guān)項(xiàng)與文件結(jié)構(gòu)有關(guān)項(xiàng)輸入輸出項(xiàng)打開文件描述符中斷及軟中斷參數(shù)錯(cuò)誤信息文件權(quán)限屏蔽項(xiàng)交換數(shù)據(jù)項(xiàng)7/16/2022userTextdatastack進(jìn)程表進(jìn)程I procPPRT系統(tǒng)區(qū)表頁表內(nèi)存數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)圖7/16/2022九種狀態(tài)1)初始態(tài)2)內(nèi)存就緒態(tài)3)外存就緒態(tài)4)核心態(tài)下的執(zhí)行態(tài)5)用戶態(tài)下的執(zhí)行態(tài)6)內(nèi)存中的睡眠7)外存睡眠8)被剝奪9)僵死態(tài)13.2.3 UNIX進(jìn)程狀態(tài)及其轉(zhuǎn)換見圖13-47/16/20221、進(jìn)程可在用戶態(tài)及核心態(tài)下運(yùn)行核心態(tài)用戶態(tài)中斷重置PSW進(jìn)程狀態(tài)間轉(zhuǎn)換的幾條規(guī)定
5、7/16/20222、對就緒進(jìn)程的兩種處理方法內(nèi)存就緒進(jìn)程參與競爭,外存就緒應(yīng)先換入內(nèi)存。由0#進(jìn)程管理。7/16/20223、有些狀態(tài)只能做單向轉(zhuǎn)換內(nèi)存睡眠的進(jìn)程可調(diào)出到外存睡眠,而外存睡眠的進(jìn)程不能調(diào)入到內(nèi)存睡眠,外存睡眠的進(jìn)程在被喚醒時(shí)只能進(jìn)入外存就緒態(tài),等待下一次的調(diào)度時(shí)再進(jìn)入內(nèi)存,轉(zhuǎn)換是單向的。7/16/2022 13.2.4 進(jìn)程映象UNIX進(jìn)程映象由三部分組成:用戶級(jí)上下文:包括用戶正文段、用戶數(shù)據(jù)段和用戶棧寄存器級(jí)上下文:程序寄存器(PC)、處理機(jī)狀態(tài)寄存器(PSW)、棧指針、通用寄存器系統(tǒng)級(jí)上下文:靜態(tài)部分(PCB和資源表格)動(dòng)態(tài)部分:核心棧(核心過程的棧結(jié)構(gòu),不同進(jìn)程在調(diào)用
6、相同核心過程時(shí)有不同核心棧) 7/16/202213.3.1 進(jìn)程調(diào)度程序主要責(zé)任 對參與競爭CPU且已具備執(zhí)行條件的進(jìn)程進(jìn)行分析和裁決 對選中的進(jìn)程做CPU控制權(quán)轉(zhuǎn)交 管理進(jìn)程運(yùn)行中各種狀態(tài)的轉(zhuǎn)換 完成進(jìn)程在系統(tǒng)內(nèi)外存之間的對換13.3 UNIX進(jìn)程調(diào)度7/16/2022UNIX中有兩種調(diào)度時(shí)機(jī):1)進(jìn)程自動(dòng)放棄CPU進(jìn)程由核心態(tài)轉(zhuǎn)為用戶態(tài)時(shí)說明:具體調(diào)度由0#進(jìn)程中的swtch程序完成。第一種調(diào)度時(shí)機(jī)是可預(yù)見的。13.3.2 調(diào)度時(shí)機(jī)7/16/2022采用:動(dòng)態(tài)優(yōu)先級(jí)多級(jí)反饋循環(huán)調(diào)度法(Round Robin With Multiple Feedback)13.3.3 調(diào)度算法7/16/2
7、022將就緒隊(duì)列分為N級(jí),每個(gè)就緒隊(duì)列分配給不同的時(shí)間片,隊(duì)列級(jí)別越高,時(shí)間片越長,級(jí)別越小,時(shí)間片越短; 系統(tǒng)從第一級(jí)調(diào)度,當(dāng)?shù)谝患?jí)為空時(shí),系統(tǒng)轉(zhuǎn)向第二個(gè)隊(duì)列,.當(dāng)運(yùn)行進(jìn)程用完一個(gè)時(shí)間片,放棄CPU時(shí),進(jìn)入下一級(jí)隊(duì)列;等待進(jìn)程被喚醒時(shí),進(jìn)入原來的就緒隊(duì)列;當(dāng)進(jìn)程第一次就緒時(shí),進(jìn)入第一級(jí)隊(duì)列 復(fù)習(xí):多隊(duì)列反饋調(diào)度算法7/16/2022算法簡要描述1)給進(jìn)程分配時(shí)間片2)時(shí)間片結(jié)束時(shí)計(jì)算進(jìn)程優(yōu)先級(jí)3) 用優(yōu)先數(shù)做比較選出高優(yōu)先級(jí)進(jìn)程4)調(diào)度高優(yōu)先級(jí)進(jìn)程開始運(yùn)行5)被搶奪了cpu的進(jìn)程反饋到相應(yīng)的優(yōu)先級(jí)隊(duì)列中7/16/2022Unix sys V采用動(dòng)態(tài)優(yōu)先數(shù)調(diào)度策略,并且規(guī)定優(yōu)先數(shù)越大,其優(yōu)先級(jí)
8、越低13.3.4 優(yōu)先級(jí)計(jì)算7/16/2022Ppri= Pcpu/2+PUSER+Pnice+NZERO其中:。PUSER,NZERO是優(yōu)先數(shù)基值;。Pcpu是每個(gè)進(jìn)程最近一次使用 CPU的時(shí)間;。Pnice是用戶設(shè)置的進(jìn)程優(yōu)先數(shù)偏移值。普通用戶只可增大Pnice計(jì)算公式7/16/2022 對于新創(chuàng)建的進(jìn)程 由于Pcpu/2=0,所以其優(yōu)先數(shù)會(huì)較小。因此會(huì)比較快的得到調(diào)度。 對于原有進(jìn)程 a) 當(dāng)被調(diào)度時(shí):隨著進(jìn)程執(zhí)行,其Pcpu的值不斷增加,因而可能會(huì)被其它進(jìn)程搶先; b) 當(dāng)不被調(diào)度時(shí):由于公式中Pcpu被2所除,因此每當(dāng)計(jì)算優(yōu)先數(shù)時(shí),Pcpu/2項(xiàng)會(huì)衰減。因此當(dāng)其優(yōu)先數(shù)小于當(dāng)前進(jìn)程和其
9、它進(jìn)程時(shí),又會(huì)重新?lián)屨糃PU。公式分析7/16/2022 進(jìn)程調(diào)度的實(shí)現(xiàn)實(shí)質(zhì)上是完成進(jìn)程之間上下文(映象)的切換。分三步完成:第一步:檢查是否做且系統(tǒng)允許做上下文切換,若條件滿足,則保存: 進(jìn)程中各段內(nèi)容(數(shù)據(jù),正文,棧) 有關(guān)寄存器中內(nèi)容 相關(guān)的棧指針否則返回有關(guān)信息,不作調(diào)度。13.3.5 進(jìn)程調(diào)度的過程7/16/2022第二步:0號(hào)進(jìn)程選取就緒隊(duì)列中一個(gè)優(yōu)先級(jí)最高的進(jìn)程,使之占有CPU;若沒有滿足條件的進(jìn)程存在,0號(hào)進(jìn)程循環(huán)。等待直到條件滿足為止。第三步:被選中的進(jìn)程變?yōu)楫?dāng)前進(jìn)程。系統(tǒng)從它的核心?;騯ser結(jié)構(gòu)中恢復(fù)該進(jìn)程的有關(guān)寄存器內(nèi)容和棧指針,新進(jìn)程開始執(zhí)行。7/16/202213.
10、4 UNIX進(jìn)程通信UNIX進(jìn)程通信有三種方式:信號(hào)(signals)通信管道(pipes)通信IPC(Inter Process Communication)通信:消息機(jī)制、共享內(nèi)存機(jī)制、信號(hào)量(semaphore)7/16/202213.4.1 信號(hào)概念:信號(hào)是一個(gè)整數(shù),范圍從1-19,用于通知進(jìn)程發(fā)生了某異常事件。一個(gè)進(jìn)程可以向另一個(gè)進(jìn)程發(fā)送一個(gè)信號(hào)。每個(gè)進(jìn)程的PCB中都有一個(gè)信號(hào)域(19位),某進(jìn)程向本進(jìn)程發(fā)送一個(gè)信號(hào)時(shí),信號(hào)域的對應(yīng)位就會(huì)被置位。19類信號(hào)好圖13-107/16/2022進(jìn)程從核態(tài)返回目態(tài)時(shí)要檢測信號(hào)位,若某位被置位則中斷正在執(zhí)行的程序,轉(zhuǎn)向與該信號(hào)對應(yīng)的處理程序。完
11、成后返回?cái)帱c(diǎn)執(zhí)行。信號(hào)機(jī)制是對中斷機(jī)制的模擬,故在早期又稱軟中斷。7/16/2022信號(hào)機(jī)制與中斷機(jī)制的比較相同點(diǎn):都采用異步通信方式當(dāng)檢測到信號(hào)或中斷時(shí),暫停當(dāng)前程序的執(zhí)行,轉(zhuǎn)去執(zhí)行相應(yīng)處理程序處理完后回到斷點(diǎn)信號(hào)和中斷都可進(jìn)行屏蔽7/16/2022不同點(diǎn):中斷有優(yōu)先級(jí),信號(hào)沒有信號(hào)處理在目態(tài),中斷處理在管態(tài)中斷響應(yīng)是及時(shí)的,信號(hào)響應(yīng)通常都有較大的延遲。7/16/2022信號(hào)的發(fā)送發(fā)送進(jìn)程把信號(hào)送到指定進(jìn)程的信號(hào)域的某一位上。進(jìn)程可用kill向一個(gè)或一組進(jìn)程發(fā)送一個(gè)信號(hào)。int kill(pid,sig);其中:pid為正數(shù)時(shí),信號(hào)發(fā)送給進(jìn)程pidpid 為0 時(shí)信號(hào)發(fā)送給與發(fā)送進(jìn)程同組的所
12、有進(jìn)程。sig為要發(fā)送的信號(hào)7/16/2022預(yù)置對信號(hào)的處理方式可用系統(tǒng)調(diào)用signal(sig,func)來預(yù)置對信號(hào)的處理方式。func=1時(shí),進(jìn)程對sig信號(hào)不予理睬。func=0時(shí),進(jìn)程在收到 sig信號(hào)后應(yīng)終止自己func 非0/1時(shí),func是信號(hào)處理程序的指針7/16/2022對信號(hào)的處理進(jìn)程從核態(tài)返回目態(tài)時(shí),要檢查是否已收到信號(hào)。而進(jìn)程在核態(tài)時(shí)并不檢查信號(hào)位。只有當(dāng)它返回目態(tài)后才處理信號(hào)。如果收到的信號(hào)是一個(gè)已決定忽略的信號(hào)(func=1),進(jìn)程不做任何處理便立即返回。若func=0,本進(jìn)程要終止。對有些信號(hào),進(jìn)程在自我終止前,核心要將該進(jìn)程的內(nèi)存映像定入core文件,這可方
13、便程序員調(diào)試程序。func 非0/1時(shí),執(zhí)行用戶設(shè)置的處理程序。7/16/202213.4.2 消息消息是一個(gè)格式化的可變長的信息單元。消息機(jī)制允許一個(gè)進(jìn)程給其它任意進(jìn)程發(fā)送一條消息。7/16/2022消息機(jī)制的數(shù)據(jù)結(jié)構(gòu)1、 消息首部消息分為首部及數(shù)據(jù)區(qū)。消息首部中記錄有消息的類型、大小、指向消息數(shù)據(jù)區(qū)的指針、消息隊(duì)列的鏈指針。7/16/20222、 消息隊(duì)列頭表其每一表項(xiàng)作為一個(gè)消息隊(duì)列的頭結(jié)點(diǎn)。它包括如下內(nèi)容:指向消息隊(duì)列的隊(duì)首及隊(duì)尾的指針隊(duì)列中消息的數(shù)目、隊(duì)列中消息數(shù)據(jù)的總字節(jié)數(shù)等。如圖13-127/16/2022消息隊(duì)列的建立系統(tǒng)調(diào)用 msgget()可用來建立消息隊(duì)列int msgg
14、et(key,msgflag)key: 用戶指定的消息隊(duì)列的名字msgflag:建立標(biāo)志,如ipc_CREAT表示若無以key命名的消息隊(duì)列,則建立,否則返回該消息隊(duì)列的msgid返回值為消息隊(duì)列的描述符msgid7/16/2022消息的發(fā)送系統(tǒng)調(diào)用 msgsnd()可用來發(fā)送消息。msgsnd(msgid,msgp,msgsz,msgflg)msgid表示消息隊(duì)列標(biāo)識(shí),即消息要發(fā)送到的消息隊(duì)列。msgp指向要發(fā)送的消息msgsz要發(fā)送的消息的大小msgflg規(guī)定當(dāng)無內(nèi)存空間存儲(chǔ)消息時(shí),進(jìn)程是等待還是立即返回。7/16/2022消息的接收系統(tǒng)調(diào)用msgrev()用于從指定的消息隊(duì)列接收指定類型
15、的消息。msgrev(msgid,msgp,msgsz,msgtpy,msgflg);msgid 消息隊(duì)列標(biāo)識(shí),即從該消息隊(duì)列接收消息。msgp接收到的消息存放到該位置msgsz接收的消息的大小msgtpy 消息類型msgflg當(dāng)無指定消息時(shí),進(jìn)程是等待還是立即返回。7/16/202214.4.3 共享存儲(chǔ)區(qū)是UNIX中通信速度最高的一種通信機(jī)制。該機(jī)制可使多個(gè)進(jìn)程共享主存中的某一區(qū)域。同時(shí)要注意,該機(jī)制并未提供同步互斥機(jī)制。用戶要自己處理進(jìn)程間的同步互斥,才能正確通信。7/16/2022共享存儲(chǔ)區(qū)的建立int shmget(key,size,shmflg);key:共享存儲(chǔ)區(qū)的名字。size:大小shmflg:標(biāo)志 返回值為共享存儲(chǔ)區(qū)的描述符shmid7/16
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒精蒸餾工崗前績效目標(biāo)考核試卷含答案
- 電動(dòng)自行車裝配工保密意識(shí)考核試卷含答案
- 井下出礦工安全生產(chǎn)知識(shí)評(píng)優(yōu)考核試卷含答案
- 電子絕緣材料上膠工保密意識(shí)能力考核試卷含答案
- 橋面鋪裝質(zhì)量培訓(xùn)課件
- 銀行合規(guī)披露制度
- 酒店客房銷售與收益最大化制度
- 酒店餐飲成本控制制度
- 年產(chǎn)200萬平方米柔性電子元器件項(xiàng)目可行性研究報(bào)告模板-備案審批
- 本崗位工作標(biāo)準(zhǔn)培訓(xùn)課件
- 義務(wù)教育均衡發(fā)展迎檢路線及解說詞2
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘備考題庫及參考答案詳解1套
- 思政教師培訓(xùn)心得課件
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫及參考答案詳解
- 大型船舶拆除方案范本
- LoRa技術(shù)教學(xué)課件
- 小作坊衛(wèi)生規(guī)范制度
- 2025中央廣播電視總臺(tái)招聘144人筆試歷年題庫附答案解析
- 急性高原疾病課件
- 牧業(yè)公司生產(chǎn)安全預(yù)案
- GB/T 13609-2025天然氣氣體取樣
評(píng)論
0/150
提交評(píng)論