寂寞熟妇风间ゆみ中文,色翁荡息又大又硬又粗又爽,秋水伊人2022黑色毛呢外套,又紧又大又爽精品一区二区

行業(yè)新聞

行業(yè)新聞

在Linux中導(dǎo)致線程切換的操作是什么

發(fā)布時間:2020-06-16 點(diǎn)擊數(shù):10910

 在Linux中導(dǎo)致線程切換的操作是什么?針對此問題,本文提供了相應(yīng)的分析和答案,希望可以幫助更多希望解決此問題的朋友找到一種更簡單的方法。

Linux中引起線程切換的操作


Linux使用一對一線程模型,用戶線程切換和內(nèi)核線程切換之間的差異很小。同時,如果您忽略了放棄用戶線程執(zhí)行權(quán)的用戶成本(收益),則只需考慮內(nèi)核線程切換的成本。

注意,這只是為了簡化理解。實(shí)際上,用戶線程庫在用戶線程的調(diào)度和同步中做了很多工作,這部分開銷不可忽略。

如JVM在Thread#yield()上所解釋的:如果底層OS不支持yield的語義,則JVM允許用戶線程旋轉(zhuǎn)到時間片的末尾,并且該線程被動切換以實(shí)現(xiàn)類似的效果。

是什么導(dǎo)致線程切換

時間片旋轉(zhuǎn)

線程阻塞

線程主動放棄時間片

直接開銷

直接開銷是由線程切換本身引起的,這是不可避免的,并且不可避免地會發(fā)生。

在用戶模式和內(nèi)核模式之間切換

線程切換只能在內(nèi)核狀態(tài)下進(jìn)行。如果當(dāng)前用戶處于用戶狀態(tài),將不可避免地導(dǎo)致用戶狀態(tài)和內(nèi)核狀態(tài)之間的切換。 (<font color =“ red”>“在用戶模式和內(nèi)核模式之間切換”的費(fèi)用是多少?</ font>)

上下文切換

如前所述,線程(或進(jìn)程是任意的)信息需要使用task_struct保存。切換線程時,必須從內(nèi)核中切出舊線程的task_struct,并切入新線程以進(jìn)行上下文切換。另外,您還需要切換寄存器,程序計數(shù)器,線程堆棧(包括操作堆棧,數(shù)據(jù)堆棧)等。

線程調(diào)度算法

線程調(diào)度算法需要管理線程的狀態(tài),等待條件等。如果調(diào)度基于優(yōu)先級,則還需要維護(hù)優(yōu)先級隊(duì)列。如果線程頻繁切換,則不應(yīng)低估成本。

高架

間接開銷是直接開銷的副作用,并且取決于系統(tǒng)實(shí)現(xiàn)和用戶代碼實(shí)現(xiàn)。

快取未命中

要切換進(jìn)程,需要執(zhí)行新的邏輯。如果兩者訪問的地址空間不相似,將導(dǎo)致高速緩存未命中,具體影響取決于系統(tǒng)實(shí)現(xiàn)和用戶代碼實(shí)現(xiàn)。如果系統(tǒng)高速緩存很大,則可以減少高速緩存未命中的影響;如果用于用戶線程訪問數(shù)據(jù)的地址空間較小,則高速緩存未命中率本身相對較低。

在此共享了導(dǎo)致Linux中線程切換的操作,希望全網(wǎng)數(shù)據(jù)小編的分享能幫助到你,全網(wǎng)數(shù)據(jù)為廣大用戶提供專業(yè)化深圳服務(wù)器托管,深圳服務(wù)器租用,深圳主機(jī)托管,云服務(wù)器租用等服務(wù)器資源,詳情歡迎咨詢客服了解。
?

用戶至上,用心服務(wù)

全網(wǎng)數(shù)據(jù)以"用戶至上,用心服務(wù)每一位用戶"為宗旨,您可以把您的應(yīng)用放心的交給我們,全網(wǎng)數(shù)據(jù)為您提供完美解決方案和數(shù)據(jù)中心服務(wù)。

免費(fèi)咨詢