Linux内核实验指导书

上传人:我*** 文档编号:133098805 上传时间:2020-05-24 格式:PDF 页数:33 大小:536.90KB
返回 下载 相关 举报
Linux内核实验指导书_第1页
第1页 / 共33页
Linux内核实验指导书_第2页
第2页 / 共33页
Linux内核实验指导书_第3页
第3页 / 共33页
Linux内核实验指导书_第4页
第4页 / 共33页
Linux内核实验指导书_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《Linux内核实验指导书》由会员分享,可在线阅读,更多相关《Linux内核实验指导书(33页珍藏版)》请在金锄头文库上搜索。

1、 LinuxLinuxLinuxLinux内核设计与实现 内核设计与实现 课程实验指导书课程实验指导书 西安理工大学西安理工大学 LinuxLinuxLinuxLinux 小组小组 谢井明谢井明 编编 2010201020102010 年年 3 3 3 3 月月 西安理工大学 计算机科学与工程学院 i 目录 1 前言 1 1 1 一些话 1 1 2 说明 1 1 3 关于文档修正与程序 bug 1 2 Linux 下 Shell 脚本编程实验 2 2 1 预习要求 2 2 2 实验目的 2 2 3 实验任务 2 2 4 实验原理及方法 2 2 5 注意事项 3 3 Makefile 文件的编写

2、 4 3 1 预习要求 4 3 2 实验目的 4 3 3 实验任务 4 3 4 实验原理及方法 4 3 5 注意事项 6 4 Linux 内核模块编程实验 必做 7 4 1 预习要求 7 4 2 实验目的 7 4 3 实验任务 7 4 4 实验原理及方法 7 4 5 注意事项 9 5 增加系统调用实验 10 5 1 预习要求 10 5 2 实验目的 10 5 3 实验任务 10 5 4 实验原理及方法 10 5 5 总结思考 14 6 获取进程管理与调度信息实验 15 6 1 预习要求 15 6 2 实验目的 15 6 3 实验任务 15 6 4 实验原理及方法 15 6 5 注意事项 15

3、7 工作队列实验 17 7 1 预习要求 17 7 2 实验目的 17 7 3 实验任务 17 7 4 实验原理及方法 17 8 定时器实验 20 8 1 预习要求 20 8 2 实验目的 20 ii 8 3 实验任务 20 8 4 实验原理及方法 20 9 Linux 驱动程序实验 21 9 1 预习要求 21 9 2 实验目的 21 9 3 实验任务 21 9 4 实验原理及方法 21 10 模拟 Linux 内存管理实验 24 10 1 预习要求 24 10 2 实验目的 24 10 3 实验任务 24 10 4 实验原理及方法 24 10 5 注意事项 28 11 进程同步实验 29

4、11 1 预习要求 29 11 2 实验目的 29 11 3 实验任务 29 11 4 实验原理及方法 29 Linux 设计与实现 课程实验指定书 xaut linux group 谢井明 xjmbufan 1 1 1 1 1 前言前言前言前言 1 11 11 11 1一些话一些话一些话一些话 对于大多数人来说 几乎还没接触过Linux 及 Linux下的用户层编程 就开始学习 Linux 内核设计与实现 这门课程 这是一个巨大的挑战 即便是有一定基础的人 学习 Linux 内 核也是个莫大的考验 这里并不是吓唬初学者 而是希望能够使大家有个心里准备 学习 Linux 内核之旅充满艰难万险

5、但当你披荆斩棘一路走来 拨开云雾之时 无限感慨 风景 这边独好 看不懂书中阐述的原理吗 搞不明其机制是如何实现的吗 没有捷径 唯有反复的学 习 消化 以致脑中出现其清晰的逻辑 不知如何进行内核编程吗 也没有捷径 只有实践 大胆的实践 从简单helloworld 开 始 一步一步逐渐深入 实践多了 当你遇到问题时 自然会把内核编程考虑进你自己的解 决方案中来 而不仅仅局限于用户层的解决方案 对于没接触过 Linux 的同学 建议自己装个 Linux 系统来玩玩 熟悉其基本操作 目录 组织以及掌握基本的 Linux 下的开发工具等 对于接触 Linux 有一段时间的同学 希望能够 多指导指导新手

6、同时自己也可以温习温习 温故而知新嘛 共同进步 1 21 21 21 2说明说明说明说明 本人受黑新宏教授的指导与委托 特编写此实验指导书 予后来者 本指导书包含了作者学习 Linux 内核时的大部分入门实验程序 旨在指导帮助大家对内 核编程有个入门 每个实验都提供了简单的实验程序及其原理说明 同学们也可以自由发挥 编写相关实验程序 下面对实验按内核层代码与用户层代码进行分类 1 只包含内核层代码的实验 实验 4 实验 7 实验 8 2 只包含用户层代码的实验 实验 2 实验 3 实验 10 实验 11 3 同时包含内核层代码与用户层代码的实验 实验 5 实验 6 实验 9 请注意内核层代码的

7、编译与用户层代码的编译有点小异 本指导书中的所有程序都在 CentOS 5 3 这个 Linux 版本系统中编译通过 进行内核 编程需要相应内核开发包 可自行安装 一般安装在 usr src kernels 下 其他像 lib modules 下会有对其的符号链接 实验可能要用到的工具 Vim 用于编辑源代码 gcc 用于编译连接 gdb 用于调试 调试用户空间程序 make 用于自动编译 SourceInsight 用于浏览内核源代码 1 31 31 31 3关于文档修正与程序关于文档修正与程序关于文档修正与程序关于文档修正与程序 bugbugbugbug 由于作者水平的有限 接触 Linu

8、x 内核的时间不长 对 Linux 内核的理解难免有偏差 编写的程序瑕疵或许不少 所以欢迎广大读者来函指正 邮箱 xjmbufan Linux 设计与实现 课程实验指定书 xaut linux group 谢井明 xjmbufan 2 2 2 2 2 LinuxLinuxLinuxLinux 下下下下 S S S Shellhellhellhell 脚本编程实验脚本编程实验脚本编程实验脚本编程实验 2 12 12 12 1预习要求预习要求预习要求预习要求 1 开始本实验之前 请学习相关 shell 脚本编程知识 2 了解 Linux 环境变量 2 22 22 22 2实验目的实验目的实验目的实

9、验目的 1 通过实验 进一步熟悉 shell 脚本编程 2 掌握基本 shell 命令及其环境变量 2 32 32 32 3实验任务实验任务实验任务实验任务 1 编写 shell 脚本程序获取环境变量并输出 2 编写包含控制语句的 shell 脚本程序 2 42 42 42 4实验原理及方法实验原理及方法实验原理及方法实验原理及方法 1 简单的 shell 脚本程序类似批处理程序 只执行一些命令 以下为 greet 脚本 程序 显示当前登陆用户名及域名 并显示当前时间 greet 程序清单 2 Shell 脚本可以有条件 循环等控制语句 以设计较复杂逻辑功能的脚本程序 下面的check 程序是

10、一个判断指定的用户名是否在系统的passwd 文件中的shell 脚本 它首先判断用户是否指定了一个要查找的用户名参数 然后循环在 etc passwd 文件中查找 最后提示是否找到 check 程序清单 Linux 设计与实现 课程实验指定书 xaut linux group 谢井明 xjmbufan 3 3 Shell 脚本程序还能和用户进行交互 下面的 five 程序实现实现对用户输入的百 分制的分数进行五分制 即非常优秀 优秀 优良 中等 不及格 fivefivefivefive 脚本清单 脚本清单 2 52 52 52 5注意事项注意事项注意事项注意事项 1 if 关键字与 之间必须

11、要有空格隔开 2 1 为脚本第一个参数变量 0 是脚本名本身 参数个数 后面的 参数以此类推 2 3 如在终端执行该脚本 check xaut 则 为 2 0 为 check 1 为 xaut 3 执行脚本程序时有两种方法 一是直接调用shell 如 bin bash来执行 bin bash five 二是修改其属性为可执行的 chmod x five 然后直接运行 five 脚本 Linux 设计与实现 课程实验指定书 xaut linux group 谢井明 xjmbufan 4 3 3 3 3 MakefileMakefileMakefileMakefile 文件的编写文件的编写文件的编

12、写文件的编写 3 13 13 13 1预习要求预习要求预习要求预习要求 1 学习使用 gcc 编译 2 做本实验前 请阅读 make 手册 3 23 23 23 2实验目的实验目的实验目的实验目的 1 熟悉掌握 gcc 编译器的使用 2 掌握 make 的工作原理及 Makefile 文件的编写 3 33 33 33 3实验任务实验任务实验任务实验任务 1 为自己的工程编写 Makefile 文件 2 学有余力的同学可尝试给自己写一个基本通用的 Makefile 文件 3 43 43 43 4实验原理及方法实验原理及方法实验原理及方法实验原理及方法 若写一个简单的只有一个源文件的小程序 只需一

13、条命令即可编译出可执行文件 然而 编写一定功能的软件 其源程序也写在一个文件里的话 编写 阅读以及维护等工作都会难 以进行 所以一般把工程的源文件按功能分成几个 几十个甚至几百个文件 要把工程中的源文件一个一个地编译成目标文件 然后将它们连接成可执行程序 这需 要相应敲的一个一个编译连接命令 当然 IDE 除外 而且要重新编译的话还得重敲 这 显然很繁琐 一种解决办法是将每个源文件的编译命令写入一个脚本里 这种方法虽然能达 到减轻开发者的负担 但是要多次编译工程时的编译效率较低 因为即使仅仅修改了一两个 源文件或头文件 重新编译工程时都得编译所有源文件 无论其有没修改 这是自动化编译 工具 m

14、ake 就应运而生了 make 工具能够根据目标与依赖文件的新旧来执行相应的命令 如编译连接命令 若 至少有一个依赖比目标新 那么这条依赖关系相应的命令就会得到执行 否则不执行 而所 有这些都是 Makefile 文件来描述的 Makefile 文件的基本结构是 宏定义 变量定义 目标 依赖文件列表 命令 命令要缩进一个 tab 目标 依赖文件列表 命令 以下是一个较通用的 Makefile 文件 无需修改或只需修改一点点就能编译我们平时的 大部分工程 当然 首先要学会写 否则你何以修改之 注意其中查找源文件列表使 用了 find src files sh 脚本 这是自己写的 内容如下 Lin

15、ux 设计与实现 课程实验指定书 xaut linux group 谢井明 xjmbufan 5 较通用的较通用的 MakefileMakefileMakefileMakefile 文件清单 文件清单 Linux 设计与实现 课程实验指定书 xaut linux group 谢井明 xjmbufan 6 3 53 53 53 5注意事项注意事项注意事项注意事项 1 注意 find src files 脚本必须放在 PATH 环境变量指定的目录下 如 bin下 否则提示找不到 2 虽然是以上 Makefile 文件具有一定的通用性 但只适用 C 程序 稍加修改即 可 有时也要具体问题具体分析 像

16、内核模块程序的 Makefile 文件就不能 再套用它 它只是展示了较通用的 Makefile 文件的写法 你完全可以自己也 写一个属于自己的 Linux 设计与实现 课程实验指定书 xaut linux group 谢井明 xjmbufan 7 4 4 4 4 LinuxLinuxLinuxLinux 内核模块编程实验 必做 内核模块编程实验 必做 内核模块编程实验 必做 内核模块编程实验 必做 4 14 14 14 1预习要求预习要求预习要求预习要求 1 做本实验之前 请复习相关内核模块知识 2 请了解内核模块的编写 编译及安装与卸载方法 3 请学习内核打印函数 printk 的用法 4 请复习 Makefile 文件的编写 4 24 24 24 2实验目的实验目的实验目的实验目的 1 掌握内核模块的组成部分 2 掌握内核模块的编译 安装与卸载方法 3 学会查看内核模块的信息 4 34 34 34 3实验任务实验任务实验任务实验任务 编写一个 helloworld 内核模块 安装该模块时打印 hello 信息 卸载时打印 goodbye 信 息 4 44 44 44 4实验原理及方

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号