linux系统调用

linux系统调用

ID:33298710

大小:1.22 MB

页数:30页

时间:2019-02-23

linux系统调用_第1页
linux系统调用_第2页
linux系统调用_第3页
linux系统调用_第4页
linux系统调用_第5页
资源描述:

《linux系统调用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、www.linuxidc.comChapter5:系统调用¢为什么需要系统调用¢相关数据和代码¢例:系统调用getuid()的实现¢添加一个系统调用mysyscall¢再实现一个稍复杂的系统调用边干边学——Linux内核指导Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。www.linuxidc.comLinux公社www.Linuxidc.com¢Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,L

2、inux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。¢LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。边干边学——Linux内核指导Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。www.linuxidc.com为什么需要系统调用(1)边干边学——Linux内核指导Linux公社(LinuxID

3、C.com)是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。www.linuxidc.com为什么需要系统调用(2)边干边学——Linux内核指导Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。www.linuxidc.com相关数据和代码¢arch/i386/kernel/traps.c¢arch/i386/kernel/entry.S系统调用时的内核栈sys_call_tablesystem

4、_call和ret_from_sys_call¢include/linux/unistd.h系统调用编号宏定义展开系统调用glibc展开系统调用INLINE_SYSCALL(getuid,0);边干边学——Linux内核指导Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。www.linuxidc.com系统调用时的内核栈内核栈用户栈向内中断向外返回用户空间ss函数返回地址用户空间espeipEFLAGS局部变量用户空间cs中断前及

5、iret(系统调用返回)后用户空间eip可用空间的esp系统调用号用户ss中断后(SAVE_ALL前)及iret前(RESTORE_ALL后)的可用空间esp陷入内核时,系统自动从当前进程的TSS(任task_struct务状态段)中获得内核栈的SS和ESP,并完成栈切换内核ss边干边学——Linux内核指导Linux公社(LinuxIDC.com)是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。www.linuxidc.com系统调用时的内核栈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.边干边学——Linux内核指导Linux公社(LinuxIDC.com)是

8、包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。www.linuxidc.com系统调用时的内核栈#defineSAVE_ALLcld;pushl%es;pushl%ds;pushl%eax;pushl%ebp;pushl%edi;pushl%esi;pushl%edx;pushl%ecx;pushl%ebx;movl$(__KERNEL_DS),%edx;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。