2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?建立對(duì)系統(tǒng)調(diào)用接口的深入認(rèn)識(shí)?掌握系統(tǒng)調(diào)用的基本過程?能完成系統(tǒng)調(diào)用的全面控制?為后續(xù)實(shí)驗(yàn)做準(zhǔn)備實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容此次實(shí)驗(yàn)的基本內(nèi)容是:在Linux0.11上添加兩個(gè)系統(tǒng)調(diào)用,并編寫兩個(gè)簡(jiǎn)單的應(yīng)用程序測(cè)試它們。iam()第一個(gè)系統(tǒng)調(diào)用是iam(),其原型為:intiam(constname)完成的功能是將字符串參數(shù)name的內(nèi)容拷貝到內(nèi)核中保存下來。要求name的長(zhǎng)度不能超過23個(gè)字符。返回值是拷貝的字符數(shù)。如果name

2、的字符個(gè)數(shù)超過了23,則返回“1”,并置errno為EINVAL。在kernalwho.c中實(shí)現(xiàn)此系統(tǒng)調(diào)用。whoami()第二個(gè)系統(tǒng)調(diào)用是whoami(),其原型為:intwhoami(nameunsignedintsize)它將內(nèi)核中由iam()保存的名字拷貝到name指向的用戶地址空間中,同時(shí)確保不會(huì)對(duì)name越界訪存(name的大小由size說明)。返回值是拷貝的字符數(shù)。如果size小于需要的空間,則返回“1”,并置errno為

3、EINVAL。也是在kernalwho.c中實(shí)現(xiàn)。測(cè)試程序測(cè)試程序運(yùn)行添加過新系統(tǒng)調(diào)用的Linux0.11,在其環(huán)境下編寫兩個(gè)測(cè)試程序iam.c和whoami.c。最終的運(yùn)行結(jié)果是:在通常情況下,調(diào)用系統(tǒng)調(diào)用和調(diào)用一個(gè)普通的自定義函數(shù)在代碼上并沒有什么區(qū)別,但調(diào)用后發(fā)生的事情有很大不同。調(diào)用自定義函數(shù)是通過call指令直接跳轉(zhuǎn)到該函數(shù)的地址,繼續(xù)運(yùn)行。而調(diào)用系統(tǒng)調(diào)用,是調(diào)用系統(tǒng)庫中為該系統(tǒng)調(diào)用編寫的一個(gè)接口函數(shù),叫API(Applica

4、tionProgrammingInterface)。API并不能完成系統(tǒng)調(diào)用的真正功能,它要做的是去調(diào)用真正的系統(tǒng)調(diào)用,過程是:?把系統(tǒng)調(diào)用的編號(hào)存入EAX?把函數(shù)參數(shù)存入其它通用寄存器?觸發(fā)0x80號(hào)中斷(int0x80)0.11的lib目錄下有一些已經(jīng)實(shí)現(xiàn)的API。Linus編寫它們的原因是在內(nèi)核加載完畢后,會(huì)切換到用戶模式下,做一些初始化工作,然后啟動(dòng)shell。而用戶模式下的很多工作需要依賴一些系統(tǒng)調(diào)用才能完成,因此在內(nèi)核中實(shí)現(xiàn)

5、了這些系統(tǒng)調(diào)用的API。我們不妨看看libclose.c,研究一下close()的API:#define__LIBRARY__#include_syscall1(intcloseintfd)其中_syscall1是一個(gè)宏,在includeunistd.h中定義。將_syscall1(intcloseintfd)進(jìn)行宏展開,可以得到:intclose(intfd)long__res__asm__volatile(“int$0x80“:“=

6、a“(__res):“0“(__NR_close)“b“((long)(fd)))if(__res=0)return(int)__reserrno=__resreturn1這就是API的定義。它先將宏__NR_close存入EAX,將參數(shù)fd存入EBX,然后進(jìn)行0x80中斷調(diào)用。調(diào)用返回后,從EAX取出返回值,存入__res,再通過對(duì)__res的判斷決定傳給API的調(diào)用者什么樣的返回值。其中__NR_close就是系統(tǒng)調(diào)用的編號(hào),在in

溫馨提示

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

評(píng)論

0/150

提交評(píng)論