1568.动态分区管理系统 《操作系统原理》课程设计.doc
《1568.动态分区管理系统 《操作系统原理》课程设计.doc》由会员分享,可在线阅读,更多相关《1568.动态分区管理系统 《操作系统原理》课程设计.doc(11页珍藏版)》请在三一办公上搜索。
1、计算机科学与技术专业操作系统原理课程设计课题名称:动态分区管理系统 姓 名: 班 级: 学 号: 课程设计起止时间:2005年12月26日至12月30日指导教师: 成绩:课程设计任务书操作系统原理课程设计任务书设计题目:动态分区管理系统任务下达时间:2005年12月26日任务完成时间:2005年12月30日指导教师: 指导教师评语一、所得结果:二、存在问题:成绩评阅人一、设计原理 利用C程序设计语言在windows操作系统下模拟实现操作系统的动态分区存储管理的功能。一方面加深对计算机分区存储管理方式的理解,另一方面通过编程提高解决实际问题的能力。二、工作原理 分区管理是把内存划分成若干个大小不
2、等的区域,除操作系统占用了一个区域之外,其余由多道环境下的各并发进程共享。分区管理的基本原理是给每一个内存中的进程划分一块适当大小的存储区,以连续存储各个进程的程序和数据,使各个进程得以并发执行。三、 详细设计(一)、主要系统函数说明1、设计合理的数据结构来描述存储空间1)对于未分配出去的部分,用空闲分区链表来描述。struct freeList int startAddress; /* 分区起始地址 */int size; /* 分区大小 */struct freeList *next; /* 分区链表指针 */2) 对于已经分配出去的部分,由装入内存的作业占据。struct usedLis
3、t int startAddress; /* 分区起始地址 */int jobID; /* 分区中存放作业ID */struct usedList *next; /* 分区链表指针 */3) 作业组织成链表。struct jobListint id; /* 作业ID */int size; /* 作业大小(需要的存储空间大小) */int status; /* 作业状态 0 : new job ,1 : in the memory , 2 : finished . */struct jobList *next; /* 作业链表指针 */将存储空间分为空闲可占用两部分,在usedList中设jo
4、bID而不设size,可以在不增加空间复杂度(与freeList相比)的同时更方便的实现可变分区存储管理。尽管设置jobList增加了空间复杂度,但它的存在,使得该程序可以方便的直接利用D盘中的JOB文件。该文件可以认为是一个和其他进程共享的资源。通过这个文件,其他进程写入数据供读取。2、实现分区存储管理的内存分配功能,选择适应算法。 基本原理分析: 1)Best fit :将空闲分区按大小从小到大排序,从头找到大小合适的分区。2)Worst fit:将空闲分区按大小从大到小排序,从头找到大小合适的分区。3)First fit:将空闲分区按起始地址大小从小到大排序,从头找到大小合适的分区。4)
5、Last fit :将空闲分区按起始地址大小从大到小排序,从头找到大小合适的分区。 可将空闲分区先做合适的排序后用对应的适应算法给作业分配存储空间。排序函数 order( bySize为零则按分区大小排序,否则按分区起始地址;inc为零从小到大排序,否则从大到小排序;通过empty指针返回结果 )。void order(struct freeList *empty,int bySize,int inc)struct freeList *p,*q,*temp;int startAddress,size;for(p = (*empty) - next;p;p = p - next) /* 按byS
6、ize和inc两个参数寻找合适的节点,用temp指向它 */for(temp = q = p;q;q = q - next)switch(bySize)case 0 : switch(inc)case 0:if(q-size size)temp = q;break;default:if(q-size temp-size)temp = q;break; break;default: switch(inc)case 0:if(q-startAddress startAddress)temp = q;break;default:if(q-startAddress temp-startAddress)
7、temp = q;break; break; /* 交换节点的成员值 */ if(temp != p) startAddress = p-startAddress;size = p-size;p-startAddress = temp-startAddress;p-size = temp-size;temp-startAddress = startAddress;temp-size = size;3、实现分区存储管理的内存回收算法void insertFreeNode(struct freeList *empty,int startAddress,int size)插入回收的空节点分区,处理回
8、收分区与空闲分区的四种邻接关系。struct freeList *p,*q,*r; for(p = *empty;p - next;p = p - next) ; /* 处理链表尾部的邻接情况 */if(p = *empty | p - startAddress + p - size next = p - next; /* 插入独立的空闲节点 */p - next = r;return ;if(p - startAddress + p - size = startAddress) /* 与尾部上邻 */p - size += size; /* 合并尾部节点 */return ;q = (*em
9、pty) - next; /* 处理链表首节点的邻接情况 */if(startAddress + size = q - startAddress) /* 与首节点下邻 */q - startAddress = startAddress; /* 合并首节点 */q - size += size;else if(startAddress + size startAddress) /* 与首节点不相邻 */makeFreeNode(&r,startAddress,size);r - next = (*empty) - next;(*empty) - next = r;else /* 处理链表中间的邻
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统原理 1568.动态分区管理系统 操作系统原理课程设计 1568. 动态 分区 管理 系统 操作系统 原理 课程设计
链接地址:https://www.31ppt.com/p-3929962.html