区和对换区。前者用于存放文件,后者用于存放从内存换出的进程。P60-61
进程的换出:
系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动磁盘,将该进程的程序和数据传送到磁盘的对换区上。若传送过程未出现错误,便可回收该进程所占用的内存空间,并对该进程的PCB做相应的修改。
当目前没有阻塞进程时,也可将优先级低的就绪进程换出。 进程的换入:
系统定时查看所有进程的状态,从中找出“就绪”状态但已换出的进程,将其中换出时间(换出到磁盘上)最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。
以上谈到的是整体交换,部分交换在虚拟存储中介绍。 六、动态分区式存储管理特点的讨论
1、作业连续存放(作业的逻辑地址空间和物理地址空间都是一维的) 2、有限的虚拟存储
分区式管理不能实现那种用户进程所需空间只受内外存容量之和限制的虚拟存储,只能使用覆盖和交换等存储扩充技术,实现进程挂起,这是一种有限的虚拟存储----并发进程的总容量可以大于内存容量,但每一个进程的容量小于内存。
3、存储保护:使用界限寄存器。一般由硬件提供一对寄存器:基址寄存器:存放起始地址,限长寄存器:存放长度(或上界寄存器/下界寄存
器)
4、主要优缺点:
? 实现了多进程对内存的共享,支持多道程序设计; ? 要求较少的硬件支持,管理方法简单,容易实现。 ? 内存利用率仍不高(碎片问题); ? 用户作业的大小受分区大小的限制; ? 不能实现信息的共享。
第三节 基本(静态)分页存储管理方式 一、基本原理
将系统的物理地址空间划分成大小相同的片,称为块;
将作业的逻辑地址空间划分成和块大小一样的片,称为页(最后不足一页的也算一页);
给作业进行存储分配时,将作业的一页存入存储器的一块中。逻辑上相邻的页,物理上可以不相邻。
块的大小与页的大小一致,与系统内存的大小以及内、外存间数据的传输速度相关,通常是2nB。 二、逻辑地址的格式
作业的逻辑地址空间是一维的,每个逻辑地址由页号和页内地址组成,见下图左;
对某特定机器,其地址结构是一定的,页的大小固定为L。若给定一个逻辑地址A,则页号P和页内地址d可按下式求得,见下图右。
三、存储管理的数据结构 1、页表:
每个进程一张,在初次为进程分配内存时建立进程的页表。一个进程分为多少页,它的页表就有多少行(表目)。每一行中记录着进程的一页对应的块。另外,页表的每一个表目还包括一个存取控制字段。页表用于进行地址变换。
2、存储分块表:整个系统一张,每一项对应一个内存存储块,记录该存储块的使用状态:已分配或空闲。通常用位示图来表示存储分块表。
四、地址变换
进程的页表一般是常驻内存、连续存放的,页表的首地址和长度存在进程的PCB中。
系统为执行态的用户进程提供了一个页表寄存器,用来存放这个进程的页表首地址和长度。
采用动态地址重定位。 1、基本的地址变换过程:
例: 0100:LOAD 2452,‘A’
(1) 指令的逻辑地址0100,它存在0页,第100号单元中;
查页表:0页→ 10块→ 算出指令的物理地址:10100→ 到内存单元10100中取指令 LOAD 2452,‘A’;
(2) 目的操作数的逻辑地址2452,它排在2页第452号单元中; 查页表: 2页→ 8块→ 算出操作数的物理地址:08452→ 将‘A’送入08452号内存单元。 2、引入快表:
由于页表也存放在主存中,这样,每读写一个内存单元,首先必须读内存一次,访问页表,之后根据形成的实际地址再访问内存,这样使访问主存的次数加倍,因而使总的处理速度明显下降。
为了解决这个问题人们采用一组寄存器,存放最近访问过的页的页表表项----引入“快表”
每次地址变换时,首先查找快表,若找到所需页的表项,则快速形成物理地址。否则,再去页表中查找后形成物理地址,同时把该页