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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
专题2讲义:内核模块

* * * * * * * * * 内核模块的参数 声明一个数组参数: 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

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档