linux中每个进程拥有独立的4G空间,这4G空间是不是和分段机制 每个段最大可以寻址4G空间指的是同一个?
答案:1 悬赏:20 手机版
解决时间 2021-11-24 19:32
- 提问者网友:嘚啵嘚啵
- 2021-11-24 01:31
linux中每个进程拥有独立的4G空间,这4G空间是不是和分段机制 每个段最大可以寻址4G空间指的是同一个?
最佳答案
- 五星知识达人网友:鸽屿
- 2021-11-24 02:28
不是。
独立4G空间是靠分页机制实现的,想要知道具体的可以去找“内存页表”相关的资料。
分段机制虽然CPU支持,不过Linux对于一个进程的用户空间看来只是简单地把段基址都设为0而已。
想要详细知道的话还是去看Intel官方的系统开发手册吧,分段和分页机制讲得是非常详细,不过很长而且全英文的……追问哦~谢谢 那Linux的分段机制就是把所有进程的段基地址都设置为0 让各个进程的线性地址相同 再通过每个进程各自的页表 分别映射到不同的物理内存地址中、、、 是这个意思么追答分段机制其实我不太了解……因为一直都是当它不存在的。
就算做虚拟地址和物理地址转换的实验的时候,我也是当分段不存在的。
分段机制能提供一个功能,就是定义一个段的时候,除了基址(Linux用的0)还有一个“段大小”,访问的时候超过了大小会产生异常,这样就把段的大小设置为物理内存大小,防止访问到物理内存外面去。
地址有三种,逻辑地址、线性地址、物理地址,物理地址通过分段机制变成线性地址,线性地址通过分页机制变成逻辑地址。所谓“各个进程的线性地址相同”我不知道是指什么意思,不过因为基址是0所以线性地址和物理地址是相同的。
前面说到“页表”,32位没开PAE情况下CPU的CR3寄存器是一个二级指针,指向一个数组(叫做页目录),然后页目录的每个元素指向数组。切换进程的时候CR3变了,所以使用的页表也就变了,进程能够看到的内存就不一样了追问“各个进程的线性地址相同” 我的理解是 程序中的地址是逻辑地址 通过分段机制转换为线性地址 又因为你说的 Linux把段基地址设置为0 所有各个进程的逻辑地址就一样 逻辑地址一样 再经过分段机制得到的线性地址就一样了追答不……等等,逻辑地址是通过分页机制翻译为线性地址的,线性地址通过分段机制翻译为物理地址。后者才是两个地址一样的,前者两个地址是不一样的。然后不同进程不同页表……追问我怎么记得逻辑地址经过分段机制转换为线性地址(虚拟地址),然后线性地址经过分页机制转换为的物理地址 给你个链接 http://blog.csdn.net/tiangwan2011/article/details/7219103 你看看 现在说的有点混乱了 。。。。追答
【我刚才说的好像有错】……(捂脸
我刚才说的里面,分页和分段的位置记反了。
看这个图吧。逻辑地址和线性地址之间是分段关系,线性地址和物理地址之间是分页关系
独立4G空间是靠分页机制实现的,想要知道具体的可以去找“内存页表”相关的资料。
分段机制虽然CPU支持,不过Linux对于一个进程的用户空间看来只是简单地把段基址都设为0而已。
想要详细知道的话还是去看Intel官方的系统开发手册吧,分段和分页机制讲得是非常详细,不过很长而且全英文的……追问哦~谢谢 那Linux的分段机制就是把所有进程的段基地址都设置为0 让各个进程的线性地址相同 再通过每个进程各自的页表 分别映射到不同的物理内存地址中、、、 是这个意思么追答分段机制其实我不太了解……因为一直都是当它不存在的。
就算做虚拟地址和物理地址转换的实验的时候,我也是当分段不存在的。
分段机制能提供一个功能,就是定义一个段的时候,除了基址(Linux用的0)还有一个“段大小”,访问的时候超过了大小会产生异常,这样就把段的大小设置为物理内存大小,防止访问到物理内存外面去。
地址有三种,逻辑地址、线性地址、物理地址,物理地址通过分段机制变成线性地址,线性地址通过分页机制变成逻辑地址。所谓“各个进程的线性地址相同”我不知道是指什么意思,不过因为基址是0所以线性地址和物理地址是相同的。
前面说到“页表”,32位没开PAE情况下CPU的CR3寄存器是一个二级指针,指向一个数组(叫做页目录),然后页目录的每个元素指向数组。切换进程的时候CR3变了,所以使用的页表也就变了,进程能够看到的内存就不一样了追问“各个进程的线性地址相同” 我的理解是 程序中的地址是逻辑地址 通过分段机制转换为线性地址 又因为你说的 Linux把段基地址设置为0 所有各个进程的逻辑地址就一样 逻辑地址一样 再经过分段机制得到的线性地址就一样了追答不……等等,逻辑地址是通过分页机制翻译为线性地址的,线性地址通过分段机制翻译为物理地址。后者才是两个地址一样的,前者两个地址是不一样的。然后不同进程不同页表……追问我怎么记得逻辑地址经过分段机制转换为线性地址(虚拟地址),然后线性地址经过分页机制转换为的物理地址 给你个链接 http://blog.csdn.net/tiangwan2011/article/details/7219103 你看看 现在说的有点混乱了 。。。。追答
【我刚才说的好像有错】……(捂脸
我刚才说的里面,分页和分段的位置记反了。
看这个图吧。逻辑地址和线性地址之间是分段关系,线性地址和物理地址之间是分页关系
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯