【精品】C课程设计论文

【精品】C课程设计论文

ID:44588110

大小:360.29 KB

页数:18页

时间:2019-10-23

【精品】C课程设计论文_第1页
【精品】C课程设计论文_第2页
【精品】C课程设计论文_第3页
【精品】C课程设计论文_第4页
【精品】C课程设计论文_第5页
资源描述:

《【精品】C课程设计论文》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第2章课程设计内容2.1程序功能介绍在多道程序环境下,进程数口往往多于处理机数口,致使他们争用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行。分配处理机的任务是曲进程调度程序完成的。一个进程被建立后,系统为了便于对进程进行管理,将系统屮的所有进程按其状态,将其组织成不同点进程队列。于是系统屮有运行进程队列、就绪队列和各种事件的进程等待队列。进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。木课题模拟实现进程调度算法,选用了优先数调度算法和吋间片轮转算法。2・2程序整体设计说明2.2.1设计思路PCB结构通常包括以下信息:进程名,进程优先数,轮转时间

2、片,进程己占用的CPU时间,进程还需要的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删。本程序用两种算法对五个进程进行调度,每个进程可有三个状态:就绪、执行、完成。并假设初始状态为就绪状态。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。在优先数算法中,优先数可以先取值为一个常数减去进程所需耍的时间片数目,进程每执行一次,优先数减3,CPU时间片数加1,进程还需耍的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为己执行了2个单位),这

3、时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。对于遇到优先数一致的情况,采用FIFO策略解决。2.2.2数据结构设计及用法说明共用体类型:使几个不同的变量占用同一个内存空间的结构类型。结构体:是一种类型。指针:C语言中广泛使用的一种数据类型。nice()改变一个普通进程的静态优先级getpriority()获得一组普通进程的最大优先级setpriority()设置一组普通进程的静态优先级sched_getscheduler()获得一个进程的调度策略sched_setscheduler()设置一个进程的调度策略和实时优先级sched_getparam()获得一个进程的

4、实时优先级sched_setparam()设置一个进程的实时优先级sched_yield()自愿放弃处理器而不阻塞sched_get_priority_min()获得一种策略的最小实时优先级sched_get_priority_max()获得一种策略的最大实时优先级sched_rr_get_interval()获得时间片轮转策略的时间片值sched_setaffinity()设置进程的CPU亲合力掩码sched_getaffinity()获得进程的CPU亲合力掩码2.2.3程序结构(流程图)程序调度流程图如图2.1:图2.12.2.4各模块的功能及程序说明真正执行调度的函数是schedule(

5、void),它选择一个最合适的进程执行,并且真正进行上下文切换,使得选屮的进程得以执行。而reschedule」dle(structtask_struct*p)的作用是为进程选择一个合适的CPU来执行,如果它选中了某个CPU,则将该CPU上当前运行进程的need」esched标志置为1,然后向它发出一个重新调度的处理机间屮断,使得选屮的CPU能够在屮断处理返冋吋执行schedule函数,真正调度进程p在CPU上执行。在schedule()和reschedule_idle()中调用了goodness()函数。goodness()函数用来衡量一个处于可运行状态的进程值得运行的程度。此外,在sche

6、dule()函数屮还调用了schedule_tail()函数;在reschedule」dle()函数中还调用了reschedule_idle_slow()o这些函数的实现对理解SMP的调度非常重要,下面一一分析这些函数。先给出每个函数的主要流程图,然后给出源代码,并加注释。goodness()函数分析goodness()函数计算一个处于可运行状态的进程值得运行的程度。一个任务的goodness是以下因素的函数:正在运行的任务、想要运行的任务、当前的CPU。goodness返回下面两类值中的一个:1000以下或者1000以上。1000或者1000以上的值只能赋给“实时”进程,从0到999的值只能

7、赋给普通进程。实际上,在单处理器情况下,普通进程的goodness值只使用这个范围底部的一部分,从0到41。在SMP情况下,SMP模式会优先照顾等待同一个处理器的进程。不过,不管是UP还是SMP,实时进程的goodness值的范围是从1001到1099。goodness()函数其实是不会返冋・1000的,也不会返冋其他负值。由于idle进程的counter值为负,所以如果使用idle进程作为参数调

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。