Linux内核分析 SMP启动.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux内核分析 SMP启动

* * * Smp的前提和注意点,照读 * 启动时只有一个进程,或者说上下文。 * 照读 照读 * * 结合后面叙述,来讲述此图 * BP先完成自身初始化,进入保护模式并开启页式存储管理机制,再完成系统特别是内存初始化 * 自旋——无限循环 * MTRR是一个存储类型及范围寄存器 MTRR并不是非用不可的,它的使用只是使管理更加精细而已,所以是否采用MTRR是个编译选择项. 以CPU号为下标的数组,用于逻辑号物理号的转换 * 调用do_boot_cpu()时除去BP * 1.前面讲过,每个CPU在运行中必须有自己的上下文即进程,否则就不会对整个系统的运行做出贡献,反而倒会造成损害.所以,必须为每个CPU都准备一个初始进程(线程).哪怕这个初始进程本身实际上并没有什么事要做,也得要有这么一个进程才能启动这个CPU.而CPU一旦开始了初始进程的运行,以后就可以通过进程调度从系统中挑选其他进程运行了. 3.Idle从就绪队列和杂凑队列被删除,只能根据CPU号来找到,不能用进程号来找,这个线程即为“空转”进程,进程号0。 * 讲解为何要这么做,分初级阶段,和高级阶段,实模式进入保护模式 (1)次CPU的初始化涉及内部寄存器的操作,因而只能由它自己完成,主CPU无法包办代替. (2)当主CPU启动一个次CPU的时候,这个次CPU一开始还处于实地址模式,根本就不能正确地执行start_secondary()的代码. 执行start_secondary()前提:次CPU完成本身的初始化,进入保护模式,并开启了页式存储管理 注意:次CPU需要跳板而主CPU并不需要:因为主CPU在进入startup_32之前已经在引导辅助程序中进行了这些准备. * 为什么要把此这段代码复制到trampoline_base字符数组中? 当主CPU通过APIC启动次CPU运行时,要把一个启动地址发送给次CPU.可是,由于APIC的内部结构,实际上能发送的只是一个8位的物理页面号,称为向量.这样,就给启动地址加上了限制:首先,必须与页面边界对齐;其次,必须在1MB以下.这里的trampoline_data()是不满足这两个条件的,所以要另行在1MB以下分配一个物理页面,把trampoline_data的代码复制到这个页面中,这就是trampoline_base. * Init_deasserted相当于加锁。是和AP同步所需 这个地址是物理地址,在写入寄存器前先右移了12位,因为启动地址一定是与页面边界对齐的,其低12位一定是0.另一方面,启动地址一定在1MB以下,其最高12位也一定是0,所以右移以后真正要发送出去的是8位. 在startup_32()中,由于次CPU的寄存器%ebx中的内容为1,就可以和主CPU区分开来,因为有些操作是共同的,而又有些则只由主CPU完成. * 不会从initialize_secondary( )返回了 * start_secondary( )主要是两步cpu_init( )和smp_callin( ) * TSC64位,十年不重复 * 这些目录项是为CPU由段式映射向页式映射过渡而设置的. 对于单CPU的系统,一旦CPU转入了页式映射,这些目录项就可以清除了.可是在SMP结构的系统中,则要到所有的CPU都转入页式映射以后才能清除.而现在是时候了. 表面上cpu_idle()是个函数调用,但是实际上永远不会从那里返回了,因为cpu_idle()的主体是个无限循环,只要系统中有就绪进程在等待执行,就调度其运行,否则就使CPU进入硬件睡眠状态,直到有中断发生时才恢复运行. * * Linux内核分析 多处理器SMP系统结构 黄晶晶 1134444 蒋乾悦 1131843 魏浩洋 1131841 SMP简介 SMP简介 SMP系统的引导 SMP结构中的互斥 SMP结构中的高速缓存与内存的一致性 SMP结构中的中断机制 SMP结构中的进程调度 SMP简介 在给定的时间内,CPU的最高速度是有限的,提高计算速度方法之一 就是使用多个CPU 多处理器系统(Multi-Processor Systems,MPS) 整个硬件系统由统一的操作系统控制, 在处理器和程序之间实现作业、任务、 程序等的全面并行 内存 CPU CPU CPU CPU 并行计算机分类 根据指令流和数据流的不同,通常把计算机系统分为: 单指令流单数据流(SISD) 单指令流多数据流(SIMD) 多指令流单数据流(MISD) 多指令流多数据流(MIMD) 并行计算机系统绝大部分为MIMD系统(5类),包括 并行向量机(PVP,Parallel Vector Processor); 对称多处理机(SMP , Symmetric Multi Processor); 大规模

文档评论(0)

linsspace + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档