模块的动态加载和系统配置.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模块的动态加载和系统配置

第9章 模块的动态加载和系统配置 第9章 模块的动态加载和系统配置 本章介绍了Linux内核动态加载功能模块的工作原理。分析了 Linux 内核中的系统配置结构,解释了 Makefile 和配置文件的格式以及配置语句的含义。最后给出一个简单的例子,说明如何将自行开发的代码加入到 Linux 内核中。 9.1 模块的动态加载 操作系统通常由内核和一些系统服务程序(命令解释、库文件、链接和编译程序等)组成。内核是操作系统的灵魂,它为用户进程提供了一个虚拟机接口。用户进程可以并行运行、公平的占用系统资源而互不干扰。 9.1 模块的动态加载 操作系统通常由内核和一些系统服务程序(命令解释、库文件、链接和编译程序等)组成。内核是操作系统的灵魂,它为用户进程提供了一个虚拟机接口。用户进程可以并行运行、公平的占用系统资源而互不干扰。 从结构上来分,可将操作系统分为微内核结构和单块结构两类。Windows NT 和 MINIX 是典型的微内核操作系统,而Linux 则是单块结构的操作系统。微内核结构可方便地在系统中添加新的组件,而单块结构却不容易做到这一点。为此,Linux系统使用可动态加载和卸载的内核模块(Loadable Kernel Modules,LKMs),可方便地在内核中添加新的组件或卸载不再需要的内核组件。Linux使用insmod来显式加载内核模块,使用rmmod来卸载模块。同时内核自身也可以请求内核后台进程kerneld来加载与卸载模块。Linux模块大多数是设备驱动程序以及伪设备驱动程序模块, 如网络设备和文件系统等。 但是,内核模块的引入也带来了如下问题: 但是,内核模块的引入也带来了如下问题: 但是,内核模块的引入也带来了如下问题: 但是,内核模块的引入也带来了如下问题: 但是,内核模块的引入也带来了如下问题: 9.1.1模块的加载 9.1.1模块的加载 有两种方法可用来加载模块: (1) 利用 insmod 命令手工将模块插入内核; 9.1.1模块的加载 有两种方法可用来加载模块: (1) 利用 insmod 命令手工将模块插入内核; (2) 由内核在必要时加载模块,称为“需求加载”。 9.1.2 模块的卸载 和模块的加载类似,可利用 rmmod 命令手工卸载模块,当对需求加载的模块则由 kerneld 在不再需要时自动卸载。每次 kerneld 的空闲定时器到期时,它会利用系统调用将当前不再使用的需求加载模块从内核中移走。启动 kerneld 时指定该定时器的时间,通常的时间为 180 秒。 9.1.3 内核模块的管理 9.1.3 内核模块的管理 9.2 Linux 内核配置系统 9.2.1 配置系统的基本结构 9.2.1 配置系统的基本结构 9.2.2 Makefile Makefile 的作用是根据配置的情况,构造出需要编译的源文件列表,然后分别编译,并把目标代码链接到一起,最终形成Linux 内核二进制文件。 3. Makefile子目录 3. Makefile子目录 9.2.3 配置文件 9.2.3 配置文件 除了 Makefile 的编写,另外一个重要的工作就是把新功能加入到 Linux 的配置选项中,提供此项功能的说明,让用户有机会选择此项功能。所有的这些都需要在 config.in 文件中用配置语言来编写配置脚本 9.2.4 配置实例 9.2.4 配置实例 对于一个开发者来说,将自己开发的内核代码加入到 Linux 内核中,需要有三个步骤。首先确定把自己开发代码放入到内核的位置;其次,把自己开发的功能增加到 Linux 内核的配置选项中,使用户能够选择此功能;最后,构建子目录 Makefile,根据用户的选择,将相应的代码编译到最终生成的 Linux 内核中去。下面通过一个简单的例子--test driver,说明如何向 Linux 内核中增加新的功能。 练习与思考 练习与思考 1.为什么要强调操作系统的易用性、可靠性、安全性、高效性? 2.什么是系统开销?列举时间开销和空间开销的实例。 3.为什么要讨论操作系统的可移植性?你认为在什么情况下要移植一个操作系统?什么情况下要新开发一个操作系统? 4.若要使操作系统的移植更容易些,当初设计操作系统时应注意些什么? 5.操作系统的可维护性对生产操作系统的厂家有什么意义?对操作系统的用户又有什么意义?请举例说明。 练习与思考 6.当你要在现有操作系统上增加一台外围设备时,若这台外设的驱动程序要你自己开发,你将如何处理这个实际问题。试以Linux系统或Windows 95或Wind

文档评论(0)

guoxiachuanyue + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档