資源描述:
《Linux內(nèi)核分析 SMP啟動(dòng).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Linux內(nèi)核分析多處理器SMP系統(tǒng)結(jié)構(gòu)黃晶晶1134444蔣乾悅1131843魏浩洋1131841SMP簡(jiǎn)介SMP簡(jiǎn)介SMP系統(tǒng)的引導(dǎo)SMP結(jié)構(gòu)中的互斥SMP結(jié)構(gòu)中的高速緩存與內(nèi)存的一致性SMP結(jié)構(gòu)中的中斷機(jī)制SMP結(jié)構(gòu)中的進(jìn)程調(diào)度SMP簡(jiǎn)介在給定的時(shí)間內(nèi),CPU的最高速度是有限的,提高計(jì)算速度方法之一就是使用多個(gè)CPU多處理器系統(tǒng)(Multi-ProcessorSystems,MPS)整個(gè)硬件系統(tǒng)由統(tǒng)一的操作系統(tǒng)控制,在處理器和程序之間實(shí)現(xiàn)作業(yè)、任務(wù)、程序等的全面并行內(nèi)存CPUCPUCPUCPU并行計(jì)算機(jī)分類根據(jù)指令流和數(shù)據(jù)流的不同,通常把計(jì)算機(jī)系統(tǒng)分為:?jiǎn)沃噶盍鲉螖?shù)據(jù)
2、流(SISD)單指令流多數(shù)據(jù)流(SIMD)多指令流單數(shù)據(jù)流(MISD)多指令流多數(shù)據(jù)流(MIMD)并行計(jì)算機(jī)系統(tǒng)絕大部分為MIMD系統(tǒng)(5類),包括并行向量機(jī)(PVP,ParallelVectorProcessor);對(duì)稱多處理機(jī)(SMP,SymmetricMultiProcessor);大規(guī)模并行處理機(jī)(MPP,MassivelyParallelProcessor);機(jī)群(Cluster);分布式共享存儲(chǔ)多處理機(jī)(DSM,DistributedSharedMemory)SMP簡(jiǎn)介SMP簡(jiǎn)介對(duì)稱多處理器(SymmetricMulti-Processor,SMP)硬件上,CP
3、U沒主次之分(除啟動(dòng)和初始化外),物理上采用同一種CPU,所有的CPU通過同一條總線共享同一個(gè)內(nèi)存以及所有的外部設(shè)備。為了減少訪問內(nèi)存沖突,SMP結(jié)構(gòu)中的各個(gè)CPU通常都有各自的高速緩存軟件上,每個(gè)CPU平等動(dòng)態(tài)地從進(jìn)程就緒隊(duì)列中調(diào)度進(jìn)程加以執(zhí)行,中斷請(qǐng)求也是等概率動(dòng)態(tài)地分配給某個(gè)CPU,由其提供中斷服務(wù)系統(tǒng)總線外部設(shè)備內(nèi)存CPUCPU高速緩存高速緩存CPU高速緩存SMP簡(jiǎn)介對(duì)稱多處理器(SymmetricMulti-Processor,SMP)SMP系統(tǒng)一般使用同一種商品化微處理器,具有片上或外置高速緩存(減少訪問內(nèi)存的沖突)經(jīng)由高速總線(或交叉開關(guān))連向共享存儲(chǔ)器單一操
4、作系統(tǒng)映像共享總線帶寬。所有處理器共享總線帶寬,完成對(duì)內(nèi)存模塊和I/O模塊的訪問各個(gè)CUP獨(dú)立地、異步地執(zhí)行指令SMP簡(jiǎn)介優(yōu)點(diǎn):低通信延遲,各個(gè)進(jìn)程通過讀/寫操作系統(tǒng)提供的共享數(shù)據(jù)緩存區(qū)來完成處理器間的通信,其延遲通常小于網(wǎng)絡(luò)通信延遲缺點(diǎn):可用性比較差可擴(kuò)展性較差SMP簡(jiǎn)介組建SMP系統(tǒng)CPU內(nèi)部必須內(nèi)置APIC(AdvancedProgrammableInterruptControllers)單元相同的產(chǎn)品型號(hào),同樣類型的CPU核心完全相同的運(yùn)行頻率盡可能保持相同的產(chǎn)品序號(hào)編號(hào)SMP簡(jiǎn)介與單處理器結(jié)構(gòu)相比,SMP結(jié)構(gòu)的實(shí)現(xiàn)的特殊問題處理器間的同步與互斥高速緩存與內(nèi)存之間內(nèi)
5、容的一致性問題對(duì)中斷的處理SMP的啟動(dòng)SMP的啟動(dòng)概述SMP啟動(dòng)的過程(1)啟動(dòng)流程(2)相關(guān)函數(shù)介紹SMP的啟動(dòng)概述SMP結(jié)構(gòu)中的CPU都是平等的,沒有主次之分,這是基于系統(tǒng)中有多個(gè)進(jìn)程的前提下在同一時(shí)間,一個(gè)進(jìn)程只能由一個(gè)CPU執(zhí)行系統(tǒng)啟動(dòng)對(duì)于SMP結(jié)構(gòu)來說是一個(gè)特例,因?yàn)樵谶@個(gè)階段里系統(tǒng)中只有一個(gè)CPUSMP的啟動(dòng)概述SMP系統(tǒng)在啟動(dòng),即剛加電或總清時(shí),只能由一個(gè)CPU來執(zhí)行系統(tǒng)引導(dǎo)和初始化。這個(gè)CPU稱為“引導(dǎo)處理器”,即BP,其余的處理器處于暫停狀態(tài),稱為“應(yīng)用處理器”,即AP。SMP的啟動(dòng)概述BP完成系統(tǒng)的啟動(dòng),并創(chuàng)建起多個(gè)進(jìn)程,從而可以由多個(gè)CPU同時(shí)參與處理
6、時(shí),才啟動(dòng)AP,讓它們?cè)谕瓿勺陨沓跏蓟院笸度脒\(yùn)行。一旦各個(gè)AP都已投入運(yùn)行,這種暫時(shí)的主次關(guān)系便告結(jié)束,各CPU一律平等了。SMP的啟動(dòng)概述在初始化階段,“引導(dǎo)處理器”先完成自身的初始化,進(jìn)入保護(hù)模式并開啟頁式存儲(chǔ)管理機(jī)制,再完成系統(tǒng)特別是內(nèi)存的初始化,然后對(duì)SMP進(jìn)行初始化。SMP的啟動(dòng)SMP系統(tǒng)啟動(dòng)的過程BPSMP的啟動(dòng)SMP系統(tǒng)啟動(dòng)的過程BP先完成自身初始化,然后從start_kernel()調(diào)用smp_init()進(jìn)行SMP結(jié)構(gòu)初始化smp_init()的主體是smp_boot_cpus(),依次調(diào)用do_boot_cpu()啟動(dòng)各個(gè)APAP通過執(zhí)行trampol
7、ine.S的一段跳板程序,進(jìn)入startup_32()完成一些基本初始化SMP的啟動(dòng)SMP系統(tǒng)啟動(dòng)的過程AP進(jìn)入start_secondary()作進(jìn)一步初始化工作,進(jìn)入自旋(測(cè)試全局變量smp_commenced是否變成1),等待一個(gè)統(tǒng)一的“起跑”命令BP完成所有AP啟動(dòng)后,調(diào)用smp_commence()發(fā)出該起跑命令每個(gè)CPU進(jìn)入cpu_idle(),等待調(diào)度SMP的啟動(dòng)相關(guān)函數(shù)介紹smp_init()>smp_boot_cpus()對(duì)BP的MTRR初始化,設(shè)置使用/不使用高速緩存,采用穿透/回寫模式。收集C