




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统实验指导书 徐军利 编写武汉工业学院 计算机与信息工程系2009年8月实验一 进程管理1目的和要求通过实验理解进程的概念,进程的组成(PCB结构),进程的并发执行和操作系统进行进程管理的相关原语(主要是进程的创建、执行、撤消)。2实验内容用C语言编程模拟进程管理,至少要有:创建新的进程;查看运行进程;换出某个进程;杀死运行进程以及进程之间通信等功能。3实验环境Windows操作系统、VC+6.0C语言4实验提示PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程所占用的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删。主体程序 #include conio.h#include stdio.h#include stdlib.hstruct PCB_type int pid; int priority; int cputime; ;struct PCB_type neicun20;int shumu=0,pid_l;main() int n,m,i; char a; n=1; while(n=1) clrscr();printf(n*);printf(n* 进程演示系统 *);printf(n*);printf(n 1.创建新的进程 2.查看运行进程 );printf(n 3.换出某个进程 4.杀死运行进程 );printf(n 5.进程之间通信 6.退出系统 );printf(n*);printf(n请选择(16));a=getchar(); switch(a) case1: create( ); break; case2: run( ); /* 自定义过程 */ break; case3: huanchu(); /*自定义过程*/ break; case4: kill( ); break; case5: tongxun( ); /*自定义过程*/ break; case6: exit(0); default: n=0; create( ) /* 创建一个进程的示例(不完整的程序) */ if(shumu=20) printf(n内存已满,请先结束或换出进程n); else printf(n请输入新进程的pidn); scanf(%d,&neicunshumu-1.pid); printf(n请输入新进程的优先级n); scanf(%d,&neicunshumu-1.youxian); printf(n请输入新进程的大小n); scanf(%d,&neicunshumu-1.daxiao); shumu+; 5实验运行结果* 进程演示系统 * 1.创建新的进程 2.查看运行进程 3.换出某个进程 4.杀死运行进程 5.进程之间通信 6.退出系统 *请选择(16)然后根据你选择的不同,出现不同的结果。6. 实验要求:1) 上机前认真使用C语言编写好程序,采用Visual C+6.0作为编译环境;2) 上机时独立调试程序3) 根据具体实验要求,填写好实验报告(包括目的和要求、实验内容、实验环境、设计思想、源程序、实例运行结果、总结)。实验二 进程调度1目的和要求通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。2实验内容阅读教材计算机操作系统第二章和第三章,掌握进程管理及调度相关概念和原理。编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。程序要求如下:1)输出系统中进程的调度次序;2)计算CPU利用率。3实验环境Windows操作系统、VC+6.0C语言4实验提示用C语言实现提示:1) 程序中进程可用PCB表示,其类型描述如下: struct PCB_type int pid ; /进程名int state ; /进程状态 2表示“执行”状态 1表示“就绪”状态 0表示“阻塞”状态 int cpu_time ; /运行需要的CPU时间(需运行的时间片个数) 2) 设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程PCB挂在队列blocked中。 队列类型描述如下: struct QueueNode struct PCB_type PCB; Struct QueueNode *next;并设全程量:struct QueueNode *ready_head=NULL, /ready队列队首指针*ready_tail=NULL , /ready队列队尾指针*blocked_head=NULL, /blocked队列队首指针*blocked_tail=NULL; /blocked队列队尾指针3)设计子程序: start_state(); /读入假设的数据,设置系统初始状态dispath(); /模拟调度 calculate(); /计算CPU利用率5. 实验要求:1) 上机前认真使用C语言编写好程序,采用Visual C+6.0作为编译环境;2) 上机时独立调试程序3) 根据具体实验要求,填写好实验报告(包括目的和要求、实验内容、实验环境、设计思想、源程序、实例运行结果、总结)。4) 测试用数据: n=2 m=3 t=5 ready_head blocked_headdispath()算法流程图:unuse_cpu+x+x=tblocked队首进程入ready队列队尾;x=0beginuse_cpu=0x=0unuse_cpu=0ready队列不空或blocked队列不空ready队列不空p 取ready队首元素p-PCB.state置“运行”输出p-PCB.namep-PCB.cpu_time-use_cpu+p-PCB.cpu_time0p入ready队列队尾释放pend /*use_cpu中记录CPU 运行时间 /*unuse_cpu中记录CPU空闲时间 否 是是 否 是 否 是 是否是实验三 可变分区存储管理1目的和要求通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。2实验内容阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。编写程序模拟实现内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用64K。在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;在t2时间之后,作业C完成;在t3时间之后,作业E请求50K的内存空间;在t4时间之后,作业D完成。要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。3实验环境Windows操作系统、VC+6.0C语言4实验提示用C语言实现提示:1.程序中自由链队列的结点类型可描述如下: struct freelinkint len, address; /* len为分区长度 /* address为分区起始地址 struct freelink *next; 内存占用区用链表描述,其结点类型描述如下: struct busylinkchar name; /* 作业或进程名 name=S 表示OS占用int len , address;struct busylink *next; 并设全程量:struct freelink *free_head=NULL; /自由链队列(带头结点)队首指针 struct busylink *busy_head=NULL, /占用区队列队(带头结点)首指针 *busy_tail=NULL; /占用区队列队尾指针2.设计子函数: void start(void); /* 设置系统初始状态*/ struct freelink * p; struct busylink *q; free_head=(struct freelink*)malloc(sizeof(struct freelink); free_head-next=NULL; / 创建自由链头结点busy_head=busy_tail=(struct busylink*)malloc(sizeof(struct busylink); busy_head-next=NULL; / 创建占用链头结点 p=( struct freelink *)malloc(sizeof(struct freelink); p-address=64; p-len=640-64; (OS占用了64K) p-next=NULL; free_head-next=p; q=( struct busylink *)malloc(sizeof(struct busylink); q-name=S; /* S表示操作系统占用 */ q-len=64; q-address=0; q-next=NULL; busy_head-next=q; busy_tail=q; void requireMemo(char name, int require); /*模拟内存分配*/ void freeMemo(char name); /* 模拟内存回收*/ void past(int time); /* 模拟系统过了time 时间*/ void printlink(); /* 输出内存空闲情况(自由链的结点) */ 3.设计主函数:main() start(); past(t1); requireMemo(A,8); requireMemo(B,16); requireMemo(C,64); requireMemo(D,124); printlink(); past(t2); freeMemo(C); printlink(); past(t3); requireMemo(E,50); printlink(); freeMemo(D ); printlink();5. 实验要求:1) 上机前认真使用C语言编写好程序,采用Visual C+6.0作为编译环境;2) 上机时独立调试程序3) 根据具体实验要求,填写好实验报告(包括目的和要求、实验内容、实验环境、设计思想、源程序、实例运行结果、总结)。requireMemo(char name, int require)流程图如下:beginfree_head-next-len=requireprintf(“Cant allocate”)endp=(struct busylink*)malloc();p-name=name;p-address=free_head-next-address;p-len=require; p-next=NULLbusy_tail-next=p;busy_tail=p;w=free_head-next;free_head-next=w-next;w-len=requirew-address=w-address+require;w-len=w-len-require;u=free_head;v=free_head-next;(v!=NULL)&v-lenw-lenu=vv=v-nextu-next=ww-next=vfree(w)endbusy-head=pbusy_tail=p 否 freeMemo(char name)流程图如下:beginq=busy_headp= busy_head-next(p!=NULL)&(p-name!=name)p=NULLif (p=busy_tail) busy_tail=q;q-next=p-next;len=p-len;address=p-address;free(p)printf(“%c is not exist”,name)endw=( struct freelink*) malloc();w-len=len;w-address=address;u=free_headv=free_head-nextu=vv=v-nextendu-next=ww-next=v q=pp=p-next 否 是 (v!=NULL)&(v-len len) 否 是实验四 页式虚拟存储管理页面置换算法1目的和要求存储管理的主要功能之一是合理的分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是:通过编写和调试请求页式存储管理中页面置换算法的模拟程序以加深对存储管理方案的理解,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换方法。2实验内容阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。编写程序模拟实现页式虚拟存储管理的最佳页面置换算法。前提:(1)页面分配采用固定分配局部置换。(2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以从文件读入。(3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。 3实验环境Windows操作系统、VC+6.0C语言4实验提示(1)数据结构要模拟实现某一个置换算法,有如下一些对象需要用相关的数据结构来描述:l 作业的页面走向(执行过程中对页面的访问顺序)。可以用数组也可以用字符串。如果用数组,则页面走向的长度受数组长度限制,如果用字符串,则需要将字符串进行解析,将字符串经过解析处理后变成一个页面的排列顺序。考虑最佳置换算法(“向前看”)和其他置换算法(“向后看“)的特点。l 页框(作业分得的物理块)。由于作业分得的物理块数在置换算法执行之前已经确定,可以用一些比较简单的数据结构实现。在综合置换算法的原理,可以灵活采用相应的数据结构(如队列、数组、堆栈),尽可能使程序的时间复杂度最低。采用不同的数据结构还要配合在数据结构上的相应操作才行。 (2)功能模块划分 大体上可以将整个程序的模块划分成如下几个部分:1)主模块:主要是初始化、界面和模块调用。2)页面走向输入模块。(从键盘读入数据结构或将页面走向写入文件)3)置换算法模块。 * 判断模块。决定换出哪一块。每一种置换算法对应一种判断算法。* 调整模块。根据判断模块的结果,调整作业分得物理块集合中逻辑页面的情况。 * 置换过程输出模块(在显示器上显示或写入文件)。该模块每发生一次置换,由置换算法模块调用一次。*.除此之外,有些反复执行的操作考虑用过程或函数实现。总而言之,整个程序应该结构清晰,界面友好,可读性好,易调试,易扩充,易维护。 5. 实验要求:1) 上机前认真使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025安徽合肥长虹美菱生活电器有限公司招聘技术支持岗位模拟试卷附答案详解(模拟题)
- 2025年河南省职工医院-国际口腔中心招聘18人模拟试卷及答案详解(各地真题)
- 2025广东惠州市惠城区招聘公办义务教育学校硕博教育人才30人(第二批)模拟试卷及答案详解(必刷)
- 张家口市中医院输血检验师资格认证
- 2025内蒙古通辽经济技术开发区事业单位急需紧缺人才引进26人模拟试卷及一套参考答案详解
- 2025人民医院术后快速康复护理考核
- 秦皇岛市人民医院腹部超声医师资格认证
- 2025湖南邵阳市湘中幼儿师范高等专科学校招聘24人模拟试卷及答案详解(有一套)
- 上海市中医院皮肤软组织感染诊疗考核
- 天津市人民医院凝血功能评估考核
- 急性重症胰腺炎个案护理
- 生物医药强国战略研究
- 舒适护理:床上擦浴
- 浙江金华市中心医院医疗集团(医学中心)招聘工作人员(2022年第一批)笔试备考题库及答案解析
- GB/T 23985-2009色漆和清漆挥发性有机化合物(VOC)含量的测定差值法
- 卓乐对刀仪说明书
- 拆房协议书模板
- 《斐波那契数列》课件
- 带式电磁除铁器检修作业指导书
- 生命体征测量操作流程及评分标准
- 部编版道德与法治小学四年级上册同步配套教案(全册)
评论
0/150
提交评论