版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、進(jìn)程上下文進(jìn)程上下文 process context 用戶程序裝入系統(tǒng)形成一個(gè)進(jìn)程的實(shí)質(zhì)是系統(tǒng)為用戶程序提供一個(gè)完整的運(yùn)行環(huán)境。 系統(tǒng)提供給進(jìn)程的的處于動(dòng)態(tài)變化的運(yùn)行環(huán)境總系統(tǒng)提供給進(jìn)程的的處于動(dòng)態(tài)變化的運(yùn)行環(huán)境總和稱為進(jìn)程上下文。和稱為進(jìn)程上下文。 運(yùn)行環(huán)境運(yùn)行環(huán)境 = = 程序代碼程序代碼+ +數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)+ +硬件環(huán)境。硬件環(huán)境。 進(jìn)程上下文用進(jìn)程的進(jìn)程上下文用進(jìn)程的PCBPCB表示,它包括表示,它包括CPUCPU的值、的值、進(jìn)程狀態(tài)和內(nèi)存管理信息等進(jìn)程狀態(tài)和內(nèi)存管理信息等 進(jìn)程進(jìn)程的運(yùn)行環(huán)境主要包括的運(yùn)行環(huán)境主要包括: 1.進(jìn)程空間中的代碼和數(shù)據(jù)、各種數(shù)據(jù)結(jié)構(gòu)、進(jìn)程堆棧和共享內(nèi)存區(qū)
2、等。 2.環(huán)境變量:提供進(jìn)程運(yùn)行所需的環(huán)境信息。 3.系統(tǒng)數(shù)據(jù):進(jìn)程空間中的對(duì)進(jìn)程進(jìn)行管理和控制所需的信息,包括進(jìn)程任務(wù)結(jié)構(gòu)體以及內(nèi)核堆棧等。 4.進(jìn)程訪問(wèn)設(shè)備或者文件時(shí)的權(quán)限。 5.各種硬件寄存器。 6.地址轉(zhuǎn)換信息。 中斷上下文中斷上下文 中斷處理程序 沒有進(jìn)程上下文 硬件通過(guò)觸發(fā)信號(hào),導(dǎo)致內(nèi)核調(diào)用中斷處理程序,進(jìn)入內(nèi)核空間。這個(gè)過(guò)程中,硬件的一些變量和參數(shù)也要傳遞給內(nèi)核,內(nèi)核通過(guò)這些參數(shù)進(jìn)行中斷處理。 所謂的“中斷上下文”,其實(shí)也可以看作就是硬件傳遞過(guò)來(lái)的這些參數(shù)和內(nèi)核需要保存的一些其他環(huán)境(主要是當(dāng)前被打斷執(zhí)行的進(jìn)程環(huán)境)。中斷時(shí),內(nèi)核不代表任何進(jìn)程運(yùn)行,它一般只訪問(wèn)系統(tǒng)空間,而不會(huì)訪
3、問(wèn)進(jìn)程空間,內(nèi)核在中斷上下文中執(zhí)行時(shí)一般不會(huì)阻塞。 進(jìn)程切換進(jìn)程切換 process switch 當(dāng)前進(jìn)程(current) 一個(gè)正在使用處理器運(yùn)行的進(jìn)程. 當(dāng)前進(jìn)程因時(shí)間片用完或者因等待某個(gè)事件而阻塞時(shí),進(jìn)程調(diào)度需要把處理器的使用權(quán)從當(dāng)前進(jìn)程交給另一個(gè)進(jìn)程,這個(gè)過(guò)程叫做進(jìn)程切換。此時(shí),被調(diào)用進(jìn)程成為當(dāng)前進(jìn)程。 進(jìn)程切換進(jìn)程切換 process switch 實(shí)質(zhì)上就是把進(jìn)程存放在處理器的寄存器中的中間數(shù)據(jù)存入進(jìn)程的私有堆棧,從而把處理器的寄存器騰出來(lái)讓其他進(jìn)程使用。然后把進(jìn)程存放在私有堆棧中寄存器的數(shù)據(jù)(前一次本進(jìn)程被中止時(shí)的中間數(shù)據(jù))再恢復(fù)到處理器的寄存器中去,并把待運(yùn)行進(jìn)程的斷點(diǎn)送入處
4、理器的程序指針PC。 進(jìn)程切換進(jìn)程切換 process switch 一個(gè)進(jìn)程經(jīng)過(guò)調(diào)度再次使用CPU運(yùn)行時(shí),系統(tǒng)要恢復(fù)該進(jìn)程保存的上下文。所以,進(jìn)程的切換也就是上下文切換。上面的敘述可知,調(diào)度器進(jìn)程切換的代碼應(yīng)有如下功能:保存處理器PC寄存器的值到被中止進(jìn)程的私有堆棧; 保存處理器PSW寄存器的值到被中止進(jìn)程的私有堆棧; 進(jìn)程切換進(jìn)程切換 process switch 保存處理器SP寄存器的值到被中止進(jìn)程的進(jìn)程控制塊; 保存處理器其他寄存器的值到被中止進(jìn)程的私有堆棧; 自待運(yùn)行進(jìn)程的進(jìn)程控制塊取SP值并存入處理器的寄存器SP; 自待運(yùn)行進(jìn)程的私有堆?;謴?fù)處理器各寄存器的值; 自待運(yùn)行進(jìn)程的私有
5、堆棧中彈出PSW值并送入處理器的PSW; 自待運(yùn)行進(jìn)程的私有堆棧中彈出PC值并送入處理器的PC。 上下文上下文切換切換 的實(shí)現(xiàn)的實(shí)現(xiàn) 進(jìn)程的切換可以用中斷技術(shù)來(lái)實(shí)現(xiàn) 1、調(diào)度器獲得了待運(yùn)行進(jìn)程的控制塊 2、立即用軟中斷指令來(lái)中止當(dāng)前進(jìn)程的運(yùn)行,并保存當(dāng)前進(jìn)程的PC值和PSW值。 3、使 用壓棧指令把處理器其他寄存器的值壓入進(jìn)程私有堆棧。 上下文上下文切換切換 的實(shí)現(xiàn)的實(shí)現(xiàn) 4、從待運(yùn)行進(jìn)程的進(jìn)程控 制塊中取出私有堆棧指針的值并存入處理器的寄存器SP。至此SP就指向了待運(yùn)行進(jìn)程的私 有堆棧。 5、自待運(yùn)行進(jìn)程的私有堆棧中彈出上下文進(jìn)人處理器。 6、利用中斷返回指令來(lái)實(shí)現(xiàn)自待運(yùn)行進(jìn)程的私有堆棧中彈
6、出PSW值和自待運(yùn)行進(jìn)程的私有堆棧中彈出PC值的功能。 上下文上下文切換切換 的實(shí)現(xiàn)的實(shí)現(xiàn) 這是一個(gè)完整的軟中斷處理過(guò)程,只不過(guò)在保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)工作中,保護(hù)的是被中止 運(yùn)行進(jìn)程的現(xiàn)場(chǎng),恢復(fù)的是待運(yùn)行進(jìn)程的現(xiàn)場(chǎng),這一切都依賴于堆棧指針的切換。進(jìn)程切換時(shí),被中止進(jìn)程保護(hù)斷點(diǎn)和待運(yùn)行進(jìn)程保護(hù)斷點(diǎn)的示意圖如圖所示: 上下文切換的引發(fā)上下文切換的引發(fā) 處理器總處于以下狀態(tài)中的一種: 、內(nèi)核態(tài),運(yùn)行于進(jìn)程上下文,內(nèi)核代表進(jìn)程運(yùn)行于內(nèi)核空間; 、內(nèi)核態(tài),運(yùn)行于中斷上下文,內(nèi)核代表硬件運(yùn)行于內(nèi)核空間; 、用戶態(tài),運(yùn)行于用戶空間。 上下文切換的引發(fā)上下文切換的引發(fā) 1、中斷處理,其他程序”打斷”了當(dāng)前正在運(yùn)
7、行的程序。當(dāng)CPU接收到中斷請(qǐng)求時(shí),會(huì)在正在運(yùn)行的程序和發(fā)起中斷請(qǐng)求的程序之間進(jìn)行一次上下文切換。 2、多任務(wù)處理,CPU會(huì)在不同程序之間來(lái)回切換,每個(gè)程序都有相應(yīng)的處理時(shí)間片,CPU在兩個(gè)時(shí)間片的間隔中進(jìn)行上下文切換。 3、一個(gè)硬件中斷的產(chǎn)生,也可能導(dǎo)致內(nèi)核收到請(qǐng)求后進(jìn)行上下文切換 上下文切換的引發(fā)上下文切換的引發(fā) 上下文切換上下文切換 只能發(fā)生在內(nèi)核態(tài)(kernel mode) system call會(huì)陷入內(nèi)核態(tài),是用戶模式轉(zhuǎn)換為內(nèi)核模式的過(guò)程,我們稱之為模式轉(zhuǎn)換,但不表明會(huì)發(fā)生上下文切換(其實(shí)模式轉(zhuǎn)換同樣也會(huì)做很多和上下文切換一樣的流程,例如通過(guò)寄存器傳遞用戶模式和 內(nèi)核模式之間的一些參
8、數(shù)) 實(shí)例實(shí)例 linux中中pthread庫(kù)中庫(kù)中的的 pthread_cond_wait 和和pthread_cond_signal (雖然是針對(duì)線程,但linux內(nèi)核并不區(qū)分進(jìn)程和線程,線程只是共享了address space和其他資源罷了) pthread_cond_wait負(fù)責(zé)將當(dāng)前線程掛起并進(jìn)入休眠,直到條件成立的那一刻,而pthread_cond_signal則是喚醒守候條件的線程。 大致流程: pthread_cond_wait = sys_futex = do_futex = futex_wait (藍(lán)色部分為內(nèi)核調(diào)用流程) pthread_cond_signal = SYS
9、_futex = do_futex = futex_wake = wake_futex = _wake_up = _wake_up_common = try_to_wake_up (藍(lán)色部分為內(nèi)核調(diào)用流程) 線程的切換虛擬內(nèi)存空間依然是相同的,但是進(jìn)程切換是不同的。這兩種上下文切換的處理都是通過(guò)操作系統(tǒng)內(nèi)核來(lái)完成的。內(nèi)核的這種切換過(guò)程伴隨的最顯著的性能損耗是將寄存器中的內(nèi)容切換出。 默默地扼殺著我們的程序性能 1、上下文的切換會(huì)擾亂處理器的緩存機(jī)制。簡(jiǎn)單的說(shuō),一旦去切換上下文,處理器中所有已經(jīng)緩存的內(nèi)存地址一瞬間都作廢了。 2、還有一個(gè)顯著的區(qū)別是當(dāng)你改變虛擬內(nèi)存空間的時(shí)候,處理的頁(yè)表緩沖(processors Translation Lookaside Buffer (TLB))或者相關(guān)環(huán)境會(huì)被全部刷新,這將導(dǎo)致內(nèi)存的訪問(wèn)在一段時(shí)間內(nèi)相當(dāng)?shù)牡托?。但是在線程的切換中,不會(huì)出現(xiàn)這個(gè)問(wèn)題。 跨核上下文切換(Cross-Core Context Switch) 相對(duì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版借調(diào)員工跨部門溝通協(xié)作協(xié)議3篇
- 硝酸在物流行業(yè)的應(yīng)用標(biāo)準(zhǔn)
- 港口碼頭改造基礎(chǔ)設(shè)施施工合同
- 煙草種植園生物質(zhì)發(fā)電合同
- 婚慶策劃維修保修期服務(wù)承諾書
- 消防局屋頂防水修繕協(xié)議
- 服裝紡織計(jì)量監(jiān)督規(guī)章
- 居民區(qū)給水系統(tǒng)安裝合同范本
- 2024年船舶修造吊裝勞務(wù)承包合同3篇帶眉腳
- 2024年物業(yè)公司物業(yè)服務(wù)合同3篇帶眉腳
- 小數(shù)除以小數(shù)豎式計(jì)算題100道及答案
- 河南省鄭州市管城回族區(qū)2023-2024學(xué)年六年級(jí)上學(xué)期期末數(shù)學(xué)試題+
- 2024年全國(guó)職業(yè)院校技能大賽中職組(母嬰照護(hù)賽項(xiàng))考試題庫(kù)(含答案)
- 博山污水處理廠提標(biāo)改造工程技術(shù)標(biāo)
- 低空經(jīng)濟(jì)公司的投融資方案
- JGJ 305-2013 建筑施工升降設(shè)備設(shè)施檢驗(yàn)標(biāo)準(zhǔn)
- 橋區(qū)巖土工程勘察報(bào)告
- 船舶電氣設(shè)計(jì)
- 《城市軌道交通概論》 課件 5-22 乘客信息系統(tǒng)結(jié)構(gòu)及功能
- 2024年荊門中荊投資控股集團(tuán)招聘筆試沖刺題(帶答案解析)
- 2024河北石油職業(yè)技術(shù)大學(xué)教師招聘考試筆試試題
評(píng)論
0/150
提交評(píng)論