littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于C语言Linux内核的自定义系统调用

项目简介

本项目是基于C语言和Linux内核的自定义系统调用集合,对Linux内核的标准系统调用进行扩展,实现了如execve2getdentsgetcwdsleep等功能,提供更灵活强大的系统调用能力。

项目的主要特性和功能

  1. 扩展系统调用
    • execve2:返回后不再发生页故障。
    • getdents:遍历目录项并写入linux_dirent结构体指针。
    • getcwd:获取当前工作路径。
    • sleep:使当前进程按秒睡眠。
  2. 内存管理:支持获取空闲页面、释放页面、复制页面表等操作,用于进程创建及内存相关操作。
  3. 文件系统操作:可进行读取目录条目、执行新程序、获取当前工作目录等文件系统相关操作。
  4. 系统调用实现:在my_sys_call目录下实现了sys_getcwdsys_sleep等多个系统调用的底层处理。
  5. 构建工具:可将启动扇区、设置文件、系统文件等合并成可启动的Linux内核镜像文件。

安装使用步骤

  1. 准备环境:确保已安装C编译器和Linux内核开发环境。
  2. 获取源代码:用户已下载本项目的源码文件。
  3. 编译:使用以下命令编译项目: bash tar -xzvf os-lab1-syscall.tar.gz 或者直接解压.zip文件 cd os-lab1-syscall make
  4. 测试:在Linux系统下测试编译生成的可执行文件或加载内核模块。
  5. 使用系统调用:在应用程序中调用execve2getdentsgetcwdsleep等自定义系统调用进行功能验证。

注意:此项目仅为示例,可能需要根据实际环境进行适当修改和适配。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】