免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 719 | 回复: 0
打印 上一主题 下一主题

Linux SMP from catbbs [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-11 01:09 |只看该作者 |倒序浏览

牛人随处啊
linux的SMP启动过程大概是这样:
首先要对各个处理器进行初始化。
然后BSP(启动CPU,负责系
统加电初始化的CPU)工作,而其它的CPU(AP,非启动CPU)则停留在一个初始化好的中断屏蔽状态休眠。也就是说,在系统加电启动过程中,实际上只
有一个CPU负责启动工作,而其它的CPU(AP)则处于中断屏蔽状态,等待着操作系统的激活。
BSP继续进行启动过程,在执行到操作系统的start_kernel之前,BSP所进行的工作与单处理器系统所做的工作是相同的。
在start_kernel中,BSP通过smp_init对每个AP进行初始化。初始化的方式是通过可编程中断控制器APIC发送处理器间中断IPI。当BSP初始化完毕所有的AP之后,就继续执行start_kernel中的其余部分代码。
而AP在接收到IPI之后,跳转到事先设置好的地址处执行trampoline.S和head.S。在执行head.S的过程中直接跳入事先创建好的空闲进程,进入空闲状态,等待以后的系统调度。
在运行中则遵循一个基本规则:接收数据的CPU负责处理它们。
而一般来说每个CPU接收的数据量是不一样的,由此可能导致系统负载不均衡,甚至出现性能瓶颈,其根本原因在于Linux中的硬中断与软中断结合过于紧密。
所以有人提出了一种软中断分发的理论,扩充Linux对SMP体系的支持,据说有利于提高Linux对海量网络数据的处理性能,具体能用这种负载均衡的方法达到多高的性能提升,俺就不知道咯。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1421/showart_275293.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP