系统调用的三层机制(上)

Posted 20189224sxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统调用的三层机制(上)相关的知识,希望对你有一定的参考价值。

2018-2019-120189224 《庖丁解牛Iinux内核分析》第四周学习总结

系统调用

技术分享图片

含参数的系统调用实验

1.使用库函数API触发rename系统调用

#include<stdio.c>
int main()
{
int ret;
char *oldname="hello.c";
char *newname="newhello.c";
ret = rename(oldname,newname);
if(ret == 0)
printf("Renamed successfully
");
else
printf("Unable to rename the file");
return 0;
}

2.写嵌入式汇编代码触发rename系统调用,把系统调用号38(0x26)存入EAX寄存器,oldname存入EBX,newname存入ECX,执行int来使系统陷入内核态
技术分享图片
3.查看文件列表
技术分享图片
4.编译执行后hello.c成功改成newhello.c
技术分享图片
5.rename_asm.c文件中的“a”换为“m”
技术分享图片

技术分享图片

代码调试中的问题和解决过程

  • 问题:rename_asm.c编译报错
  • 解决方案:采用32位的编译方式








以上是关于系统调用的三层机制(上)的主要内容,如果未能解决你的问题,请参考以下文章

第四周 扒开系统调用的三层皮(上)

linux内核分析——扒开系统调用的三层皮(下)

Java后端开发:SpringBoot项目中的三层架构与代码角色

扒开系统调用的三层皮

第五周 扒开系统调用的三层皮(下)

如何编写带有ORM的三层架构,最好给个例子看看。