关于Linux-0.11内核_段页内存管理的问题

我的疑惑是:intel80x86CPU在选择分页机制后,分段是如何实现的?段基址是如何获得的??下面是我的理解:intel80x86CPU在没有采用分页机制时,是单纯的分... 我的疑惑是:intel 80x86 CPU在选择分页机制后,分段是如何实现的?段基址是如何获得的??
下面是我的理解:
intel 80x86 CPU在没有采用分页机制时,是单纯的分段机制,这时的线性地址就是物理地址。此时若为新进程分配内存空间,是可以根据物理空间的使用情况分配的,此时的段基址就是实际的物理地址。
但采用分页机制之后,是分段机制与分页机制共存,地址转换为:逻辑地址 --> 线性地址 --> 物理地址。此时分配内存不是连续的,也就是说所谓的段不是实际的物理段,只是逻辑上(线性地址空间上)的段。此时的分段机制在线性地址空间上为新进程分配段空间之后,然后又经分页机制映射到零碎的物理地址空间(即不连续的页面)。不管分段机制在线性地址空间上如何映射段空间,采取分页机制之后,都是零碎的物理空间,那么分段机制还有什么作用??
在linux-0.11中,是内核作者(linus)直接设定好了几个段基址。若没有事先设定段基址,分配内存时由系统根据线性地址空间使用情况设置段基址,我想这也没有任何意义,而且难以实现(因为还要记录线性地址空间使用情况)。

上面说了那么多,总的就是说,在采取分页机制之后,分段机制是不是多余的??我感觉它没任何意义,且不好实现(因为还要记录线性地址空间使用情况)。

若想一起学习linux-0.11内核源码的,可以联系我,呵呵,,,e9999e@163.com
问题有点长,希望大家耐心看完。。。
展开
 我来答
_1039332004
2012-11-21
知道答主
回答量:4
采纳率:0%
帮助的人:9.5万
展开全部
实际上,分段和分页在某种程度上有点沉余,因为它们都可以划分进程的物理地址空间:分段可以给每个进程分配不同的线性地址空间,而分页可以把同一线性地址空间映射到不同的物理空间。采用分页机制后,就没必要再将进程分配到不同的线性地址空间。但Linux-0.11版通过共享页目录和线性地址分段,利用了分段机制,即采用段页机制。0.99及以后的版本中不再共享页目录,不再对线性地址分段,使每个进程都拥有4GB线性空间,逻辑地址=线性地址,巧妙的“绕过了”分段机制,即采用分页机制。
Linux-0.11采用段页机制,具体如下:
内存物理地址0处开始放着一页页目录表和四页页表。这一个页目录表是所有进程共享的。其后的四页页表正好映射16M物理内存,是进程0的页表。以后创建进程时页表要从主内存区申请,而页目录项直接从页目录表中取。这样进程和页目录表页存在一一对应关系,任务号为nr的进程,对应页目录的第nr*16 ~ (nr+1)*16一共16个目录项。共有1K*1K*4K=4G的线性空间。这4G的线性空间由64个进程共享,通过对线性地址进行分段,每个进程都有64MB的线性空间,这样每个进程都会有16个连续的页目录项。
快又稳
2024-10-28 广告
Apache基于域名的虚拟主机配置主要涉及到在Apache配置文件中为不同域名指定不同的网站目录和日志路径。配置时,需确保域名已正确指向服务器的IP地址。在Apache的`httpd-vhosts.conf`或类似配置文件中,为每个域名创建... 点击进入详情页
本回答由快又稳提供
上帝来自地球
2012-11-20 · TA获得超过1436个赞
知道小有建树答主
回答量:438
采纳率:100%
帮助的人:412万
展开全部
这是便于内存的管理,操作系统有些时候会报一些内存访问错误,或者内存访问被拒绝等等一些功能都是基于分段管理实现的。

具体的实现可以看一些编译原理的书籍,会详细介绍程序的编译链接加载,与分段的关系的!

一句话,分段的优点:体现在内存的管理和控制上,特别避免了一些非法的内存越界访问,使得系统更稳定啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-20
展开全部
目前还没有想法!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式