【重庆大学 Linux 实验报告】 本实验主要涵盖了两个核心知识点:Linux 内核编译以及使用 `fork()` 和 `clone()` 创建进程。我们详细探讨内核编译的步骤和原因。 **一、Linux 内核编译** 1. **为什么要重新编译内核?** Linux 内核持续更新以修复错误、增加新特性、提升性能和稳定性。用户可能需要自定义内核以适应特定硬件需求或利用新功能。 2. **编译内核的步骤** - 获取内核源码:通常通过下载最新的 Linux 内核源码包。 - 查看当前内核版本:使用 `uname -a` 命令。 - 获取 root 权限:使用 `sudo su`。 - 解压源代码:如 `xz -d <filename>.tar.xz` 后 `tar xvf <filename>.tar`。 - 清理旧配置:`make mrproper`(首次编译可略过)。 - 安装 ncurses:ncurses 是用于图形配置界面的库。 - 配置内核选项:`make menuconfig`,选择所需内核组件。 - 编译内核:`make`,可能需要较长时间。 - 编译和安装模块:`make modules_install`。 - 安装内核:`make install`。 - 更新启动配置:如 `mkinitramfs` 和 `update-initramfs`。 **二、创建进程:`fork()` 与 `clone()`** 1. **`fork()`** - `fork()` 是 Linux 中创建新进程的标准方法,它创建一个与父进程几乎完全一样的副本(子进程)。 - 父进程和子进程都会从 `fork()` 返回,父进程得到子进程的 PID,子进程得到 0。 - 可以通过返回值判断哪个是父进程,哪个是子进程,然后进行不同的操作。 2. **`clone()`** - `clone()` 函数提供了比 `fork()` 更细粒度的控制,可以指定哪些资源需要与父进程共享。 - `clone()` 可以实现线程的创建,因为它允许指定不复制某些进程上下文,如堆栈。 - 使用 `clone()` 时,需要指定标志参数,以决定哪些部分要复制,哪些部分要共享。 实验要求学生通过 `fork()` 和 `clone()` 创建进程,并显示子进程和父进程的 PID、进程名和状态。这有助于理解进程创建机制和它们之间的关系。 **总结** 本实验旨在让学生深入理解 Linux 内核的工作原理,掌握内核编译的全过程,以及如何利用系统调用创建和管理进程。通过实际操作,学生能够熟悉 Linux 系统的底层运作,增强解决问题的能力,为今后的系统编程和系统级开发打下坚实基础。同时,内核编译和进程管理也是 Linux 系统管理员必备的技能,对提升系统性能和优化资源分配至关重要。
剩余23页未读,继续阅读
- 粉丝: 4
- 资源: 24
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- YOLOv5系列多主干(TPH-YOLOv5、Ghostnet、ShuffleNetv2、Mobilenetv3Small、EfficientNetLite、PP-LCNet、SwinTran.zip
- STM32小实验:使用双轴摇杆控制舵机云台
- Yolov5+SlowFast基于PytorchVideo的实时动作检测.zip
- YOLOv5 的 TensorFlow.js 示例.zip
- YOLOv5 的 PyTorch 实现.zip
- yolov5 的 LibTorch 推理实现.zip
- 基于Python旅游数据可视化分析.zip
- YOLOv5 的 FastAPI 包装器.zip
- YOLOv5 对象跟踪 + 检测 + 对象模糊 + 使用 OpenCV、PyTorch 和 Streamlit 的 Streamlit 仪表板.zip
- YOLOv5 对象检测 Android 示例.zip