歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> 介紹Linux內核函數Start_kernel()的功能

介紹Linux內核函數Start_kernel()的功能

日期:2017/3/2 10:38:49   编辑:Linux內核

Start_kernel()中調用了一系列初始化函數,以完成kernel本身的設置。這些動作有的是公共的,有的則是需要配置的才會執行的。

  在start_kernel()函數中,

  輸出Linux版本信息(printk(linux_banner))

  設置與體系結構相關的環境(setup_arch())

  頁表結構初始化(paging_init())

  使用"arch/alpha/kernel/entry.S"中的入口點設置系統自陷入口(trap_init())

  使用alpha_mv結構和entry.S入口初始化系統IRQ(init_IRQ())

  核心進程調度器初始化(包括初始化幾個缺省的Bottom-half,sched_init())

  時間、定時器初始化(包括讀取CMOS時鐘、估測主頻、初始化定時器中斷等,time_init())

  提取並分析核心啟動參數(從環境變量中讀取參數,設置相應標志位等待處理,(parse_options())

  控制台初始化(為輸出信息而先於PCI初始化,console_init())

  剖析器數據結構初始化(prof_buffer和prof_len變量)

  核心Cache初始化(描述Cache信息的Cache,kmem_cache_init())

  延遲校准(獲得時鐘jiffies與CPU主頻ticks的延遲,calibrate_delay())

  內存初始化(設置內存上下界和頁表項初始值,mem_init())

  創建和設置內部及通用cache("slab_cache",kmem_cache_sizes_init())

  創建uid taskcount SLAB cache("uid_cache",uidcache_init())

  創建文件cache("files_cache",filescache_init())

  創建目錄cache("dentry_cache",dcache_init())

  創建與虛存相關的cache("vm_area_struct","mm_struct",vma_init())

  塊設備讀寫緩沖區初始化(同時創建"buffer_head"cache用戶加速訪問,buffer_init())

  創建頁cache(內存頁hash表初始化,page_cache_init())

  創建信號隊列cache("signal_queue",signals_init())

  初始化內存inode表(inode_init())

  創建內存文件描述符表("filp_cache",file_table_init())

  檢查體系結構漏洞(對於alpha,此函數為空,check_bugs())

  SMP機器其余CPU(除當前引導CPU)初始化(對於沒有配置SMP的內核,此函數為空,smp_init())

  啟動init過程(創建第一個核心線程,調用init()函數,原執行序列調用cpu_idle() 等待調度,init())

  至此start_kernel()結束,基本的核心環境已經建立起來了。

Copyright © Linux教程網 All Rights Reserved