資料介紹
內(nèi)核空間和用戶空間是操作系統(tǒng)理論的基礎(chǔ)之一,即內(nèi)核功能模塊運(yùn)行在內(nèi)核空間,而應(yīng)用程序運(yùn)行在用戶空間?,F(xiàn)代的CPU都具有不同的操作模式,代表不同的級別,不同的級別具有不同的功能,在較低的級別中將禁止某些操作。Linux系統(tǒng)設(shè)計(jì)時利用了這種硬件特性,使用了兩個級別,最高級別和最低級別,內(nèi)核運(yùn)行在最高級別(內(nèi)核態(tài)),這個級別可以進(jìn)行所有操作,而應(yīng)用程序運(yùn)行在較低級別(用戶態(tài)),在這個級別,處理器控制著對硬件的直接訪問以及對內(nèi)存的非授權(quán)訪問。內(nèi)核態(tài)和用戶態(tài)有自己的內(nèi)存映射,即自己的地址空間。
正是有了不同運(yùn)行狀態(tài)的劃分,才有了上下文的概念。用戶空間的應(yīng)用程序,如果想要請求系統(tǒng)服務(wù),比如操作一個物理設(shè)備,或者映射一段設(shè)備空間的地址到用戶空間,就必須通過系統(tǒng)調(diào)用來(操作系統(tǒng)提供給用戶空間的接口函數(shù))實(shí)現(xiàn)。如下圖所示:
![詳解Linux內(nèi)核中進(jìn)程上下文和中斷上下文](/uploads/allimg/171101/2362486-1G101152503348.png)
通過系統(tǒng)調(diào)用,用戶空間的應(yīng)用程序就會進(jìn)入內(nèi)核空間,由內(nèi)核代表該進(jìn)程運(yùn)行于內(nèi)核空間,這就涉及到上下文的切換,用戶空間和內(nèi)核空間具有不同的地址映射,通用或?qū)S玫?a href='http://www.delux-kingway.cn/tags/寄存器/' target='_blank' class='arckwlink_none'>寄存器組,而用戶空間的進(jìn)程要傳遞很多變量、參數(shù)給內(nèi)核,內(nèi)核也要保存用戶進(jìn)程的一些寄存器、變量等,以便系統(tǒng)調(diào)用結(jié)束后回到用戶空間繼續(xù)執(zhí)行,所謂的進(jìn)程上下文,就是一個進(jìn)程在執(zhí)行的時候,CPU的所有寄存器中的值、進(jìn)程的狀態(tài)以及堆棧中的內(nèi)容,當(dāng)內(nèi)核需要切換到另一個進(jìn)程時,它需要保存當(dāng)前進(jìn)程的所有狀態(tài),即保存當(dāng)前進(jìn)程的進(jìn)程上下文,以便再次執(zhí)行該進(jìn)程時,能夠恢復(fù)切換時的狀態(tài),繼續(xù)執(zhí)行。
同理,硬件通過觸發(fā)信號,導(dǎo)致內(nèi)核調(diào)用中斷處理程序,進(jìn)入內(nèi)核空間。這個過程中,硬件的一些變量和參數(shù)也要傳遞給內(nèi)核,內(nèi)核通過這些參數(shù)進(jìn)行中斷處理,中斷上下文就可以理解為硬件傳遞過來的這些參數(shù)和內(nèi)核需要保存的一些環(huán)境,主要是被中斷的進(jìn)程的環(huán)境。
Linux內(nèi)核工作在進(jìn)程上下文或者中斷上下文。提供系統(tǒng)調(diào)用服務(wù)的內(nèi)核代碼代表發(fā)起系統(tǒng)調(diào)用的應(yīng)用程序運(yùn)行在進(jìn)程上下文;另一方面,中斷處理程序,異步運(yùn)行在中斷上下文。中斷上下文和特定進(jìn)程無關(guān)。
運(yùn)行在進(jìn)程上下文的內(nèi)核代碼是可以被搶占的(Linux2.6支持搶占)。但是一個中斷上下文,通常都會始終占有CPU(當(dāng)然中斷可以嵌套,但我們一般不這樣做),不可以被打斷。正因?yàn)槿绱?,運(yùn)行在中斷上下文的代碼就要受一些限制,不能做下面的事情:
1、睡眠或者放棄CPU。
這樣做的后果是災(zāi)難性的,因?yàn)閮?nèi)核在進(jìn)入中斷之前會關(guān)閉進(jìn)程調(diào)度,一旦睡眠或者放棄CPU,這時內(nèi)核無法調(diào)度別的進(jìn)程來執(zhí)行,系統(tǒng)就會死掉
2、嘗試獲得信號量
如果獲得不到信號量,代碼就會睡眠,會產(chǎn)生和上面相同的情況
3、執(zhí)行耗時的任務(wù)
中斷處理應(yīng)該盡可能快,因?yàn)閮?nèi)核要響應(yīng)大量服務(wù)和請求,中斷上下文占用CPU時間太長會嚴(yán)重影響系統(tǒng)功能。
4、訪問用戶空間的虛擬地址
因?yàn)橹袛嗌舷挛氖呛吞囟ㄟM(jìn)程無關(guān)的,它是內(nèi)核代表硬件運(yùn)行在內(nèi)核空間,所以在終端上下文無法訪問用戶空間的虛擬地址
?
正是有了不同運(yùn)行狀態(tài)的劃分,才有了上下文的概念。用戶空間的應(yīng)用程序,如果想要請求系統(tǒng)服務(wù),比如操作一個物理設(shè)備,或者映射一段設(shè)備空間的地址到用戶空間,就必須通過系統(tǒng)調(diào)用來(操作系統(tǒng)提供給用戶空間的接口函數(shù))實(shí)現(xiàn)。如下圖所示:
![詳解Linux內(nèi)核中進(jìn)程上下文和中斷上下文](/uploads/allimg/171101/2362486-1G101152503348.png)
通過系統(tǒng)調(diào)用,用戶空間的應(yīng)用程序就會進(jìn)入內(nèi)核空間,由內(nèi)核代表該進(jìn)程運(yùn)行于內(nèi)核空間,這就涉及到上下文的切換,用戶空間和內(nèi)核空間具有不同的地址映射,通用或?qū)S玫?a href='http://www.delux-kingway.cn/tags/寄存器/' target='_blank' class='arckwlink_none'>寄存器組,而用戶空間的進(jìn)程要傳遞很多變量、參數(shù)給內(nèi)核,內(nèi)核也要保存用戶進(jìn)程的一些寄存器、變量等,以便系統(tǒng)調(diào)用結(jié)束后回到用戶空間繼續(xù)執(zhí)行,所謂的進(jìn)程上下文,就是一個進(jìn)程在執(zhí)行的時候,CPU的所有寄存器中的值、進(jìn)程的狀態(tài)以及堆棧中的內(nèi)容,當(dāng)內(nèi)核需要切換到另一個進(jìn)程時,它需要保存當(dāng)前進(jìn)程的所有狀態(tài),即保存當(dāng)前進(jìn)程的進(jìn)程上下文,以便再次執(zhí)行該進(jìn)程時,能夠恢復(fù)切換時的狀態(tài),繼續(xù)執(zhí)行。
同理,硬件通過觸發(fā)信號,導(dǎo)致內(nèi)核調(diào)用中斷處理程序,進(jìn)入內(nèi)核空間。這個過程中,硬件的一些變量和參數(shù)也要傳遞給內(nèi)核,內(nèi)核通過這些參數(shù)進(jìn)行中斷處理,中斷上下文就可以理解為硬件傳遞過來的這些參數(shù)和內(nèi)核需要保存的一些環(huán)境,主要是被中斷的進(jìn)程的環(huán)境。
Linux內(nèi)核工作在進(jìn)程上下文或者中斷上下文。提供系統(tǒng)調(diào)用服務(wù)的內(nèi)核代碼代表發(fā)起系統(tǒng)調(diào)用的應(yīng)用程序運(yùn)行在進(jìn)程上下文;另一方面,中斷處理程序,異步運(yùn)行在中斷上下文。中斷上下文和特定進(jìn)程無關(guān)。
運(yùn)行在進(jìn)程上下文的內(nèi)核代碼是可以被搶占的(Linux2.6支持搶占)。但是一個中斷上下文,通常都會始終占有CPU(當(dāng)然中斷可以嵌套,但我們一般不這樣做),不可以被打斷。正因?yàn)槿绱?,運(yùn)行在中斷上下文的代碼就要受一些限制,不能做下面的事情:
1、睡眠或者放棄CPU。
這樣做的后果是災(zāi)難性的,因?yàn)閮?nèi)核在進(jìn)入中斷之前會關(guān)閉進(jìn)程調(diào)度,一旦睡眠或者放棄CPU,這時內(nèi)核無法調(diào)度別的進(jìn)程來執(zhí)行,系統(tǒng)就會死掉
2、嘗試獲得信號量
如果獲得不到信號量,代碼就會睡眠,會產(chǎn)生和上面相同的情況
3、執(zhí)行耗時的任務(wù)
中斷處理應(yīng)該盡可能快,因?yàn)閮?nèi)核要響應(yīng)大量服務(wù)和請求,中斷上下文占用CPU時間太長會嚴(yán)重影響系統(tǒng)功能。
4、訪問用戶空間的虛擬地址
因?yàn)橹袛嗌舷挛氖呛吞囟ㄟM(jìn)程無關(guān)的,它是內(nèi)核代表硬件運(yùn)行在內(nèi)核空間,所以在終端上下文無法訪問用戶空間的虛擬地址
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于句子級上下文的神經(jīng)機(jī)器翻譯綜述 64次下載
- 一種上下文信息融合的時序行為提名方法 5次下載
- CPU上下文切換的詳細(xì)資料講解
- 上下文統(tǒng)計(jì)分析的軟件故障定位方法 0次下載
- Web服務(wù)的上下文的訪問控制策略模型 0次下載
- 基于低秩重檢測的多特征時空上下文的視覺跟蹤 0次下載
- 基于局部敏感直方圖的時空上下文跟蹤_葛驍倩 0次下載
- 基于Pocket PC的上下文菜單實(shí)現(xiàn) 0次下載
- 基于Pocket PC的上下文菜單實(shí)現(xiàn) 17次下載
- 終端業(yè)務(wù)上下文的定義方法及業(yè)務(wù)模型
- 移動設(shè)備的個性化推薦在上下文感知應(yīng)用
- 新鮮度敏感的上下文推理實(shí)時調(diào)度算法
- 基于交互上下文的預(yù)測方法
- 基于多Agent的用戶上下文自適應(yīng)站點(diǎn)構(gòu)架
- 基于形狀上下文的人臉匹配算法
- SystemView上下文統(tǒng)計(jì)窗口識別阻塞原因 460次閱讀
- FreeRTOS系列技術(shù)文章:上下文切換 1223次閱讀
- 首篇!Point-In-Context:探索用于3D點(diǎn)云理解的上下文學(xué)習(xí) 821次閱讀
- 谷歌新作SPAE:GPT等大語言模型可以通過上下文學(xué)習(xí)解決視覺任務(wù) 1271次閱讀
- 我們能否擴(kuò)展現(xiàn)有的預(yù)訓(xùn)練 LLM 的上下文窗口 672次閱讀
- 切換k8s上下文有多快 782次閱讀
- 高負(fù)載處理及上下文切換 747次閱讀
- 基于異常檢測的模型表現(xiàn)對比 1879次閱讀
- 基于金字塔特征融合與全局上下文注意模塊實(shí)現(xiàn)完全自動缺陷檢測 3790次閱讀
- 如何分析Linux CPU上下文切換問題 1986次閱讀
- Linux驅(qū)動中斷上下文中會發(fā)生什么結(jié)果實(shí)驗(yàn)測試 891次閱讀
- 基于Transformer模型的上下文嵌入何時真正值得使用? 2898次閱讀
- 如何利用多個上下文信息來做同義實(shí)體發(fā)現(xiàn)問題上進(jìn)行了一些新的探索 2695次閱讀
- 講解將知識圖譜特征學(xué)習(xí)引入到推薦系統(tǒng)的各種思路與實(shí)現(xiàn)方法 8869次閱讀
- 初學(xué)OpenGL:什么是繪制上下文 2471次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論