Lìnux的操作系统和程序的设计1.pptVIP

  1. 1、本文档共71页,可阅读全部内容。
  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文档。上传文档
查看更多
Lìnux的操作系统和程序的设计1

/drivers目录 存放所有设备驱动程序源代码 /net子目录 存放网络子系统,如各种网卡和网络规程驱动程序 /security目录 存放安全子系统代码 /sound目录 存放语音子系统代码 * Linux核心源码的组织(续) Linux内核环境 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. /init目录 存放内核引导和初始化代码 许多重要文件,如main.c、version.c就位于该目录下 /lib目录 存放内核需要的通用工具性内核函数(如对出错信息的处理),它能够在引导时解压内核并装入主存 /scripts目录 存放编译内核所用脚本和用于系统配置的命令文件 /documentation目录 存放内核源代码文档 * Linux核心源码的组织(续) Linux内核环境 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 采用模块化的内核配置系统 内核模块(Loadable Kernel Module)的概念 模块实际上是一种目标对象文件,没有链接,不能独立运行 但是其代码可以在系统运行时链接到系统中作为内核的一部分运行,或从内核中取下,从而可以动态扩充内核的功能(不需要重新编译内核) 这种目标代码通常由一组函数和数据结构组成 * Linux内核的配置组成 Linux内核环境 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 使得内核更加紧凑和灵活,可扩展 修改模块时,不必全部重新编译整个内核 系统如果需要使用新模块,只要编译相应的模块,然后将模块插入即可 模块可以不依赖于某个固定的硬件平台 模块的目标代码一旦被链接到内核,它的作用域和静态链接的内核目标代码完全等价 * 内核模块的优点 Linux内核环境 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 并不是所有地方都使用内核模块 设备驱动程序 文件系统驱动程序 系统调用 大部分系统调用属于基础内核(Basic kernel),也可以以内核模块方式增加新的系统调用或者覆盖现有基于内核模块方式实现的系统调用 * 内核模块的使用 Linux内核环境 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 程序代码:helloworld.c 编译、安装方法 root# gcc -c helloworld.c root# insmod helloworld.o root# lsmod root# rmmod helloworld * 模块示例 #define MODULE #include linux/module.h int init_module(void) { printk(“1Hello World!\n”); return 0; }? void cleanup_module(void) { printk(“1 Goodbye!\n”); } Linux内核环境 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. * 内核模块与应用程序的差别 C语言程序 模块 运行 用户空间 内核空间 入口 main() init_module() 出口 无 cleanup_module() 编译 gcc -c gcc -c -D_KERNEL_-DMODULE 连接 gcc insmod 运行 直接运行 insmod 调试 gdb kdbug, kdb

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档