操作系统实验报告感想_第1页
操作系统实验报告感想_第2页
操作系统实验报告感想_第3页
操作系统实验报告感想_第4页
操作系统实验报告感想_第5页
已阅读5页,还剩6页未读, 继续免费阅读

下载本文档

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

文档简介

精品学习资料范文操作系统实验报告感想篇一:操作系统实验报告

操作系统原理实验报告

学生姓名学号专业班级指导教师学院信息科学与工程学院实验时间2014年月5日

实验一处理机调度一、实验目的

多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作(转载自:www.BdfQy.Com千叶帆文摘:操作系统实验报告感想)。

二、实验内容

设计实现处理机调度算法。

三、实验要求

1、设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB)表示,进程控制块通常应包括下述信息:进程名,进程PID,进程优先数,进程状态、PCB指针等,且可按照调度算法的不同而增删。

2、调度算法包括:优先权调度算法和时间片轮转调度算法。

3、程序应能显示或打印各进程状态和参数的变化情况,便于观察。

4、可随时增加新进程。

四、实验分析与设计

时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

优先权调度算法就是紧迫型作业进入系统后能得到优先处理的意思。当该算法用于作业调度时,系统从后备作业队列中选择若干个优先级最高的,且系统能满足资源要求的作业装入内存运行。或者当该算法用于进程调度时,将把处理机分配给就绪进程队列中优先级最高的进程。

五、实验运行结果与相关代码

代码:

时间片轮转调度算法

#includeiostream

#includecstdlib

usingnamespacestd;

typedefstructPNode{

structPNode*next;

charname[10];

intAll_Time;

intRuned_Time;

charstate;

}*Proc;

intProcNum;

voidInitPCB(ProcH)

{

cout请输入进程数量:

cinProcNum;

intNum=ProcNum;

H=(Proc)malloc(sizeof(PNode));

H-next=NULL;

Procp=H;

cout请按格式输入进程信息:\n

while(Num--)

{

p=p-next=(Proc)malloc(sizeof(PNode));

cout进程名所需花费总时间已经运行时间endl;

cinp-namep-All_Timep-Runed_Time;

p-state=R

p-next=NULL;

}

p-next=H-next;

}

voidDispInfo(ProcH)

{

Procp=H-next;

do{

if(p-state!=E)

{

cout进程名:p-name\t总运行时间:p-All_Time\t已运行时间:p-Runed_Time\t状态:p-stateendl;

p=p-next;

}

elsep=p-next;

}

while(p!=H-next);

}

voidSJP_Simulator(ProcH){

coutendl开始:\n

intflag=ProcNum;

intround=0;

Procp=H-next;

while(p-All_Timep-Runed_Time)

{

round++;

coutendl第round轮p-name进程运行中endl;p-Runed_Time++;

DispInfo(H);

if(p-All_Time==p-Runed_Time)

{

p-state=E

flag--;

coutp-name进程结束,删除该进程!\n

}

p=p-next;

while(flagp-All_Time==p-Runed_Time)

p=p-next;

}

coutendl完成线上所有任务!\n

}

voidmain()

{

ProcH;

InitPCB(H);

DispInfo(H);

SJP_Simulator(H);

system(pause

}

运行截图

(中间过程太多,只截取几张。)

篇二:操作系统课程设计个人心得

课程设计心得体会

篇三:操作系统实验报告

实验报告

学院(系)名称:计算机与通信工程学院

实验过程记录(源程序、测试用例、测试结果及心得体会等)

源代码:

磁盘调度基类DiskSchedule.java:

importjava.util.ArrayList;importjava.util.Iterator;importjava.util.Random;publicDiskSchedule(){start=0;end=255;startSector=0;sector=newArrayListIntegerscheduled=newArrayListIntegertime=ne}}}}}ArrayListIntegersector;ArrayListIntegerscheduled;ArrayListIntegertime;wArrayListIntegerisScheduled=false;returnstart+rand.nextInt(end);}

publicdoublegetSeekTime(){if(!isScheduled)

sum+=iter.next();return(double)sum/time.size();}}}}publicIteratorIntegeriterator(){returnsector.iterator();}visitSector();}}publicvoiddebug(){System.out.println(平均调度时间:

System.out.println(getSeekTime());

}publicvoidprintSector(){if(!isScheduled)schedule();

原始访问序列:

System.out.println(序号\t磁道号

while(iter.hasNext()){System.out.println(i+\t+iter.next());i++;

}

}

publicvoidprintScheduled(){if(!isScheduled)

IteratorIntegersIter=scheduled.iterator();IteratorIntegertIter=time.iterator();System.out.println(调度后:

System.out.println(开始磁道:+startSector);System.out.println(序号\t磁道号\t移动距离while(sIter.hasNext()){System.out.println(i+\t+sIter.next()+\t+tIter.next());i++;

}

}

abstractvoidschedule();

}

FCFS.java:

importjava.util.Iterator;

publicclassFCFSextendsDiskSchedule{voidschedule(){if(isScheduled)

return;

time.add(Math.abs(curSector-prevSector));scheduled.add(curSector);prevSector=curSector;

}

isScheduled=true;}}

SSTF.java:

importjava.util.ArrayList;importjava.util.Iterator;

publicclassSSTFextendsDiskSchedule{voidschedule(){if(isScheduled)

return;

@SuppressWarnings(unchecked)

}

}ndex);

}

isScheduled=true;

}

}

SCAN.java:

importjava.util.ArrayList;importjava.util.Iterator;

publicclassSCANextendsDiskSchedule{@Override

voidschedule(){if(isScheduled)

return;

@SuppressWarnings(unchecked)

booleansigned=true;do{

}}

}

}

signed=!signed;

}

while(index==-1);ndex);

}

isScheduled=true;

}

}

CSCAN.java:

importjava.util.ArrayList;importjava.util.Iterator;

publicclassCSCANextendsDiskSchedule{@Override

voidschedule(){if(isScheduled)

return;

@SuppressWarnings(unchecked)

}

}curmin){

}

}ndex);

}

isScheduled=true;

}

}

NStepSCAN.java:

importjava.util.ArrayList;importjava.util.Iterator;

publicclassNStepSCANextendsDiskSchedule{ArrayListArrayListIntegerlist;publicNStepSCAN(){super();

list=newArrayLis

温馨提示

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

评论

0/150

提交评论