2021-2022-1 20212802《Linux内核原理与分析》第五周作业

本文详细介绍了Linux系统调用的实验,包括API和嵌入汇编的实现方式,分析了系统调用的过程,以及遇到的问题与解决方法。实验中通过sys_rename系统调用实现了文件重命名,探讨了如何在glibc未封装新系统调用时直接调用内核函数。
摘要由CSDN通过智能技术生成

一、系统调用实验:

1.实验的相关知识准备:

(1)系统调用的三层皮:xyz()(API)、system_call(所有系统调用的入口) 、 sys_xyz()(中断服务程序)

(2)API是程序员在用户空间下可以直接使用的函数接口,它提供了一套封装例程,将系统调用在用户空间包装后供用户编程使用。涉及到与内核空间进行交互的API会封装系统调用,而不涉及与内核进行交互的API不会封装系统调用。

(3)系统调用是用户进入内核的接口,并非内核函数。用户程序通过某个系统调用进入内核后,会接着去执行这个系统调用对应的内核函数。这个内核函数 sys_xyz() 称为系统调用的服务例程。

(4)系统调用号将 xyz() 与 sys_xyz() 关联起,系统调用号由 eax 寄存器传递。

2.系统调用的两种实现方法:

    本实验我选择的是系统调用号为 38 的 sys_rename(),功能实现设计为将hello.c 文件重新命名 newhello.c

(1)库函数API实现:

  运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值