亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Linux服務器 > 正文

linux線程切換和進程切換的方法

2024-09-05 23:03:26
字體:
來源:轉載
供稿:網友

進程切換分兩步:

1.切換頁目錄以使用新的地址空間

2.切換內核棧和硬件上下文

對于linux來說,線程和進程的最大區別就在于地址空間,對于線程切換,第1步是不需要做的,第2是進程和線程切換都要做的。

切換的性能消耗:

1、線程上下文切換和進程上下問切換一個最主要的區別是線程的切換虛擬內存空間依然是相同的,但是進程切換是不同的。這兩種上下文切換的處理都是通過操作系統內核來完成的。內核的這種切換過程伴隨的最顯著的性能損耗是將寄存器中的內容切換出。

2、另外一個隱藏的損耗是上下文的切換會擾亂處理器的緩存機制。簡單的說,一旦去切換上下文,處理器中所有已經緩存的內存地址一瞬間都作廢了。還有一個顯著的區別是當你改變虛擬內存空間的時候,處理的頁表緩沖(processor's Translation Lookaside Buffer (TLB))或者相當的神馬東西會被全部刷新,這將導致內存的訪問在一段時間內相當的低效。但是在線程的切換中,不會出現這個問題。

系統調用:處于進程上下文

系統調用是在進程上下文中,并沒有tasklet之類的延遲運行,系統調用本身可以休眠,這些可以參見內核代碼

雖然系統調用實與其他中斷實現有點類似,通過IDT表查找入口處理函數,但是系統調用與其他中斷最大的不同是,系統調用是代表當前進程執行的,所以current宏/task_struct是有意義的,這個休眠可以被喚醒
 
系統調用,異常,中斷(其中中斷是異步時鐘,異常時同步時鐘),也可以把系統調用成為異常

中斷上下文:在中斷中執行時依賴的環境,就是中斷上下文(不包括系統調用,是硬件中斷)

進程上下文:當一個進程在執行時,CPU的所有寄存器中的值、進程的狀態以及堆棧中的內容被稱為該進程的上下文

1、首先,這兩個上下文都處于內核空間。

2、其次,兩者的區別在于,進程上下文與當前執行進程密切相關,而中斷上下文在邏輯上與進程沒有關系。

進程上下文主要是異常處理程序和內核線程。內核之所以進入進程上下文是因為進程自身的一些工作需要在內核中做。例如,系統調用是為當前進程服務的,異常通常是處理進程導致的錯誤狀態等。所以在進程上下文中引用current是有意義的。

內核進入中斷上下文是因為中斷信號而導致的中斷處理或軟中斷。而中斷信號的發生是隨機的,中斷處理程序及軟中斷并不能事先預測發生中斷時當前運行的是哪個進程,所以在中斷上下文中引用current是可以的,但沒有意義。事實上,對于A進程希望等待的中斷信號,可能在B進程執行期間發生。例如,A進程啟動寫磁盤操作,A進程睡眠后現在時B進程在運行,當磁盤寫完后磁盤中斷信號打斷的是B進程,在中斷處理時會喚醒A進程。

上下文這個詞會讓人想到進程的CPU寄存器狀態,但好像進入進程上下文(異常處理系統調用)和進入中斷上下文(中斷處理),內核所做的工作沒有太大區別。所以,這兩個上下文的主要區別,我認為在于是否與進程相關。

運行于進程上下文的內核代碼是可搶占的,但中斷上下文則會一直運行至結束,不會被搶占。因此,內核會限制中斷上下文的工作,不允許其執行如下操作:

(1) 進入睡眠狀態或主動放棄CPU;

由于中斷上下文不屬于任何進程,它與current沒有任何關系(盡管此時current指向被中斷的進程),所以中斷上下文一旦睡眠或者放棄CPU,將無法被喚醒。所以也叫原子上下文(atomic context)。

(2) 占用互斥體;

為了保護中斷句柄臨界區資源,不能使用mutexes。如果獲得不到信號量,代碼就會睡眠,會產生和上面相同的情況,如果必須使用鎖,則使用spinlock。

(3) 執行耗時的任務;

中斷處理應該盡可能快,因為內核要響應大量服務和請求,中斷上下文占用CPU時間太長會嚴重影響系統功能。在中斷處理例程中執行耗時任務時,應該交由中斷處理例程底半部來處理。

(4) 訪問用戶空間虛擬內存。

因為中斷上下文是和特定進程無關的,它是內核代表硬件運行在內核空間,所以在中斷上下文無法訪問用戶空間的虛擬地址

(5) 中斷處理例程不應該設置成reentrant(可被并行或遞歸調用的例程)。

因為中斷發生時,preempt和irq都被disable,直到中斷返回。所以中斷上下文和進程上下文不一樣,中斷處理例程的不同實例,是不允許在SMP上并發運行的。

(6)中斷處理例程可以被更高級別的IRQ中斷。(不能嵌套中斷)使用軟中斷,上部分關中斷,也就是禁止嵌套,下半部分使用軟中斷

如果想禁止這種中斷,可以將中斷處理例程定義成快速處理例程,相當于告訴CPU,該例程運行時,禁止本地CPU上所有中斷請求。這直接導致的結果是,由于其他中斷被延遲響應,系統性能下降。

軟中斷是一種延時機制,代碼執行的優先級比進程要高,比硬中斷要低。相比于硬件中斷,軟中段是在開中斷的環境中執行的(長時間關中斷對系統的開銷太大), 代碼是執行在中斷/線程上下文的,是不能睡眠的,雖然每個cpu都有一個對應的ksoftirqd/n線程來執行軟中斷,但是do_softirq這個函數也還會在中斷退出時調用到,因此不能睡眠(中斷上下文不能睡眠的原因是由于調度系統是以進程為基本單位的,調度時會把當前進程的上下文保存在task_struct這個數據結構中,當進程被調度重新執行時會找到執行的斷點,但是中斷上下文是沒有特定task_struct結構體的,當然現在有所謂的線程話中斷,可以滿足在中斷處理函數執行阻塞操作,但是實時性可能會有問題。還有就是中斷代表當前進程執行的概念,個人感覺有點扯淡,畢竟整個內核空間是由所有進程共享的,不存在代表的概念)

上面我們介紹的可延遲函數運行在中斷上下文中(軟中斷的一個檢查點就是do_IRQ退出的時候),于是導致了一些問題:軟中斷不能睡眠、不能阻塞。由于中斷上下文出于內核態,沒有進程切換,所以如果軟中斷一旦睡眠或者阻塞,將無法退出這種狀態,導致內核會整個僵死。但可阻塞函數不能用在中斷上下文中實現,必須要運行在進程上下文中,例如訪問磁盤數據塊的函數。因此,可阻塞函數不能用軟中斷來實現。但是它們往往又具有可延遲的特性。

以上就是小編為大家帶來的linux線程切換和進程切換的方法全部內容了,希望大家多多支持VEVB武林網~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久噜噜噜久久中文字免| 国产精品www色诱视频| 国内精品久久久久久中文字幕| 日韩av大片免费看| 日韩亚洲综合在线| 精品久久久在线观看| 一区三区二区视频| 不卡中文字幕av| 5566日本婷婷色中文字幕97| 色哟哟网站入口亚洲精品| 在线看福利67194| 亚洲精品98久久久久久中文字幕| 国产91精品久久久久| 久久网福利资源网站| 在线视频中文亚洲| 亚洲免费高清视频| 国产亚洲精品va在线观看| 亚洲第一av网站| 欧美成人久久久| 欧美成人免费网| 日日骚av一区| 欧美日韩国产一区二区| 欧美大片免费观看在线观看网站推荐| 欧美精品18videos性欧美| 欧美性猛交xxxx免费看| 欧美成人国产va精品日本一级| 久久九九全国免费精品观看| 国产在线观看一区二区三区| 深夜福利日韩在线看| 国产又爽又黄的激情精品视频| 国产视频福利一区| 欧美丰满片xxx777| 亚洲精品国产精品自产a区红杏吧| 国产欧美日韩中文字幕在线| 精品国产电影一区| 国产精品在线看| 亚洲精品在线观看www| 九九久久精品一区| 欧美性视频网站| 亚洲新声在线观看| 91免费在线视频| 欧美午夜无遮挡| 欧美亚洲国产日韩2020| 精品久久久久久亚洲国产300| 国产精品亚洲自拍| 久久免费成人精品视频| 成人黄色生活片| 国产日产欧美精品| 国产精品永久免费在线| 国产日韩欧美在线| 中文字幕久精品免费视频| 一本大道久久加勒比香蕉| 91精品视频网站| 亚洲97在线观看| 久久久综合免费视频| 欧美激情免费看| 欧洲亚洲妇女av| 亚洲天堂网在线观看| 国产精品久久久久久久久久久久久久| 菠萝蜜影院一区二区免费| 久久久久免费视频| 国产亚洲激情在线| 成人情趣片在线观看免费| 亚洲第一精品夜夜躁人人爽| 亚洲欧美一区二区三区四区| 欧美激情网站在线观看| 91午夜在线播放| 国产99久久久欧美黑人| 欧美国产日韩一区二区| 久久视频在线免费观看| 精品美女久久久久久免费| 久久久久99精品久久久久| 97在线看福利| 亚洲精品一区在线观看香蕉| 欧美激情免费视频| 国产福利精品在线| 亚洲精品综合久久中文字幕| 欧美性xxxx极品hd满灌| 97久久精品人搡人人玩| 992tv在线成人免费观看| 亚洲午夜未满十八勿入免费观看全集| 91高清在线免费观看| 91av视频在线| 亚洲欧美综合区自拍另类| 亚洲欧美日韩天堂一区二区| 欧美激情一区二区三级高清视频| 国产一区二区三区在线观看视频| 日韩中文在线中文网三级| 久久成人精品视频| 91豆花精品一区| 国产精品99久久久久久久久| 久久精品99久久久久久久久| 亚洲欧美国产高清va在线播| 中文.日本.精品| 国产一区av在线| 欧美日韩成人黄色| 亚洲a∨日韩av高清在线观看| 91成人免费观看网站| 2019av中文字幕| 91tv亚洲精品香蕉国产一区7ujn| 性色av香蕉一区二区| 最近2019中文字幕mv免费看| 国产亚洲人成网站在线观看| 久久精品国产电影| 亚洲系列中文字幕| 欧美性猛交xxxx久久久| www.久久色.com| 国产一区二中文字幕在线看| 国产亚洲精品一区二555| 成人国产精品av| 欧洲日本亚洲国产区| 亚洲欧洲在线看| 日韩在线观看免费全| 欧美性xxxx在线播放| 亚洲精品美女久久久| 国语自产偷拍精品视频偷| 在线观看日韩欧美| 欧美成人四级hd版| 国产精品久久久久久久久久久新郎| 日韩激情av在线免费观看| 国产精品 欧美在线| 中文字幕视频一区二区在线有码| 亚洲片在线资源| 国产香蕉97碰碰久久人人| 欧美日韩激情美女| 这里精品视频免费| 成人黄色午夜影院| 精品国产91乱高清在线观看| 亚洲国产精品久久91精品| 欧美在线观看www| 91精品久久久久久综合乱菊| 国产日产亚洲精品| 亚洲国产97在线精品一区| 在线电影欧美日韩一区二区私密| 伊人青青综合网站| 欧美午夜片在线免费观看| 91精品国产沙发| 一本色道久久88综合亚洲精品ⅰ| **欧美日韩vr在线| 国产欧美婷婷中文| 91精品国产综合久久男男| 久青草国产97香蕉在线视频| 大荫蒂欧美视频另类xxxx| 国产精品日韩在线| 91精品国产91久久久久久吃药| 欧美成人免费全部| 欧美猛交免费看| 91在线国产电影| 97精品在线视频| 日韩精品中文字幕有码专区| 亚洲欧美日韩在线一区| 久久久成人的性感天堂| 欧美日韩裸体免费视频| 国产精品xxx视频| 亚洲国产精品成人一区二区| 91国语精品自产拍在线观看性色| 亚洲系列中文字幕| 精品久久久国产精品999| 久久久国产精品x99av| 欧美成aaa人片在线观看蜜臀| 欧美一级黄色网| 欧美激情视频在线观看| 91视频九色网站| 欧美一区二区三区精品电影|