Advertisement

纯分段实现与结合

阅读量:

分段

到目前为止我们所探讨的虚拟内存都是线性的 虚拟地址空间从起始位置0延伸至最大值 每个地址都是连续的 对于许多应用场景而言 采用多个独立的地址空间通常能带来显著的优势 这些表中可能包括各种信息 如寄存器状态 程序指令等

  1. 被保存起来供打印清单用的源程序正文(用于批处理系统)。

  2. 符号表,包含变量的名字和属性。

  3. 包含用到的所有整型量和浮点常量的表。

  4. 语法分析树,包含程序语法分析的结果。

  5. 编译器内部过程调用使用的堆栈。

前四个表格随着时间推移逐步提升其规模,在最后一个时间段内呈现出非预期的增长与缩减趋势。在一维存储体中受限于虚拟地址空间布局需求,在线段划分上仅能安排这五个表格进入连续区域(如图3-31所示)。

值得探讨的是一个程序拥有大量变量的情况是否会导致系统出现异常行为?在这样的情况下,在内存地址空间中被分配给符号表的区域可能已达到饱和状态。与此同时,在其他表中仍然存在大量未使用的空间。通常情况下,编程器会输出一条提示信息告知由于变量数量过多导致无法继续编译;然而,在某些情况下(例如当其他表仍存在可用空间时),这种处理方式并非最佳选择

另一种方法类似于模仿'侠盗罗宾汉'的行为模式,在数据库资源分配策略中将过多内存分配到资源不足的地方。尽管这一做法是可以实现的但它可能会导致类似管理覆盖的问题虽然在最佳情况下会让人感到厌烦但最糟糕

全部评论 (0)

还没有任何评论哟~