_nosay 发表于 2016-07-12 16:52

多CPU系统中,各个CPU中的寄存器,始终一致吗?

本帖最后由 _nosay 于 2016-07-12 17:00 编辑

hi:em09:一致吗?

这样问好像不对,换一下噢:
各个CPU要从startup_32进入内核,%bx为0的CPU为主CPU,后面经过这里的都属于次CPU了,次CPU的%bx为1,是因为主CPU经过这里之后将%bx置1的原因吗?

Tinnal 发表于 2016-07-14 15:24

不一致, 每个CPU的寄存器都是独立的,不会同步。不然CPU就没有独立工作,干不同的事情了。

_nosay 发表于 2016-07-14 15:59

回复 2# Tinnal

启动时,有些关于环境初始化的代码,根据bx寄存器判断当前是主cpu在执行,还是次cpu在执行,保证初始化只有主cpu执行,次cpu直接享受成果,那哪块cpu是主,那块cpu是次,是由bios决定,并依次设置它们bx寄存器的吗?

Tinnal 发表于 2016-07-14 22:41

建议你打本书看看, 系统的学一下。看看毛德操的Linux内核情景分析。或http://tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/smpboot.html

_nosay 发表于 2016-07-15 00:30

回复 4# Tinnal

噢,我在看Linux内核情景分析,第十章主要是从startup_32开始介绍,对bootsect.S、setup.S的描述不多。

nswcfd 发表于 2016-07-15 09:40

不管boot protocol是怎么定义的,有一点是可以肯定的,没有任何实体(bios or os)具有修改其它cpu寄存器的能力。
唯一的通讯手段是IPI和共享内存。
所以那个bx,估计是ap根据某个memory flag自己设置的?

_nosay 发表于 2016-07-15 11:47

回复 6# nswcfd

哦,知道了。
页: [1]
查看完整版本: 多CPU系统中,各个CPU中的寄存器,始终一致吗?