清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 513内外存数据传输的控制 要实现内存扩充,在程序执行过程中,内存和外存 之间必须经常地交换数据。也就是说,把那些即将 执行的程序和数据段调入内存,而把那些处于等待 状态的程序和数据段调出内存。最基本的控制办法 有两种。一种是用户程序自己控制,另一种是操作 系统控制。 用户程序自己控制内外存之间的数据交换的例子是 覆盖。覆盖技术要求用户清楚地了解程序的结构, 并指定各程序段调入内存的先后次序。覆盖是一种 早期的主存扩充技术。使用覆盖技术,用户负担很 大,且程序段的最大长度仍受内存容量限制。因此, 覆盖技术不能实现虚拟存储器
5.1.3 内外存数据传输的控制 要实现内存扩充,在程序执行过程中,内存和外存 之间必须经常地交换数据。也就是说,把那些即将 执行的程序和数据段调入内存,而把那些处于等待 状态的程序和数据段调出内存。最基本的控制办法 有两种。一种是用户程序自己控制,另一种是操作 系统控制。 用户程序自己控制内外存之间的数据交换的例子是 覆盖。覆盖技术要求用户清楚地了解程序的结构, 并指定各程序段调入内存的先后次序。覆盖是一种 早期的主存扩充技术。使用覆盖技术,用户负担很 大,且程序段的最大长度仍受内存容量限制。因此, 覆盖技术不能实现虚拟存储器
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 操作系统控制方式又可进一步分为两种。一种是交 换( swapping)方式,另一种是请求调入( on demand) 方式和预调入( on prefetch)方式。 交换方式由操作系统把那些在内存中处于等待状态 的进程换出内存,而把那些等待事件已经发生、处 于就绪态的进程换入内存。 请求调入方式是在程序执行时,如果所要访问的程 序段或数据段不在内存中,则操作系统自动地从外 存将有关的程序段和数据段调入内存的一种操作系 统控制方式。而预调入则是由操作系统预测在不远 的将来会访问到的那些程序段和数据段部分,并在 它们被访问之前系统选择适当的时机将它们调入内 存的一种数据流控制方式
操作系统控制方式又可进一步分为两种。一种是交 换(swapping)方式,另一种是请求调入(on demand) 方式和预调入(on prefetch)方式。 交换方式由操作系统把那些在内存中处于等待状态 的进程换出内存,而把那些等待事件已经发生、处 于就绪态的进程换入内存。 请求调入方式是在程序执行时,如果所要访问的程 序段或数据段不在内存中,则操作系统自动地从外 存将有关的程序段和数据段调入内存的一种操作系 统控制方式。而预调入则是由操作系统预测在不远 的将来会访问到的那些程序段和数据段部分,并在 它们被访问之前系统选择适当的时机将它们调入内 存的一种数据流控制方式
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 由于交换方式一般不进行部分交换,即每次交换都 交换那些除去常驻内存部分后的整个进程,而且, 即使能完成部分交换,也不是按照执行的需要而交 换程序段,只是把受资源限制、暂时不能执行的程 序段换出内存。因此,虽然交换方式也能完成内存 扩充任务,但它仍未实现那种所谓自动覆盖、内存 和外存统一管理、进程大小不受内存容量限制的虚 拟存储器。只有请求调入方式和预调入方式可以实 现进程大小不受内存容量限制的虚拟存储器
由于交换方式一般不进行部分交换,即每次交换都 交换那些除去常驻内存部分后的整个进程,而且, 即使能完成部分交换,也不是按照执行的需要而交 换程序段,只是把受资源限制、暂时不能执行的程 序段换出内存。因此,虽然交换方式也能完成内存 扩充任务,但它仍未实现那种所谓自动覆盖、内存 和外存统一管理、进程大小不受内存容量限制的虚 拟存储器。只有请求调入方式和预调入方式可以实 现进程大小不受内存容量限制的虚拟存储器
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 514内存的分配与回收 内存的分配与回收是内存管理的主要功能之一。无 论采用哪一种管理和控制方式,能否把外存中的数 据和程序调入内存,取决于能否在内存中为它们安 排合适的位置。因此,存储管理模块要为每一个并 发执行的进程分配内存空间。另外,当进程执行结 束之后,存储管理模块又要及时回收该进程所占用 的内存资源,以便给其他进程分配空间。 为了有效合理地利用内存,设计内存的分配和回收 方法时,必须考虑和确定以下几种策略和数据结构: (1)分配结构:登记内存使用情况,供分配程序使用 的表格与链表。例如内存空闲区表、空闲区队列等
5.1.4 内存的分配与回收 内存的分配与回收是内存管理的主要功能之一。无 论采用哪一种管理和控制方式,能否把外存中的数 据和程序调入内存,取决于能否在内存中为它们安 排合适的位置。因此,存储管理模块要为每一个并 发执行的进程分配内存空间。另外,当进程执行结 束之后,存储管理模块又要及时回收该进程所占用 的内存资源,以便给其他进程分配空间。 为了有效合理地利用内存,设计内存的分配和回收 方法时,必须考虑和确定以下几种策略和数据结构: (1) 分配结构:登记内存使用情况,供分配程序使用 的表格与链表。例如内存空闲区表、空闲区队列等
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS (2)放置策略:确定调入内存的程序和数据在内存中 的位置。这是一种选择内存空闲区的策略 (3)交换策略:在需要将某个程序段和数据调入内存 时,如果内存中没有足够的空闲区,由交换策略来 确定把内存中的哪些程序段和数据段调出内存,以 便腾出足够的空间。 (4)调入策略:外存中的程序段和数据段什么时间按 什么样的控制方式进入内存。调入策略与5.1.3节中 所述内外存数据流动控制方式有关。 (5)回收策略:回收策略包括二点,一是回收的时机, 二是对所回收的内存空闲区和已存在的内存空闲区 的调整
(2) 放置策略:确定调入内存的程序和数据在内存中 的位置。这是一种选择内存空闲区的策略。 (3) 交换策略:在需要将某个程序段和数据调入内存 时,如果内存中没有足够的空闲区,由交换策略来 确定把内存中的哪些程序段和数据段调出内存,以 便腾出足够的空间。 (4) 调入策略:外存中的程序段和数据段什么时间按 什么样的控制方式进入内存。调入策略与5.1.3节中 所述内外存数据流动控制方式有关。 (5) 回收策略:回收策略包括二点,一是回收的时机, 二是对所回收的内存空闲区和已存在的内存空闲区 的调整