课程设计的目的和意义

上传人:工**** 文档编号:549676504 上传时间:2024-03-04 格式:DOCX 页数:6 大小:82.22KB
返回 下载 相关 举报
课程设计的目的和意义_第1页
第1页 / 共6页
课程设计的目的和意义_第2页
第2页 / 共6页
课程设计的目的和意义_第3页
第3页 / 共6页
课程设计的目的和意义_第4页
第4页 / 共6页
课程设计的目的和意义_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《课程设计的目的和意义》由会员分享,可在线阅读,更多相关《课程设计的目的和意义(6页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上一 课程设计的目的和意义目的:1. 根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容。2. 通过调试典型例题或习题积累调试程序的经验。3. 通过完成辅导教材中的编程题,逐渐培养学生的编程能力,用计算机解决实际问题的能力。意义:1. 有助于加深我们对操作系统这门课程的理解,我们在课堂上学的都是基础理论知识,对于如何用程序语言来描述所学知识还是有一定难度。通过课程设计,我们可以真正理解其内涵。2. 有利于我们逻辑思维的锻炼,程序设计能直接有效地训练学生的创新思维、培养分析问题、解决问题能力。即使是一个简单的程序,依然需要学生有条不理的构思。3. 有利于培养严谨

2、认真的学习态度,在程序设计过程里,当我们输入程序代码的时候,如果不够认真或细心,那么可能就导致语法错误,从而无法得出运行结果。那么,这个我们反复调试,反复修改的过程,其实也是对我们认真严谨治学的一个锻炼。二 进程调度算法模拟1 . 设计目的通过动态优先权算法的模拟加深进程概念和进程调度过程的理解。 2 . 设计要求写出带有完整标注的程序代码(可以用Java或C/C+实现,要求每个语句都要有标注)。3 . 使用动态优先权的进程调度算法的模拟3.1算法思路分析动态优先权是指在创建进程时所赋予的优先权,可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能.若所有的进程都具有相同的优先

3、权初值,则显然是最先进入就绪队列的进程,将因其动态优先权变得最高而优先获得处理机,此即FCFS算法.因此,通过c程序模拟动态优先权程序调度算法,主要思路和方法就是,通过结构体模拟计算机的控制模块,构造一个PCB结构体即进程控制块结构体,用来记录当前进程的的相关状态信息,包括进程标识符、处理机状态、进程调度信息、进程控制信息。并通过C语言模拟计算机的动态优先调度算法,对构建的PCB进程进行模拟调度和运行,从而实现用计算机对进程的调度过程进行过程模拟。主要要构建的函数有:进程控制块函数input:输入各进程的基本信息进程优先级排列函数sort:用于对进程的优先级进行排列当前进程显示函数disp:用

4、于显示当前进程进程查看函数check:检查等待队列的进程是否进入就绪队列进程就绪函数running:进程运行时间到,置就绪状态系统将所有就绪队列按优先级高低排成一个队列,每次调度时,将CPU分配给优先级最高的进程,并令其执行一个时间片,而后中断,寻找并运行下一个优先级最高的进程。而所有进程的优先权在随进程的推进或随其等待时间的增加而增加,而被调度之后的程序则降低一定的优先级,从而使所有进程都有运行的机会,从而保证系统能在给定的时间内响应所有用户的请求。优先权的变化规律可描述为:由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先权又相当于响应比RP,即优先权=等待时间+要求服务时间

5、要求服务时间。被运行过的进程优先权减一。3.2算法流程图主流程图3.3主要数据结构设计1. 包含PCB信息的结构体(1) 进程标识数ID。(2) 进程优先级PRIORITY,并规定优先级越大的进程,其优先权越高。(3) 进程已占用的CPU时间CPUTIME。(4) 进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0(5) 进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。(6) 进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。(7) 进程状态STATE。(

6、8) 队列指针NEXT,用来将PCB排成队列。用算法描述为struct pcb / 定义进程控制块PCB char name10; /定义进程名称 char state; /进程状态int super; /优先数 int ntime; /需要运行的时间int rtime; /已占用的CPU时间 struct pcb* link; /指向进程的下一个进程的指针 *ready=NULL,*p;2. 用队列结构存储进程序列3.4算法代码实现1.建立对进程进行优先级排列函数void sort() / 建立对进程进行优先级排列函数 PCB *first, *second; /定义指向当前进程和插入进程的

7、指针 int insert=0;/各进程按优先数大小从大到小排列 if(ready=NULL)|(p-super)(ready-super) /优先级最大者,插入队首 p-link=ready; /p进程的下一个进程为原队首进程 ready=p; /队首进程为优先级最大者 else /进程比较优先级,插入适当的位置中 first=ready;/队首进程不变 second=first-link; /第二个进程则在当前进程后面 while(second!=NULL)/while循环,各进程比较优先级 if(p-super)(second-super) /若插入进程比当前进程优先数大 /插入到当前进

8、程前面 p-link=second; /当前进程赋给插入进程的后面那个进程 first-link=p;/插入进程在放在当前进程所在位置 second=NULL;/当前进程为空 insert=1; /进程的排列与各优先数不对应 else /插入进程优先数最低,则插入到队尾 first=first-link; /将第一个进程的下一进程赋给first second=second-link;/将第二个进程的下一进程赋给second if(insert=0) first-link=p; /若插入进程比当前进程优先数小,则插入到当前进程后面 2.建立进程控制块函数void input() /建立进程控制块

9、函数 int i,num; /定义进程号以及进程个数 system(cls); /清屏 printf(n 请输入进程号:); /输出输入提示 scanf(%d,&num); /输入进程号 for(i=0;iname); /输入进程名 printf(n 输入进程优先数:);/输出输入进程优先数提示 scanf(%d,&p-super); /输入进程优先数 printf(n 输入进程运行时间:);/ 输出输入进程运行时间提示 scanf(%d,&p-ntime);/输入进程运行时间 printf(n);/换行 p-rtime=0;/已占用cpu时间为0 p-state=w;/进程状态为就绪 p-l

10、ink=NULL;/当前进程的下一个进程为 sort(); / 调用sort函数 建立进程显示函数,用于显示当前进程void disp(PCB * pr) /建立进程显示函数,用于显示当前进程 printf(n qname t state t super t ntime t rtime n); printf(%st,pr-name);/显示进程名 printf(%ct,pr-state); /显示进程状态 printf(%dt,pr-super);/显示进程优先级 printf(%dt,pr-ntime); /显示进程需要运行的时间 printf(%dt,pr-rtime);/显示进程占用CP

11、U时间 printf(n); /换行 进程查看函数,检查等待队列的进程是否进入就绪队列 void check() / 建立进程查看函数,检查等待队列的进程是否进入就绪队列 PCB* pr; printf(n * 当前正在运行的进程是:%s,p-name); / 输出当前正在运行的进程 提示 disp(p);/显示当前 运行进程 pr=ready; printf(n *当前就绪队列为:n); /显示就绪队列状态 while(pr!=NULL) disp(pr);/显示就绪进程 pr=pr-link;/ 进程就绪函数void running() / 建立进程就绪函数(进程运行时间到,置就绪状态 (p-rtime)+; (p-super)-;/进程优先权减1 p-state=w;/进程状态为就绪 sort(); /调用sort函数 3.5算法运行分析初始界面专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号