linux系統(tǒng)調(diào)用

linux系統(tǒng)調(diào)用

ID:33298710

大小:1.22 MB

頁數(shù):30頁

時(shí)間:2019-02-23

linux系統(tǒng)調(diào)用_第1頁
linux系統(tǒng)調(diào)用_第2頁
linux系統(tǒng)調(diào)用_第3頁
linux系統(tǒng)調(diào)用_第4頁
linux系統(tǒng)調(diào)用_第5頁
資源描述:

《linux系統(tǒng)調(diào)用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、www.linuxidc.comChapter5:系統(tǒng)調(diào)用¢為什么需要系統(tǒng)調(diào)用¢相關(guān)數(shù)據(jù)和代碼¢例:系統(tǒng)調(diào)用getuid()的實(shí)現(xiàn)¢添加一個(gè)系統(tǒng)調(diào)用mysyscall¢再實(shí)現(xiàn)一個(gè)稍復(fù)雜的系統(tǒng)調(diào)用邊干邊學(xué)——Linux內(nèi)核指導(dǎo)Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技術(shù),最新IT資訊等Linux專業(yè)類網(wǎng)站。www.linuxidc.comLinux公社www.Linuxidc.com¢L(zhǎng)inux公社(LinuxIDC.com)于2006年9月25日注冊(cè)并開通網(wǎng)站,L

2、inux現(xiàn)在已經(jīng)成為一種廣受關(guān)注和支持的一種操作系統(tǒng),IDC是互聯(lián)網(wǎng)數(shù)據(jù)中心,LinuxIDC就是關(guān)于Linux的數(shù)據(jù)中心?!長(zhǎng)inuxIDC.com提供包括Ubuntu,F(xiàn)edora,SUSE技術(shù),以及最新IT資訊等Linux專業(yè)類網(wǎng)站。邊干邊學(xué)——Linux內(nèi)核指導(dǎo)Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技術(shù),最新IT資訊等Linux專業(yè)類網(wǎng)站。www.linuxidc.com為什么需要系統(tǒng)調(diào)用(1)邊干邊學(xué)——Linux內(nèi)核指導(dǎo)Linux公社(LinuxID

3、C.com)是包括Ubuntu,Fedora,SUSE技術(shù),最新IT資訊等Linux專業(yè)類網(wǎng)站。www.linuxidc.com為什么需要系統(tǒng)調(diào)用(2)邊干邊學(xué)——Linux內(nèi)核指導(dǎo)Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技術(shù),最新IT資訊等Linux專業(yè)類網(wǎng)站。www.linuxidc.com相關(guān)數(shù)據(jù)和代碼¢arch/i386/kernel/traps.c¢arch/i386/kernel/entry.S系統(tǒng)調(diào)用時(shí)的內(nèi)核棧sys_call_tablesystem

4、_call和ret_from_sys_call¢include/linux/unistd.h系統(tǒng)調(diào)用編號(hào)宏定義展開系統(tǒng)調(diào)用glibc展開系統(tǒng)調(diào)用INLINE_SYSCALL(getuid,0);邊干邊學(xué)——Linux內(nèi)核指導(dǎo)Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技術(shù),最新IT資訊等Linux專業(yè)類網(wǎng)站。www.linuxidc.com系統(tǒng)調(diào)用時(shí)的內(nèi)核棧內(nèi)核棧用戶棧向內(nèi)中斷向外返回用戶空間ss函數(shù)返回地址用戶空間espeipEFLAGS局部變量用戶空間cs中斷前及

5、iret(系統(tǒng)調(diào)用返回)后用戶空間eip可用空間的esp系統(tǒng)調(diào)用號(hào)用戶ss中斷后(SAVE_ALL前)及iret前(RESTORE_ALL后)的可用空間esp陷入內(nèi)核時(shí),系統(tǒng)自動(dòng)從當(dāng)前進(jìn)程的TSS(任task_struct務(wù)狀態(tài)段)中獲得內(nèi)核棧的SS和ESP,并完成棧切換內(nèi)核ss邊干邊學(xué)——Linux內(nèi)核指導(dǎo)Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技術(shù),最新IT資訊等Linux專業(yè)類網(wǎng)站。www.linuxidc.com系統(tǒng)調(diào)用時(shí)的內(nèi)核棧18*Stacklayou

6、tin'ret_from_system_call':19*ptraceneedstohaveallregsonthestack.20*iftheorderhereischanged,itneedstobe21*updatedinfork.c:copy_process,signal.c:do_signal,22*ptrace.candptrace.h23*24*0(%esp)-%ebx25*4(%esp)-%ecx26*8(%esp)-%edx27*C(%esp)-%esi28*10(%esp)-%edi29

7、*14(%esp)-%ebp30*18(%esp)-%eax31*1C(%esp)-%ds32*20(%esp)-%es33*24(%esp)-orig_eax34*28(%esp)-%eip35*2C(%esp)-%cs36*30(%esp)-%eflags37*34(%esp)-%oldesp38*38(%esp)-%oldss39*40*"current"isinregister%ebxduringanyslowentries.邊干邊學(xué)——Linux內(nèi)核指導(dǎo)Linux公社(LinuxIDC.com)是

8、包括Ubuntu,Fedora,SUSE技術(shù),最新IT資訊等Linux專業(yè)類網(wǎng)站。www.linuxidc.com系統(tǒng)調(diào)用時(shí)的內(nèi)核棧#defineSAVE_ALLcld;pushl%es;pushl%ds;pushl%eax;pushl%ebp;pushl%edi;pushl%esi;pushl%edx;pushl%ecx;pushl%ebx;movl$(__KERNEL_DS),%edx;

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。