项目简介
本项目是基于C语言和Linux内核的自定义系统调用集合,对Linux内核的标准系统调用进行扩展,实现了如execve2
、getdents
、getcwd
、sleep
等功能,提供更灵活强大的系统调用能力。
项目的主要特性和功能
- 扩展系统调用:
execve2
:返回后不再发生页故障。getdents
:遍历目录项并写入linux_dirent
结构体指针。getcwd
:获取当前工作路径。sleep
:使当前进程按秒睡眠。
- 内存管理:支持获取空闲页面、释放页面、复制页面表等操作,用于进程创建及内存相关操作。
- 文件系统操作:可进行读取目录条目、执行新程序、获取当前工作目录等文件系统相关操作。
- 系统调用实现:在
my_sys_call
目录下实现了sys_getcwd
、sys_sleep
等多个系统调用的底层处理。 - 构建工具:可将启动扇区、设置文件、系统文件等合并成可启动的Linux内核镜像文件。
安装使用步骤
- 准备环境:确保已安装C编译器和Linux内核开发环境。
- 获取源代码:用户已下载本项目的源码文件。
- 编译:使用以下命令编译项目:
bash tar -xzvf os-lab1-syscall.tar.gz 或者直接解压.zip文件 cd os-lab1-syscall make
- 测试:在Linux系统下测试编译生成的可执行文件或加载内核模块。
- 使用系统调用:在应用程序中调用
execve2
、getdents
、getcwd
、sleep
等自定义系统调用进行功能验证。
注意:此项目仅为示例,可能需要根据实际环境进行适当修改和适配。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】