




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 操作系统原理 课程设计报告 姓 名: 吴泊儒 班 级: _ BX0907 学 号: 9 指导老师:_ 胡静 二o年十二月十二日 目录 一、 操作系统原理课程设计的目的与要求错误!未定义书签。 1、 目的错误!未定义书签。 SHANGHAIDIANJ1UNIVERSITY 2、 要求错误!未定义书签。 二、 简述课程设计内容、主要功能和实现环境错误!未定义书签。 1,课程设af内容错误!未定义书签。 三、 任务的分析、设计、实现和讨论错误!未定义书签。 1、 任务的分析错误!未定义书签。 2、 任务的设at与实现错误!未定义书签。 五、附录错误!未定义书签。进程调度一优先数法与简单轮转法 一、
2、 操作系统原理课程设计的目的与要求 1、目的 进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实习要求学生独立地用高级语言编写和调试一个简单的进程调度程序。调度算法可任意选择或自行设计。任务一采用简单轮转法,任务二采用优先数法等。本课题可以加深对进程调度和各种调度算法的理解。 2、要求 (1)设计一个有n个进程并发的进程调度程序。每个进程由一个进程控制块(PCB)表示。进程控制块一般应该包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU 的时间以及进程的状态等,且可按调度算法的不同而增删。 (2)调度程序应包含2种不同的调度算法,运行时可任意选一种,以利于各
3、种算法的分析比较。 (3)算法应能显示或打印各个进程的PID、状态(运行状态R、等待状态W等)和参数 (已运行时间等)的变化情况,便于观察诸进程的调度过程 进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实习要求学生独立地用高级语言编写和调试一个简单的进程调度程序。调度算法可任意选择或自行设计。任务一采用简单轮转法,任务二采用优先数法等。本课题可以加深对进程调度和各种调度算法的理解。 二、 简述课程设计内容、主要功能和实现环境 1,课程设计内容 进程调度是处理机管理的核心内容。本实验要求用C语言编写和调试一个简单的进程调 度程序。选用优先数法或简单轮转法对五个进程进行调度
4、。每个进程处于运行R(run)、就绪 W(wait)和完成Ffinish)三种状态之一,并假设起始状态都是就绪状态W。为了便于处理,程 序进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。通过本实验可以加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和时间片轮转调度算法的具体实施办法。 2. 主要功能 本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、 就绪W(wait)和完成Ffinish)三种状态之一,并假设起始状态都是就绪状态W。为了便于处理,程序进程的运行时间以时间片为单位计算。
5、 3,实现环境 本次课程设计结合算法的特点,采用Windows操作系统平台。开发工具为MicrosoftVisual C+6.0。 三、 任务的分析、设计、实现和讨论 1、任务的分析 本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、 就绪W(wait)和完成F(finish)三种状态之一,并假设起始状态都是就绪状态W。为了便于处理, 程序进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。 下面介绍优先数法和简单轮转法两种进程调度算法: (1)优先数法。进程就绪链按优先数大小从高到低排列,链首进程
6、首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3, 理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。 (2)简单轮转法。进程就绪链按各进程进入的先后次序排列, 进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的
7、时间片数加1,然后比较占用处理机的 时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。 进程控制块结构如下: 进程ID 链指针 优先数/轮转时间片数占用CPU时间片数进程所需时间片数进程状态 进程控制块链结构如下 其中:RUN一当前运行进程指针; HEAD一进程就绪链链首指针; TAID一进程就绪链链尾指针。 2、任务的设计与实现 从近百取一彳进程投入运行. 3、操作过程和结果分析 优先数调度算法测试数据: 进程名称 运行时间 A1 3 A2 3 A3 4 A4 2 A5
8、1 优先数调度算法程序运行结果截图:算法流程图: 输入调度算法A A电口 它F/PF/P 生成枭按优先数大小 排列选程控制块链 捶首胜程投入运行 时间片到, 撤销该进程 alo=F/Ralo=F/R 程时闿片数 否 程时间片、 _否数为0 0 徒首注程 运行进程退出,按优 先救柚人避程链 R/rR/r 时间片到,进程时用片数微 流光教大入港首进程 运行进程退出,挥到进料链是部 生成并拽进K K法序推 列进程控制块施 薛首进程投入莹行 b b占用二PUPU时间加1 1 和时间 数为口, 撤错该讲程 T Yn n7E7E 出程队冽空 结束 结束 .从盟首取一个 进程投入运咛 J八西行用声冷调度De
9、buqkke5he.ex7 *请选*圣要模拟的算法* 请榆人进程调度个数 请4tA逑程名称工 A1 请输入逋程运行时间 请输入进程名称2 由2 2 请输入遗程运行时间 请输入进程名称3 A3 请输入进程运行时间 篙俞A进程名称4 4 A4 请输入进程运行时间 储输入逑程名郴 A5 请输入速程运行时间 1 1 J:?T岫M程调度口亡bu/kusle.exe 最高优先线进程调度模拟; nane cputine ncedtirte priority tat R4 6 2 48 R Al 0 3 3 4747 w w 白? R 1 1 47 的 A3 0 4 46 IF A5 1 0 46 F nan
10、e CDUtine needtine DFiDiitiDFiDiiti/ / statstate e Al 0 9 47 R A2 3 47 w AS e e 4 4 46 !W 1 1 45 w w 白弓 1 0 4646 F F RtJuwF 34120 23415AAAAA 应七局人品输J2.W nanenane A5A5 fl4 fllfll A2A2 A3A3 cputine0 needtime 1 prioii1prioii19 9statestate 49 4B 47 474b 41.4JJ法法ff.度度 图1.1结果截图 1 nanonano cputimocputimo no
11、odtinonoodtino prioritypriority atatoatato 的 0 0 4 4 4G4G R R A4A4 1 1 1 1 4S4S u u RlRl 1 1 2 2 4444 u u R2R2 1 1 3 3 4444 V V ASAS 1 1 0 0 1616 r r oana ORUti.FlOORUti.FlO noigdxno prioritypriority q七3七卓 A4A4 1 1 1 1 4545 R R AlAl 1 1 2 2 4444 U U A2A2 1 1 2 2 4444 U U A3A3 1 1 m m d3d3 u u A5A5 1
12、 1 0 4646 F F inane cputxme ncedtinc priorit 七H七日 AiAi 1 1 2 2 4444 1 2 4444 w w 的 1 1 m m 4343 M M 的 2 2 0 0 4242 r r 科5 5 1 1 0 0 4646 F F nanonano cputcput工momo noodtinonoodtino prioritypriority atatoatato hzhz 1 1 2 2 H H 0 03 3 1 1 3 q彳 u u m m 2 2 1 1 didi w w 3 0 0 4242 r r A5A5 1 1 阶 4fi4fi
13、F F nancnanc 0A5ti0A5ti- -FieFie npcd七五nq prioritypriority 等七&七. A3A3 1 1 3 3 4343 R R 01 2 1 41 U U A2A2 2 2 1 1 4141 W W A4A4 2 2 0 0 4242 r r A5A5 1 1 0 4646 F F 1 1JjJj症进程调度 DuDub buquq小usine,exeusine,exe 二w w inane cputme needtaine pi*ioi*itIF 岩七z*te AlAl 2 2 1 1 4141 R R A2 Z Z 1 1 4i4i w
14、w 由a a 2 2 2 414 u u A* 2 2 0 0 4242 F F 自5 5 1 1 0 0 4646 F F nanonano ejputejput naedtIne piorlpiorltjitji ate nznz 2 2 1 1 4141 R R A3 2 2 2 2 4040 H H AlAl 3 3 M 3W3W P P A4 2 2 0 0 4242 F F 自5 5 1 1 0 0 4646 F F FiamoFiamo cputiimocputiimo noodtinonoodtino pi*Qri1tpi*Qri1t atat A3 2 2 2 2 4H4H
15、n n NZNZ 3 3 n n 33 F F AlAl 3 3 13 3H3H F F A4A4 2 2 0 4242 F F A5A5 i i 4646 F F inanB cput; mio nsedt;inc pi*iorit;5P 吕* A3A3 3 1 1 3737 R R A2A2 3 3 0 0 3838 F F AlAl 金 IdId J JH H F F A* 2 2 0 0 4242 F F 自5 5 1 1 0 0 4646 P namonamo cputimocputimo naodtIno prioritypriority e 七3七心 由3 3 4 0 0 343
16、4 p p A2A2 3 3 n n 3fi3fi F F AlAl 3 3 Id 3V3V P P A4 2 2 0 0 4242 F F AS 1 1 0 0 4646 F F 简单轮转调度算法测试数据 进程名商 运行时间 A1 3 A2 3 A3 4 A4 2 A5 1 简单轮转调度算法程序运行结果截图: 若KM青选择要模才|1的管;+桐背 请输入进程调度个数号输入进程名称1 1A1A1 请输入进程运行时间 请输入进程名称2 2 A2A2 请输入进程运行时间请输入进程名称3 3请输入进程运行时间请输入进程名称4 4 M 请输入进程运行时间 请输入进程名称5 5 A5A5 请输入进程运行时
17、间1 1 图2.1结果截图kshe.esekshe.ese S法法MM度度调调择选3进符量子优箫七局人日爵输1.2.请 二 1 1J:MfTtfeJ:MfTtfe SStaSSStaS DebugDebug keshe.exekeshe.exe name cpulrinie neec.ltIne COUFlt found state Hi 0 3 3 & 2 W Al2Al2 u 3 3 u 2 2 W A3A3 0 4 4 0 2 2 W A4A4 0 2 2 0 2 2 U AiSAiS 日 1 1 0 2 2 W 茂XXa aCHiMKM表 Na astate=R;/*进程状态变
18、为运行态*/ ready=ready-next;/*就绪对列头指针后移到下一进程*/ /*标题输出函数*/ voidprt1(chara)( if(toupper(a)=P)/*优先数法*/ printf(namecputimeneedtimeprioritystaten); elseif(toupper(a)=R) printf(namecputimeneedtimecountroundstaten); /*进程PCB输出*/voidprt2(chara,PCB*q)(if(toupper(a)=P)/*优先数法的输出*/ printf(%-10s%-10d%-10d%-10d%cn,q-n
19、ame,q-cputime,q-needtime,q-prio,q-state);elseif(toupper(a)=R)/*轮转法的输出*/printf(%-10s%-10d%-10d%-10d%-10d%-cn,q-name,q-cputime,q-needtime,q-count,q-round,q-state); ) /*输出函数*/voidprt(charalgo)(PCB*p; prt1(algo);/*输出标题*/ if(run!=NULL)/*如果运行指针不空*/ prt2(algo,run);/*输出当前正在运行的PCB*/ p=ready;/*输出就绪队列PCB*/whil
20、e(p!=NULL)(prt2(algo,p);p=p-next; ) p=finish;/*输出完成队列的PCB*/while(p!=NULL)(prt2(algo,p); p=p-next; )getchar();/*压任意键继续*/) /*优先数的插入算法*/ voidinsert1(PCB*q)(PCB*p1,*s,*r;intb; s=q;/*待插入的PCB指针*/p1=ready;/*就绪队列头指针*/r=p1;/*r做p1的前驱指针*/b=1; while(p1!=NULL)&b)/*根据优先数确定插入位置*/ if(p1-prio=s-prio)(r=p1; p1=p1
21、-next;)else b=0; if(r!=p1)/*如果条件成立说明插入在r与pl之间*/ (r-next=s; s-next=p1;)else( s-next=p1;/*否则插入在就绪队列的头*/ ready=s; )/*轮转法插入函数*/voidinsert2(PCB*p2)( tail-next=p2;/*将新的PCB插入在当前就绪队列的尾*/ tail=p2; p2-next=NULL;) voidinsert3()/*先来先服务*/( if(ready=NULL)ready=pfcfs; ready-next=NULL; pfcfs1=pfcfs;)elsepfcfs1-next
22、=pfcfs;pfcfs1=pfcfs1-next;) /*优先数创建初始PCB信息*/ voidcreate1(charalg)PCB*p;inti,time; charna10; ready=NULL;/*就绪队列头指针*/finish=NULL;/*完成队列头指针*/run=NULL;/*运行队列指针*/for(i=1;iname,na); p-cputime=0; p-needtime=time; p-state=w; p-prio=50-time; if(ready!=NULL)/*就绪队列不空调用插入函数插入insert1(p); else( p-next=ready;/*创建就绪
23、队列的第一个PCB*/ready=p; ) ) printf(最高优先级进程调度模拟:n); printf(*n); prt(alg);/*输出进程PCB信息*/ printf(*n);run=ready;/*将就绪队列的第一个进程投入运行*/ */ ready=ready-next; run-state=R; /*轮转法创建进程PCB*/ voidcreate2(charalg) ( PCB*p; inti,time; charna10; ready=NULL; finish=NULL; run=NULL; for(i=1;iname,na); p-cputime=0;p-needtime=
24、time; p-count=0;/*计数器*/p-state=w; p-round=2;/*时间片*/if(ready!=NULL)insert2(p); else(p-next=ready;ready=p; tail=p; ) )printf(printf(*n); prt(alg);/*输出进程PCB信息*/ printf(*n); run=ready;/*将就绪队列的第一个进程投入运行*/ ready=ready-next; run-state=R; ) /*优先数调度算法*/voidpriority(charalg)( while(run!=NULL)/*当运行队列不空时,有进程正在运
25、行*/ (run-cputime=run-cputime+1;run-needtime=run-needtime-1; run-prio=run-prio-3;/*每运行一次优先数降低3个单位*/ if(run-needtime=0)/*如所需时间为0将其插入完成队列*/(run-next=finish; finish=run; run-state=F;/*置状态为完成态*/ run=NULL;/*运行队列头指针为空*/ if(ready!=NULL)/*如就绪队列不空*/firstin();/*将就绪对列的第一个进程投入运行*/ ) else/*没有运行完同时优先数不是最大,则将其变为就绪态
26、插入到就绪列if(ready!=NULL)&(run-prioprio)( run-state=W;insertl(run); firstin();/*将就绪队列的第一个进程投入运行*/ ) prt(alg);/*输出进程PCB信息*/) /*时间片轮转法*/voidroundrun(charalg)( while(run!=NULL)(run-cputime=run-cputime+1; run-needtime=run-needtime-1; run-count=run-count+1; if(run-needtime=0)/*运行完将其变为完成态,插入完成队列*/(run-next=finish;finish=run;run-state=F;run=N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海市黄浦区金陵中学2025届高三第二学期第二次月考试卷化学试题含解析
- 2025春新版四年级下册语文 【期末复习:文学常识填空】
- 华东交通大学《工程造价CBE实践》2023-2024学年第二学期期末试卷
- 湖南艺术职业学院《医学机能学(二)》2023-2024学年第一学期期末试卷
- 苏州城市学院《中药不良反应概论》2023-2024学年第一学期期末试卷
- 云南民族大学《英语视听说III》2023-2024学年第一学期期末试卷
- 三亚城市职业学院《工程统计学(实验)》2023-2024学年第二学期期末试卷
- 星海音乐学院《病理学》2023-2024学年第二学期期末试卷
- 宁夏大学新华学院《智慧城市与智能制造概论》2023-2024学年第二学期期末试卷
- 江苏省连云港东海县联考2024-2025学年初三语文试题周考试题含解析
- 地铁16号线风阀设备安装手册
- 新《危险化学品安全管理条例》课件
- 中医科物理治疗登记表
- 高山下的花环
- 中医望色望神图集共59张课件
- 蓝色金色心有所盼定有所成励志工作总结计划PPT模板
- 《跋傅给事帖》2020年浙江嘉兴中考文言文阅读真题(含答案与翻译)
- 物业小区保洁清洁方案
- 银行从业资格考试题库附参考答案(共791题精心整理)
- 年产20吨阿齐沙坦原料药生产车间的设计和实现材料学专业
- 原地面高程复测记录表正式版
评论
0/150
提交评论