计量管理系统管理模块实施和内存空间分配
早期的用户系统,其生存容量一般少64KB,可用的存储空间受到相当的限制。可是,某些大作业的地址空间超过这个限制,而不能将它一次全部装入主存内这就产生了大作业与小生存的矛盾。那么,如何使大作业在这样的小系统上运行呢?当初采取的一个有效的办法是“覆盖”管理。也就是说,把一个大的程序划分成一系列的覆盖。每个覆盖是一个相对独立的程序单位,我们把程序执行时并不要求l司时装入二乙存的覆盖组成一组,并称其为覆盖段,这个覆盖分配剑同一个芋储区域。这个区域称之为覆盏区它与覆盖段一对应。显然,为了使这个覆盖区能为相应覆盖段中每个覆盖在不同时刻共享使用,其大小应以其中最大的覆盖来确定。
通常一个大作业的覆盖结构要求编程人员事先给出为了实现覆盏管理,则需要得到相应的编译程序和连接装配程序的协助。
为了控制一个程序相,避覆盖的装入,它必须包括一个称为覆盖管理程序的控制程序这个控制程序常驻内存,它是由编译程序或装配程序加到这个程序中的。当程序要引用当前尚未装入覆盖区的覆盖中的过程或数据时,则调用覆盖管理程序,请示提取需要的覆盖并装入规定的覆盖区巾。先前已装入到该覆盖区中属同覆盖段的覆盖被这新的覆盖所破坏。
这种覆盖管理的开销比较大,但是它解决了小主存与大作业的矛盾。如果要求作业的所自.模块都同时装入生存的话,就无法运行。这种技术在今天的许多系统中仍然存在,特别在有些微型机系统中。