LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3588|回复: 6

[操作系统][内存管理]关于虚拟内存的一个问题

[复制链接]
发表于 2005-9-10 15:38:06 | 显示全部楼层 |阅读模式
最近有空在看linux0.11解毒。
对内存管理的某个问题不是很理解,希望大虾能帮帮我

这里先拿个简单的例子说明一下我的问题:
例如某个进程x只使用一个页(4k)的虚拟内存,假设为vp0,映射到了物理地址的一个页PP4上,那么如果进程x被切换的时候,PP4中的内容仍保留吗?还是被释放掉了?
如果是仍保留的话,那么同平板结构有什么区别呢?
如果释放的话,进程上下文存在哪里呢?程序寄存器指向哪里呢?

小弟不才,望大虾能指点迷津。
发表于 2005-9-10 16:14:57 | 显示全部楼层
进程的数据段文本段信息一般保留在pcb里头的程序、数据地址项,程序寄存器保留在pcb的现场保留区里头,进程切换时不会丢失掉这些东西的。

什么是平板结构?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-10 19:06:26 | 显示全部楼层
我还是没明白你的意思,照你的意思,PP4释放了没有,pcb又是什么?

平板(plane)结构就是直接使用物理地址,有些处理器没有内存管理单元,ucos,uclinux都是供这些处理器使用的,如大部分的单片机,ARM7TDMI等没有虚拟地址,没有映射,直接使用。

例如ucos,因为它的数据和代码段存在一个预先分配的内存里,供这个任务使用,所以在切换任务的时候,只需要保存寄存器的值即可,因为那个内存不会被释放。

问题是,如果例子中的pp4不释放的的话,别的进程无法通过虚拟地址映射过来来使用PP4,那么不是和我所说的平板结构一样了么?

mm的优势体现在哪里呢?
回复 支持 反对

使用道具 举报

发表于 2005-9-10 20:58:09 | 显示全部楼层
Post by jetking
我还是没明白你的意思,照你的意思,PP4释放了没有,pcb又是什么?

平板(plane)结构就是直接使用物理地址,有些处理器没有内存管理单元,ucos,uclinux都是供这些处理器使用的,如大部分的单片机,ARM7TDMI等没有虚拟地址,没有映射,直接使用。

例如ucos,因为它的数据和代码段存在一个预先分配的内存里,供这个任务使用,所以在切换任务的时候,只需要保存寄存器的值即可,因为那个内存不会被释放。

学习~~~~

问题是,如果例子中的pp4不释放的的话,别的进程无法通过虚拟地址映射过来来使用PP4,那么不是和我所说的平板结构一样了么?

mm的优势体现在哪里呢?

不释放,并不意味着一定在内存,有可能被换出内存.
这里虚拟存储的优势在于每个进程都可以使用独立的4G空间,如果内存不够,一些内存会被换出内存,而使当前进程满足内存要求.
ps:这里我说的"内存"指的是物理RAM
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-11 10:50:07 | 显示全部楼层
o,大概了解,谢谢
回复 支持 反对

使用道具 举报

发表于 2008-7-24 16:54:00 | 显示全部楼层
0.11版本的内核实现和后面的内核版本不一样,每个进程只有64K的线性地址空间
回复 支持 反对

使用道具 举报

发表于 2008-7-24 17:02:14 | 显示全部楼层
说错了,是64M的线性地址空间,而且0.11版本内核最多只能有64个进程,64*64M正好是4G,而且在内存中只放置了一个页目录表,64个进程是共用这个页目录表的,那时候页不知道linus为什么会这样设计,32bit地址总线,每个进程的线性地址空间应该是4G才对
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表