1、操作系统实验一黑龙江大学实 验 报 告课程名称计算机操作系统实验项目名称进程控制实验时间(日期及节次)2016年3月28 日 8-10节专业软件工程学生所在学院软件学院年级2014学号姓名指导教师实验室名称实验成绩预习情况操作技术实验报告附加:综合创新能力实验综合成绩教师签字 黑龙江大学教务处实验名称:进程控制实验目的为配合计算机操作系统(第三版)课程的教学,通过在WINDOWS环境下,利用高级语言模拟操作系统的实现。模拟操作系统原理的实现进程控制,能更深刻地领会操作系统工作原理和操作系统实现方法,并提高程序设计能力。1、利用简单的结构和控制方法模拟进程结构、进程状态和进程控制,掌握作为操作系
2、统分配资源的基本单位的进程相关的概念。定义PCB(可以采用静态结构或动态结构),在实验中只需建立PCB,用它代表完整的进程。2、定义进程状态转换方式:进程的状态转换是由进程内部操作或操作系统的控制引起,由于无法实现这些功能,可以采用随机数方法或键盘控制方法模拟,并实现对应的控制程序。随机方法指产生16的随机数,分别代表创建进程、结束进程、进程阻塞、激活进程、调度进程、时间片到等事件;键盘模拟方法指定义6种按键代表以上6种事件。实验类型计算机操作系统课程设计实验环境编程环境:Visual C+ 6.0运行环境:Windows XP主要数据结构及说明利用数据结构的线性表链式存储结构,C+语言描述数
3、据结构算法,先声明个头指针,头结点,利用C+语言函数定义节点,指针来控制变量,利用C+语言函数来,控制每个方法的执行,用数组模拟内存,用数组的地址模拟内存地址,用数组的大小模拟内存进程大小。主要设计思想与算法(流程)通过学习计算机操作系统(第三版)课程,通过在WINDOWS环境下,本次课程设计的主要思想就是利用高级语言C+模拟操作系统的实现。模拟操作系统原理的实现进程控制,能更深刻地领会操作系统工作原理和操作系统实现方法,系统流程图如图所示:代码:#includeusing namespace std;typedef struct Link int data; Link *next;*Link
4、list;void show(Linklist l) Linklist ll=l; while(ll-next) coutnext-datanext; void datashow(int m) if(m=0)cout无endl; else coutmdata=t; s-next=NULL; if(ll-next=NULL) ll-next=s; else while(ll-next!=NULL) ll=ll-next; ll-next=s; void print() cout请选择执行的操作:endl; cout1.创建进程endl; cout2.时间片到endl; cout3.进程阻塞end
5、l; cout4.唤醒进程endl; cout5.结束进程endl;void showall(Linklist l1,Linklist l2,int m) coutendl; cout就绪态为:; show(l1); coutendl; cout执行态为:; datashow(m); cout阻塞态为:; show(l2); coutendl; coutnext=NULL; Linklist l2=new Link; l2-next=NULL; Linklist l11=l1; Linklist la=l2; Linklist lll1=l1; Linklist lll2=l2; showal
6、l(l1,l2,m); print(); cinn; while(true) switch(n) case 1: coutt; tail(l1,t); if(m=0) if(l1-next!=NULL) nn=l1-next-data; l1-next=l1-next-next; m=nn; showall(l1,l2,m); else showall(l1,l2,m); break; case 2: if(m!=0) tail(l1,m); m=0; if(l1-next!=NULL) nn=l1-next-data; l1-next=l1-next-next; m=nn; showall(
7、l1,l2,m); else cout没有正在进行的进程endl; break; case 3: if(m=0) cout没有正在进行的进程next!=NULL) nn=l1-next-data; l1-next=l1-next-next; m=nn; showall(l1,l2,m); break; case 4: if(la-next=NULL) cout没有正在阻塞的进程endl; else coutc; while(la-next-data!=c) la=la-next; tail(l1,la-next-data); la-next=la-next-next; if(m=0) if(l
8、1-next!=NULL) nn=l1-next-data; l1-next=l1-next-next; m=nn; showall(l1,l2,m); else showall(l1,l2,m); break; case 5: coutq; while(lll1-next!=NULL) if(lll1-next-data=q) lll1-next=lll1-next-next; showall(l1,l2,m); break; else lll1=lll1-next; while(lll2-next!=NULL) if(lll2-next-data=q) lll2-next=lll2-next-next; showall(l1,l2,m); break; else lll2=lll2-next; if(m=q) m=0; if(l1-next!=NULL) nn=l1-next-data; l1-next=l1-next-next; m=nn; showall(l1,l2,m); cinn;4、利用函数C+标准输入输出iostream.h头文件、cin标准输入、cout标准输出。实验结果(测试用例、实验结果)实验总结掌握并进一步熟悉操作系统进程的各种状态以及转换。掌握利用高级语言模拟进程的执行,提高了编程设计能力。学会使用最基本C+函数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1