`

Android培训班(112)start_kernel函数9

 
阅读更多

page_cgroup_init();

这个函数是容器组的页面内存分配。


mem_init();

这个函数是标记那些内存可以使用,并且告诉系统有多少内存可以使用,当然是除了内核使用的内存以外。

enable_debug_pagealloc();

这个函数是设置内存分配是否需要输出调试信息,如果调用这个函数,当分配内存时,不会输出一些相关的信息。


cpu_hotplug_init();

这个函数是初始化CPU热插拔的功能,所谓CPU热插拔的功能,就是对多个CPU进行动态启用和关闭的功能。比如有4CPU,当低功耗时可以只开启一个CPU,如果高性能时,就可以把4CPU同时开启,可以在性能与功耗上达到一个动态的调节。

kmem_cache_init();

这个函数是初始化内核内存的缓存,当初始化完成之后,就可以使用通用内存缓存了。


debug_objects_mem_init();

这个函数是创建调试对象内存缓存,所以紧跟内存缓存初始化后面。


idr_init_cache();

这个函数是创建IDR机制的内存缓存对象。所谓的IDR就是整数标识管理机制(integerIDmanagement)。引入的主要原因是管理整数的ID与对象的指针的关系,由于这个ID可以达到32位,也就是说,如果使用线性数组来管理,那么分配的内存太大了;如果使用线性表来管理,又效率太低了,所以就引用IDR管理机制来实现这个需求。


setup_per_cpu_pageset();

这个函数是创建每个CPU的高速缓存集合数组。因为每个CPU都不定时需要使用一些页面内存和释放页面内存,为了提高效率,就预先创建一些内存页面作为每个CPU的页面集合。


//QQ:9073204 EMAIL:9073204@qq.com

//蔡军生  2012-8-19

//培训文档100元一份


分享到:
评论

相关推荐

    Linux内核函数Start_kernel()的功能

    Linux内核函数Start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置。这些动作有的是公共的,有的则是需要配置的才会执行的。本文介绍了在start_kernel()函数中的一些功能。

    分析linux start_kernel函数

    Daniel Jslin教授分析linux kernel 中的start_kernel详细过程。by the way.可以关注我在csdn上关于linux kernel的课程https://edu.csdn.net/course/detail/9089

    linux 内存管理 start_kernel

    值得注意的是,start_kernel函数的实现会随着Linux内核版本的更新而发生变化,因此不同版本的Linux内核,其start_kernel函数在细节上可能存在差异。 总结来说,start_kernel函数是Linux内核启动过程中最为关键的...

    arm linux 从入口到start_kernel 代码分析

    Arm Linux 内核的启动过程是一个复杂的过程,从POWER ON 到进入 start_kernel 函数,涉及到多个阶段和多个组件的交互。在本文中,我们将从 Arm Linux 内核的入口开始,逐步分析到进入 start_kernel 函数的过程。 一...

    linux内核从start_kernel到init.pdf

    Linux 内核启动过程是一个复杂的过程,从 start_kernel 函数到 init 函数,这其中涉及到许多重要的知识点。下面我们将逐步解释这些知识点。 首先,我们从 start_kernel 函数开始,这个函数是 Linux 内核的主函数,...

    arm linux 从入口到start_kernel 代码分析发(4)

    在ARM Linux系统启动的过程中,从入口到`start_kernel`阶段,有一个至关重要的步骤就是创建页表,这使得CPU能够正确地映射物理内存到虚拟内存,从而访问和管理内存资源。本文将深入分析ARM架构下的页表创建过程,...

    linux kernel 从入口到start_kernel 的代码分析.rar

    很好的linux启动代码分析 LINUX , start_kernel , 启动代码 linux kernel 从入口到start_kernel 的代码分析.rar 104.59 KB, 下载次数: 31 , 下载积分: 资产 -2 信元, 下载支出 2 信元

    arm linux 从入口到start_kernel 代码详细分析.doc

    在 ARM Linux 系统启动过程中,从内核入口到`start_kernel`的流程涉及到多个关键...`start_kernel`是Linux内核的主要初始化函数,它负责调度器、设备驱动、文件系统等核心组件的初始化,标志着内核启动过程的正式开始。

    start_kernel()代码分析

    `start_kernel()`函数作为Linux内核启动过程中至关重要的一部分,承担着初始化整个内核环境的关键任务。它不仅涉及到与硬件平台相关的初始化工作,还包括了诸如中断向量表初始化、根文件系统挂载、页表建立以及进程...

    arm linux 从入口到start_kernel 代码分析 (7)

    最后,通过一个无条件跳转指令`b start_kernel`,程序控制权传递给`start_kernel`函数,标志着内核初始化的正式开始。 `start_kernel`是Linux内核的主入口点,它负责调用一系列的初始化函数来设置系统环境,如内存...

    arm linux 从入口到start_kernel 代码分析 (3)

    一旦 `__lookup_machine_type` 完成机器类型的查找,后续的 `start_kernel` 函数将启动更高级别的系统初始化,包括内核模块的加载、初始化子系统、调度器的启动等。 总结起来,`arm linux` 从入口到 `start_kernel`...

    start_kernel.xmind

    start_kernel流程图 linux2.6 内核支持两种格式的 initrd,一种是 image-initrd,其核心文件就是 /linuxrc。另外一种是cpio-initrd,使用 cpio 工具生成,其核心文件不再是 /linuxrc,而是 /init。尽管 linux2.6...

    android系统函数大全.rar_android_android系统_安卓函数大全_安卓系统函数_系统函数

    在Android系统中,函数是构建应用程序的基本元素,它们执行特定任务并构成了代码的主体。这份“android系统函数大全”文档,很可能是为了帮助开发者更好地理解和使用Android SDK中的各种API和函数。下面,我们将深入...

    arm linux 从入口到start_kernel 代码分析 (6)

    《ARM Linux 从入口到start_kernel的代码分析(六):开启MMU详解》 在Linux内核启动过程中,开启MMU(Memory Management Unit)是一个至关重要的步骤,它负责将虚拟地址转换为物理地址,从而实现内存管理和保护。...

    vibrator_vibration_Kernel_android源码_

    这篇讨论主要围绕Android内核中的vibration驱动程序,以及如何通过kernel层实现与Android Hal层的交互,来控制设备的震动功能。我们将深入探讨vibrator.c源代码的相关知识点。 1. **Android内核振动器驱动概述** ...

Global site tag (gtag.js) - Google Analytics