使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

攥写人:于涵  学号:20132119

( *原创作品转载请注明出处*)

( 学习课程:《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 

 

实验要求:

  1. 选择一个系统调用(13号系统调用time除外),系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl

     2.参考视频中的方式使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用,推荐在实验楼Linux虚拟机环境下完成实验。

 

实验过程

首先,选择使用的系统调用:我选择的是49号  geteuid

 

 

第二步,用C语言编程

 

 

第三步,用gcc编译运行。

 

 

第四步,将C的代码改为嵌入式汇编语句。

 

 

第五步,编译并运行。

 

 

 

 

总结:

(*笔记部分*)

 

 

 

(*问题部分*):

简述系统调用的工作机制:

系统调用的三层皮是:

API xyz

中断向量 system_call

中断服务程序 sys_xyz

其中,API和中断向量使用系统调用号连接(存储在eax里),int 0x80进入内核代码入口起点,进入中断服务程序。