LinuxSir.cn,穿越时空的Linuxsir!

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

请教几个关于内存管理的问题

[复制链接]
发表于 2004-9-1 11:17:31 | 显示全部楼层 |阅读模式
:help 我在看2.4的内核,结合手头的几本书,研究内存管理机制,发现有几个问题百思不得其解:
1.内核在系统启动时被加载至1M的地址,那么在系统内核表示的虚拟空间中,内核占据3-4G的地址,3G的虚拟地址是否固定地与物理地址1M对应?
2.内核虚拟地址空间在3-4G,这个分界点为何限制了Linux的物理内存大小为2G?
3.没有页表保护机制的Linux如何保护内核空间不被非法访问,中断与系统调用那部分使能了用户可以访问3-4G的空间,在系统调用处理的entry.S中那部分代码体现了这个机制?
4.Linux使用页目录与页表的机制进行映射,在系统运行时,同时有多个进程运行,0进程在物理地址0放置页目录与页表,其他子进程的页目录与页表结构是否总是在物理内存中,还是可能被换出?
5.执行程序在虚拟线性地址空间中总是从nr*64M开始,然而我们常说一个单一线程的地址空间为4G,是否矛盾?
发表于 2004-9-1 11:44:42 | 显示全部楼层
1.A20线不可用时(也就是工作在实模式时),地址空间只有1M,所以超过1M的寻址都将被折回下来。

2.内核空间1G,用户空间3G,至于物理内存上限,我还不怎么清楚。

3.保护模式下只能通过描述符进行虚拟寻址,而涉及保护模式下寻址的段描述符,页目录项等描述字都有1位作为用户级别判定,内核为0环,用户为3环,低级别不能访问高级别的内存空间。

4.可以换出

5.内存管理机制自动处理页的分配回收,对用户是透明的。

ps:最好结合一些经典的电子文档来阅读。
 楼主| 发表于 2004-9-1 13:57:08 | 显示全部楼层
to home_king:
第一个问题,我的意思是在进程的虚拟空间中,起始地址为3G的这个页是否映射到物理地址1M,还是物理地址0?
你所说的页目录项描述字的保护位是否指的是用户/超级用户(user/supervisor-U/S)位呢?
发表于 2004-9-1 14:06:10 | 显示全部楼层
最初由 joeytry 发表
to home_king:
第一个问题,我的意思是在进程的虚拟空间中,起始地址为3G的这个页是否映射到物理地址1M,还是物理地址0?
你所说的页目录项描述字的保护位是否指的是用户/超级用户(user/supervisor-U/S)位呢?

据我所知,这个1M实模式空间最终被归并到内核页去了,和用户的3G空间无关。
发表于 2004-9-1 14:23:19 | 显示全部楼层
有一篇很经典的pdf文档,你看过就明白了。
我看的迷迷糊糊的~~~~
你的e-mail是多少?我寄给你。
 楼主| 发表于 2004-9-1 14:48:27 | 显示全部楼层
先谢过了,老大
skywalkercjy@yahoo.com.cn
发表于 2004-9-1 15:17:13 | 显示全部楼层
已经发送了,收到的话确认一下。
 楼主| 发表于 2004-9-1 17:35:16 | 显示全部楼层
收到了,thank you
关于内存的问题,总是看不是很明白,准备花点时间看懂这篇文章
发表于 2004-12-25 12:53:03 | 显示全部楼层
能发给我一份吗?我的邮箱是liangkexin@netease.com
发表于 2004-12-25 20:43:08 | 显示全部楼层
1。内核空间从3G开始是映射的物理地址的前4M,从0开始(对2。2内核);对2。4是前8M,从0开始。这个是固定的,内核初始化期间映射的。
2。这个2G没听过啊,内核空间要求可以直接映射整个物理内存,因此会在896M有个限制(1G-128M),或者物理内存位于896M到4G之间,这时候896以上的部分会动态映射;大于4G,就要开启PAE支持了,这个支持36位了,这时候小于896M的内存还是可以直接映射,其余部分动态映射。
3。linux定义了4个段,内核代码和数据段,用户代码和数据段。中断处理的时候CPU会检查被中断进程的段描述府的DPL值;对于系统调用来说,最初LINUX不是定义了PAGE_OFFSET来当作用户和内核的界限的吗,只要用户态程序根据系统调用来访问某个地址,就会进行PAGE_OFFSET来进行检查,确保内核空间不被非法访问。
4。页表和页项不是都有一个present位的吗,这个可以确定是否在内存中。
5。这个不是很明白你说的意思,可以说得具体点吗,大家都可以讨论一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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