操作系统实验一.docx

上传人:b****8 文档编号:10968280 上传时间:2023-02-24 格式:DOCX 页数:13 大小:125.57KB
下载 相关 举报
操作系统实验一.docx_第1页
第1页 / 共13页
操作系统实验一.docx_第2页
第2页 / 共13页
操作系统实验一.docx_第3页
第3页 / 共13页
操作系统实验一.docx_第4页
第4页 / 共13页
操作系统实验一.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

操作系统实验一.docx

《操作系统实验一.docx》由会员分享,可在线阅读,更多相关《操作系统实验一.docx(13页珍藏版)》请在冰豆网上搜索。

操作系统实验一.docx

操作系统实验一

黑龙江大学

实验报告

课程名称

计算机操作系统

实验项目名称

进程控制

实验时间

(日期及节次)

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<next->data<<"";

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++函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1