网站大量收购独家精品文档,联系QQ:2885784924

操作系统第4次上机.pdfVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux 内核模块和系统调用 1.实验目的: a. 了解Linux 内核模块和系统调用的相关知识 b.通过实验了解内核模块和系统调用实验的机制 2.Linux 内核模块 2.1.微 内核VS 单 内核 微内核:在微内核中,大部分内核都作为单独的进程在特权状态下运行,他 们通过消息传递进行通讯。在典型情况下,每个概念模块都有一个进程。因此, 假如在设计中有一个系统调用模块,那么就必然有一个相应的进程来接收系统调 用,并和能够执行系统调用的其他进程(或模块)通讯以完成所需任务。在这些 设计中,微内核部分经常只是个消息转发站:当系统调用模块要给文档系统模块 发送消息时,消息直接通过内核转发。这种方式有助于实现模块间的隔离。 优点 : a. 无需的模块不会被加载到内存中,因此微内核就能够更有效的利用内存。 b. 充分的模块化,可独立更换任意模块而不会影响其他模块,从而方便 于 第三方开发、设计模块 c. 具有很高的可移植性,理论上讲只需要单独对微内核各部分进行移植修 改即可。由于微内核的体积通常很小,而且互不影响,因此工作量很小。 缺点 :效率问题 单内核 :单内核是个很大的进程。它的内部又能够被分为若干模块(或是层 次或其他)。但是在运行的时候,他是个单独的二进制大映像。其模块间的通讯 是通过直接调用其他模块中的函数实现的,而不是消息传递。 优点:单内核模型以提高系统执行效率为设计理念,因为整个系统是一个 统一的内核,所以其内部调用效率很高。 缺点:通常各模块之间的界限并不特别清晰,模块间的调用比较随意,所 以进行系统修改或升级时,往往 “牵一发而动全身” ,导致工作量加大,使其难 于维护。 微内核与单内核之争由来已久 ,1992 年两位上古巨牛 Tanenbaum 与 Linus 就 因此事展开了一场论述 ;/question 2.2 Linux 如何对待这个问题 Linux 是一个单内核,也就是说,Linux 内核运行在单独的内核地址空间。不 过,Linux 汲取了微内核的精华:其引以为傲的是模块化设计、抢占式内核、支 持内核线程以及动态装载内核模块的能力。不仅如此,Linux 还避免微内核设计 上性能损失的缺陷,让所有事情都运行在内核态,直接调用函数,无需消息传递。 至今,Linux 是模块化的、多线程的以及内核本身可调度的操作系统。 2.3 LKM (Loadable Kernel Module) 内核模块是一种没有经过连接,不能独立运行的目标文件,在内核空间运 行的程序。经过链接装载到内核里面成为内核的一部分,可以访问内核的公用符 号;LKM 可以在运行时加载内核模块功能,在不需要时可以卸载相关内核模块 节约系统资源; 优点:模块本身不编译进内核,从而控制了内核的大小;模块一旦被加载, 将和其它的部分完全一样。 缺点:可能会有内核与模块版本不兼容的问题,导致内核崩溃; 2.4 Linux 的内核模块相关命令 在内核模块开发的过程中常用的有以下指令。 1) insmod: 将模块插入内核中,使用方法:#insmod XXX.ko 2) rmmod: 将模块从内核中删除,使用方法:#rmmod XXX.ko 3) lsmod: 列表显示所有的内核模块,可以和 grep 指令结合使用。使用方 法:#lsmod | grep XXX 4) modprobe: modprobe 可载入指定的个别模块,或是载入一组相依赖的 模块。modprobe 会根据 depmod 所产生的依赖关系,决定要载入哪些模块。若在 载入过程中发生错误,在 modprobe 会卸载整组的模块。依赖关系是通过读取 /lib/modules/2.6.xx/modules.dep 得到的。而该文件是通过 depmod 所建立。 5) modinfo: 查看模块信息。使用方法:#modinfo XXX.ko 6) tree –a: 查看当前目录的整个树结构。使用方法:#tree -a 2.5 内核模块程序结构 #include linux/init.h //for moudle_in

文档评论(0)

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

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

1亿VIP精品文档

相关文档