5.3 分页地址转换模拟实现
分页地址转换是在分页存储管理系统中进行地址转换时,地址变换机构将自动把逻辑地址转化为页号和页内地址,如果页号不小于页表长度,则产生越界中断;否则便以页号为索引去检索页表,从中得到对应的块号,并把块号和页内位移分别送入物理地址寄存器的块号和块内位移字段中,形成物理地址。
分页地址转换位模块流程图如图5.4所示。
图5.4分页地址转换模块流程图
5.4 可变分区管理模拟实现
操作系统可变分区存储管理方式的内存分配和回收,可变分区调度算法有:最先适应分配算法, 循环首次适应算法,最优适应分配算法,最坏适应算法。本模块关于可变分区算法采用分区说明表的组织形式。其过程如下:
用户提出内存空间的申请;系统根据申请者的要求,按照一定的分配策略分析内存空间的使用情况,找出能满足请求的空闲区,分给申请者;当程序执行完毕或主动归还内存资源时,系统要收回它所占用的内存空间或它归还的部分内存空间。
在这些调度算法的实现采用方法,通过数据库的查询语句的变化,以及条件的不同查找到相应的内存分配空间。
最先适应分配算法:将空闲区按其在存储空间中的起始地址递增的顺序排列。为作业分配存储空间时,从空闲区链的始端开始查找,选择第一个满足要求的空闲区,而不管它究竟有多大。所以在查找数据库信息是将查找满足条件的空闲分区按照始址的大小顺序升序排列;
循环首次适应算法:该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。所以在查找数据库信息时现查找在下一个空闲区之后的满足要求的空闲分区就,如果存在按始址排列再到第一个;不存在再在之前的空分区内查找。
最佳适应算法:它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。所以在查找数据库信息时现查找空闲区之后的满足要求的空闲分区,并按分区大小升序排列。
最坏适应分配算法:要扫描整个空闲分区或链表,总是挑选一个最大的空闲分区分割给作业使用。该算法要求将所有的空闲分区按其容量从大到小的顺序形成一空闲分区链,查找时只要看第一个分区能否满足作业要求。所以在查找数据库信息时现查找空闲区之后的满足要求的空闲分区,并按分区大小降序排列。
实现分配算法流程图如图5.5所示。
图5.5可变分区分配流程图
分区回收:当一个作业运行完毕释放内存时,系统根据回收的首地址,在空闲分区表中找到相应的插入点。此时可能遇到4种情况。并对其满足的条件进行具体的操作。
(1)回收区不合任何的空闲分区相连
(2)回收区与回收区前的空闲区相连
(3)回收区与回收区后的空闲区相连
(4)回收区与回收区前、后的空闲区都相连
分区回收分法流程图:如图5.6所示
图5.6可变分区回收模块流程图
5.5 固定分区管理模拟实现 C#操作系统课件设计算法模拟模块算法模拟系统(11):http://www.751com.cn/jisuanji/lunwen_1414.html