您好,欢迎访问三七文档
操作系统实验指导书李玲娟李刚编写李玲娟审核南京中医药大学信息技术学院2005年10月编者说明软件技术是《操作系统》最重要的计算机系统软件,同时也是计算机科学与技术专业的一门核心专业基础课,其发展极为迅速。学习计算机软件技术,特别是计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。这些原理与技巧可以说是计算机界的前辈们一代接一代不停歇的努力所留下的知识与智慧的结晶,学习和掌握它们对于激发自己的创造力和想象力是很有帮助的。如何学习和掌握操作系统技术的原理与实际技巧呢?除了听课和读书之外,最好的方法就是在实践中练习,通过自己模拟设计操作系统的原理实验,可以培养程序设计的方法和技巧,提高编制和理解清晰、合理、可读性好的系统程序的能力,加深对操作系统课程的理解。使自身更好的掌握操作系统的基本概念、基本原理及基本功能,从而具有分析实际操作系统的基本能力,深入直观的理解操作系统使用的各类算法。《操作系统实验指导书》是针对这门课的实验编写的,书中设计了四个重要的操作系统原理实验,包括进程调度、分区式存储管理、虚拟存储管理和文件管理。四个实验难易层次分明,重点突出,其中实验一(进程调度)和实验二(分区式存储管理)为设计性实验,重在培养理论原理应用于实践的设计能力,而实验三(虚拟存储管理)和实验四(文件管理)为验证性实验,重在验证教材中的理论原理。所有实验共18学时,均采用C语言作为编程语言模拟设计完成相关程序。本书编写中,参考了西安电子科技大学、清华大学的操作系统相关图书资料。本书由信息技术学院副院长李玲娟和应用教研室李刚两位教师编写,由李玲娟副教授审核。南京中医药大学教务处给予了指导和大力帮助,在此表示衷心的感谢!限于编者的水平,难免有疏漏与错误,敬请读者批评指正。李玲娟李刚2005年10月12日目录实验一进程调度.............................................................................................................1实验二分区式存储管理.................................................................................................4实验三虚拟存储管理.....................................................................................................8实验四文件管理...........................................................................................................11南京中医药大学信息技术学院操作系统实验1实验一进程调度实验性质:设计建议学时:6学时实验目的:通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。预习内容:阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。基本实验内容:设计程序模拟进程的轮转法调度过程。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。程序要求如下:1).输出系统中进程的调度次序;2).计算CPU利用率。实现提示:用C语言实现提示:1)程序中进程可用PCB表示,其类型描述如下:structPCB_type{charname;//进程名intstate;//进程状态2——表示“执行”状态1——表示“就绪”状态0——表示“阻塞”状态intcpu_time;//运行需要的CPU时间(需运行的时间片个数)}2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程PCB挂在队列blocked中。队列类型描述如下:structQueueNode{structPCB_typePCB;StructQueueNode*next;}并设全程量:structQueueNode*ready_head=NULL,//ready队列队首指针*ready_tail=NULL,//ready队列队尾指针*blocked_head=NULL,//blocked队列队首指针南京中医药大学信息技术学院操作系统实验2*blocked_tail=NULL;//blocked队列队尾指针3)设计子程序:start_state();//读入假设的数据,设置系统初始状态dispath();//模拟调度calculate();//计算CPU利用率实验要求:1)上机前认真使用C语言编写好程序,采用TurboC作为编译环境;2)上机时独立调试程序3)根据具体实验要求,填写好实验报告(包括思想、源程序、实例运行结果)。测试用数据:n=2m=3t=5ready_headblocked_head南京中医药大学信息技术学院操作系统实验3dispath()算法流程图:/*use_cpu中记录CPU运行时间/*unuse_cpu中记录CPU空闲时间否是是否是否是是否是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南京中医药大学信息技术学院操作系统实验4实验二分区式存储管理实验性质:设计建议学时:6实验目的:通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。预习内容:阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。实验内容:设计程序模拟内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用64K。在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;在t2时间之后,作业C完成;在t3时间之后,作业E请求50K的内存空间;在t4时间之后,作业D完成。要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。实现提示(C语言):1.程序中自由链队列的结点类型可描述如下:structfreelink{intlen,address;/*len为分区长度/*address为分区起始地址structfreelink*next;}内存占用区用链表描述,其结点类型描述如下:structbusylink{charname;/*作业或进程名name=’S’表示OS占用intlen,address;structbusylink*next;}并设全程量:structfreelink*free_head=NULL;//自由链队列(带头结点)队首指针structbusylink*busy_head=NULL,//占用区队列队(带头结点)首指针*busy_tail=NULL;//占用区队列队尾指针2.设计子函数:voidstart(void);/*设置系统初始状态*/{structfreelink*p;structbusylink*q;free_head=(structfreelink*)malloc(sizeof(structfreelink));free_head-next=NULL;//创建自由链头结点busy_head=busy_tail=(structbusylink*)malloc(sizeof(structbusylink));南京中医药大学信息技术学院操作系统实验5busy_head-next=NULL;//创建占用链头结点p=(structfreelink*)malloc(sizeof(structfreelink));p-address=64;p-len=640-64;(OS占用了64K)p-next=NULL;free_head-next=p;q=(structbusylink*)malloc(sizeof(structbusylink));q-name=’S’;/*S表示操作系统占用*/q-len=64;q-address=0;q-next=NULL;busy_head-next=q;busy_tail=q;}voidrequireMemo(charname,intrequire);/*模拟内存分配*/voidfreeMemo(charname);/*模拟内存回收*/voidpast(inttime);/*模拟系统过了time时间*/voidprintlink();/*输出内存空闲情况(自由链的结点)*/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();}实验要求:4)上机前认真使用C语言编写好程序,采用TurboC作为编译环境;5)上机时独立调试程序6)根据具体实验要求,填写好实验报告(包括思想、源程序、实例运行结果)。南京中医药大学信息技术学院操作系统实验6requireMemo(charname,intrequire)流程图如下:否beginfree_head-next-len=requireprintf(“Can’tallocate”)endp=(structbusylink*)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南京中医药大学信息技术学院操作系统实验7freeMemo(charname)流程图如下:否是否是q=pp=p-nextbeginq=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(“%cisnotexist”,name)endw=(structfreelink*)malloc(…);w-len=len;w-address=address;u=free_headv=free_head-nextu=vv=v-nextendu-next=ww-next=v(v!=NULL)&
本文标题:操作系统试验指导书
链接地址:https://www.777doc.com/doc-3402630 .html