分析kernel运行的过程(mark)

       1.smp_setup_processor_id():多CPU架构的初始化,空函数 

       2.lockdep_init():lockdep哈希表初始化,lockdep是linux内核的一个调试模块,用来检查内核互斥机制尤其是自旋锁潜在的死锁问题

       3.  debug_objects_early_init():空函数

       4.  boot_init_stack_canary():初始化栈canary值,canary值用于防止栈溢出攻击的堆栈的保护字

       5.  cgoup_init_early():空函数

       6.  local_irq_disable():关闭系统总中断

       7.  early_boot_irqs_off():空函数

       8.  tick_init():初始化内核时钟系统,空函数

       9.  boot_cpu_init():激活当前cpu

       10. page_address_init():空函数

       11. printk(KERN_NOTICE '%s",linux_banner):打印内核版本信息,(串口打印第1行)

       12.setup_arch(&command_line):内核架构相关初始化函数

       13.mm_init_owner(&init_mm,&init_task):初始化init_mm结构体,空函数

       14.setup_command_line(command_line):对cmdline进行备份和保存

       15.setup_nr_cpu_ids():空函数

       16.setup_per_cpu_areas():设置SMP体系每个CPU使用的内存空间,同时拷贝初始化段里数据

       17.smp_prepare_boot_cpu():空函数

       18.build_all_zonelists(NULL):初始化所有内存管理节点列表,以便后面进行内存管理初始化

       19.page_alloc_init():设置内存分页分配通知器

       20.prink(KERN_NOTICE "Kernel command line:%s\n",boot_command_line):输出命令参数到显示终端

       21.parse_early_param():分析命令行最早使用的参数

       22.parse_args(....):对传入内核参数进行解释,如果不能识别的命令就调用最后参数的函数

       23.pidhash_init():进程hash表的初始化,linux里有四种类型的PID,因此有四种HASH表相对应##http://www.cnblogs.com/xuxm2007/archive/2011/04/15/2016735.html(thx)

       24.vfs_caches_init_early():虚拟文件系统的早期初始化,包括dentry和inode的hash表初始化工作

       25.sort_main_extable():对内核异常表进行排序

       26.trap_init():对异常进行初始化

       27.mm_init():内存分配器初始化

       28.sched_init():初始化调度器数据结构并创建运行队列

       29.preempt_disable():禁用抢占和中断,早期启动时期,调度是极其脆弱的

       30.rcu_init():初始化直接读拷贝更新的锁机制,RCU主要提供在读取数据机会比较多,但更新比较少的场合,这样减少读取数据锁性能低下的问题

       31.radix_tree_init():初始化radix树算法初始化

       32.early_irq_init():早期外部中断描述初始化

       33.init_IRQ():架构相关中断初始化

       34.prio_tree_init():基于radix树的优先级搜索树(PST)初始化

       35.init_timers():初始化引导CPU的时钟相关的数据结构

       36.hrtimers_init():初始化高精度的定时器

       37.softirq_init():初始化软件软件中断

       38.timekeeping_init():初始化系统时钟计时

       39.time_init():初始化系统时钟

       40.profile_init():分配内核性能统计

       41.early_boot_irqs_on():设置内核还在早期初始化阶段的标志,以便用来调试时输出信息,空函数

       42.local_irq_enable():打开此CPU的中断,即允许此CPU处理中断事件

       43.kmem_cache_init_late():slab分配器后期初始化

       44.console_init():初始化控制台

       45.lockdep_info():打印锁的依赖信息,用来调试锁

       46.locking_selftest():测试锁的API是否正常使用,空函数

       47.page_cgroup_init():容器组的页面内存分配,空函数

       48.enable_debug_pagealloc():使能够页分配的调试

       49.kmemleak_init():内存泄漏检测机制的初始化,空函数

       50.debug_objects_mem_init():创建调试对象内存缓存,空函数

       51.idr_init_cache():创建IDR机制的内存缓存对象

       52.setup_per_cpu_pageset():创建每个CPU的高速缓存集合数组

       53.numa_policy_init():初始化NUMA的内存访问策略

       54.sched_clock_init():初始化调度时钟

       55.calibrate_delay():计算CPU需要校准的时间

       56.pidmap_init():PID分配映射初始化

       57.anon_vma_init():匿名虚拟内存域初始化

       58.thread_info_cache_init():线程信息的缓存初始化

       59.cred_init():任务信用系统初始化

       60.fork_init(totalram_pages):进程创建机制初始化

       61.proc_caches_init():进程缓存初始化

       62.buffer_init():文件系统的缓存区初始化

       63.key_init():内核密钥管理系统初始化

       64.security_init():内核安全框架初始化

       65.dbg_late_init():内核调试系统后期初始化

       66.vfs_caches_init():虚拟文件系统缓存初始化

       67.signals_init():信号管理系统初始化

       68.page_writeback_init():页回写机制初始化

       69.proc_root_init():proc文件系统初始化

       70.cgroup_init():进程控制组的初始化

       71.cpuset_init():CPUSET初始化

       72.taskstats_init_early():任务状态早期初始化

       73.delayacct_init():任务延迟机制初始化

       74.check_bugs():检查CPU配置等是否非法使用不具备的功能

       75.acpi_early_init():初始化ACPI电源管理

       76.sfi_init_late():simple fireware interface 初始化

       77.ftrace_init():初始化内核跟踪模块

       78.rest_init():后继初始化

一堆的初始化函数,涵盖了CPU初始化,内存管理初始化,进程管理,文件系统,中断,同步互斥,时钟,调试等等方面,伤脑筋啊

 

 

 

posted on 2013-01-09 14:12  冈萨雷斯  阅读(787)  评论(0编辑  收藏  举报