ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:17.13KB ,
资源ID:7471381      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7471381.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统处理机调度实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统处理机调度实验报告.docx

1、操作系统处理机调度实验报告 处理机调度算法实验报告学 号姓 名时 间专 业班 级实验题目:处理机调度算法一、实验目的在了解操作系统的基础上全面了解处理机调度算法的实现以及过程,详细了解处理机调度算法的机制,充分了解调度的过程及状态,采用优先数法进程调度算法来模拟演示进程调度 二、实验内容与步骤:1. 了解进程的三种状态状态:ready、running、finish2.了解进程需要的CPU时间以时间片为单位确定3.编写一段程序#include #include #define P_NUM 5#define P_TIME 50enum state ready, execute, block, fi

2、nish;struct pcbb char name4; int priority; int cputime; int needtime; int count; enum state process; struct pcbb *next;typedef struct pcbb pcb;void display_menu() printf(CHOOSE THE ALGORITHM:n); printf(1 PRIORITYn); printf(2 ROUNDROBINn); printf(3 EXITn);pcb* get_process() pcb *q; pcb *p; pcb *t; in

3、t i = 0; printf(input name and timen); while (i name); scanf(%d,&q-needtime); q-cputime = 0; q-priority = P_TIME - q-needtime; q-process = ready; q-next = NULL; if(i=0) p = q; t = q; else t-next = q; t = q; i+; return p;void free_process(pcb *p) pcb *q; while(p!= NULL) q = p; p = p-next; free(q); vo

4、id display(pcb *p) printf(name cputime needtime priority staten); while(p) printf(%s,p-name); printf( ); printf(%d,p-cputime); printf( ); printf(%d,p-needtime); printf( ); printf(%d,p-priority); printf( ); switch(p-process) case ready:printf(readyn);break; case execute:printf(executen); break; case

5、block:printf(blockn); break; case finish:printf(finishn); break; p = p-next; int process_finish(pcb *q) int b1 = 1; while(b1&q) b1 = b1&q-needtime=0; q = q-next; return b1;void cpuexe(pcb *q) pcb *t = q; int tp = 0; while(q) if (q-process!=finish) q-process = ready; if(q-needtime=0) q-process = fini

6、sh; if(tppriority&q-process!=finish) tp = q-priority; t = q; q = q-next; if(t-needtime!=0) t-priority -=3; t-needtime -; t-process = execute; t-cputime+; void priority_cal() pcb *p; p = get_process(); int cpu = 0; while(!process_finish(p) cpu+; printf(cputime:%dn,cpu); cpuexe(p); display(p); sleep(2

7、); free_process(p); printf(All processes have finishedn);pcb *get_process_round() pcb *q; pcb *p; pcb *t; int i = 0; printf(input name and timen); while (iname); scanf(%d,&q-needtime); q-cputime = 0; q-count = 0; q-process = ready; q-next = NULL; if(i=0) p = q; t = q; else t-next = q; t = q; i+; ret

8、urn p;void cpu_round(pcb *q) if(q-needtime=1) q-cputime+; else q-cputime +=2; q-needtime -=2; if(q-needtimeneedtime = 0; q-count+; q-process = execute;pcb *get_next(pcb *k,pcb *head) pcb *t; t = k; do t =t-next; while ( t & t-process = finish); if(t = NULL) t = head; while(t-next!=k & t-process = fi

9、nish) t = t-next; return t;void set_state(pcb *p) while(p) if(p-needtime = 0) p-process = finish; if(p-process = execute) p-process = ready; p = p-next; void display_round(pcb *p) printf(name cputime needtime count staten); while(p) printf(%s,p-name); printf( ); printf(%d,p-cputime); printf( ); prin

10、tf(%d,p-needtime); printf( ); printf(%d,p-count); printf( ); switch(p-process) case ready:printf(readyn);break; case execute:printf(executen); break; case block:printf(blockn); break; case finish:printf(finishn); break; p = p-next; void round_cal() pcb *p; pcb *r; p = get_process_round(); int cpu =

11、0; r=p; while(!process_finish(p) if(r-needtime=1) cpu+=1; else cpu+=2; cpu_round(r); r = get_next(r,p); printf(cputime:%dn,cpu); display_round(p); set_state(p); sleep(2); free_process(p); main() display_menu(); int k; scanf(%d,&k); switch(k) case 1:priority_cal();break; case 2:round_cal();break; cas

12、e 3:break; default:printf(YOU HAVE NOT CHOOSE ANY ALGORITHM!n); 运行后结果如下:rootrhel5hbzy # gcc -o chuliji chuliji.crootrhel5hbzy # ./mCHOOSE THE ALGORITHM:1 PRIORITY2 ROUNDROBIN3 EXIT1input name and timejing 2aaaa 8bbbb5ffff4ggg 6cputime:1name cputime needtime priority statejing- 1 1 45 executeaaaa* 0

13、8 42 readybbbb2 0 0 50 finishffff2 0 0 50 finishggg 0 6 44 readyrtyucputime:2name cputime needtime priority statejing* 2 0 42 executeaaaa* 0 8 42 readybbbb2 0 0 50 finishffff2 0 0 50 finishggg 0 6 44 ready5cputime:3name cputime needtime priority statejing* 2 0 42 finishaaaa* 0 8 42 readybbbb2 0 0 50

14、 finishffff2 0 0 50 finishggg 1 5 41 execute2cputime:4name cputime needtime priority statejing* 2 0 42 finishaaaa 1 7 39 executebbbb2 0 0 50 finishffff2 0 0 50 finishggg 1 5 41 readycputime:5name cputime needtime priority statejing* 2 0 42 finishaaaa 1 7 39 readybbbb2 0 0 50 finishffff2 0 0 50 finis

15、hggg 2 4 38 executecputime:6name cputime needtime priority statejing* 2 0 42 finishaaaa$ 2 6 36 executebbbb2 0 0 50 finishffff2 0 0 50 finishggg 2 4 38 readycputime:7name cputime needtime priority statejing* 2 0 42 finishaaaa$ 2 6 36 readybbbb2 0 0 50 finishffff2 0 0 50 finishggg 3 3 35 executecputi

16、me:8name cputime needtime priority statejing* 2 0 42 finishaaaa! 3 5 33 executebbbb2 0 0 50 finishffff2 0 0 50 finishggg 3 3 35 readycputime:9name cputime needtime priority statejing* 2 0 42 finishaaaa! 3 5 33 readybbbb2 0 0 50 finishffff2 0 0 50 finishggg 4 2 32 executecputime:10name cputime needti

17、me priority statejing* 2 0 42 finishaaaa 4 4 30 executebbbb2 0 0 50 finishffff2 0 0 50 finishggg 4 2 32 readycputime:11name cputime needtime priority statejing* 2 0 42 finishaaaa 4 4 30 readybbbb2 0 0 50 finishffff2 0 0 50 finishggg 5 1 29 executecputime:12name cputime needtime priority statejing* 2

18、 0 42 finishaaaa 5 3 27 executebbbb2 0 0 50 finishffff2 0 0 50 finishggg 5 1 29 readycputime:13name cputime needtime priority statejing* 2 0 42 finishaaaa 5 3 27 readybbbb2 0 0 50 finishffff2 0 0 50 finishggg 6 0 26 executecputime:14name cputime needtime priority statejing* 2 0 42 finishaaaa 6 2 24

19、executebbbb2 0 0 50 finishffff2 0 0 50 finishggg 6 0 26 finish3cputime:15name cputime needtime priority statejing* 2 0 42 finishaaaa 7 1 21 executebbbb2 0 0 50 finishffff2 0 0 50 finishggg 6 0 26 finishcputime:16name cputime needtime priority statejing* 2 0 42 finishaaaa 8 0 18 executebbbb2 0 0 50 f

20、inishffff2 0 0 50 finishggg 6 0 26 finishAll processes have finishedrootrhel5hbzy # rtyu2bash: rtyu2: command not foundrootrhel5hbzy # 3bash: 3: command not found三、分析与体会多道程序设计中,通常是若干个进程同时处于就绪状态,必须依照某种策略来决定哪个进程优先占有处理机。因而引起进程调度。本实验模拟单处理机情况下的处理机调度问题,使我加深了对进程调度的理解。通过本次试验,使我加深了对进程调度的具体细节的理解,掌握LINUX系统结构、实现处理机和各种典型的算法,系统了解了操作系统的设计和实验思路,动手能力更强了。

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

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