请选择 进入手机版 | 继续访问电脑版

操作系统课程设计2 进程调度算法

[复制链接]
丶禁飞 发表于 2021-1-1 10:30:17 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
历程调理算法的分析、设计与实现(110)

一、 本实验采取的调理算法设计理论形貌(10分)


  • FCFS(先来先服务):当在历程调理中采取该算法时,系统将按照历程到达的先后顺序来举行调理,大概说它是优先思量在系统中期待时间最长的历程,而不管该历程所需执行的时间的是非,从后备队列中选择几个最先进入该队列的历程,将他们调入内存,为他们分配资源和创建历程,然后把它放入停当队列。每次调理是从停当的历程队列中选择一个最先进入该队列的历程,为之分配处置惩罚机,使之投入运行。该历程一直运行到完成或发生某事件而阻塞后,历程调理程序才将处置惩罚机分配给其他历程 。
  • SPF(短历程优先):以历程的是非来盘算优先级,历程越短其优先级越高。历程的是非是以历程所要求的运行时间来权衡的。SPF算法可以用于历程调理。把短历程优先调理算法用于历程调理时,它将从外存的历程后备队列中选择若干个估计运行时间最短的历程,优先将它们调入内存运行。
  • RR(时间片轮转):系统根据FCFS计谋,将所有的停当历程排成一个停当队列,并可设置每隔一定时间隔断即产生一次中断,激活系统中的历程调理顺序,完成一次调理,将CPU分配给队首历程,令其执行。当该历程的时间片耗尽或运行完毕时,系统再次将CPU分配给新的队首历程(或新到达的告急历程).由此,可包管停当队列中的所有历程在一个确定的时间段内,都可以或许获得一次CPU执行。
  • HPF(优先级调理算法)
    非抢占式优先权调理算法
    系统一旦把处置惩罚机分配给优先权最高的历程后,便一直执行下去,至完成。
  • 抢占式优先权调理算法
    只要系统中出现一个新的停当历程,就举行优先权比力。若出现优先权更高的历程,则立刻停止当前执行,并将处置惩罚机分配给新到的优先权最高的历程。
  • HRRN(高响应比优先调理算法):高响应比优先调理算法的基本思想是把CPU分配给停当队列中响应比最高的历程,既思量作业的执行时间也思量作业的期待时间,综合了先来先服务和最短作业优先两种算法的特点。
    该算法中的响应比是指作业期待时间与运行比值,响应比公式界说如下:
    响应比 =(期待时间+要求服务时间)/ 要求服务时间
    即:响应比盘算:Ri = (Tw/Ts)+1 此中:Tw:期待时间;Ts:服务时间
二、数据布局模子及算法形貌(必须画流程图)(15分)

1.PCB的界说(5分)
系统利用PCB来形貌历程的基本情况和运动过程,进而控制和管理历程,PCB中记录了利用系统所需要的、用于形貌历程情况及控制历程运行所需要的全部信息,PCB是历程实体的一部分,是利用系统中最重要的记录型数据布局。
PCB的数据布局
struct pcb{ // 界说一个布局体,内里包罗的有一个历程相关的信息
char name[10]; //历程名称
float arrivetime; //到达时间
float servicetime; //服务时间
float starttime; //开始时间
float finishtime; //结束时间
float zztime; //周转时间=finishtime-arrivetime
float dqzztime; //带权周转时间=zztime/servicetime
};
算法形貌

  • 先来先服务算法FCFS
    void FCFS(pcb *p,int N)
    按照作业进入系统的先后序次来挑选作业,先进入系统的作业优先被挑选
  • 短作业优先SJF
    void sjff(pcb *p,int N)
    对短作业大概短历程优先调理的算法,将每个历程与其估计运行时间举行关 联选取估计盘算时间最短的作业投入运行。
  • 时间片轮转调理算法RR
    void RunProcess()
    每个历程被分配一个时间段,称作它的时间片,如果在时间片结束时历程还在运行,则CPU将被剥夺并分配给另一个历程。如果历程在时间片结束前阻塞或结束,则CPU当即举行切换。
  • 高优先级调理算法HPF
    void HPF()
    在优先级调理算法中,优先执行高优先级的历程。在算法实现中,默认数值大的体现优先级高
  • 高响应比优先调理算法HRRN
    int hrrn(Node node,int t)
    盘算历程响应比,选择高响应比的历程执行

    2.流程图(10分)
    先来先服务算法FCFS

    短历程优先算法SPF

时间片轮转算法RR

优先级调理算法HPF

高响应比优先算法HRRN

三、源代码(可以另附C源程序文件)(40分)

1) FCFS.cpp(实现先来先服务算法)
[code]//先来先服务#include #include  struct pcb{   // 界说一个布局体,内里包罗的有一个历程相关的信息        char name[10];        //历程名称 (输入)        float arrivetime;     //到达时间 (输入)        float servicetime;    //服务时间 (输入)        float starttime;      //开始时间         float finishtime;     //结束时间         float zztime;        //周转时间=finishtime-arrivetime        float dqzztime;      //带权周转时间=zztime/servicetime};    //输入历程信息void input(pcb *p, int N)    //p为pdb数组名, N为pcb数组的元素个数 {         int i;       printf("\n");         printf("请输入历程的名字  到达时间  服务时间:\n");        for(i=0; i
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )