虚拟内存, 页表, 快表, 多级页表, 倒排页表
发布时间
阅读量:
阅读量
虚拟内存
虽然基址寄存器和界限寄存器可用于创建地址空间的抽象,另一个问题是管理软件膨胀(bloatware)。尽管存储器容量呈快速增长趋势,然而软件体积的增长速度更快。运行所需的程序通常体积庞大到超出内存容量,并且必须确保系统能够同时支持多个程序运行。即便内存足以支持单独一个程序的需求,在整体规划上这些程序依然超出了可用内存范围。此外,换入换出过程耗时较长(因为其效率较低),例如使用SATA磁盘时其峰值传输率可达100MB/s意味着每次仅能完成约10秒的数据交换循环。
早期计算时代就出现了程序超过内存的情况。在20世纪60年代时期所采用的解决方案是将程序划分为多个部分,并称为覆盖(overlay)。当程序启动时, 通过加载管理模块到内存中的过程, 该管理模块立即加载并执行第零层(Overlay 0)。完成之后, 第零层通知管理模块依次加载后续层(Overlay 1), 或者如果可用空间足够, 占据当前顶层位置; 如果当前顶层已满则占据当前顶层位置本身。一些复杂的系统支持同时存在多个覆盖层, 并将这些保存于磁盘上的块动态地由操作系统调用与释放以适应需求。
尽管系统负责执行覆盖块的换入换出操作,在此过程中虽然系统完成了实际的工作但我必须将整个程序分成若干个模块来进行处理
基于某种视角来看,虚拟内存是一种对基址寄存器与界限寄存器的整合。而8088系统则专门地将基址
全部评论 (0)
还没有任何评论哟~
