linu用戶態(tài)和內(nèi)核態(tài)的轉(zhuǎn)換_第1頁
linu用戶態(tài)和內(nèi)核態(tài)的轉(zhuǎn)換_第2頁
linu用戶態(tài)和內(nèi)核態(tài)的轉(zhuǎn)換_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、linux 用戶態(tài)和內(nèi)核態(tài)的轉(zhuǎn)換原文鏈接:http:/question/363231653.html當(dāng)一個任務(wù)(進(jìn)程)執(zhí)行系統(tǒng)調(diào)用而執(zhí)行內(nèi)核代碼時,稱進(jìn)程處于內(nèi)核內(nèi)核態(tài),此時處理器 處于特權(quán)級最高的(0 級)內(nèi)核代碼中執(zhí)行,當(dāng)進(jìn)程處于內(nèi)核態(tài)時,執(zhí)行的內(nèi)核代碼會使用當(dāng)前 進(jìn)程的內(nèi)核棧,每個進(jìn)程都有自己的內(nèi)核棧。當(dāng)進(jìn)程執(zhí)行用戶代碼時,稱其處于用戶態(tài),此時處理 器在特權(quán)級最低的(3 級)用戶代碼中運行。當(dāng)正在執(zhí)行用戶程序而突然被中斷程序中斷時,此時用戶程序也可以象征性地稱為處于進(jìn)程 的內(nèi)核態(tài),因為中斷處理程序?qū)⑹褂卯?dāng)前進(jìn)程的內(nèi)核棧。這與處于內(nèi)核態(tài)的進(jìn)程的狀態(tài)有些類似。 內(nèi)核態(tài)與用戶態(tài)是操作系統(tǒng)的兩種

2、運行級別,跟intel cpu沒有必然的聯(lián)系,in tel cpu提供 Ring0-Ring3三種級別的運行模式,RingO級別最高,Ring3最低。Linux使用了 Ring3級別運行用戶態(tài),RingO作為內(nèi)核態(tài),沒有使用Ringl和Ring2o Ring3 狀態(tài)不能訪問Ring0的地址空間,包括代碼和數(shù)據(jù)。Linux進(jìn)程的4GB地址空間,3G-4G部分 大家是共享的,是內(nèi)核態(tài)的地址空間, 這里存放在整個內(nèi)核的代碼和所有的內(nèi)核模塊,以及內(nèi)核 所維護(hù)的數(shù)據(jù)。用戶運行一個程序,該程序所創(chuàng)建的進(jìn)程開始是運行在用戶態(tài)的,如果要執(zhí)行文 件操作,網(wǎng)絡(luò)數(shù)據(jù)發(fā)送等操作,必須通過write,send等系統(tǒng)調(diào)用

3、,這些系統(tǒng)調(diào)用會調(diào)用內(nèi)核中 的代碼來完成操作,這時,必須切換到Ring0,然后進(jìn)入3GB-4GB中的內(nèi)核地址空間去執(zhí)行這 些代碼完成操作,完成后,切換回Ring3,回到用戶態(tài)。這樣,用戶態(tài)的程序就不能隨意操作內(nèi) 核地址空間,具有一定的安全保護(hù)作用。保護(hù)模式,通過內(nèi)存頁表操作等機(jī)制,保證進(jìn)程間的地址空間不會互相沖突,一個進(jìn)程的操 作不會修改另一個進(jìn)程的地址空間中的數(shù)據(jù)。在內(nèi)核態(tài)下,CPU可執(zhí)行任何指令,在用戶態(tài)下 CPU只能執(zhí)行非特權(quán)指令。當(dāng)CPU處于內(nèi)核態(tài),可以隨意進(jìn)入用戶態(tài);而當(dāng)CPU處于用戶態(tài), 只能通過中斷的方式進(jìn)入內(nèi)核態(tài)。一般程序一開始都是運行于用戶態(tài),當(dāng)程序需要使用系統(tǒng)資源 時,就必

4、須通過調(diào)用軟中斷進(jìn)入內(nèi)核態(tài).使用 nm 查看用戶態(tài)程序的符號表內(nèi)容使用System.map(內(nèi)核符號表)查看內(nèi)核符號表內(nèi)容測試程序中打印用戶態(tài)函數(shù)地址,并調(diào)用系統(tǒng)調(diào)用(在內(nèi)核中打印系統(tǒng)調(diào)用函數(shù)地址),用 用戶態(tài)符號表和內(nèi)核態(tài)符號表示例說明內(nèi)核態(tài)和用戶態(tài)地址空間的差異說明內(nèi)核態(tài)地址映射ioremapO ;用戶態(tài)地址映射mmapO原文鏈接:http:/view/f78b7e40bele650e52ea998f.html1 )用戶態(tài)切 換 到內(nèi)核態(tài)的 3 種 方式系統(tǒng)調(diào)用 這是用戶態(tài)進(jìn)程主動要求切換到內(nèi)核態(tài)的一種方式,用戶態(tài)進(jìn)程通過系統(tǒng)調(diào)用申請使用操作系統(tǒng)提供的服務(wù)程序完成工作,比如前例中forkO

5、實際上就是執(zhí)行了一個創(chuàng)建新進(jìn)程的系統(tǒng)調(diào)用。 而系統(tǒng)調(diào)用的機(jī)制其核心還是使用了操作系統(tǒng)為用戶特別開放的一個中斷來實現(xiàn),例如Linux的 int 80h 中斷。系統(tǒng)調(diào)用實質(zhì)上是一個中斷,而匯編指令int就可以實現(xiàn)用戶態(tài)向內(nèi)核態(tài)切換,iret實現(xiàn)內(nèi) 核態(tài)向用戶態(tài)切換異常當(dāng) CPU 在執(zhí)行運行在用戶態(tài)下的程序時, 發(fā)生了某些事先不可知的異常, 這時會觸發(fā)由當(dāng) 前運行進(jìn)程切換到處理此異常的內(nèi)核相關(guān)程序中,也就轉(zhuǎn)到了內(nèi)核態(tài),比如缺頁異常。外圍設(shè)備的中斷當(dāng)外圍設(shè)備完成用戶請求的操作后,會向 CPU 發(fā)出相應(yīng)的中斷信號, 這時 CPU 會暫停執(zhí)行 下一條即將要執(zhí)行的指令轉(zhuǎn)而去執(zhí)行與中斷信號對應(yīng)的處理程序,如果

6、先前執(zhí)行的指令是用戶態(tài) 下的程序,那么這個轉(zhuǎn)換的過程自然也就發(fā)生了由用戶態(tài)到內(nèi)核態(tài)的切換。比如硬盤讀寫操作完 成,系統(tǒng)會切換到硬盤讀寫的中斷處理程序中執(zhí)行后續(xù)操作等。這 3 種方式是系統(tǒng)在運行時由用戶態(tài)轉(zhuǎn)到內(nèi)核態(tài)的最主要方式,其中系統(tǒng)調(diào)用可以認(rèn)為是用 戶進(jìn)程主動發(fā)起的,異常和外圍設(shè)備中斷則是被動的。2)具體的切換操作從觸發(fā)方式上看,可以認(rèn)為存在前述 3 種不同的類型,但是從最終實際完成由用戶態(tài)到內(nèi)核 態(tài)的切換操作上來說, 涉及的關(guān)鍵步驟是完全一致的,沒有任何區(qū)別,都相當(dāng)于執(zhí)行了一個中斷 響應(yīng)的過程,因為系統(tǒng)調(diào)用實際上最終是中斷機(jī)制實現(xiàn)的,而異常和中斷的處理機(jī)制基本上也是 一致的, 關(guān)于它們的具體區(qū)別這里不再贅述。 關(guān)于中斷處理機(jī)制的細(xì)節(jié)和步驟這里也不做過多分析,涉及到由用戶態(tài)切換到內(nèi)核態(tài)的步驟主要包括:從當(dāng)前進(jìn)程的描述符中提取其內(nèi)核棧的ssO及espO信息。使用ssO和espO指向的內(nèi)核棧將當(dāng)前進(jìn)程的cs,eip,eflags,ss,esp信息保存起來,這個過 程也完成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論