2010-07-16 94 views
2

我对纯粹的分割有点困惑,因为在我的脑海中总是存在虚拟内存的想法。纯粹的分割

但据我所知,纯粹的分割也想象一个虚拟地址空间,划分为所有加载到RAM中的段。

与分割虚拟内存的区别在于,可能存在某些段不在RAM中。

这是正确的吗?

我加了一个问题: 分段结合分页和双层分页是否存在实际区别?除了段方法的“极限”保护外,其他方面是相同的。或者还有其他的区别?

+0

您的术语有点偏离。 “虚拟内存”描述了在访问RAM之前可以更改地址的任何系统。 *分段*是虚拟内存的一种形式。 *分页*是更常用的另一种形式。也许你把“虚拟内存”与“分页?”混淆了? – Karmastan 2010-07-16 06:04:14

+0

我对分页和纯分页感到困惑。或者分割和纯粹的分割。什么是纯粹的? – makakko 2010-07-16 06:18:28

回答

2

不,这是不正确的。例如,在x86上,分段使用由两部分组成的“远”指针:段选择器(加载到段寄存器,例如DS)和段中的偏移量。段偏移总是从0开始.CPU使用段选择器来查找包含段的LINEAR基地址,长度和访问权限的段描述符。所有访问都经过长度检查;如果您尝试访问超出段限制或无效访问的内存(例如,写入只读段),CPU将生成一般性保护错误。

由于段地址始终为零,并且段基址隐含在段选择器中,操作系统可以移动段并对存储段进行碎片整理,而不会影响使用该数据的程序。 (与“平坦”内存模型对比,如果移动一些数据,则还必须更新指向它的所有指针)。

现在,当禁用分页时,LINEAR段基址是其物理内存地址。当启用分页功能时,所有对分段数据的访问都会像往常一样由MMU转换。

+0

是的,分割和两级分页有区别。两级或(多级)分页是一种减少页表使用的内存的技术。 – zvrba 2010-07-16 06:35:31

+0

在只有分段存储器系统中,MMU不能使用?我的意思是,使用像TLB这样的缓存来避免缓慢的RAM来检查每个段的基数和限制。据我所知,TLB对于分页工作正常,具有(以简单的形式):页框,页框等。在分割的情况下,我需要:分段限制帧,分段限制帧,限制帧...... – makakko 2010-07-16 06:53:05

+0

不,MMU在唯一分段系统中没有功能。段描述符通常以另一种方式由CPU缓存。 – zvrba 2010-07-16 10:46:57

0

如果您对认识这个级别的内存管理非常认真,可以通过Silberschatz,Galvin和Gagne阅读Operating System Concepts找到一个很好的解释。你应该能够找到一个便宜的旧版本。