下載本文檔
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025天津師范大學(xué)后勤管理處膳食服務(wù)中心勞務(wù)派遣工作人員招聘備考題庫(含答案詳解)
- 2026江蘇蘇州市吳江區(qū)教育系統(tǒng)招聘事業(yè)編制教師36人備考題庫及一套參考答案詳解
- 2026河南安陽市直機(jī)關(guān)遴選公務(wù)員3人備考題庫(安陽市檢察院遴選3名)及1套參考答案詳解
- 2026年甘肅省臨夏七醫(yī)院社會招聘63人備考題庫及一套完整答案詳解
- 2026四川成都市雙流區(qū)東升葛陌幼兒園教師招聘1人備考題庫及答案詳解(新)
- 2025中國電信濱海分公司招聘2人備考題庫及答案詳解(新)
- 2025四川雅安石棉縣佳業(yè)勞務(wù)派遣有限公司招聘石棉縣應(yīng)急救援指揮中心輔助人員1人備考題庫及完整答案詳解1套
- 2026南水北調(diào)東線山東干線有限責(zé)任公司人才招聘8人備考題庫及一套答案詳解
- 2026廣西南寧市第十三中學(xué)資產(chǎn)管理員招聘1人備考題庫及答案詳解(新)
- 2026內(nèi)蒙古鄂爾多斯市東勝區(qū)實驗小學(xué)招聘教師備考題庫附答案詳解
- 2026屆云南省昆明市五華區(qū)數(shù)學(xué)高二第一學(xué)期期末考試試題含解析
- 老年人夏季健康知識講座
- 部編版六年級語文期末復(fù)習(xí)易錯題專題練習(xí)
- 2025年深圳非高危安全管理員和企業(yè)負(fù)責(zé)人習(xí)題(有答案版)(1)1
- 飛行汽車課件
- 春節(jié)花草養(yǎng)護(hù)知識培訓(xùn)
- 消防安全隱患排查清單
- 新能源汽車火災(zāi)撲救課件
- 紅酒倒酒知識培訓(xùn)總結(jié)報告課件
- 電大??啤豆残姓W(xué)》簡答論述題題庫及答案
- 2025成人高考全國統(tǒng)一考試專升本英語試題及答案
評論
0/150
提交評論