Chinaunix首页 | 论坛 | 博客
  • 博客访问: 534385
  • 博文数量: 221
  • 博客积分: 3032
  • 博客等级: 中校
  • 技术积分: 2525
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-30 15:45
文章分类

全部博文(221)

文章存档

2012年(221)

我的朋友

分类: 云计算

2012-07-31 14:35:39

Windows的设计师似乎越来越喜欢“休眠”一词,Windows 8神奇的火箭启动速度,甚至一度让微软担心开机过快。背后的支撑技术就是“休眠”。

 

在如今速度是王道的时代,“休眠”来的是恰到好处。在Windows 8 中,Metro风格应用的内存管理机制也采用的是所谓的“休眠”机制,即让暂时未被使用的应用程序处于休眠状态,从而释放出更多的内存空间。一旦用户需要使用,则被释放的空间又将被重新回收。而这个过程几乎是在1秒内完成,对于用户而言,这种瞬间的程序切换早成的差异几乎是透明的,不会感觉地到。这一点上,类似苹果的iOS“应用暂停”模型。

 

现在我们具体分析一下Windows 8 Metro风格应用的内存管理机制是如何工作的。首先,当进程生命期管理器 (PLM) 检测系统中的内存压力,通知内存管理器 (MM) 清空已挂起 Metro 风格应用程序的特定进程的工作集。其次,接到PLM 的指令后,MM 将内存页从应用程序工作集移到操作系统的已修改页面列表。再次,已修改页面列表的工作集页面将根据常见的 MM 策略异步写出。最后,删除进程中的内存页。不过,即便工作集已被写入磁盘,内存页也会保存在备用列表中。如果原始进程要求再次需要这些页面,则它们会迅速移回原处。

 

一般而言,涉及到磁盘操作的步骤都是值得优化的。基于“休眠”机制的工作集在磁盘中的换入与换出操作,也是优化的对象。从硬件的优化角度,我们可以选择基于闪存的存储设备,比如SSD,代替机械的旋转式磁盘,提高硬盘的读写速度。从磁盘访问顺序的角度,顺序读取的速度要由于随机读取。这个需要基于一定的前提,即当我们写出挂起 Metro 风格应用程序的工作集时,对应的工作集页面将按顺序写出到磁盘。作为Windows 性能分析器 (WPA)工具,可以直观地显示了此过程中的磁盘读取。据估计,许多应用程序只需不到一秒的 I/O 就可以将挂起应用程序的工作集重新读取到内存中。

 

当然,如果系统不存在内存压力,将内存留在已挂起的Metro风格应用程序实际上是一件好事,也是最高效的。不过,物理内存都是限的。即使添加更多物理内存,管理内存的挑战也不会改变。

作者:CU网友tongxin hellen 

阅读(1815) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~