攥写人:于涵 学号:20132119
( *原创作品转载请注明出处*)
( 学习课程:《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
实验要求:
选择一个系统调用(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进入内核代码入口起点,进入中断服务程序。
使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
原文:http://www.cnblogs.com/yuhan20132119/p/5299172.html