freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

linux內(nèi)核源代碼導(dǎo)讀-文庫吧資料

2024-07-30 15:30本頁面
  

【正文】 統(tǒng)的目的 ?與硬件交互,管理所有的硬件資源 ?為用戶程序(應(yīng)用程序)提供一個(gè)良好的執(zhí)行環(huán)境 I386系統(tǒng)的基本概念 ?代碼的運(yùn)行 ?堆棧的概念 ?內(nèi)核態(tài)與用戶態(tài) ?中斷 /異常 /系統(tǒng)調(diào)用 ?虛擬內(nèi)存 代碼的運(yùn)行 ?關(guān)鍵寄存器 ?cs : eip:總是指向下一條的指令地址 ?順序執(zhí)行:總是指向地址連續(xù)的下一條指令 ?跳轉(zhuǎn) /分支:執(zhí)行這樣的指令的時(shí)候, cs : eip的值會(huì)根據(jù)程序需要被修改 ?call:將當(dāng)前 cs : eip的值壓入棧頂, cs : eip指向被調(diào)用函數(shù)的入口地址 ?ret:從棧頂彈出原來保存在這里的 cs : eip的值,放入 cs : eip中 ?發(fā)生中斷時(shí)??? ????? I386系統(tǒng)的基本概念 ?代碼的運(yùn)行 ?堆棧的概念 ?內(nèi)核態(tài)與用戶態(tài) ?中斷 /異常 /系統(tǒng)調(diào)用 ?虛擬內(nèi)存 堆棧的概念 ?堆棧是 C語言程序運(yùn)行時(shí)必須的一個(gè)記錄調(diào)用路徑和參數(shù)的空間 ? 函數(shù)調(diào)用框架 ? 傳遞參數(shù) ? 保存返回地址 ? 提供局部變量空間 ? 等等 ? C語言編譯器對堆棧的使用有一套的規(guī)則 ?了解堆棧存在的目的和編譯器對堆棧使用的規(guī)則是理解操作系統(tǒng)一些關(guān)鍵性代碼的基礎(chǔ) ?以 x86體系結(jié)構(gòu)為例 堆棧寄存器和堆棧操作 ?堆棧相關(guān)的寄存器 ?esp,堆棧指針( stack pointer) ?ebp,基址指針( base pointer) ?堆棧操作 ?push 棧頂?shù)刂窚p少 4個(gè)字節(jié)( 32位) ?pop 棧頂?shù)刂吩黾?4個(gè)字節(jié) ?ebp在 C語言中用作記錄當(dāng)前函數(shù)調(diào)用基址 esp ebp 高地址 低地址 esp // 調(diào)用者 … call target … 利用堆棧實(shí)現(xiàn)函數(shù)調(diào)用和返回 //建立被調(diào)用者函數(shù)的堆棧框架 pushl %ebp movl %esp, %ebp //拆除被調(diào)用者函數(shù)的堆??蚣? movl %ebp,%esp popl %ebp ret //被調(diào)用者函數(shù)體 //do sth. … call指令: 1)將 下一條指令的地址 A保存在棧頂 2)設(shè)置 eip指向被調(diào)用程序代碼開始處 將地址 A恢復(fù)到 eip中 函數(shù)堆棧框架的形成 ? call xxx ? 執(zhí)行 call之前 ? 執(zhí)行 call時(shí), cs : eip原來的值 指向 call下一條指令,該值被 保存到棧頂,然后 cs : eip的值 指向 xxx的入口地址 ?進(jìn)入 xxx ? 第一條指令: pushl %ebp ? 第二條指令: movl %esp, %ebp ? 函數(shù)體中的常規(guī)操作,可能會(huì)壓棧、出棧 ?退出 xxx ? movl %ebp,%esp ? popl %ebp ? ret esp ebp 高地址 低地址 cs : eip esp ebp esp ebp esp ?C語言中還使用堆棧進(jìn)行 ?參數(shù)的傳遞 ?局部變量的使用 一段小程序 源文件: 這是一個(gè)很簡單的 C程序 main函數(shù)中調(diào)用了函數(shù) p1和p2 首先使用 gcc生成 文件 test 然后使用 objdump –S獲得 test的反匯編文件 eip eip eip eip 觀察程序運(yùn)行時(shí)堆棧的變化 main … p1(c) … p2(x,y) … p1 p2 main p2 p1 程序的代碼段 堆棧 eip esp main堆棧 c eip eip p1的堆棧 esp eip eip x, y p2堆棧 另一段小程序 和前一段小程序稍有不同 在這個(gè)小程序中, main函數(shù)中調(diào)用了函數(shù) p2,而在 p2的執(zhí)行過程中又調(diào)用了函數(shù) p1 觀察程序運(yùn)行時(shí)堆棧的變化 eip eip eip eip main … p2(x,y) … p1 p2 … p1(c) … main p2 p1 程序的代碼段 堆棧 eip esp main堆棧 esp eip eip x, y eip p2堆棧 eip eip c eip p1堆棧 esp I386系統(tǒng)的基本概念 ?代碼的運(yùn)行 ?堆棧的概念 ?內(nèi)核態(tài)與用戶態(tài) ?中斷 /異常 /系統(tǒng)調(diào)用 ?虛擬內(nèi)存 用戶態(tài)和內(nèi)核態(tài)的概念 ?Why? ?假定不區(qū)分 ?用戶直接修改操作系統(tǒng)的數(shù)據(jù) ?用戶直接調(diào)用操作系統(tǒng)的內(nèi)部函數(shù) ?用戶直接操作外設(shè) ?用戶任意讀 /寫物理內(nèi)存 ?因此,要區(qū)分用戶態(tài)和內(nèi)核態(tài): ?禁止用戶程序和底層硬件直接打交道 (最簡單的例子,如果用戶程序往硬件控制寄存器寫入不恰當(dāng)?shù)闹?,可能?dǎo)致硬件無法正常工作 ) ?禁止用戶程序訪問任意的物理內(nèi)存 (否則可能會(huì)破壞
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1