最好看免费观看高清视频韩剧|最好看免费观看高清电影大全|最好看的中文字幕国语电视剧|最好看的2019中文大全在线观看|最好看的2018中文免费看|最好看的2018免费观看在线

行業(yè)新聞

行業(yè)新聞

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

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

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

Linux中引起線程切換的操作


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

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

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

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

時(shí)間片旋轉(zhuǎn)

線程阻塞

線程主動(dòng)放棄時(shí)間片

直接開(kāi)銷

直接開(kāi)銷是由線程切換本身引起的,這是不可避免的,并且不可避免地會(huì)發(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保存。切換線程時(shí),必須從內(nèi)核中切出舊線程的task_struct,并切入新線程以進(jìn)行上下文切換。另外,您還需要切換寄存器,程序計(jì)數(shù)器,線程堆棧(包括操作堆棧,數(shù)據(jù)堆棧)等。

線程調(diào)度算法

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

高架

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

快取未命中

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

在此共享了導(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)咨詢
冀州市| 永定县| 大新县| 和龙市| 石阡县| 苍梧县| 铁岭市| 汉阴县| 淮阳县| 沁水县| 林周县| 宁海县| 错那县| 桐城市| 隆昌县| 冀州市| 张家港市| 和政县| 宣威市| 军事| 泰和县| 宿州市| 湘乡市| 攀枝花市| 锡林郭勒盟| 丽江市| 绥芬河市| 增城市| 民勤县| 岳普湖县| 冀州市| 股票| 洱源县| 灵山县| 信丰县| 山阴县| 富阳市| 普洱| 安国市| 桃园县| 浦北县|