電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>詳解Linux內(nèi)核中進(jìn)程上下文和中斷上下文

詳解Linux內(nèi)核中進(jìn)程上下文和中斷上下文

2017-11-01 | rar | 0.5 MB | 次下載 | 1積分

資料介紹

 內(nèi)核空間和用戶空間是操作系統(tǒng)理論的基礎(chǔ)之一,即內(nèi)核功能模塊運(yùn)行在內(nèi)核空間,而應(yīng)用程序運(yùn)行在用戶空間?,F(xiàn)代的CPU都具有不同的操作模式,代表不同的級(jí)別,不同的級(jí)別具有不同的功能,在較低的級(jí)別中將禁止某些操作。Linux系統(tǒng)設(shè)計(jì)時(shí)利用了這種硬件特性,使用了兩個(gè)級(jí)別,最高級(jí)別和最低級(jí)別,內(nèi)核運(yùn)行在最高級(jí)別(內(nèi)核態(tài)),這個(gè)級(jí)別可以進(jìn)行所有操作,而應(yīng)用程序運(yùn)行在較低級(jí)別(用戶態(tài)),在這個(gè)級(jí)別,處理器控制著對硬件的直接訪問以及對內(nèi)存的非授權(quán)訪問。內(nèi)核態(tài)和用戶態(tài)有自己的內(nèi)存映射,即自己的地址空間。
  正是有了不同運(yùn)行狀態(tài)的劃分,才有了上下文的概念。用戶空間的應(yīng)用程序,如果想要請求系統(tǒng)服務(wù),比如操作一個(gè)物理設(shè)備,或者映射一段設(shè)備空間的地址到用戶空間,就必須通過系統(tǒng)調(diào)用來(操作系統(tǒng)提供給用戶空間的接口函數(shù))實(shí)現(xiàn)。如下圖所示:
  詳解Linux內(nèi)核中進(jìn)程上下文和中斷上下文
  通過系統(tǒng)調(diào)用,用戶空間的應(yīng)用程序就會(huì)進(jìn)入內(nèi)核空間,由內(nèi)核代表該進(jìn)程運(yùn)行于內(nèi)核空間,這就涉及到上下文的切換,用戶空間和內(nèi)核空間具有不同的地址映射,通用或?qū)S玫?a href='http://www.ttokpm.com/tags/寄存器/' target='_blank' class='arckwlink_none'>寄存器組,而用戶空間的進(jìn)程要傳遞很多變量、參數(shù)給內(nèi)核,內(nèi)核也要保存用戶進(jìn)程的一些寄存器、變量等,以便系統(tǒng)調(diào)用結(jié)束后回到用戶空間繼續(xù)執(zhí)行,所謂的進(jìn)程上下文,就是一個(gè)進(jìn)程在執(zhí)行的時(shí)候,CPU的所有寄存器中的值、進(jìn)程的狀態(tài)以及堆棧中的內(nèi)容,當(dāng)內(nèi)核需要切換到另一個(gè)進(jìn)程時(shí),它需要保存當(dāng)前進(jìn)程的所有狀態(tài),即保存當(dāng)前進(jìn)程的進(jìn)程上下文,以便再次執(zhí)行該進(jìn)程時(shí),能夠恢復(fù)切換時(shí)的狀態(tài),繼續(xù)執(zhí)行。
  同理,硬件通過觸發(fā)信號(hào),導(dǎo)致內(nèi)核調(diào)用中斷處理程序,進(jìn)入內(nèi)核空間。這個(gè)過程中,硬件的一些變量和參數(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支持搶占)。但是一個(gè)中斷上下文,通常都會(huì)始終占有CPU(當(dāng)然中斷可以嵌套,但我們一般不這樣做),不可以被打斷。正因?yàn)槿绱?,運(yùn)行在中斷上下文的代碼就要受一些限制,不能做下面的事情:
  1、睡眠或者放棄CPU。
  這樣做的后果是災(zāi)難性的,因?yàn)閮?nèi)核在進(jìn)入中斷之前會(huì)關(guān)閉進(jìn)程調(diào)度,一旦睡眠或者放棄CPU,這時(shí)內(nèi)核無法調(diào)度別的進(jìn)程來執(zhí)行,系統(tǒng)就會(huì)死掉
  2、嘗試獲得信號(hào)量
  如果獲得不到信號(hào)量,代碼就會(huì)睡眠,會(huì)產(chǎn)生和上面相同的情況
  3、執(zhí)行耗時(shí)的任務(wù)
  中斷處理應(yīng)該盡可能快,因?yàn)閮?nèi)核要響應(yīng)大量服務(wù)和請求,中斷上下文占用CPU時(shí)間太長會(huì)嚴(yán)重影響系統(tǒng)功能。
  4、訪問用戶空間的虛擬地址
  因?yàn)橹袛嗌舷挛氖呛吞囟ㄟM(jìn)程無關(guān)的,它是內(nèi)核代表硬件運(yùn)行在內(nèi)核空間,所以在終端上下文無法訪問用戶空間的虛擬地址
?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)