linux内核的三种调度策略

linux内核的三种调度策略

ID:18889143

大小:117.50 KB

页数:13页

时间:2018-09-26

linux内核的三种调度策略_第1页
linux内核的三种调度策略_第2页
linux内核的三种调度策略_第3页
linux内核的三种调度策略_第4页
linux内核的三种调度策略_第5页
资源描述:

《linux内核的三种调度策略》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux内核的三种调度策略:  1,SCHED_OTHER分时调度策略,2,SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃3,SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平Linux线程优先级设置首先,可以通过以下两个函数来获得线程可以设置的最高和最低优先级,函数中的策略即上述三种策略的宏定义:  intsched_get_priority_max(intpolicy

2、);  intsched_get_priority_min(intpolicy); SCHED_OTHER是不支持优先级使用的,而SCHED_FIFO和SCHED_RR支持优先级的使用,他们分别为1和99,数值越大优先级越高。设置和获取优先级通过以下两个函数intpthread_attr_setschedparam(pthread_attr_t*attr,conststructsched_param*param);  intpthread_attr_getschedparam(constpthread_attr_t*attr,structsch

3、ed_param*param);param.sched_priority=51;//设置优先级系统创建线程时,默认的线程是SCHED_OTHER。所以如果我们要改变线程的调度策略的话,可以通过下面的这个函数实现。intpthread_attr_setschedpolicy(pthread_attr_t*attr,intpolicy);上面的param使用了下面的这个数据结构:structsched_param{int__sched_priority;//所要设定的线程优先级};我们可以通过下面的测试程序来说明,我们自己使用的系统的支持的优先级:

4、#include#include#include#includestaticintget_thread_policy(pthread_attr_t*attr){intpolicy;intrs=pthread_attr_getschedpolicy(attr,&policy);assert(rs==0);switch(policy){caseSCHED_FIFO:printf("policy=SCHED_FIFO");break;caseSCHED_RR:print

5、f("policy=SCHED_RR");break;caseSCHED_OTHER:printf("policy=SCHED_OTHER");break;default:printf("policy=UNKNOWN");break;}returnpolicy;}staticvoidshow_thread_priority(pthread_attr_t*attr,intpolicy){intpriority=sched_get_priority_max(policy);assert(priority!=-1);printf("max_p

6、riority=%d",priority);priority=sched_get_priority_min(policy);assert(priority!=-1);printf("min_priority=%d",priority);}staticintget_thread_priority(pthread_attr_t*attr){structsched_paramparam;intrs=pthread_attr_getschedparam(attr,¶m);assert(rs==0);printf("priority=%d

7、",param.__sched_priority);returnparam.__sched_priority;}staticvoidset_thread_policy(pthread_attr_t*attr,intpolicy){intrs=pthread_attr_setschedpolicy(attr,policy);assert(rs==0);get_thread_policy(attr);}intmain(void){pthread_attr_tattr;structsched_paramsched;intrs;rs=pthread_a

8、ttr_init(&attr);assert(rs==0);intpolicy=get_thread_policy(&attr);printf("Sh

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

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

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