欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机操作系统-处理机调度实验报告.pdf

    • 资源ID:73716671       资源大小:419.03KB        全文页数:12页
    • 资源格式: PDF        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机操作系统-处理机调度实验报告.pdf

    中南大学 实验名称:处理机调度 课程名称:计算机操作系统 学生姓名 盛 希 玲 学 号 05 学 院 信息科学与工程学院 专业班级 电子信息工程 0602 完成时间 2008 年 10 月 12 日 目 录 一 实验内容.错误!未定义书签。二 实验目的.错误!未定义书签。三 实验题目.错误!未定义书签。四 基本思想.错误!未定义书签。五 算法分析.错误!未定义书签。六 流程图.错误!未定义书签。七 算法描述.错误!未定义书签。八 运行输出结果.错误!未定义书签。一 实验内容 选择一个调度算法,实现处理机调度。二 实验目的 多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。三 实验题目 设计一个按优先权调度和时间片轮转算法实现处理机调度的程序。四 基本思想 先选择时间片的个数和每个时间片需要的时间,正在运行的进程每运行一秒其优先权数目加一,即其优先权减小。每个时间片运行结束后,选择进入时间片进程优先权数目最小的进程,开始下一个时间片的运行。如果有进程运行结束,则离开,再在就绪队列中选择优先权数目最小的进程进入。在运行期间,如果有新的进程来到,按优先权大小放入就绪队列中。五 算法分析 定义一个结构体,此包含了PCB 的信息:struct PCB char PID5;/*进程名*/int needtime;/*要求运行的时间*/int cputime;/*已运行时间*/int priority;/*优先权(越小越高)*/int starttime;/*进入就绪队列的时间*/int overtime;/*运行完成的时间*/int state;/*状态:1 就绪 2 运行 3 完成*/struct PCB*next;子函数 struct PCB*create(int num,int n)用来建立一个按优先级大小排列的就绪进程链表和一个按时间先后循序排列的将进入就绪进程的链表。main()函数中用一 while 循环输出进入时间片的进程状态。六 流程图 开始 调用 creat()函数,初始化进程 PCB,各进程按优先级排按优先级选择绪队列中进程放入时间片运转 是否开始运行 运行,每运行一秒优先权和已运行时间加一 时间片结束,是否就绪进程队列不为零 将 进 入 就绪 队 列 的进程 就 绪队列 是 否 有 新进程进入 是否所有进程运行结束 结束 七 算法描述#define NULL 0#define LEN sizeof(struct PCB)#include#include struct PCB char PID5;/*进程名*/int needtime;/*要求运行的时间*/int cputime;/*已运行时间*/int priority;/*优先权(越小越高)*/int starttime;/*进入就绪队列的时间*/int overtime;/*运行完成的时间*/int state;/*状态:1 就绪 2 运行 3 完成*/struct PCB*next;struct PCB*create(int num,int n)/*创建进程,并将进程按优先级顺序插入队列中*/struct PCB*head,*p,*p1,*p2;int i;head=NULL;/*头指针指零*/for(i=1;iPID);printf(要求运行的时间:);/*输入要运行的时间*/scanf(%d,&p-needtime);p-cputime=0;/*占用处理机的时间赋为零*/printf(优先权:);/*输入优先权*/scanf(%d,&p-priority);if(n=1)p-starttime=0;/*进入就绪队列的时间赋为零*/else printf(进入就绪队列时间:);/*输入进入就绪队列的时间*/scanf(%d,&p-starttime);p-overtime=-1;/*运行没有结束所以运行完成的时间赋为-1*/p-state=1;/*状态赋为就绪状态*/p1=head;/*p1 指针指向头指针*/if(head=NULL)/*如果头指针为零将头指针指向新建立的进程*/head=p;head-next=NULL;else /*头指针不为零的情况*/if(n=1)while(p1!=NULL&p-priorityp1-priority)/*查找插入点*/p2=p1;p1=p1-next;else while(p1!=NULL&p-starttimep1-starttime)/*查找插入点*/p2=p1;p1=p1-next;if(head=p1)/*优先权的值最小作为表头*/p-next=head;p2=head=p;else /*否则的话插入*/p2-next=p;p-next=p1;return(head);void main()char now5;int cho,num,num1,timepiece,time,i,j,k,flag,choo,clock=0;struct PCB*head,*head1,*over,*later,*l,*l1,*l2,*p,*p0,*p1,*p2,*q,*q1,*q2,*q3;over=NULL;printf(初始化进程.n);printf(输入总的就绪进程数:);scanf(%d,&num);head=create(num,1);/*建立就绪进程的链表*/printf(输入将会就绪的进程数:);scanf(%d,&num1);/*建立将会进入就绪进程的链表*/later=create(num1,2);printf(cpu 是否开始运行:1 是 2 不是-);scanf(%d,&cho);if(cho=1)/*处理机开始进行调度*/printf(现在的时间是:);scanf(%s,now);printf(显示所有就绪的进程:n);p2=head;printf(进程名t 要求运行时间t 已运行时间t 优先权t 状态(1 就绪 2 运行 3 结束)n);while(p2!=NULL)printf(%st%dtt%dtt%dt%dn,p2-PID,p2-needtime,p2-cputime,p2-priority,p2-state);p2=p2-next;printf(请输入时间片总数:);scanf(%d,&timepiece);printf(请输入时间片的时间:);scanf(%d,&time);printf(运行正式开始!n);head1=head;printf(tt 进程名t 要求运行时间t 已运行时间t 优先权t 状态n);for(i=1;inext;else break;p-next=NULL;while(head1!=NULL)/*就绪进程头指针不为零就循环*/head1-state=2;/*状态:1 就绪 2 运行 3 完成*/for(j=1;jstarttime)/*如果将进入就绪队列的进程时间到达加入就绪队列*/l=later;l1=head;later=later-next;if(head=NULL)head=l;head-next=NULL;else while(l1!=NULL&l1-prioritypriority)l2=l1;l1=l1-next;if(l1=head)l-next=head;head=l;else l2-next=l;l-next=l1;flag=0;printf(n%3d 秒 时间片第%d 秒 ,clock,j);q=head1;if(head1-needtimehead1-cputime)/*以运行时间和优先权都加 1*/head1-cputime+;head1-priority+;while(q)/*运行队列不为零输出其信息*/if(q=head1)printf(%st%dtt%dtt%dt%dn,q-PID,q-needtime,q-cputime,q-priority,q-state);else printf(tt%st%dtt%dtt%dt%dn,q-PID,q-needtime,q-cputime,q-priority,q-state);q=q-next;if(head1-needtime=head1-cputime)/*运行完成将其放入 over 为头指针的链表中*/head1-state=3;head1-overtime=clock;if(over=NULL)over=head1;head1=head1-next;over-next=NULL;else if(over!=NULL&head1!=NULL)p1=head1-next;p0=over;over=head1;over-next=p0;head1=p1;flag=1;if(flag=1)break;if(flag=1)/*有进程结束的情况*/if(head!=NULL)/*就绪队列不为零将优先权最高的放入运行链表中*/q1=head;head=head-next;q2=head1;while(q2!=NULL&q2-prioritypriority)q3=q2;q2=q2-next;if(q2=head1)q1-next=head1;head1=q1;else q3-next=q1;q1-next=q2;else /*无进程结束的情况,寻找优先权最高的运行*/head1-state=1;q1=head1;head1=head1-next;q2=head1;while(q2!=NULL&q2-prioritypriority)q3=q2;q2=q2-next;if(q2=head1)q1-next=head1;head1=q1;else q3-next=q1;q1-next=q2;printf(cpu 结束运行!n);printf(是否输出所有结束的进程:1 是 2 不是-);scanf(%d,&choo);if(choo=1)/*输出所有完成运行的进程*/printf(开始时间:%sn,now);printf(进程名t 要求运行时间t 进入就绪队列的时间t 运行完成的时间n);while(over!=NULL)printf(%st%dtt%dttt%dn,over-PID,over-needtime,over-starttime,over-overtime);over=over-next;八 运行输出结果 初始化进程如右图 显示现在的时间和所有就绪的进程 输入时间片的总数和每个时间片的时间 运行时显示的信息

    注意事项

    本文(计算机操作系统-处理机调度实验报告.pdf)为本站会员(l***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开