deferred initcalls与模块化

有两个技术可以加快kernel的启动速度:
1、deferred initcalls
2、模块化
它们的思想类似,都是将非必要的模块初始化推迟到内核启动之后。
但实现方法有所差别。

deferred initcalls需要修改内核模块代码,将:
module_init(foo_init)
修改为:
deferred_module_init(foo_init)
主要初始化执行完成之后,执行:
cat /proc/deferred_initcalls
会将所有的deferred init模块全部初始化。

模块化是将内核模块从built-in修改为模块。
方法是menuconfig中,对应的模块选择为m。
对应的模块会生成一个.ko文件,将会被包含在os中。
内核启动之后,可以通过命令:
insmod
挂载对应模块。

deferred initcall:
优点:
1、使用方便,模块仍然是built-in。
2、内核模块修改不需要重新生成os。
3、有些模块不能,或不易被模块化,可以用deferred init实现初始化延迟。
缺点:
1、需要修改内核代码。
2、deferred init模块的加载顺序不容易控制。

模块化:
优点:
1、不用修改内核代码。
2、因为是单个模块主动加载,模块加载顺序容易控制,可以根据需要加载相应的模块。例如,某个程序启动之前去加载其所需要的模块。
缺点:
1、内核模块的修改,需要导致os的变动。需要重新生成os,或者手动替换对应目录下的ko文件。
2、涉及到的修改较多,还要考虑模块依赖。
3、如果使用了版本控制工具,会产生多次提及,内核、os等。

参考:
1. http://elinux.org/Deferred_Initcalls

转载于:https://www.cnblogs.com/suncoolcat/p/3331251.html

deferred initcalls与模块化相关推荐

  1. 全志 Linux 系统启动优化 启动优化速度方式 优化启动流程 优化uboot 优化kernel等

    文章目录 1 概述 2 启动速度优化简介 2.1 启动流程 2.2 测量方法 2.2.1 printk time 2.2.2 initcall_debug 2.2.3 bootgraph. 2.2.4 ...

  2. Linux Bootup Time

    Linux Bootup Time 英文原文地址:http://elinux.org/Boot_Time 1.   简介 启动时间这一话题包括很多子话题,比如启动时间的衡量.启动时间的分析.人为因素分 ...

  3. linux模块化机制,Linux模块化机制和module_init

    > 引子:模块化机制优点 模块化机制(module)是Linux系统的一大创新,是Linux驱动开发和运行的基础(当然,module并不仅仅是支撑驱动).其优点在于: 1.在系统运行动态加载模块 ...

  4. 模块化Java简介(转载infoq)

    在过去几年,Java模块化一直是一个活跃的话题.从JSR 277(现已废止)到JSR 291,模块化看起来是Java进化过程中的必经一环.即便是基于JVM的未来语言,比如Scala,也考虑了模块化的问 ...

  5. android 提供服务,GitHub - FamliarMan/AndroidServiceProvider: 为模块化提供的一个服务发现库...

    AndroidServiceProvider是为了解决模块化过程中各模块服务统一获取的难题而产生的,具体情况请参照这篇文章 Android模块化中的服务发现机制 注意混淆 这里特别强调,所有注册的类都 ...

  6. C:模块化程序设计 以及数组

    模块化: 举例: 继续细化上述模块,猜完一个数字之后,继续再猜: 再细化计算机生成数字: 数据类型前边都加入了一个const,把他声明为整形常量的原因,当你这个参数被声明为const的时候就可以起到保 ...

  7. Unity Pro builder创建模块化仓库建筑学习教程

    Unity内部的专业3D编辑工作室 你会学到: 直接在Unity内部学习3D建模 使用专业构建器的专业方法 为您的游戏创建模块化资产 了解如何为您的三维模型设置纹理 三维资产的模块化布局 专业后期制作 ...

  8. Blender 和Unreal Engine中的模块化3D建筑技能学习视频教程

    Blender 和Unreal Engine中的模块化3D建筑技能学习视频教程 流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕( ...

  9. Blender模块化建筑环境地形场景制作视频教程 Creating modular environments

    Blender模块化建筑环境地形场景制作视频教程 Creating modular environments Blender模块化建筑环境地形场景制作视频教程 Creating modular env ...

  10. jQuery的deferred对象详解

    阮一峰大神的关于jQuery的deferred对象详解 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_ ...

最新文章

  1. [原创]KVM虚拟化管理平台的实现
  2. 【天线】天线基础:名词解释
  3. hdu 5256 LIS变形
  4. [转载]从12306谈起验证码的架构
  5. python+appium+PyCharm==自动化测试APP环境
  6. android python opencv_使用Python和OpenCV自动化Android游戏
  7. 2021 第三封拒信 来自牛津大学自主智能机器和系统 Autonomous Intelligent Machines and Systems
  8. 百度 Serverless 函数计算引擎 EasyFaaS 正式开源
  9. oracle 5种索引方式,MySQL使用索引的几种方式
  10. 日历记事本java代码_急需日历记事本JAVA源代码
  11. 初探nginx架构(100%)
  12. WebApi系列(从.Net FrameWork 到 .Net Core)
  13. Javascript ES6 Promise同步读取文件(使用async、await)
  14. 【渝粤教育】国家开放大学2018年春季 0605-22T中国古代文学(2) 参考试题
  15. 单片机c语言轻松入门 完整版,单片机C语言轻松入门
  16. python不用模块随机列表_python不用库实现随机 如何用python实现随机抽取
  17. Unity与UE4引擎源码内使用到的第三方库的比较
  18. 历届试题 合根植物 C语言,植物营养历年真题(整理).doc
  19. 正确理解差异的“专业意义”与“统计学意义”
  20. 程序员如何提升自身价值

热门文章

  1. 区块链 预言机 Oracle是什么 例子
  2. 基于Java的中华文化传播系统(含数据库文档)
  3. 生成检测报告在哪_惠检LIMS系统在材料检测行业的应用
  4. 计算机睡眠断网,win7睡眠不断网设置方法汇总
  5. excel 日期格式 mysql_EXCEL和MySQL日期格式之间的转换
  6. 四川省计算机考试模拟试题,2020年自考计算机基础应用模拟试题
  7. 面试必选要掌握的知识(持续更新)
  8. linux文件权限中 chmod、u+x、u、r、w、x分别代表什么
  9. PHP7.1 狐教程
  10. 正则匹配新闻内容案例,JS和PHP