[it计算机]操作系统实验进程管理存储器管理设备管理实验代码报告内容摘要:
timeint 的语句。 当 timeint 的返回值为TURE 时,表示时间片到限,进程中止执行,返回主控程序。 调试程序出现的问题及解决的方法 调试程序过程中发现一些问题主要问题如下: 输出内容多,在屏幕上一闪而过,可采用在程序中预先设置断点或将输出信息发送到文件中的方法来处理。 设计体会 计算机操作系统实验指导书 13 操作系统是现代计算机系统工作的基石,而且进行程序离不开操作系统的支持。 本程序完成后对于进程管理有了整体的定义和 理解。 进程:可并发执行的程序,在某个数据集合上的一次运行过程。 而进程控制块是为使程序(含数据)能独立运行,为之配置一进程控制块,即 PCB。 进程有三种基本状态为就绪态( Ready),执行态( Running),阻塞态( Blocked)在程序中还涉及到进程的阻塞与唤醒 ,系统有 3 个进程,执行时涉及到高低就绪态和优先数的选择。 经过本次试验加深了对于进程管理的理解和认识,对于它的执行过程和整体的结构有了一定的了解, 熟悉了进程管理中主要数据结构的设计及进程调度算法,进程控制机构,同步机构,通讯机构的实施。 通过本次实验把理 论知识转化成了实际结果,强化了理论知识的学习把课本知识生动的得到了验证。 对今后从事实验工作打下了坚实的基础。 实验二 存储器管理 一、目的 本课题实验的目的是,使学生实验存储器管理系统的设计方法;加深对所学各种存储器管理方案的了解;要求采用一些常用的存储器分配算法,设计一个存储器管理模拟系统并调试运行。 二、 题目 存储器管理 三、要求及提示 要求采用一种常用的存储器分配算法,设计一个存储器管理模拟系统。 允许进行多次的分配和释放,并可向用户反馈分配和释放情况及当前内存的情况;采用“命令菜单”选择和键盘 命令输入的会话方式,根据输入请求调用分配模块,或回收模块,或内存查询模块,或最终退出系统。 编程实现。 工具: C语言或其它高级语言 实验时间: 3学时 四、实验报告 写出存储器管理的思想。 画出算法流程图和设置的数据结构。 写出调试程序出现的问题及解决的方法。 打印实验报告及程序清单。 报告给出测试的结果。 五、范例 采用可变分区存储器管理方案的模拟系统。 计算机操作系统实验指导书 14 问题描述 该模拟系统的外部特性与真实系统基本一样。 存储分配算法采用首次适应法。 用“拼,接”和“紧凑”技术来处理存储器碎 片。 算法 存储分配算法采用首次适应( FF)法。 根据指针 freep查找自由链,当找到第一块可满足分配请求的空闲区时便分配之。 当某空闲区被分配后的剩余空闲区空间大于规定的碎片最小容量 min 时,则形成一个较小的空闲区留在自由链中。 回收时,根据 MAT 将指定分区链入自由链。 若该分区有前邻或后邻空闲分区,则将他们拼接成一块加大的空闲区。 当某个分配请求不能被满足,但此时系统中所有碎片总量满足分配请求的容量时,系统立即进入内存“紧凑”以消除碎片。 即将各作业占用区集中下移到用户内存区的下部(高地址部分),形成一片连 接的作业区,而在用户内存区的上部形成一块较大的空闲区。 然后再进行分配。 本系统的主要程序模块包括:分配模块 ffallocation,回收模块 ffcolection,紧凑模块coalesce 及命令处理模块 menu。 Menu用以模拟系统的输入,采用“命令菜单”选择和键盘命令输入的会话方式,根据输入请求调用分配模块,或回收模块,或内存查询模块,或最终退出系统。 系统的主流程如图 3 所示。 数据结构 ( 1) 自由链与区头。 内存空闲区采用自由链结构。 链首由 freep 指向,链中各个空闲区按地址递增次序排列。 初启时整个用户内存 区为一个空闲区。 在每个空闲区首部设置一个区头( freearca)结构。 区头信息包括: size 空闲区大小(以字节计),包括区头所占空间; next 前向链指针,指向下一个空闲区; back 反向链指针,指向上一个空闲区; address 本空闲区首地址。 ( 2) 内存分配表 MAT。 系统设置一个 MAT,每个运行作业都在 MAT 中占有一个表目,回收分区时清除相应表目。 表目信息包括: name 用户作业名; length 作业区大小; addr 作业区首地址; 程序清单 include include define TOTAL 5000 define SETADDRESS 2020 define MIN 100 define MAX 10 typedef struct freearea 计算机操作系统实验指导书 15 { int address。 int size。 struct freearea *next。 struct freearea *back。 }*freeptr。 typedef struct mat { char name。 int address。 int length。 struct mat *next。 struct mat *back。 }*jobptr。 char string[10]。 long totalfree。 char jobnumber。 freeptr freep。 jobptr jobp。 /********初始化 **********/ init() { freep=(freeptr)malloc(sizeof(struct freearea))。 freepsize=TOTAL。 freepaddress=SETADDRESS。 freepnext=NULL。 freepback=NULL。 totalfree=TOTAL。 jobp=NULL。 jobnumber=0。 return(0)。 } /******分配模块 *******/ fengpei(int jl,char jn) {freeptr fp。 jobptr jp,jp1,jp2。 jp2=(jobptr)malloc(sizeof(struct mat))。 if(totalfreejl) return(1)。 fp=freep。 计算机操作系统实验指导书 16 while(fp!=NULL) {if(fpsizejl) fp=fpnext。 else {jobnumber=jobnumber+1。 totalfree=totalfreejl。 jp2name=jn。 jp2length=jl。 jp2address=freepaddress。 if(jobp==NULL) { jp2next=NULL。 jp2back=NULL。 jobp=jp2。 } else { jp=jobp。 while(jp!=NULLamp。 amp。 (jp2addressjpaddress)) { jp1=jp。 jp=jpnext。 } jp2next=jp。 if(jp==NULL) { jp2back=jp1。 jp1next=jp2。 } else { jp2back=jpback。 if(jpback!=NULL) jp1next=jp2。 else jobp=jp2。 jpback=jp2。 } } if((fpsizejl)MIN) { if(fpnext!=NULL) fpnextback=fpback。 if(fpback!=NULL) fpbacknext=fpnext。 else freep=fpnext。 /* return()。 */ } else 计算机操作系统实验指导书 17 { fpsize=fpsizejl。 fpaddress=fpaddress+jl。 } return(2)。 } if(totalfree=jl) return(0)。 } } /*********显示模块 *********/ xianshi() {jobptr jp。 /****清屏 ****/ if(jobnumber=0) printf(NO JOB!)。 else { printf(name\t\tlength\t\taddress\n)。 jp=jobp。 while(jp!=NULL) { printf(%c\t\t%d\t\t%d\n,jpname,jplength,jpaddress)。 jp=jpnext。 } } printf(\nthe total left is %d bytes:,totalfree)。 } /******回收模块 ********/ huishou(char jn) { freeptr fp,fp1,fp2。 jobptr jp。 int f=0。 jp=jobp。 while((jp!=NULL)amp。 amp。 (jpname!=jn)) jp=jpnext。 if(jp!=NULL) { 计算机操作系统实验指导书 18 jobnumber=jobnumber1。 totalfree=totalfree+jplength。 if(freep==NULL) { freep=(freeptr)malloc(sizeof(struct freearea))。 freepaddress=jpaddress。 freepsize=jpaddress。 freepnext=NULL。 freepback=NULL。 } else { fp=freep。 while((fp!=NULL)amp。 amp。 (fpaddressjpaddress)) { fp1=fp。 fp=fpnext。 } if(fp!=NULL) { if((fpnext!=NULL)amp。 amp。 (fpnextaddress=jpaddress+jplength)) f=f+1。 if((fpback!=NULL)amp。 amp。 (jpaddress=fp1address+fp1size)) f=f+2。 } else if((jpaddress)=(fp1address+fp1size)) f=f+2。 switch(f) { case 0: { fp2=(freeptr)malloc(sizeof(struct freearea))。 fp2address=jpaddress。 fp2size=jplength。 fp2next=fp。 if(fp!=NULL) { fp2back=fpback。 if(fpback!=NULL) fp1next=fp2。 else freep=fp2。 计算机操作系统实验指导书 19 fpback=fp2。 } else { fp2back=fp1。 fp1next=fp2。 } } case 1: { fpsize=fpsize+jplength。 fpaddress=jpaddress。 } case 2: fp1size=fp1size+jplength。 case 3: { fp1size=fp1size+jplength+fpsize。 fp1next=fpnext。 if(fpnext!=NULL) fpnextback=fp2。 free(fp)。 } } } if(jp==jobp) jobp=jpnext。 if(jpnext!=NULL) jpnextback=jpback。 if(jpback!=NULL) jpback。[it计算机]操作系统实验进程管理存储器管理设备管理实验代码报告
相关推荐
行政事业性收费项目的通知》(财综〔 2020〕 78 号)中“ 有关部门和单位依法履行行政管理职能或核发证照所需要的经费,由同级财政预算予以保障 ” 的规定,主动协调同级财政部门、机构编制部门并取得他们的支持,认真做好取消收费后工程造价(定额)相应工作的经费保障,确 保管理工作正常运转。 江苏省建设工程造价管理办法释义《江苏省建设工程造价管理办法》释义(初稿)第一章 总则本章共 5条
表、情况审核表等。 供地报告包含内容:报告封面、目录、技术说明、勘测定界表 、勘测面积表、勘测定界图、界址成果表、情况审核表等。 ****有限公司 土地勘界作业指导书 程序编号 DYCHZY04 版 本 号 页 次 6/7 26 勘界报告的编写格式参考《土地勘测定界规程 TD/T 1008— 2020》 . 6 检查、验收项目及内容 控制测量 —— 控制测量网的布设和标志埋设是否符合要求。 ——
归全体业主,由物业公司统一管理 ; 归出卖人所有 ; 归出卖人所有 ; 5. 买受人不得乱搭乱建,须服从小区统一规划安排, 地下车库产权为开发商 所有 ; 6. 外窗及阳台不得安装防盗网,如确需安装时,防盗网只能安装在窗扇的内侧。 第十八条 买受人的房屋仅作 住宅 使用,买受人使用期间不得擅自改变该商 品房的建筑主体结构,承重结构和用途。 除本合同及其附件另有规定者外
可以为版本添加一个 wiki页面 (参考 项目版本 ), 用于描述当前版本的一些主要事件。 边栏 路线图页面的右边栏为你提供了以下功能 : o 可以根据需要 , 选择路线图上显示哪些跟踪标签。 o 可以根据需要 , 选择是否显示已经完成的版本 o 所有版本的链接 版本概述 版本概述提供了一个详细的关于当前版本的状态描 述。 包括 : 版本名称 版本完成时间 版本的进度条
接听人: ╳ 小姐 /先生,请您稍等。 (起身走到刘总办公室,轻轻敲门:“打扰了,刘总。 „„处有位姓 ╳ 的小姐 /先生电话找您。 ) (刘总接听电话,完毕) (备注:曾和刘总事先商定,暂定除了开会,任何电话及来访均『学习改变人生 做成功物业管理人。 』 应事先通报) 2) 领导正忙时的电话接听 接听人:您好。 南证大厦管理公司 来电人:您好。 我找刘总。 接听人:小姐 /先生,请问您贵姓。
理程序和时限要求 2)公文处理办法 3)管理员工考核标准 4) 文明礼貌用语及各专业服务语言流程规范 质量记录、表格: 1)员工花名册 2)试用员工登记表 3)聘任(录用)员工登记表 4)员工调动(换岗)通知书 5)离职手续 6)辞退通知书 7)固定资产登记表 二、物业部管理工作 组织机构、人员职责: 1)物业管理部主管职责 2)物业管理部管理人员职责 3)接待人员工作职责 规章制度、规定: