在start_kernel()函數(shù)中,
輸出Linux版本信息(printk(linux_banner))
設(shè)置與體系結(jié)構(gòu)相關(guān)的環(huán)境(setup_arch())
頁表結(jié)構(gòu)初始化(paging_init())
使用"arch/alpha/kernel/entry.S"中的入口點(diǎn)設(shè)置系統(tǒng)自陷入口(trap_init())
使用alpha_mv結(jié)構(gòu)和entry.S入口初始化系統(tǒng)IRQ(init_IRQ())
核心進(jìn)程調(diào)度器初始化(包括初始化幾個(gè)缺省的Bottom-half,sched_init())
時(shí)間、定時(shí)器初始化(包括讀取CMOS時(shí)鐘、估測主頻、初始化定時(shí)器中斷等,time_init())
提取并分析核心啟動參數(shù)(從環(huán)境變量中讀取參數(shù),設(shè)置相應(yīng)標(biāo)志位等待處理,(parse_options())
控制臺初始化(為輸出信息而先于PCI初始化,console_init())
剖析器數(shù)據(jù)結(jié)構(gòu)初始化(prof_buffer和prof_len變量)
核心Cache初始化(描述Cache信息的Cache,kmem_cache_init())
延遲校準(zhǔn)(獲得時(shí)鐘jiffies與CPU主頻ticks的延遲,calibrate_delay())
內(nèi)存初始化(設(shè)置內(nèi)存上下界和頁表項(xiàng)初始值,mem_init())
創(chuàng)建和設(shè)置內(nèi)部及通用cache("slab_cache",kmem_cache_sizes_init())
創(chuàng)建uid taskcount SLAB cache("uid_cache",uidcache_init())
創(chuàng)建文件cache("files_cache",filescache_init())
創(chuàng)建目錄cache("dentry_cache",dcache_init())
創(chuàng)建與虛存相關(guān)的cache("vm_area_struct","mm_struct",vma_init())
塊設(shè)備讀寫緩沖區(qū)初始化(同時(shí)創(chuàng)建"buffer_head"cache用戶加速訪問,buffer_init())
創(chuàng)建頁cache(內(nèi)存頁hash表初始化,page_cache_init())
創(chuàng)建信號隊(duì)列cache("signal_queue",signals_init())
初始化內(nèi)存inode表(inode_init())
創(chuàng)建內(nèi)存文件描述符表("filp_cache",file_table_init())
檢查體系結(jié)構(gòu)漏洞(對于alpha,此函數(shù)為空,check_bugs())
SMP機(jī)器其余CPU(除當(dāng)前引導(dǎo)CPU)初始化(對于沒有配置SMP的內(nèi)核,此函數(shù)為空,smp_init())
啟動init過程(創(chuàng)建第一個(gè)核心線程,調(diào)用init()函數(shù),原執(zhí)行序列調(diào)用cpu_idle() 等待調(diào)度,init())
至此start_kernel()結(jié)束,基本的核心環(huán)境已經(jīng)建立起來了。


