内存管理:算法及其c/c++实现 翻译二

第一章:内存管理机制
预览
“每个人都有照相的存储内存,只是一些人没有胶片”
 
机制与策略
访问、操作内存包括许多需要权衡的方面,必须采取一定的措施来保证访问有效的内存,并且此内存与相应的物理存储器相对应。如果使用了内存保护机制,那么,处理器还必须确保正在执行的任务不能访问它不应该访问的内存。多任务操作系统就是建立在这种内存保护服务之上的系统。如果使用虚拟内存机制,则还必须做大量的登记工作以记录磁盘分区属于哪一个任务。这些比你想象中的复杂得多,并且所有步骤必须做到没有任何差错。
 
注释:在Intel平台上,如果内存子系统的数据结构创建得不正确,处理器将执行所谓的“三次错误”处理。Intel处理器的“双错”是指当它正在处理例外时又发生了例外,当处理器没能成功地处理“双错”时,我们说“三次错误”发生了,此时,处理器将进入SHUTDOWN状态,一般来说,当遇到这种问题时使用Intel处理器的机器将重新启动。
 
为了提高执行的速度,处理器制造商设计的芯片都具有高级内存管理能力,这样,操作系统制造商就能把大部分烦杂、重复的工作推给处理器去完成,因为在处理器级上检查各种不同的错误相对来说更加迅速。这样做的缺点是:某种程度上操作系统制造商与硬件平台制造商绑定在了一起。
然而,为了获取高的性能而牺牲灵活性是值得的。如果一个操作系统完全负责执行分页和分段,那么它将比利用处理器内建的分页和分段机制的操作系统明显慢很多。如果使用由操作系统负责内存保护的机器玩诸如Quake3这样图形密集型实时游戏,那么系统慢得将可能几乎玩下去。
 
注释:当Dave在构造Windows NT时,他对操作系统的硬件抽象层(Hardware Abstraction Layer, HAL)给予了极大的重视,这个思想主要是让操作系统与硬件分离开来,作为一个单独的代码层,此层位于硬件之上。这种构建方法有助于我刚提到的硬件独立性的主题。使Dave感到荣耀的是NT确实能运行于传统的基于UNIX的硬件平台,这包括Digital的Alpha处理器和MIPS的RISC处理器。不过,Microsoft还不能使他的许多高级技术(比如DCOM)运行在除Intel之外的其它平台。对于基于二进制标准的对象技术不能运行于除Intel之外的其它平台就更加多了。
 
优先考虑速度的解决方案总是能取得成功。以前的Control Data工程师曾给我讲了一个故事,当Seymour Cray在设计6600机型时,他碰到一个比他现在正在使用的芯片更快的芯片,但此款芯片偶偶发生计算错误。Seymour设计了许多聪明的解决方法,技术主管没有插手阻挡 Seymour的方法,因为到目前为止,Seymour可能是Control Data最有价值的员工。不幸的是,他们的仓库里装满了那种老式的芯片。他们不可能扔掉那些老式的芯片,必须想办法利用他们。方法想出来了,他们利用那些芯片制造了CDC3300系统,此系统比6600慢一些,不过也便宜一些。
 
我的总结是:Seymour尽力想求得更快的芯片,即使这些芯片还不是很稳定。
 
这种趋势导致了现行的商业操作系统都具有内存管理服务功能,这些服务功能是牢固地建立在由硬件决定的数据结构和协议之上的。处理器提供了操作内存的最初支持,它也构建了一些内存管理的机制,最后由操作系统决定是否使用处理器的内存管理机制,如果使用的话,操作系统还要决定怎样使用他们,这就构成了操作系统实现管理内存的策略。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值