免费注册 查看新帖 |

Chinaunix

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

如果全局变量是由寄存器指向的,那么CPU怎么会有那么多寄存器呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-14 09:27 |只看该作者 |倒序浏览
我一直以为全局变量是被禁止优化的,可是忽然听到有全局变量参与线程现场切换的说法。迷惑ing......

如果说全局变量是由寄存器指向的,那么如果全局变量的数目超过 CPU 的寄存器数目怎么办呢?

高手能解答一下么?

谢谢了!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2007-08-14 09:39 |只看该作者
全局变量是在内存中的,
而在段页式管理的 OS 中,
段描述符和页表基地址都是储存在寄存器中的,
任务切换的时候,
寄存器是现场的一部分,
也要切换(事前保护和事后恢复),
因此全局变量自然也是现场的一部分。

论坛徽章:
0
3 [报告]
发表于 2007-08-14 09:40 |只看该作者
TASK切换pgd不就是切换到自己私有的虚拟内存里面有自己的全局变量吗。
全局变量是TASK私有的。
一个PROCESS的各THREAD因为共享才使得各THREAD可见。但是CPU不是在各个THREAD间轮换,而是将每一个THREAD当TASK切换(从其他进程也可以切换过来)。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2007-08-14 09:44 |只看该作者
原帖由 思一克 于 2007-8-14 09:40 发表
TASK切换pgd不就是切换到自己私有的虚拟内存里面有自己的全局变量吗。
全局变量是TASK私有的。
一个PROCESS的各THREAD因为共享才使得各THREAD可见。但是CPU不是在各个THREAD间轮换,而是将每一个THREAD当TASK ...

你我对 windows 都不太熟悉,也许 windows 是这样?把进程调度和线程调度分开?
呵呵。

论坛徽章:
0
5 [报告]
发表于 2007-08-14 09:48 |只看该作者
原帖由 思一克 于 2007-8-14 09:40 发表
TASK切换pgd不就是切换到自己私有的虚拟内存里面有自己的全局变量吗。
全局变量是TASK私有的。
一个PROCESS的各THREAD因为共享才使得各THREAD可见。但是CPU不是在各个THREAD间轮换,而是将每一个THREAD当TASK ...


现代的操作系统的任务切换大多是线程级的,除非发现这个线程属于另外一个进程,才切换进程空间。和是不是windows 关系不大。

论坛徽章:
0
6 [报告]
发表于 2007-08-14 09:48 |只看该作者
也有可能。但必须说清楚。你我也不能仅仅凭想象

原帖由 flw 于 2007-8-14 09:44 发表

你我对 windows 都不太熟悉,也许 windows 是这样?把进程调度和线程调度分开?
呵呵。

论坛徽章:
0
7 [报告]
发表于 2007-08-14 10:09 |只看该作者
LINUX上内河将PROCESS和THREAD几乎一样对待。

THREAD不是在一个进程中自己换来换去。即使象你说的不用,也有从其他TASK切换过来的问题,也要换PGD

原帖由 escapedog 于 2007-8-14 10:07 发表



进程切换要切换地址空间,线程不用,根本就不是一回事儿。不是我心目中,是在若干 kernel 程序员的心目中!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2007-08-14 10:09 |只看该作者
原帖由 escapedog 于 2007-8-14 10:07 发表

不是我心目中,是在若干 kernel 程序员的心目中!

请问是何 kernel?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2007-08-14 10:10 |只看该作者
原帖由 flw 于 2007-8-14 10:09 发表

请问是何 kernel?

哦,不好意思,我不问了。是你们公司的商业机密,你一定不肯说的。抱歉。

论坛徽章:
0
10 [报告]
发表于 2007-08-14 10:12 |只看该作者
原帖由 思一克 于 2007-8-14 10:09 发表
LINUX上内河将PROCESS和THREAD几乎一样对待。

THREAD不是在一个进程中自己换来换去。即使象你说的不用,也有从其他TASK切换过来的问题,也要换PGD



天下的操作系统是不是只有 linux 一种?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP