欢迎来到天天文库
浏览记录
ID:48055500
大小:271.50 KB
页数:30页
时间:2020-01-13
《Linux内核分析 SMP启动.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux内核分析多处理器SMP系统结构黄晶晶1134444蒋乾悦1131843魏浩洋1131841SMP简介SMP简介SMP系统的引导SMP结构中的互斥SMP结构中的高速缓存与内存的一致性SMP结构中的中断机制SMP结构中的进程调度SMP简介在给定的时间内,CPU的最高速度是有限的,提高计算速度方法之一就是使用多个CPU多处理器系统(Multi-ProcessorSystems,MPS)整个硬件系统由统一的操作系统控制,在处理器和程序之间实现作业、任务、程序等的全面并行内存CPUCPUCPUCPU并行计算机分类根据指令流和数据流的不同,通常把计算机系统分为:单指令流单数据
2、流(SISD)单指令流多数据流(SIMD)多指令流单数据流(MISD)多指令流多数据流(MIMD)并行计算机系统绝大部分为MIMD系统(5类),包括并行向量机(PVP,ParallelVectorProcessor);对称多处理机(SMP,SymmetricMultiProcessor);大规模并行处理机(MPP,MassivelyParallelProcessor);机群(Cluster);分布式共享存储多处理机(DSM,DistributedSharedMemory)SMP简介SMP简介对称多处理器(SymmetricMulti-Processor,SMP)硬件上,CP
3、U没主次之分(除启动和初始化外),物理上采用同一种CPU,所有的CPU通过同一条总线共享同一个内存以及所有的外部设备。为了减少访问内存冲突,SMP结构中的各个CPU通常都有各自的高速缓存软件上,每个CPU平等动态地从进程就绪队列中调度进程加以执行,中断请求也是等概率动态地分配给某个CPU,由其提供中断服务系统总线外部设备内存CPUCPU高速缓存高速缓存CPU高速缓存SMP简介对称多处理器(SymmetricMulti-Processor,SMP)SMP系统一般使用同一种商品化微处理器,具有片上或外置高速缓存(减少访问内存的冲突)经由高速总线(或交叉开关)连向共享存储器单一操
4、作系统映像共享总线带宽。所有处理器共享总线带宽,完成对内存模块和I/O模块的访问各个CUP独立地、异步地执行指令SMP简介优点:低通信延迟,各个进程通过读/写操作系统提供的共享数据缓存区来完成处理器间的通信,其延迟通常小于网络通信延迟缺点:可用性比较差可扩展性较差SMP简介组建SMP系统CPU内部必须内置APIC(AdvancedProgrammableInterruptControllers)单元相同的产品型号,同样类型的CPU核心完全相同的运行频率尽可能保持相同的产品序号编号SMP简介与单处理器结构相比,SMP结构的实现的特殊问题处理器间的同步与互斥高速缓存与内存之间内
5、容的一致性问题对中断的处理SMP的启动SMP的启动概述SMP启动的过程(1)启动流程(2)相关函数介绍SMP的启动概述SMP结构中的CPU都是平等的,没有主次之分,这是基于系统中有多个进程的前提下在同一时间,一个进程只能由一个CPU执行系统启动对于SMP结构来说是一个特例,因为在这个阶段里系统中只有一个CPUSMP的启动概述SMP系统在启动,即刚加电或总清时,只能由一个CPU来执行系统引导和初始化。这个CPU称为“引导处理器”,即BP,其余的处理器处于暂停状态,称为“应用处理器”,即AP。SMP的启动概述BP完成系统的启动,并创建起多个进程,从而可以由多个CPU同时参与处理
6、时,才启动AP,让它们在完成自身初始化以后投入运行。一旦各个AP都已投入运行,这种暂时的主次关系便告结束,各CPU一律平等了。SMP的启动概述在初始化阶段,“引导处理器”先完成自身的初始化,进入保护模式并开启页式存储管理机制,再完成系统特别是内存的初始化,然后对SMP进行初始化。SMP的启动SMP系统启动的过程BPSMP的启动SMP系统启动的过程BP先完成自身初始化,然后从start_kernel()调用smp_init()进行SMP结构初始化smp_init()的主体是smp_boot_cpus(),依次调用do_boot_cpu()启动各个APAP通过执行trampol
7、ine.S的一段跳板程序,进入startup_32()完成一些基本初始化SMP的启动SMP系统启动的过程AP进入start_secondary()作进一步初始化工作,进入自旋(测试全局变量smp_commenced是否变成1),等待一个统一的“起跑”命令BP完成所有AP启动后,调用smp_commence()发出该起跑命令每个CPU进入cpu_idle(),等待调度SMP的启动相关函数介绍smp_init()>smp_boot_cpus()对BP的MTRR初始化,设置使用/不使用高速缓存,采用穿透/回写模式。收集C
此文档下载收益归作者所有