zoukankan      html  css  js  c++  java
  • deferred initcalls与模块化

    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

  • 相关阅读:
    TreeView控件
    俄罗斯套娃
    c#文件操作
    c# 操作excle
    vs2010启动越来越慢解决方法
    c# 操作excle[转]
    c# 命名空间别名
    C# openfiledialog的使用
    c# 获取项目根目录方法
    jquery操作复选框(checkbox)的12个小技巧总结
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3331251.html
Copyright © 2011-2022 走看看