上下文保存 中断_Linux性能优化(CPU篇)(5)——CPU的上下文切换有几种类型?什么是进程上下文切换?...
上一篇中講了stress用來(lái)模擬常見(jiàn)壓力測(cè)試的選項(xiàng):
RobotCode俱樂(lè)部:《Linux性能優(yōu)化實(shí)戰(zhàn)》之CPU性能篇(四)?zhuanlan.zhihu.com這一篇的主題是:CPU上下文切換 之 進(jìn)程上下文切換。
那么什么是 CPU上下文切換。簡(jiǎn)而言之,就是一個(gè)進(jìn)程放棄對(duì)CPU的占用,讓出其使用權(quán),給其進(jìn)程使用,此間發(fā)生的對(duì)當(dāng)前進(jìn)程的執(zhí)行狀態(tài)與現(xiàn)場(chǎng)保護(hù),從而可以加載新的進(jìn)程,這個(gè)過(guò)程就是CPU上下文切換。
那么CPU的上下文切換可以分為幾種類型?
根據(jù)場(chǎng)景不同,可以分為3種類型:
那么這幾種切換,哪種對(duì)CPU的平均負(fù)載影響最大?首先需要明白這幾種切換時(shí),CPU都干了些什么事。
進(jìn)程上下文切換
Linux按照特權(quán)等級(jí),把進(jìn)程的運(yùn)行空間分為內(nèi)核空間與用戶空間。內(nèi)核空間具有最高權(quán)限,可以直接訪問(wèn)所有資源;用戶空間只能訪問(wèn)受限資源,要想訪問(wèn)其他不能直接訪問(wèn)的資源需要通過(guò)系統(tǒng)調(diào)用的方式陷入內(nèi)核中,此時(shí)相當(dāng)于內(nèi)核代替其執(zhí)行一些資源的訪問(wèn)。(這里有個(gè)問(wèn)題,普通進(jìn)程通過(guò)系統(tǒng)調(diào)用就能訪問(wèn)之前自己對(duì)受限的資源,那 普通進(jìn)程和 內(nèi)核 好像沒(méi)有區(qū)別了?后面會(huì)寫這個(gè)疑問(wèn))
這里要引入的問(wèn)題是 一次系統(tǒng)調(diào)用 引起幾次CPU上下文切換?
在系統(tǒng)調(diào)用前,為了執(zhí)行內(nèi)核態(tài)的代碼,需要先將用戶態(tài)的 運(yùn)行環(huán)境保存起來(lái),CPU調(diào)入內(nèi)核態(tài)代碼,此時(shí)發(fā)生一次CPU上下文切換。之后,系統(tǒng)調(diào)用執(zhí)行完后,又要返回到用戶態(tài),此時(shí)又要此前保存的用戶態(tài)運(yùn)行環(huán)境重新調(diào)入CPU,再次執(zhí)行,又發(fā)生了一次CPU上下文切換。
還有個(gè)問(wèn)題,進(jìn)程上下文切換 和 系統(tǒng)調(diào)用的上下文切換 是什么區(qū)別?
進(jìn)程上下文切換,是指從一個(gè)進(jìn)程切換到另一個(gè)進(jìn)程運(yùn)行,而系統(tǒng)調(diào)用過(guò)程中一直是同一個(gè)進(jìn)程在運(yùn)行,不會(huì)涉及虛擬內(nèi)存等進(jìn)程用戶態(tài)的資源。系統(tǒng)調(diào)用過(guò)程一般稱之為 特權(quán)模式切換,而不是CPU上下文切換,但是系統(tǒng)調(diào)用的過(guò)程中 CPU的上下文切換是無(wú)法避免的!
所以進(jìn)程的上下文切換就比系統(tǒng)調(diào)用多了一步,保存當(dāng)前進(jìn)程的內(nèi)核狀態(tài)和CPU寄存器之前,需要先把該進(jìn)程的虛擬內(nèi)存、棧等保存下來(lái);而加載了下一進(jìn)程的內(nèi)核態(tài)后,還要刷新進(jìn)程的虛擬內(nèi)存和用戶棧。
Linux通過(guò)TLB管理虛擬內(nèi)存到物理內(nèi)存的映射關(guān)系,當(dāng)虛擬內(nèi)存更新后,TLB也需要刷新,內(nèi)存訪問(wèn)會(huì)隨之變慢,特別是在多處理器系統(tǒng)上,緩存是被多個(gè)處理器共享的,刷新緩存不僅會(huì)影響當(dāng)前處理器的進(jìn)程,也會(huì)影響共享緩存的其他處理器的進(jìn)程。
那么什么時(shí)候會(huì)發(fā)生進(jìn)程上下文切換?
這一篇先碼這么多,下一篇討論 線程上下文切換。
歡迎訂閱倪老師課程,有更多真實(shí)案例分享總結(jié)
以上是生活随笔為你收集整理的上下文保存 中断_Linux性能优化(CPU篇)(5)——CPU的上下文切换有几种类型?什么是进程上下文切换?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《博德之门 3》拿下金摇杆 7 个奖项后
- 下一篇: linux查询所有目录的txt文件,Li