文档详情

专题2讲义:内核模块.ppt

发布:2017-11-16约4.75千字共35页下载文档
文本预览下载声明
* * * * * * * * * 内核模块的参数 声明一个数组参数: module_param_array(name,type,num,perm); name 数组的名子(也是参数名) type 数组元素的类型 num 是数组元素的个数,模块加载者拒绝比数组能放下的多的值。2.6.9传递数组个数变量名,2.6.11传递数组个数变量的地址。 perm 是通常的权限值. 如果数组参数在加载时设置。 * 内核模块的参数 参数数组的定义: static int test[5] = {1,2,3,4,5}; static int num =5; module_param(num,int,0); module_param_array(test,int,num,0); MODULE_PARM_DESC(test, test array); 参数数组的加载方式: insmod test.ko test=6,7,8,9,10 num=5 * 3. 实验要求 * 题目要求 题目一 编写一个内核模块; 编译该模块; 加载、卸载该模块; 题目二 用内核模块的方式为系统添加一个系统调用 具体要求同专题一 评分标准 至少完成题目一(60-80分) 自主完成题目二(90-100分) * * * * * * * * * * * * * * * * * * * * * * * * * * * * 软件学院 操作系统课程设计 专题二:内核模块 主讲:张志钦 * Abstract Linux内核模块 1 2 实验要求 内核模块举例 3 * 1. Linux内核模块 * 单体内核?VS?微内核(概念) 单体内核(Micro kernel) 整个核心程序都是以核心空间(Kernel Space)的身份及监管者模式(Supervisor Mode)来运行; 操作系统的代码高度紧密,所有的模块都在同一块寻址空间内运行 微内核(Micro kernel) 微内核本身只提供最基本的操作系统的功能,比如进程调度与消息传递等 其他的功能由其独立的模块提供,每个独立的功能模块都可以是一个进程。 当我们需要使用某个功能的时候,我们只需要在运行的操作系统里安装这个模块,并且运行对应服务,当这个功能不再需要的时候,我们可以停止这个服务,这样这个功能模块将不占据系统内存和处理器的资源,而不会破坏当前的系统正常运 * 效率问题 驱动程序问题 内核升级问题 微内核设计方式带来的优势 模块化的方式设计操作系统,模块的设计者只需要关注自己的功能模块。 操作系统的更新时,除了微内核本身,可以动态的更新其他的功能模块 在系统运行的时候,可以根据需要动态的使能/禁止对应的模块,以释放计算机的资源。 单体内核?VS?微内核(优缺点) * 单体内核?VS?微内核(实例) 单体内核 传统的UNIX 大行其道的Linux 商业化非常成功的Solaris 微内核 Windows Mac OS WindRiver VxWorks Linux系统如何解决单体内核的缺陷 * Linux的内核模块(概念) Linux内核引入内核模块机制 LKM --Loadable Kernel Module 通过动态加载内核模块,使得在运行过程中扩展内核的功能 不需要的时候,卸载该内核模块 * Linux的内核模块(概念) 内核模块是一种没有经过链接,不能独立运行的目标文件,是在内核空间中运行的程序。经过链接装载到内核里面成为内核的一部分,可以访问内核的公用符号(函数和变量)。 内核模块可以让操作系统内核在需要时载入和执 行,在不需要时由操作系统卸载。它们扩展了操作系统内核的功能却不需要重新启动系统。 如果没有内核模块,我们不得不一次又一次重新编译生成单内核操作系统的内核镜像来加入新的功能。这还意味着一个臃肿的内核。 * Linux的内核模块(图) * Linux的内核模块(图) * * Linux的内核模块(优缺点) 模块机制的优点: 减小内核映像尺寸,增加系统灵活性; 节省开发时间;修改内核,不必重新编译整个内核。 模块的目标代码一旦被链入内核,作用和静态链接的内核目标代码完全等价。 模块机制的缺点: 对系统性能有一定损失; 使用不当时会导致系统崩溃; * Linux的内核模块(相关命令) 内核模块的加载 #insmod module_name 内核模块的卸载 当我们不需要内核模块了,为了减少系统资源的开销,需要卸载时使用命令 #rmmod module_name 或者 #modprobe –r module_name 查看系统已经加载的模块 #lsmod 查看系统已经加载的模块信息 #modi
显示全部
相似文档