




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗七增加新的系統(tǒng)調(diào)用實驗七 增加新的系統(tǒng)調(diào)用v預(yù)備知識Linux內(nèi)核結(jié)構(gòu)Linux內(nèi)核源碼Linux系統(tǒng)調(diào)用v實驗指導(dǎo)系統(tǒng)調(diào)用的添加Linux內(nèi)核編譯v實驗?zāi)康摹?nèi)容1.1 Linux內(nèi)核結(jié)構(gòu)Linux分為用戶空間和內(nèi)核空間兩個層次1.1 Linux內(nèi)核結(jié)構(gòu)內(nèi)核的組成vLinux內(nèi)核的組成v進(jìn)程調(diào)度(SCHED):控制進(jìn)程對CPU的訪問v內(nèi)存管理(MM):允許多個進(jìn)程安全的共享內(nèi)存區(qū)域v虛擬文件系統(tǒng)(VFS):隱藏各種硬件的具體細(xì)節(jié),為所有設(shè)備提供統(tǒng)一的接口v網(wǎng)絡(luò)接口(NET):提供對各種網(wǎng)絡(luò)標(biāo)準(zhǔn)的存取和各種網(wǎng)絡(luò)硬件的支持v進(jìn)程間通訊(IPC):支持進(jìn)程間各種通信機(jī)制1.2 Linux內(nèi)核源
2、碼1.3 Linux系統(tǒng)調(diào)用(1)vLinux系統(tǒng)調(diào)用機(jī)制vLinux內(nèi)核中設(shè)置了一組用于實現(xiàn)各種系統(tǒng)功能的子程序,稱為系統(tǒng)調(diào)用v用戶通過系統(tǒng)調(diào)用命令在自己的應(yīng)用程序中調(diào)用它們v系統(tǒng)調(diào)用與普通函數(shù)調(diào)用的區(qū)別v系統(tǒng)調(diào)用 核心態(tài) 操作系統(tǒng)核心提供v普通的函數(shù)調(diào)用 用戶態(tài) 函數(shù)庫或用戶自己提供1.3 Linux系統(tǒng)調(diào)用(2)v系統(tǒng)調(diào)用靠一些宏,一張系統(tǒng)調(diào)用表,一個系統(tǒng)調(diào)用入口來完成系統(tǒng)調(diào)用的函數(shù)名以“sys_”開頭,后跟該系統(tǒng)調(diào)用的名字(如sys_mycall)根據(jù)系統(tǒng)調(diào)用號(_NR_mycall) 可找到對應(yīng)的系統(tǒng)調(diào)用函數(shù)入口地址int 0 x80:跳轉(zhuǎn)到系統(tǒng)調(diào)用的總?cè)肟趕ystem_call,檢
3、查系統(tǒng)調(diào)用號,再查找系統(tǒng)調(diào)用表sys_call_table,調(diào)用內(nèi)核函數(shù),最后返回實驗七 增加新的系統(tǒng)調(diào)用v預(yù)備知識Linux內(nèi)核結(jié)構(gòu)Linux內(nèi)核源碼Linux系統(tǒng)調(diào)用v實驗指導(dǎo)系統(tǒng)調(diào)用的添加Linux內(nèi)核編譯v實驗?zāi)康?、?nèi)容2.1 系統(tǒng)調(diào)用的添加(1)(1)完成系統(tǒng)調(diào)用函數(shù)編寫待添加的系統(tǒng)調(diào)用函數(shù),函數(shù)名以sys_開頭 如:mycall(int num),在/usr/src/linux/kernel/sys.c文件中添加代碼:asmlinkage int sys_mycall(int number) return number; /僅返回一個整型值 (2)在系統(tǒng)函數(shù)表中添加表項 讓內(nèi)核的其
4、余部分知道該系統(tǒng)調(diào)用的存在:如:在/usr/src/linux/arch/x86/kernel/syscall_table_32.S的最后一行增加新的系統(tǒng)調(diào)用內(nèi)核函數(shù)指針 .long sys_mycall2.1 系統(tǒng)調(diào)用的添加(2)(3)添加系統(tǒng)調(diào)用號文件unistd_32.h包含系統(tǒng)調(diào)用清單,給每個系統(tǒng)調(diào)用分配一個唯一的號碼,格式為:#define _NR_name NNN如在/usr/src/linux/include/arch/x86/include/asm/unistd32.h的結(jié)尾分配號碼序列中下一個可用的系統(tǒng)調(diào)用號(不能與其它號碼相同):define _NR_mycall nnn
5、(4)編寫系統(tǒng)調(diào)用的測試代碼應(yīng)用程序app.c中調(diào)用新添加的系統(tǒng)調(diào)用mycall: int syscall(int nnn, );2.2 Linux內(nèi)核編譯(1)(1)下載內(nèi)核到下載新內(nèi)核解壓到/usr/src目錄下(2)清除內(nèi)核及之前編譯的內(nèi)容make clean/清除原有不需要的模塊和文件make mrproper /刪除原來編譯產(chǎn)生的垃圾(3)配置內(nèi)核 make oldconfig / 與當(dāng)前配置相同make config / 基于文本的、最為傳統(tǒng)的配置界面make menuconfig / 基于文本的菜單形式,字符終端下使用make xconfig / 基于
6、圖形窗口模式,Xwindow下使用2.2 Linux內(nèi)核編譯(2)(4)編譯內(nèi)核make 或make zImage /編譯內(nèi)核, make zImage編譯壓縮 /形式的大內(nèi)核make modules / 編譯選擇的模塊make modules_install / 編譯后的模塊移到系統(tǒng)標(biāo)準(zhǔn)位置make install / 把壓縮內(nèi)核映象拷貝到/boot目錄 / 下, 創(chuàng)建System.map符號鏈接 (5)啟動項配置mkinitramfs o /boot/initrd.img- /創(chuàng)建內(nèi)核的initrd映象 在/boot/grub/grub.cfg中設(shè)置啟動項的配置 實驗七 增加新的系統(tǒng)調(diào)用v預(yù)備知識Linux內(nèi)核結(jié)構(gòu)Linux內(nèi)核源碼Linux系統(tǒng)調(diào)用v實驗指導(dǎo)系統(tǒng)調(diào)用的添加Linux內(nèi)核編譯v實驗?zāi)康?、?nèi)容3.1 實驗?zāi)康膙加深對系統(tǒng)調(diào)用的理解,掌握增加與調(diào)用系統(tǒng)調(diào)用的方法v掌握內(nèi)核編譯方法3.2 實驗內(nèi)容v增加新的系統(tǒng)調(diào)用 新增的系統(tǒng)調(diào)用名為get_proc_run_time,其功能是根據(jù)指定的進(jìn)程pid,從該進(jìn)程的進(jìn)程描述符task_struct結(jié)構(gòu)中提取出它的系統(tǒng)時間stime
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程技術(shù)咨詢合同
- 出租車公司轉(zhuǎn)讓合同
- 房地產(chǎn)團(tuán)購協(xié)議合同
- 場化清運(yùn)作業(yè)承包合同書
- 2025年新鄉(xiāng)a2貨運(yùn)從業(yè)資格證考試
- 建房施工安全責(zé)任協(xié)議書
- 醫(yī)藥行業(yè)客戶關(guān)系管理策略
- 食堂供貨商供貨合同協(xié)議書
- 手房改房轉(zhuǎn)讓合同
- 2025年西藏駕??荚嚳拓涍\(yùn)從業(yè)資格證考試題庫
- 行為規(guī)范教育中學(xué)校長在國旗下講話:嚴(yán)格要求自己規(guī)范自己的行為
- 2024年12月廣東廣州市港務(wù)局直屬事業(yè)單位引進(jìn)緊缺專業(yè)人才8人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- DBJ50-T-100-2022 建筑邊坡工程施工質(zhì)量驗收標(biāo)準(zhǔn)
- 2025年寧夏工商職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- DB11-T 1004-2023 房屋建筑使用安全檢查評定技術(shù)規(guī)程
- 《藝術(shù)與傳播》課件
- 烹飪安全知識培訓(xùn)課件
- 2024年廣東職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2025年湖北宜昌枝江金潤源集團(tuán)招聘17人高頻重點提升(共500題)附帶答案詳解
- 2023CSCO兒童及青少年白血病診療指南
- 第一單元 閱讀綜合實踐(同步課件)【知識精研】七年級語文下冊高效課堂(統(tǒng)編版)
評論
0/150
提交評論