免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chenzhanyiczy
打印 上一主题 下一主题

高端内存 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2010-03-25 11:35 |只看该作者
回复 29# re_load

俺冒昧总结一下:

1. 内核在一个时间点上通过内核线性地址0XC0000000-0XFFFFFFFF只能访问1G的物理内存.
2. 那为什么要用最后128M的空间来映射物理高端地址了,而不直接全部映射0-1G?
    这是因为通过最后128M的空间给内核访问所有物理高端地址的机会。 如果用内核空间直接全部映射0-1G。  那内核再也没有机会访问到高于1GB的物理空间。 一个典型的应用就是如果有I/O register 在高端物理地址,那这时候内核就无法处理了。

3. 内核在一个时间点上只能访问1G的物理空间。那么如果我有1.5G的物理内存,那500M不浪费掉?
   不。虽然 内核在一个时间点上只能访问1G的物理空间, 但是另外的500M 物理空间,用户空间可以映射到1G-1.5G的物理空间。 也就是说用户空间可以使用它。


不知道以上说法对不对?

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
32 [报告]
发表于 2010-03-25 12:59 |只看该作者
回复  chenzhanyiczy


    虚拟地址《--》物理地址。
    这里物理地址 != 物理内存的地址。物理 ...
snail_314 发表于 2010-03-24 22:11



I/O register 被PCI映射,这个操作属于内核态的吧,内核态的操作它的线性地址空间是从3G-4G的,那么PCI将I/O registe映射到物理内存0-1G中,那么它怎么会映射到其他物理内存(比如:3G-3G+1M)中去呢?

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
33 [报告]
发表于 2010-03-25 13:01 |只看该作者
固定映射不影响用户态访问大于1g的内存吧。只是内核自己没法访问而已。你说的“不可能出现有部分物理内存, ...
snail_314 发表于 2010-03-25 01:30



    同问

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
34 [报告]
发表于 2010-03-25 13:02 |只看该作者
回复  re_load

俺冒昧总结一下:

1. 内核在一个时间点上通过内核线性地址0XC0000000-0XFFFFFFFF只能 ...
xduser 发表于 2010-03-25 11:35



    1和3都是对的,我觉得

2 还是不理解

论坛徽章:
0
35 [报告]
发表于 2010-03-25 13:03 |只看该作者
本帖最后由 snail_314 于 2010-03-25 13:14 编辑

回复 31# chenzhanyiczy


    PCI briage将PCI device的‘资源’(寄存器、framebuffer)映射到‘物理地址’空间与‘内核/用户’无关。只是将per-device的address space map 到 4G的phsycial address space。整个过程和CPU都无关。
    “用户态”和“内核态”的意思是指虚拟地址空间的用户态部分(0-3G)和内核态部分(3-4G),对象是虚拟地址空间。PCI将设备映射到的是物理地址空间。两个不同的空间了。

论坛徽章:
0
36 [报告]
发表于 2010-03-25 13:18 |只看该作者
回复 30# xduser


    高端地址还有一个作用(姑且说它有用)就是它可以让内核将离散的物理地址映射到连续的虚拟地址。固定映射是不行的哈。物理地址如果不连续,那么虚拟地址也不连续。如果内核作memcpy这样的操作就是需要连续的虚拟地址的

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
37 [报告]
发表于 2010-03-25 15:56 |只看该作者
回复  chenzhanyiczy


    PCI briage将PCI device的‘资源’(寄存器、framebuffer)映射到‘物理地址 ...
snail_314 发表于 2010-03-25 13:03




per-device的address space map 到 4G的phsycial address space   


这个有谁来完成的?

有没有哪方面的书介绍这个的?

谢谢

论坛徽章:
0
38 [报告]
发表于 2010-03-25 16:50 |只看该作者
回复 36# chenzhanyiczy


    这些东西是我工作中总结的,毕竟干的活儿和PCI有些相关。书可以看pci architecture spec之类的,下面这个邮件列表你也可以看看:
http://www.pcisig.com/reflector/msg05228.html
其实LDD和情境分析等书里面的对应章节也或多或少涉及了这个问题,欢迎共同讨论

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
39 [报告]
发表于 2010-03-25 17:21 |只看该作者
回复  chenzhanyiczy


    这些东西是我工作中总结的,毕竟干的活儿和PCI有些相关。书可以看pci archi ...
snail_314 发表于 2010-03-25 16:50



    还没看过LDD之类的,惭愧

这一个月来,为了跟踪read()函数,一直跟踪到现在,路上太多拦路虎了

read() -> page -> do_page_fault -> ... -> 高端内存

晚上回去滤滤,头脑不清楚了

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
40 [报告]
发表于 2010-03-25 17:23 |只看该作者
本帖最后由 chenzhanyiczy 于 2010-03-25 17:50 编辑

回复 37# snail_314



per-device的address space map 到 4G的phsycial address space

这个过程到底是怎么映射的过程?能否大体讲讲?

另外, 就算per-device的地址映射到了高端内存,那应该要改变这个高端128M线性地址的pmd,pte吧,
不然的话,内核如何去访问这些per-device。那这个改变pte,pmd的过程怎么完成的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP