操作系统实验一.docx
- 文档编号:10968280
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:13
- 大小:125.57KB
操作系统实验一.docx
《操作系统实验一.docx》由会员分享,可在线阅读,更多相关《操作系统实验一.docx(13页珍藏版)》请在冰豆网上搜索。
操作系统实验一
黑龙江大学
实验报告
课程名称
计算机操作系统
实验项目名称
进程控制
实验时间
(日期及节次)
2016年3月28日8-10节
专业
软件工程
学生所在学院
软件学院
年级
2014
学号
姓名
指导教师
实验室名称
实验成绩
预习情况
操作技术
实验报告
附加:
综合创新能力
实验
综合成绩
教师签字
黑龙江大学教务处
实验名称:
进程控制
实验目的
为配合《计算机操作系统》(第三版)课程的教学,通过在WINDOWS环境下,利用高级语言模拟操作系统的实现。
模拟操作系统原理的实现进程控制,能更深刻地领会操作系统工作原理和操作系统实现方法,并提高程序设计能力。
1、利用简单的结构和控制方法模拟进程结构、进程状态和进程控制,掌握作为操作系统分配资源的基本单位的进程相关的概念。
定义PCB(可以采用静态结构或动态结构),在实验中只需建立PCB,用它代表完整的进程。
2、定义进程状态转换方式:
进程的状态转换是由进程内部操作或操作系统的控制引起,由于无法实现这些功能,可以采用随机数方法或键盘控制方法模拟,并实现对应的控制程序。
随机方法指产生1-6的随机数,分别代表创建进程、结束进程、进程阻塞、激活进程、调度进程、时间片到等事件;键盘模拟方法指定义6种按键代表以上6种事件。
实验类型
计算机操作系统课程设计
实验环境
编程环境:
VisualC++6.0
运行环境:
WindowsXP
主要数据结构及说明
利用数据结构的线性表链式存储结构,C++语言描述数据结构算法,先声明个头指针,头结点,利用C++语言函数定义节点,指针来控制变量,利用C++语言函数来,控制每个方法的执行,用数组模拟内存,用数组的地址模拟内存地址,用数组的大小模拟内存进程大小。
主要设计思想与算法(流程)
通过学习《计算机操作系统》(第三版)课程,通过在WINDOWS环境下,本次课程设计的主要思想就是利用高级语言C++模拟操作系统的实现。
模拟操作系统原理的实现进程控制,能更深刻地领会操作系统工作原理和操作系统实现方法,系统流程图如图所示:
代码:
#include
usingnamespacestd;
typedefstructLink
{
intdata;
Link*next;
}*Linklist;
voidshow(Linklistl)
{
Linklistll=l;
while(ll->next)
{
cout<
ll=ll->next;
}
}
voiddatashow(intm)
{
if(m==0)cout<<"无"< elsecout< } voidtail(Linklistl,intt) { Linklistll=l; Linklists=newLink; s->data=t; s->next=NULL; if(ll->next==NULL) { ll->next=s; } else { while(ll->next! =NULL) { ll=ll->next; } ll->next=s; } } voidprint() { cout<<"请选择执行的操作: "< cout<<"1.创建进程"< cout<<"2.时间片到"< cout<<"3.进程阻塞"< cout<<"4.唤醒进程"< cout<<"5.结束进程"< } voidshowall(Linklistl1,Linklistl2,intm) { cout< cout<<"就绪态为: "; show(l1); cout< cout<<"执行态为: "; datashow(m); cout<<"阻塞态为: "; show(l2); cout< cout< } voidmain() { intn,t,q,c,nn,m=0,j=0; Linklistl1=newLink; l1->next=NULL; Linklistl2=newLink; l2->next=NULL; Linklistl11=l1; Linklistla=l2; Linklistlll1=l1; Linklistlll2=l2; showall(l1,l2,m); print(); cin>>n; while(true) { switch(n) { case1: { cout<<"请输入进程名(用数字1~9表示): "; cin>>t; 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; } case2: { if(m! =0) { tail(l1,m); m=0; if(l1->next! =NULL) { nn=l1->next->data; l1->next=l1->next->next; m=nn; } showall(l1,l2,m); } else { cout<<"没有正在进行的进程"< } break; } case3: { if(m==0) { cout<<"没有正在进行的进程"< } else { tail(l2,m); m=0; if(l1->next! =NULL) { nn=l1->next->data; l1->next=l1->next->next; m=nn; } showall(l1,l2,m); } break; } case4: { if(la->next==NULL)cout<<"没有正在阻塞的进程"< else { cout<<"请输入要唤醒的进程"; cin>>c; while(la->next->data! =c) la=la->next; tail(l1,la->next->data); la->next=la->next->next; } if(m==0) { if(l1->next! =NULL) { nn=l1->next->data; l1->next=l1->next->next; m=nn; } showall(l1,l2,m); } elseshowall(l1,l2,m); break; } case5: { cout<<"请输入要结束的进程号"; cin>>q; while(lll1->next! =NULL) { if(lll1->next->data==q) { lll1->next=lll1->next->next; showall(l1,l2,m); break; } elselll1=lll1->next; } while(lll2->next! =NULL) { if(lll2->next->data==q) { lll2->next=lll2->next->next; showall(l1,l2,m); break; } elselll2=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); } } } cin>>n; } } 4、利用函数 C++标准输入输出iostream.h头文件、cin>>标准输入、cout<<标准输出。 实验结果(测试用例、实验结果) 实验总结 掌握并进一步熟悉操作系统进程的各种状态以及转换。 掌握利用高级语言模拟进程的执行,提高了编程设计能力。 学会使用最基本C++函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验