r**u 发帖数: 1567 | 1 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也有这个机制,好奇这样的话不是加内存都没用?大牛给解释
一下啊 |
m******t 发帖数: 99 | 2 "对user virtual addr 做virtual --> physical 转换是也是转到一个kernel virtual
addr再到physical memory。"
No: User VA -> PA directly. |
c*****k 发帖数: 230 | 3 kernel好像不是1-to-1map,到了一定的区间(768MB?)好像叫high zone什么的有专门的
算法分配,忘了。。。 |
r**u 发帖数: 1567 | 4 恩。好像是VA直接到PA。还是有些地方不明,比如physcial mem 1GB,那这1GB
physical mem已经map了kernel virtual addr space,那user virtual addr space也
会map到这1GB physical mem。那比如1 physical 可能就会map both kernel and user
virtual addr,是这样么? 多谢
virtual
【在 m******t 的大作中提到】 : "对user virtual addr 做virtual --> physical 转换是也是转到一个kernel virtual : addr再到physical memory。" : No: User VA -> PA directly.
|
r**u 发帖数: 1567 | 5 有没有相关材料的link,我很有兴趣去读一读。
【在 c*****k 的大作中提到】 : kernel好像不是1-to-1map,到了一定的区间(768MB?)好像叫high zone什么的有专门的 : 算法分配,忘了。。。
|
v*****r 发帖数: 1119 | 6 On windows NT, here is how it works:
The virtual address space and address translation
As is the case with other Virtual Memory Managers the Windows NT VMM is
responsible for creating the illusion that all processes have exclusive
access to 32-bits (4GB) of physical memory, the reality being all processes
share the same physical memory (up to a maximum of 4GB). The 32-bits of
address space are known as virtual memory because they do not directly
correspond to physical memory, it is the VMM respo |
c*****k 发帖数: 230 | 7 understanding the linux kernel |
c*****k 发帖数: 230 | |
z***e 发帖数: 5393 | 9 我还是不晓得你说的"kernel virtual addr"是指什么...virtual addr就是virtual
addr,什么叫kernel virtual addr?
user
【在 r**u 的大作中提到】 : 恩。好像是VA直接到PA。还是有些地方不明,比如physcial mem 1GB,那这1GB : physical mem已经map了kernel virtual addr space,那user virtual addr space也 : 会map到这1GB physical mem。那比如1 physical 可能就会map both kernel and user : virtual addr,是这样么? 多谢 : : virtual
|
s******e 发帖数: 431 | 10 kernel also has paged or none-paged memory pool. Paged means the memory
address space might be paged on disk ( not mapped on physical memory).
Windows also has a mechanism called pae which will take advantage of large
memory more than 4g.
【在 r**u 的大作中提到】 : 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也有这个机制,好奇这样的话不是加内存都没用?大牛给解释 : 一下啊
|
r**u 发帖数: 1567 | 11 你怎么就不晓得呢?
Linux, 4GB virtual addr space分成俩块,3GB user virtual addr space,和1GB
kernel virtual addr space。
1GB(严格的说好像是896MB)的kernel virtual addr space跟physical mem是one-to-
one map,above 1GB 用page table转换。在kernel mode可以用3GB user virtual
addr space,在user mode不能用1GB kernel virtual addr space (for protection)。
【在 z***e 的大作中提到】 : 我还是不晓得你说的"kernel virtual addr"是指什么...virtual addr就是virtual : addr,什么叫kernel virtual addr? : : user
|
r**u 发帖数: 1567 | 12 这个有用。那本书我在看,不过有些地方觉得写的不清楚,呵呵。
【在 c*****k 的大作中提到】 : http://en.wikipedia.org/wiki/High_memory
|
z***e 发帖数: 5393 | 13 ...我不是问原理,这都是常识。
我是觉得kernel virtual address这个名字很奇怪,一般就说kernel address,大家都
知道是1-1 mapping,加个virtual很confusing.
)。
【在 r**u 的大作中提到】 : 你怎么就不晓得呢? : Linux, 4GB virtual addr space分成俩块,3GB user virtual addr space,和1GB : kernel virtual addr space。 : 1GB(严格的说好像是896MB)的kernel virtual addr space跟physical mem是one-to- : one map,above 1GB 用page table转换。在kernel mode可以用3GB user virtual : addr space,在user mode不能用1GB kernel virtual addr space (for protection)。
|
c*****k 发帖数: 230 | 14 那书结合着 kernel的code看要好点
【在 r**u 的大作中提到】 : 这个有用。那本书我在看,不过有些地方觉得写的不清楚,呵呵。
|