杭电操作系统实验一--linux内核编译添加系统调用.docx
题目内容:添加一个系统调用,实现对指定进程的nice值得修改或读取功能,并返回进程最新的nice值及优先级prio。 考察的知识点:在系统中根据需要添加新的系统调用。 问题的关键点:添加的系统调用实现对指定进程的nice值得修改或读取功能。 ### 实验目标与知识点 本实验的目标是在Linux内核中添加一个新的系统调用,用于读取或修改指定进程的nice值,并返回最新的nice值及优先级prio。实验旨在加深学生对Linux系统调用机制的理解,熟悉Linux内核源代码结构,掌握添加新系统调用的步骤。 #### 考察的知识点包括: 1. **Linux系统调用的基本原理**:了解Linux系统调用的定义、作用、编号和调用过程。 2. **系统调用号及其分配**:学习如何为新增的系统调用分配一个唯一的系统调用号。 3. **系统调用服务例程的编写**:掌握如何编写以`sys_`为前缀的服务例程,实现系统调用的具体功能。 4. **系统调用参数的有效性检查**:理解在服务例程中如何验证用户传递的参数是否合法有效,尤其是指针有效性检查。 5. **错误处理机制**:了解如何处理系统调用中的错误情况,特别是如何利用`errno`全局变量存储错误码,并通过`perror()`函数输出错误信息。 6. **内核编译配置**:熟悉如何进行内核的编译配置,包括配置文件的编辑、编译命令的使用等。 7. **进程nice值的概念**:了解进程nice值的作用,以及如何通过系统调用来修改或读取进程的nice值。 8. **进程优先级(prio)的影响**:理解进程nice值与优先级之间的关系,以及它们是如何影响进程调度的。 ### 实验具体内容 实验的核心在于实现一个名为`mysetnice`的系统调用。该系统调用需要接受四个参数: 1. `pid_t pid`:目标进程的ID。 2. `int flag`:控制操作类型,值为0时读取nice值,值为1时修改nice值。 3. `int nicevalue`:要设置的新nice值(仅当`flag`为1时有效)。 4. `void __user *prio` 和 `void __user *nice`:分别指向目标进程的优先级prio和nice值的用户空间地址,用于返回这两个值。 系统调用的服务例程原型为: ```c int sys_mysetnice(pid_t pid, int flag, int nicevalue, void __user *prio, void __user *nice); ``` ### 实验步骤概述 1. **系统调用表的修改**:找到系统调用表并为其分配一个未使用的系统调用号。 2. **服务例程的声明与实现**:在合适的头文件中声明`sys_mysetnice`服务例程,在源文件中实现该服务例程的功能。 3. **参数有效性检查**:确保服务例程能够正确地检查用户传递的参数是否合法,尤其是检查用户空间指针的有效性。 4. **错误处理**:当参数检查失败或其他错误发生时,设置适当的`errno`值并返回相应的错误码。 5. **nice值的获取与设置**:根据`flag`值的不同,读取或设置目标进程的nice值。 6. **优先级prio的计算**:根据修改后的nice值计算新的优先级prio。 7. **结果返回**:将最新的优先级prio和nice值通过用户空间指针返回给用户程序。 8. **内核编译与测试**:编译内核并将新添加的系统调用集成进去,然后编写用户程序进行测试。 ### 遇到的问题及解决方案 在实验过程中可能会遇到一些常见问题,例如权限不足、依赖项缺失、内核编译错误等,具体的解决方案如下: 1. **权限不足问题**:可以通过`su`或`sudo -s`命令切换到root用户模式下操作。 2. **依赖项安装问题**:对于无法解析域名等问题,可以通过执行`apt-get update`命令更新软件包索引。 3. **dpkg锁冲突问题**:如果遇到无法锁定管理目录的情况,可以通过`ps -e | grep apt`找出占用锁的进程,并使用`sudo kill <PID>`命令结束这些进程。 4. **内核编译配置问题**:如果内核编译时出现警告或错误,需要仔细检查配置文件中的符号值,确保配置符合要求。 通过以上步骤,可以成功地实现和测试新添加的`mysetnice`系统调用。





剩余27页未读,继续阅读



















- 粉丝: 22
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 采购电子商务平台(网上超市部分)操作手册.doc
- 工程进料台帐(QR7.4.1-05).docx
- 一号机深层搅拌桩原始记录表.doc
- 悬挑钢管脚手架在筒库顶板施工中的应用.doc
- 探讨信息技术与中职计算机专业课程整合.docx
- 基于正交试验设计下的卷积神经网络在图像识别上的研究与应用.docx
- 华科土木地基处理技术Chapter-5.ppt
- 毕业设计开题分析方案4-钢筋混凝土多层、多跨框架软件开发.doc
- C语言程序设计实习分析方案---学生信息管理系统.doc
- 企业组织结构设计与部门职能划分.doc
- 9001体系记录范本-表格-教年度教育培训计划表.doc
- 浅谈建筑装饰工程的投标报价和文件编制.doc
- 商务酒店暖通施工方案(精品工程项目).doc
- 单片机的智能充电器设计大学课程.doc
- EPC交钥匙项目合同.ppt
- 电缆沟砖砌体沟壁施工工艺及施工要点.doc



评论0