操作系统指导书(新大纲2006).doc_第1页
操作系统指导书(新大纲2006).doc_第2页
操作系统指导书(新大纲2006).doc_第3页
操作系统指导书(新大纲2006).doc_第4页
操作系统指导书(新大纲2006).doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实验指导书操作系统实验(指导书)本课程实验共有五个20学时,是提供给大学四年制本科学生学习计算机操作系统时使用的,其主要目的是为了让学生能够更好的学习操作系统这门课程,并且通过实验使学生们能够更好的理解计算机操作系统所要做的工作及其所做动作的原理。在这里特别要指出的是,在做实验的时候,一定要仔细、认真。尤其是在每次做实验之前一定要将本次实验的内容认真的理解清楚,并且要做相应足够的准备工作。否则是没有一点效果的。实验要求:1、在做本实验之前要先阅读完总体的预备知识以及本实验相关的基础知识。2、本实验要求自己独立的完成,不允许抄袭别人的实验结果。3、在编写和调试过程中出现的问题最好做一下记录。4、在实验程序调试完成后,提交给实验教师检查,并由老师给予相应的成绩。5、实验完成后,要上交实验报告,并附源程序。 注:操作系统实验报告格式 实验报告格式 1、姓名 班级 学号 2、实验名称 3、实验目的 4、实验要求 5、实验内容(这个是实验报告的主要部分) 6、实验总结(实验心得) 7、实验报告人 报告时间实验一 进程创建与控制一、实验目的 1、为了更好的配合操作系统有关进程管理章节的教学 2、加深和巩固学生对于进程概念的理解,明确进程和程序的区别。二、实验内容1、 编写程序可以模拟实现对进程的创建,对进程控制块进行初始化并输出相应变量的值。三、实验要求实验课时2学时。要求完成其中至少一个程序。四、运行结果五、参考程序#include stdio.h#define running 1 /*用running 表示进程处于运行态*/#define aready 2 /*用aready表示进程处于就绪态*/#define blocking 3 /*用blocking表示进程处于等待态*/#define sometime 5 /*用sometime 表示时间片大小*/#define n 10 /* 假定系统允许进程个数为10 */structint name; /*进程标识符*/int status; /*进程状态*/int ax, bx, cx,dx; /*进程现场信息,通用寄存器内容*/int pc; /*进程现场信息,程序计数器内容*/int psw; /*进程现场信息,程序状态字寄存器内容*/int next; /*下一个进程控制块的位置*/pcbarean; /*定义模拟进程控制块区域的数组*/int PSW,AX,BX,CX,DX,PC,TIME; /*模拟寄存器*/int run; /*定义指向正在运行进程的进程控制块的指针*/structint head;int tail;ready; /*定义指向就绪队列的头指针head和尾指针tail*/int block; /*定义指向等待队列的指针*/int pfree; /*定义指向空闲进程控制块队列的指针*/ sheduling( )/*进程调度函数*/int i;if (ready.head=-1) /*空闲进程控制块队列为空,退出*/printf(无就绪进程n); i=ready.head; /*就绪队列头指针赋给i*/ready.head=pcbareaready.head.next;/*就绪队列头指针后移*/if(ready.head=-1)ready.tail=-1;/*就绪队列为空,修正尾指针ready.tail*/pcbareai.status=running;/*修改进程控制块状态*/TIME=sometime; /*设置相对时钟寄存器*/*恢复该进程现场信息:*/run=i;AX=pcbarearun.ax;BX=pcbarearun.bx;CX=pcbarearun.cx;DX=pcbarearun.dx;PC=pcbarearun.pc;PSW=pcbarearun.psw;/*修改指向运行进程的指针*/ return 0;/*进程调度函数结束*/create( int x)/*创建进程*/int i;if(pfree =-1) /*空闲进程控制块队列为空*/printf(无空闲进程控制块,进程创建失败n);i=pfree;/*取空闲进程控制块队列的第一个*/pfree=pcbareapfree.next;/*pfree后移*/*填写该进程控制块内容:*/=x;pcbareai.status=aready;pcbareai.ax=x;pcbareai.bx=x;pcbareai.cx=x;pcbareai.dx=x;pcbareai.pc=x;pcbareai.psw=x;if(ready.head!=-1)/*就绪队列不空时,挂入就绪队列方式*/pcbareaready.tail.next=i;ready.tail=i;pcbareaready.tail.next=-1; else/*就绪队列空时,挂入就绪队列方式:*/ready.head=i;ready.tail=i;pcbareaready.tail.next=-1; return 0; /*进程创建函数结束*/void main( )/*系统初始化*/int num, j;run=ready.head=ready.tail=block=-1;pfree=0;for(j=0;j0)create(num);scanf(%d,&num);while(ready.head=0)sheduling( );if(run!=-1)printf(进程名 进程状态 寄存器内容:ax bx cx dx pc psw:n);printf(%4d%10d %3d%3d%3d%3d%3d%3dn,,pcbarearun.status,pcbarearun.ax,pcbarearun.bx,pcbarearun.cx,pcbarearun.dx,pcbarearun.pc, pcbarearun.psw);/*main( )结束*/实验二 进程调度算法的实现一、实验目的 1、为了更好的配合操作系统有关进程调度章节的教学。 2、加深和巩固学生对于进程调度的了解和掌握。 3、使学生通过本实验能够初步的了解和掌握进程调度的整个过程及常用算法。 4、提高学生的上机和编程过程中处理具体问题的能力二、实验内容1、学习进程调度的基本方法。2、学习时间片轮转调度算法、先来先服务算法、最短作业优先算法。3、计算出不同时间片是多进程调度的完成时间、周转时间。给定进程A,B,C,D,E,每个进程的运转时间4,3,4,2,4,每个进程的到达时间1,2,3,4,5;(1) 进行时间片轮转调度算法的模拟;(2) 时间片q=1,轮转调度算法的模拟并计算周转时间、平均周转时间、带权周转时间。(3) 时间片q=4,轮转调度算法的模拟并计算周转时间、平均周转时间、带权周转时间。4、按照一定的算法选取进程;(1) 5个进程各自运行所需要的时间及存储空间,即A,B,C,D,E,每个进程的运转时间4,3,5,2,4,每个进程的到达时间0,1,2,3,4;(2) 进行进程调度算法的模拟;(3) 按的原则进行调度;根据运行情况计算周转时间、平均周转时间、带权周转时间。(4) 按的原则进行调度;根据运行情况计算周转时间、平均周转时间、带权周转时间。5、画出调度图或表。三、实验要求实验课时2学时。要求画出进程调度图或表,并比较算法的性能,算法至少编写完成先来先服务。四、运行结果1先来先服务算法2短作业优先五、参考程序先来先服务算法程序:/结束输入使用# # # ,没有进行异常处理#includeclass pcbpublic:char name;int cometime;int runtime; ;void main() pcb p10;int workstart10;int workend10;int i=0;char n;int c;int r; int j;cout请输入进程i的名字,进程的到达时间,进程的运行时间:ncr;while(n!=#) =n;etime=c;pi.runtime=r; if(i=0) workstarti=etime; workendi=pi.runtime+etime; else if(etime=workendi-1) workstarti=etime ; workendi=pi.runtime+etime; else workstarti=workendi-1; workendi=workendi-1+pi.runtime ; i+; cout请输入进程i的名字,进程的到达时间,进程的运行时间:ncr; cout先来先服务的调度顺序为:endl;for(j=0;ji;j+)cout进程名: 开始时间:workstartj 完成时间workendjendl;实验三 存储器管理一、实验目的 1、为了更好的配合操作系统有关存储器管理章节的教学。 2、加深和巩固学生对动态分区存储管理方式的了解和掌握。3、提高学生的上机和编程过程中处理具体问题的能力。二、实验内容设计一个模拟存储器管理程序,该程序可完成对存储空间的管理,具有动态分配内存,回收内存,以及拼接存储空间的功能。已知:内存空间共有10000个存储单元,实现动态分区分配。在实现可变分区分配存储管理方式时,要解决以下问题。1、分区分配中所用到的数据结构。空闲分区表,空闲分区链。2、分区分配算法。首次适应算法,循环首次适应算法,最佳适应算法。3、分区的分配与回收操作。分配的流程。P142回收的流程。4、回收后空闲空间的拼接。三、实验要求实验课时4学时。要求至少选用一种分配算法,完成分区的分配与回收,并在实验报告上画出测试数据的分配与回收情况图。回收后空闲空间的拼接可视课时的多少选作。要求输出内存使用情况和空闲情况。内存情况输出的格式为:num address status sizenum内存分区号address该分区的首地址status如果已分配为1,空闲为0size分区长度也可以做出窗口界面,演示分配回收的过程。四、运行界面五、参考程序首次适应算法:源程序:#include#define null 0#define begin 0#define v 10000#define k 100#define x 100struct tt struct tt *front,*next; long addr; long cd; int s; ;struct tt ax,*f,*c,*n,*head,*q; long result,temp,longc,u_size; int i,f0,choice,j,f1;fenpei() c=head; result=-1; while ( (c!=null) & (result=-1) ) longc=c-cd; if (longcs=1) ) c=c-next; else longc=longc-u_size; if (longcs=1; result=c-addr; else f=c; q=head; while (q-cd!=0) q+; c=q; n=f-next; if (n!=null) n-front=c; c-front=f; c-next=f-next; c-addr=f-addr+u_size; c-cd=f-cd-u_size; c-s=0; f-cd=u_size; f-s=1; f-next=c; result=f-addr; huishou() c=head; f0=0; while ( (c!=null) & (f0=0) ) if (c-addr=temp)&(c-addr!=0) f0+; else c=c-next; if (c!=null) f=c-front; if (f-s=0) n=c-next; if (n!=null) n-front=f; f-cd=f-cd+c-cd; f-next=c-next; c-cd=0; c=f; n=c-next; if (n!=null) & (n-s=0) f=n-next; if (f!=null) f-front=c; c-cd=c-cd+n-cd; c-next=n-next; n-cd=0; c-s=0; printf(huishou successn); printf(n); if (f0=0) printf(address errorn); printf(n); pinjie() c=head; f1=0; while (f1=0) while (c-s=1) c=c-next; f=c-front; n=c-next; if (n=null) f1+; while (n!=null)&(n-s=1) n=n-next; if (n!=null) f-next=c-next; c-next-front=f; f=f-next; while (f!=n) f-addr-=c-cd; f=f-next; n-addr-=c-cd; n-cd+=c-cd; c-cd=0; c=n; else f1+; main() for(i=0; ifront=head; head-next=null; head-addr=begin; head-cd=v; head-s=0;printf(if first use,please choice 0n);printf(and the first will be used to system,cant huishoun);printf(n);for(j=0;jaddr); printf(%d, %dn,c-s,c-cd); c=c-next; i+; printf(n); printf(n);实验四 文件管理一、实验目的 1、为了更好的配合操作系统有关各章节的教学 2、加深和巩固学生对于操作系统的了解和掌握3、提高学生的上机和编程过程中处理具体问题的能力二、实验内容使用位示图实现文件存储空间管理:分配盘块、回收盘块、盘块一致性检查。初始化位示图后,按需要分配盘块、回收盘块并完成盘块一致性检查。分别调用盘块分配函数,盘块回收函数,盘块一致性检查函数并打印显示分配情况。盘块一致性检查可选作。三、运行结果四、源程序指导#include#include #include#define max 6#define N max*maxstruct blockint blocknumber;int indexblock100;block100;struct file char name10;int length;file100;int bitvectormaxmax;int fatN+1;int m=0;void allocate(struct file f) /文件分配filem=f;int k=0,l=0;for(int i=0;imax;i+)for(int j=0;jmax;j+)if(bitvectorij=0&kfilem.length)bitvectorij=1;blockm.indexblockl=i*max+j+1;fati*max+j+1=1;l+;k+;else if(bitvectorij=0&k=filem.length)bitvectorij=1;blockm.blocknumber=i*max+j+1;fati*max+j+1=1;k+;m+;void free(struct file f) ; /空闲块的回收void printcontents(); /显示文件内void main()cout1.对已分配盘块采用索引方式管理endl2.空闲盘块采用位示图管理endl3.实现分配,回收endl;for(int i=0;i100;i+)filei.length=0;/所有文件初始化for(i=0;iN;i+)fatN=0; cout初始化位示图.endlendl;for( i=0;imax;i+)for(int j=0;jmax;j+)bitvectorij=0;printbitvector();int temp;while(1)cout1.创建文件endl2.删除文件endl3.显示位示图endl4.显示目录endl5.退出系统temp;struct file f;if(temp=1)cout请输入文件名:;cout请输入文件长度:f.length;int n=0; for(int i=0;imax;i+)for(int j=0;j=f.length+1)allocate(f);else cout磁盘空间不足,分配失败endl;else if(temp=2)cout请输入文件名:;free(f);else if(temp=3)printbitvector();else if(temp=4)printcontents();elseexit(0);实验五 设备的分配与回收一、实验目的 1、为了更好的配合操作系统有关设备管理章节的教学。 2、加深和巩固学生对设备管理方式的了解和掌握。3、提高学生的上机和编程过程中处理具体问题的能力。二、实验内容 已知:进程i的四个属性,状态(0等待,1正在进行,2程序结束。)所用设备(0,1,2,3),总时间(1,2.),剩余时间(1,2.)。请求使用的控制器cr有两个,通道ch有两个,状态0为空闲,1为忙。初始状态都为0。按设备分配与回收算法,进行管理,并打印当前进程属性列表。三、运行结果四、源程序指导#include static int q1006; /*qi4进程i的四个属性,状态(0等待,1正在进行,2程序结束。) 所用设备(0,1,2,3),总时间(1,2.),剩余时间(1,2.), 用的控制器cr和通道ch*/static int a4; /*a0,a1,a2,a3指示设备0,1,2,3的状态, 0为空闲,1为忙。初始状态都为0*/static int cr3,ch3; /*cr1,cr2为两个控制器1,2的状态,ch1,ch2为两个通道1,2的状态 0为空闲,1为忙。初始状态为0*/int p; /*p为当前进程*/void main() int i,b1,b2; /*bi为各次判断所用变量*/ p=-1; /*初始为-1,从进程0开始*/start:printf(是否有新的进程请求?1(yes) or 0(no) n);scanf(%d,&b1);if(b1=1) p=p+1;/*从进程0开始*/ printf(请输入进程 %d 的请求设备(0,1,2 or 3)和执行时间n,p); scanf(%d %d,&qp1,&qp2); /*读入进程p的各属性*/ qp3=qp2; /*开始时剩余时间等于执行时间*/if(qp1=0) /*判断所需设备*/if(a0=0) /*如果设备0的状态为空闲才能为其分配, 才能进行控制器和通道的分配*/ allot(); /*调用分配函数*/else if(qp1=1) if(a1=0) allot();else if(qp1=2)if(a2=0) allot();else if(qp1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论