- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内核裁剪篇 为什么要裁减内核 自己定制编译的内核运行更快(具有更少的代码) 系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中) 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些 如何升级内核 添加进内核的方式: 将新增加部分编译到内核中(build-in) 把新增加部分编译成模块(module),动态加载。 各自特点: 编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,用户就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在。建议经常使用的部分直接编译到内核中,比如网卡。 如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。 内核的模块式结构 内核模块是Linux内核向外部提供的一个接口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。 模块 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。 模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或内核中其他上层的功能。 模块与内核的关系 模块和内核都在内核空间运行,模块编程在一定意义上就是内核编程。因为内核版本的每次变化使得其中的某些函数名也会相应地发生变化,因此模块编程与内核版本密切相关。本课中所涉及的内核编程基于的Linux内核为2.4.x版本,对于其他版本,可能还需要做一些调整。 应用程序与内核模块的比较 名字空间污染namespace pullution 当存在大量的函数和全局变量,并且它们的名字没有明确的含义以至于难以区别时,就会发生所谓的名字空间污染。 程序员需花费更多的时间和精力去记住这些已经保留的名字并为新符号寻找一个不重复的名字。 名字空间冲突可能照成很多问题,如加载模块失败等古怪问题 解决办法 将所有符号定义为静态变量 对于非全局变量的符号前加上一个内核中唯一的前缀。 用户空间与内核空间 操作系统的作用 为程序提供一个计算机硬件的一致视图。 负责程序的独立操作以及保护资源不受非法访问。 内核运行在最高级(管理员模式 supervisor mode),可以进行所有操作。 应用程序运行在优先级最低即所谓的用户模式(user mode),在这一级中处理器控制着对硬件的直接访问以及对内存的非授权访问。 lsmod 查看已注册的内核 内核模块实例 #define __KERNEL__ #define MODULE #includelinux/module.h #includelinux/kernel.h int init_module(void) { printk(Hellow World!\n”); return 0; ) void cleanup_module(void) { printk(Goodbye,cruel world!\n”); ) module_init(hello_init);module_exit(hello_exit); 模块主要函数及定义 头文件及宏定义 #define __KERNEL__ #define MODULE #includelinux/module.h #includelinux/kernel.h module_init():模块的初始化函数, module_exit():模块的卸载函数, 初始化函数和卸载函数必须成对出现。 模块常用信息:作者、描述、版权等, MODULE_AUTHOR(author);MODULE_DESCRIPTION(the description);MODULE_LICENSE(GPL); 写内核或内核模块不能用写应用程序时的系统调用或函数库. 模块的编译 KDIR = /YF2410/kernel INCLUDEDIR = $(KDIR)/include CFLAGS = -D__KERNEL__ -DMODULE -I$(INCLUDEDIR) CC = arm-linux-gcc OBJS =hello.o $
您可能关注的文档
- 《3.4实际问题与一元一次方程12012必威体育精装版人教版数学课件.ppt
- 《3.商标、品牌的翻译.ppt
- 《3.5文档的排版和打印.ppt
- 《3.手写体数字的写法.ppt
- 《3.2生长素的生理作用.pptx
- 《3.3微程序控制方式.ppt
- 《3.简单程序设计.ppt
- 《3.语言表达得体.ppt
- 《3.羚羊木雕.ppt
- 《3.1人类离不开学习.ppt
- 护理学相关知识复习测试卷共三套.doc
- 护理学相关知识复习试题含答案(3套).doc
- 2025届高考语文复习:补写句子 课件.pptx
- 气压带和风带对气候的影响(第1课时)(教学设计).docx
- 气压带和风带对气候影响教学设计2024-2025学年高中地理人教版(2019)选择性必修1.docx
- 《故都的秋》课件 2024-2025学年统编版高中语文必修上册.pptx
- 《屈原列传》课件 2024-2025学年统编版高中语文选择性必修中册.pptx
- 《巫溪家乡文化》课件-2024-2025学年高一语文同步备课课件(统编版必修上册).pptx
- 《苏武传》课件 2023-2024学年统编版高中语文选择性必修中册.pptx
- 郑州中控ZKTime8.3 WEB考勤软件培训文档.pptx
最近下载
- 第20课 走进大自然(课件)-2024冀美版美术二年级上册.pptx
- 05系列建筑标准设计05N6图集.pptx
- Module 3(复习课件)五年级英语上册(外研版三起).pptx
- 中亚(48张ppt).ppt
- EPS7100工业以太网交换机安装说明书V1.01.pdf VIP
- 《中国工程企业海外合规经营与风险防范》微解.ppt
- 2024年国家开放大学《形势与政策》大作业:中华民族现代文明有哪些鲜明特质?建设中华民族现代文明的路径是什么?[附4份答案]供参考.docx
- 洒水车租赁协议书(标准版).docx VIP
- 3119005234赖宇轩《路由与交换技术》实训课实验报告2022 (2).docx VIP
- 基于决策树的可疑交易账户预警模型.pdf VIP
文档评论(0)