操作系统实验报告格式春季Word文档下载推荐.docx
- 文档编号:6068462
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:23
- 大小:180.12KB
操作系统实验报告格式春季Word文档下载推荐.docx
《操作系统实验报告格式春季Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告格式春季Word文档下载推荐.docx(23页珍藏版)》请在冰点文库上搜索。
;
cin>
>
i;
请输入进程的个数:
n;
请输入当前时刻资源的分配情况:
Yhj*head=NULL,*p;
while(t<
=n)
{cout<
第"
t++<
号进程占用资:
Yhj*q=(Yhj*)malloc(sizeof(Yhj));
q->
i=t-1;
finish=false;
setw(11)<
Allocation:
for(intj=0;
j<
j++)
{cout<
setw(10)<
(char)('
A'
+j)<
:
q->
allocation[j];
}
Need:
need[j];
}
if(head==NULL)
Available:
available[j];
{head=q;
p=head;
else
{p->
next=q;
p=q;
next=NULL;
Yhj*q=head,*t0;
inta[10];
a[j]=head->
while(q!
=NULL)
{Yhj*t;
while(p!
{intflag=1;
if(p->
need[j]>
a[j])
{flag=0;
break;
if(flag==1)
{for(intj=0;
work[j]=a[j];
p->
wa[j]=p->
work[j]+p->
a[j]=p->
wa[j];
finish=true;
else
{t=p;
p=p->
next;
if(p!
{if(p==q)
{t0=q;
q=q->
continue;
{t->
next=p->
if(q==head)
{head=p;
t0=p;
{t0->
next=p;
t0=t0->
elseif(p==NULL)
这些进程不可以安全地执行!
Output(head,i);
=NULL)
这些进程可以安全执行!
endl<
它们执行的顺序为:
p->
i-1<
号进程"
--->
完成"
三、调试与运行:
输入资源相关数据:
运行结果:
四、总结:
1、本程序的优点和不足之处
程序能使保证系统时时刻刻处于安全状态,但需要不断检测每个进程对各类资源的占用和申请情况,需花费较多的时间并且同样的进程输入本可以有多种安全执行的情形,但是它只能找到一种。
。
2、心得体会
通过本次银行家算法实验,加深了我对它的了解,实验中遇到点难题,通过查阅资料,请教同学顺利解决,通过这次实践,使我的理论知识更加牢固。
实验
(二)
页面置换算法
在地址映射过程中,当发生缺页中断时操作系统必须使用相应的算法来进行页面置换,要求编程实现。
包括最佳置换算法(OPT),(先进现出置换算法(FIFO),最近最久未使用(LRU)算法。
a、最佳置换算法。
其所选择的页面是以后永不使用的或许是最长(末来)时间内不再被访问的页面
b、先进先出算法。
选择在内存中驻留时间最久的页面予淘汰.
c、最近最久未使用算法。
即选择最近最久未使用的页面予以淘汰.
#definemonumber4//四个存储块
intpage[20];
//20个页面
intmemory[monumber];
inthuanchu[20];
intqyzhcs=0;
//缺页置换次数
doubleqyrate;
//缺页率
voidOptimal()//最佳置换算法
{cout<
WelcometoselectOptimal!
inti=0,j,k=0;
for(j=0;
20;
++j)
{if(i<
monumber){
memory[i]=page[j];
++i;
++qyzhcs;
else{
inta=0;
while(memory[a]!
=page[j]&
&
a<
4)++a;
if(a<
4)continue;
存储内存块中的页号在下一次使用的位置:
intb[4];
inth=j;
while(page[h]!
=memory[0]&
h<
20)++h;
(b[0]=h)<
"
h=j;
=memory[1]&
(b[1]=h)<
=memory[2]&
(b[2]=h)<
=memory[3]&
(b[3]=h)<
intmax_x=0,max=b[0];
for(intc=0;
c<
4;
++c)
if(b[c]>
max)
{max=b[c];
max_x=c;
}
huanchu[k]=memory[max_x];
memory[max_x]=page[j];
++k;
}}}
qyrate=qyzhcs/20.0;
huanchu[k]='
\0'
voidFIFO()//先进先出算法
{intm=1;
WelcometoselectFIFO!
}
else{inta=0;
4)++a;
{if(m%3==0)cout<
{
四个内存块内容:
;
huanchu[k]=memory[0];
(memory[0]=memory[1]);
(memory[1]=memory[2]);
(memory[2]=memory[monumber-1]);
(memory[monumber-1]=page[j])<
++m;
voidLRU()//LRU算法
welcometoselectLRU!
inti=0,j,k=0;
monumber)//如果内存还有空间,直接将页号放入内存
{memory[i]=page[j];
{inttemp;
4)/*该页已在内存中*/
{temp=memory[a];
for(a;
monumber-1;
++a)
memory[a]=memory[a+1];
memory[monumber]=temp;
}++m;
FIFO算法:
Optimal算法:
LRU算法:
三种页面置换算法FIFO,LRU,OPT,理解起来容易,但在实际实现的时候要注意各种细节,要细心.实际编程中遇到一些细节上的小问题确实要仔细考虑才行.
实验(三)
动态重定位分区分配算法
为了将内存中的空间运用充分,特别利用动态重定位算法对内存中的碎片进行拼接,用以放入适合大小的进程。
建立一个空闲闲分区表,用于存储内存的数据信息,每个表项对应一块空闲内存的信息,程序通过查找表中的数据去寻找是否有适合当前进程的空间(利用首次适应算法),当没有找到时将对内存进行整理,即将数据往前移动,最后只剩下一快空间,再查看是否满足当前进程式的分配,如果可以则分配,否则进程放入等待队列中。
constintMAX=1000;
//空表的表项最大值
constintMAX1=2048;
//内存的字节数
typedefclassmemoryroom{
private:
boolisfull;
//这个字节是否可用
charbyte[9];
//这个字节存放的数据
}MEMORY;
//分区表的数据结构!
typedefclasstable{
boolisuse;
//该表项是否可用
intstartaddress;
//在内存中的起始地址
intsize;
//连续的大小
}TABLE;
/*在空分区中查找合适的内存空间*/
boolprocInputMemory(TABLE*mt,intprocsize,MROOM*memory)
{inti;
\n正在空分区中查找合适的内存空间(按首次适应算法寻找)"
for(i=0;
i<
MAX;
i++)
if(mt[i].getIsUse()&
mt[i].getSize()>
=procsize)
\n调入内成功"
\n\n该进程在内存的"
mt[i].getStartAddress()<
起始处"
//内存设为被占用
for(intj=mt[i].getStartAddress();
mt[i].getStartAddress()+mt[i].getSize();
memory[j].setIsNotFull(true);
//修改分区表
if(procsize<
mt[i].getSize())
{mt[i].setSize(mt[i].getSize()-procsize);
mt[i].setStartAddress(mt[i].getStartAddress()+procsize);
if(procsize==mt[i].getSize())
mt[i].setIsUse(false);
returntrue;
if(i==MAX)
returnfalse;
////////////////////////////////
/*对内存的碎片整理和对表项的改变*/
voidmemoryRepeat(MROOM*memory,TABLE*em)
{inti,j,size,address;
size=0;
j=0;
{if(!
memory[i].getIsNotFull())
size+=1;
{memory[i].setIsNotFull(false);
memory[j].setByte(memory[i].getByte());
j++;
em[0].setIsUse(true);
em[0].setSize(size);
em[0].setStartAddress(size);
for(i=1;
{
em[i].setIsUse(false);
em[i].setSize(0);
em[i].setStartAddress(0);
初使化过程:
数据的调入,及它所在的内存位置:
当内存不足时,对内存进行整理的过程:
程序实现简单,通熟易懂,结构明了,但是分区表为一个组,这一点对空间有些浪费,且程序中不能对进程进行保留,也不知道它什么时候能结束,所以程序不灵活,但总体上还是实现了动态分区分配算法的功能。
虽然这个程序不是我自己写的,但是我却非常认真的请教了同学并把它弄懂了,相信以后我自己也能写出来的!
!
实验(四)
多级反馈队列
建立几个队列分别对进程的等待调度,其中队列的执行时间各不相同且队列执行顺序也有一定的特点。
a、设置多个就绪队列,并给队列赋予不同的优先级数,第一个最高,依次递减。
赋予各个队列中进程执行时间片的大小,优先级越高的队列,时间片越小。
b、当一个新进程进入内存后,首先将其放入一个对列末尾,如果在一个时间片,结束时尚未完成,将其转入第二队列末尾。
当一个进程从一个对列移至第n个队列后,便在第n个队列中采用时间片轮转执行完。
c、仅当时间片空闲时,才调度第二个队列中的进程。
(1--i-1)空闲时,才调度i,如果处理机正在第i队列中运行,又有新进程进入优先权较高队列,则新进程抢占处理机,将正在运行的进程放入第i队列队尾,将处理机分给新进程。
structcpu{inttime;
structpss*head;
structpss*tail;
};
////////队列
structpss{charname[5];
intpro_time;
intl_time;
structpss*next;
////////进程
voidprocess(structcpucpu_quene[N])//进程的执行
{structpss*p,*q,*p1;
inti,j,a,b;
intflag1=1;
4&
cpu_quene[i].head==null;
i++);
if(i==4)printf("
\nNoprocesstodo!
);
else{if(i==3)a=1;
elsea=2;
while(flag1==1)
{switch(a)
{case1:
{if(cpu_quene[i].head!
=null)
{p=cpu_quene[i].head;
gotoxy(27,15);
printf("
nprint(p);
while(p!
=null)//执行第i级队列中的进程///
{cpu_quene[i].head=p->
while(p->
l_time!
=0)p->
l_time=p->
l_time-1;
printf("
process%shavefinished,leaveQueue!
p->
name);
cpu_quene[i].head=p->
print(cpu_quene);
gotoxy(MN,18);
[%s%d]"
name,p->
pro_time);
MN=MN+9;
free(p);
p=cpu_quene[i].head;
gotoxy(10,2);
"
printf("
Allprocesshavefinished!
else{gotoxy(10,2);
gotoxy(10,2);
Allprocesshavefinished!
flag1=0;
break;
}
case2:
{p=cpu_quene[i].head;
while(cpu_quene[i].head!
=null)
p->
next=null;
gotoxy(27,15);
b=cpu_quene[i].time;
while(p->
=0&
b!
=0){osdelay
(1);
p->
b--;
if(p->
l_time==0){gotoxy(27,15);
process%shavefinished,leaveQueue!
else{j=i+1;
if(cpu_quene[j].head!
{q=cpu_quene[j].tail;
cpu_quene[j].tail=p;
q->
else
{cpu_quene[j].head=p;
p->
}}
print(cpu_quene);
p=cpu_quene[i].head;
cpu_quene[i].tail=null;
i++;
if(i==3)a=1;
}}}}}
输入进程名和所需CPU时间:
运行期间:
程序运行结果:
这个程序让我很好的理解了CPU的调度机制,和想什么样的办法可以把各种进程高效的调度起来,既不要让长进程得不到执行而总被阻塞又不能让长进程长时间的占用CPU。
合理的分配CPU给不同的进程,可以让进程有效的执行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告 格式 春季