免费注册 查看新帖 |

Chinaunix

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

深入理解linux内核(3rd)的关于线性地址的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-17 23:20 |只看该作者 |倒序浏览
在P47中:“而分页可以把同一线性地址空间映射到不同的物理空间”。
是不是意味着在同一时刻一个线性地址空间能够对应到不同的物理空间上?如果是的话,它的这种机制是怎样实现的呢?
疑惑ing

论坛徽章:
0
2 [报告]
发表于 2008-05-18 00:07 |只看该作者
原帖由 jgq516 于 2008-5-17 23:20 发表
在P47中:“而分页可以把同一线性地址空间映射到不同的物理空间”。
是不是意味着在同一时刻一个线性地址空间能够对应到不同的物理空间上?如果是的话,它的这种机制是怎样实现的呢?
疑惑ing

不知道LZ看的是不是中文版,但至少从这句话来看是有问题的。
不管是UP(单处理器)还是SMP(多处理器)机器,物理地址空间只有一个。虚拟地址空间(线性地址空间)有N个,每个进程有一个自己的虚拟地址空间。
x86的IO端口64K地址空间是个例外(以及LAPIC地址),可以看做一个单独的物理地址空间。也就是说对于x86,有一个物理地址空间,还有一个64K的端口I/O地址空间。
可以说把同一个线性地址映射到不同的物理地址,但没有同一个线性地址空间映射到不同物理地址空间的说法。
我能想到的这句话最准确的表达是:把同一线性地址空间中的不同区域,要么映射到物理地址空间,要么映射到端口IO地址空间。

论坛徽章:
0
3 [报告]
发表于 2008-05-18 14:05 |只看该作者

回复 #1 jgq516 的帖子

首先lz需要明白几个概念:页,也框,
页,有两部分构成,
一部分是索引,索引到也框
一部分是标志,是否映射的标志

一个页不可能同时索引到两个也框,因为索引只有一个。。。。。。
但是一个也框却可以同时被两个页索引。。。。。。。

ok

论坛徽章:
0
4 [报告]
发表于 2008-05-18 15:10 |只看该作者
我觉得有点问题,所以我看了看原版的understanging linux kernel的3rd,原话如下:
“segmentation can assign a different linear address space to each process, while paging can map the same linear address space into different physical address spaces.”
结合书的上下文,我认为是“分页可以把同一组线性地址空间映射到不同的物理空间”才对。

论坛徽章:
0
5 [报告]
发表于 2008-05-18 15:25 |只看该作者
原帖由 jgq516 于 2008-5-18 15:10 发表
我觉得有点问题,所以我看了看原版的understanging linux kernel的3rd,原话如下:
“segmentation can assign a different linear address space to each process, while paging can map the same linear addr ...

x86虽然可以分成两个物理地址空间,但还是要注意除去端口IO外物理地址空间只有一个,应该理解成“分页可以把同一组线性地址空间映射到物理地址空间的不同区域”

论坛徽章:
0
6 [报告]
发表于 2008-05-18 15:53 |只看该作者
thanks.最近有时间看看内核的东西,不明白的东西好多。

论坛徽章:
0
7 [报告]
发表于 2008-05-18 16:30 |只看该作者
一个类似的问题在TLB的那节“这是因为运行在现有CPU上的进程可以使用同一线性地址与不同的物理地址发生联系”。不太理解这句话的含义,难道是与“而分页可以把同一线性地址空间映射到不同的物理空间”等价的意思吗?迷茫ing

论坛徽章:
0
8 [报告]
发表于 2008-05-18 16:48 |只看该作者
原帖由 jgq516 于 2008-5-18 16:30 发表
一个类似的问题在TLB的那节“这是因为运行在现有CPU上的进程可以使用同一线性地址与不同的物理地址发生联系”。不太理解这句话的含义,难道是与“而分页可以把同一线性地址空间映射到不同的物理空间”等价的意思 ...

这就是ULK3中文版的翻译吗?把一本好好的书翻译成这个样子,完全直译不联系上下文不说,还不注意单复数,可惜。
这段话原话是:
Contrary to the hardware cache, the corresponding entries of the TLB need not be synchronized, because processes running on the existing CPUs may associate the same linear address with different physical ones.

它是说:和硬件的cache不同,不同的CPU的TLB不要同步。为什么呢?是因为不同的CPU上运行着不同的进程,每个进程有自己的虚拟地址空间,所以不同CPU的TLB中,同一个虚拟地址指向的是不同的物理地址。
比如CPU1运行进程A,TLB1的中虚拟地址A指向物理地址N
CPU2运行进程B,TLB2中也有个虚拟地址A,但它指向的是物理地址M

所以是不需要同步TLB的。

[ 本帖最后由 zx_wing 于 2008-5-18 16:53 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-05-18 20:12 |只看该作者
我觉得楼主的第一个疑问作者其实就是想说在用分页进行内存管理的情况下相同的线性地址可以对应不同的物理地址,中文版翻译的别别扭扭的。比如一个线性地址为A现在影射着物理地址B,换出以后再换入或许就影射到物理地址C上了。

论坛徽章:
0
10 [报告]
发表于 2008-05-18 20:43 |只看该作者
关于第二个问题,ZX_WING把ULK3的意思解释的很清楚了,不过mp情况下处理器共用一套page table的时候也会有同步的可能,会通过IPI来通知相关CPU对TLB做修改。LINUX实现了LAZY TLB的机制在运行内核线程的时候不做TLB同步。在ULK3里有讲到这些东西,但是对于那段论述我至今也觉得还是没理解的十分透彻,尤其是都有哪些情况下不同的处理器在使用同一套页表,目前只考虑到一种可能,即进程A首先在处理器1上运行,切换,内核线程代替进程A在处理器1上运行,该内核线程沿用进程A的页表,而进程A同时在处理器2上执行,此时内核线程和进程A同时运行,两个CPU用同一套页表。除此之外我想不到其他的情况。请ZX_WING和其他朋友帮忙指点一二。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP