由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - user virtual address space VS kernel virtual address space (转载)
相关主题
这么多CS的,为啥没人讨论内核,驱动之类的呢。。。why do we need to map user level threads to kernel threads?
google intern interviewOracle组内招多人,刚毕业、老年均可,Linux/VM/Networking
高人来解这道题,帮帮忙!base system kernel bug 如何patch?
V 家招 Kernel Test Developer也发一个跟memory有关的问题
VMware 招 Senior Kernel Tester (2年以上工作经验)Bloomberg, Amazon 面经,为onsite攒RP
apple电面完了一般多久出结果上面经,明天G onsite, 求祝福
在intel或者nvidia做软件工资就只有FLG的一半vmware has 1 open for virtual device
老中思维定式:我做的东西难,把你们都比下去了,所以该挣最多急招 USB driver virtualization (Senior/staff) at VMware
相关话题的讨论汇总
话题: virtual话题: kernel话题: address话题: space话题: user
进入JobHunting版参与讨论
1 (共1页)
r**u
发帖数: 1567
1
【 以下文字转载自 CS 讨论区 】
发信人: raou (raou), 信区: CS
标 题: user virtual address space VS kernel virtual address space
发信站: BBS 未名空间站 (Sun Apr 18 17:14:09 2010, 美东)
32-bit machine,virtual address space 4GB,kernel(e.g. linux)会把这4GB,分成
3GB user/1GB kernel。
1GB kernel virtual address space跟物理内存是1-to-1的map。对user virtual addr
做virtual --> physical 转换是也是转到一个kernel virtual addr再到physical
memory。
那这样不是只能用到1GB physical memory,如果有更多
的就用不到了。windows也有这个机制,好奇这样的话不是加内存都没用?大牛给解释
一下啊
t**n
发帖数: 272
2
没错, 32位机器就是只能用4G内存
精确地说,从前winxp只能用2G内存,因为它把高2G物理地址全留给外设了
从某一个winxp的补丁开始winxp支持4G物理内存,但也只是理论上,像PCI/PCI Express/
显卡都要占用一些物理内存空间
l*******y
发帖数: 1498
3
kernel virtual address space可以分成2部分。一个是logical adress space, 对应
physical address < 896M的部分,这个部分(Low memory)和physical address只差
一个constant的 offset. 另外一部分是 physical address > 896M的部分kenel不能直
接访问,要做一个mapping 建立page table后才可以访问。
kmalloc返回的地址就是 logical adress, physical contiguous, 这个部分地址不用
page table.
vmalloc返回的 kernel virtual address是 virutal contiguous, 要建page table
1G以上的memory是可以用到的,把暂时不用的page mapping保存一下,然后去map 别的
部分就可以了。
Linux是这样的,Windows不知道是什么样子。
r**u
发帖数: 1567
4
多谢多谢。也就是说kernel只能用到up to 1GB physical mem,但是user process可以
用到more than 1GB是吧。
还有一个困惑的地方,比如物理内存少于1GB,这种情况是啥样的?user virtual addr
和 kernel virtual addr会map到同一个physical mem frame?

【在 l*******y 的大作中提到】
: kernel virtual address space可以分成2部分。一个是logical adress space, 对应
: physical address < 896M的部分,这个部分(Low memory)和physical address只差
: 一个constant的 offset. 另外一部分是 physical address > 896M的部分kenel不能直
: 接访问,要做一个mapping 建立page table后才可以访问。
: kmalloc返回的地址就是 logical adress, physical contiguous, 这个部分地址不用
: page table.
: vmalloc返回的 kernel virtual address是 virutal contiguous, 要建page table
: 1G以上的memory是可以用到的,把暂时不用的page mapping保存一下,然后去map 别的
: 部分就可以了。
: Linux是这样的,Windows不知道是什么样子。

l*******y
发帖数: 1498
5
少于896M的话,我觉得所有的 physical address都能被kernel直接访问,都有logical
address.
user virtual addr 和 kernel virtual addr 应该可map到同一physical page吧,如
果kernel 想访问的话。
当user app 执行write或者read时,会通过相应system call 进入kernel mode,这个
时候kernel 应该直接用user app的page table 就可以了吧。我也不确定,我自己理解
的。。。

addr

【在 r**u 的大作中提到】
: 多谢多谢。也就是说kernel只能用到up to 1GB physical mem,但是user process可以
: 用到more than 1GB是吧。
: 还有一个困惑的地方,比如物理内存少于1GB,这种情况是啥样的?user virtual addr
: 和 kernel virtual addr会map到同一个physical mem frame?

1 (共1页)
进入JobHunting版参与讨论
相关主题
急招 USB driver virtualization (Senior/staff) at VMwareVMware 招 Senior Kernel Tester (2年以上工作经验)
一个较难的pythpn输出函数运行信息的project.apple电面完了一般多久出结果
onsite遇到的几个面试题在intel或者nvidia做软件工资就只有FLG的一半
Maximum Contiguous Subarray老中思维定式:我做的东西难,把你们都比下去了,所以该挣最多
这么多CS的,为啥没人讨论内核,驱动之类的呢。。。why do we need to map user level threads to kernel threads?
google intern interviewOracle组内招多人,刚毕业、老年均可,Linux/VM/Networking
高人来解这道题,帮帮忙!base system kernel bug 如何patch?
V 家招 Kernel Test Developer也发一个跟memory有关的问题
相关话题的讨论汇总
话题: virtual话题: kernel话题: address话题: space话题: user