Linux内核中使用的三个优先级有什么区别?
我是
Linux内核的新手,现在我正在研究Linux内核中的进程调度. Linux中有三种类型的优先级:
>静态优先级 现在我所理解的是: >静态优先级和动态优先级仅针对常规流程定义,它们只能从100到139取值. 现在我的问题是: >如果我错了,请纠正我,也请告诉我为什么要使用 解决方法
免责声明:以下适用于Linux中的调度(我不确定Windows或其他操作系统).线程和进程在这里可以互换使用,但是它们之间存在差异.
优先事项分歧 1.静态优先级:这些是创建新线程时设置的默认优先级(传统进程的值0,即非实时进程,即不使用实时调度时).您可以使用以下方法更改它 `pthread_setschedparam(pthread_t thread,int policy,const struct sched_param *param);` 其中,sched_pa??ram包含优先级: struct sched_param { int sched_priority; /* Scheduling priority */ }; 2动态优先级:当线程开始饿死因为一直在调度优先级较高的线程时,需要使用various mechanisms来提高这种线程的优先级.这种提升/降低(是的,这种情况也会发生)优先级被称为动态优先级,因为它不断变化.在Linux中,即使是胖孩子也可以玩. 3.实时优先级:只有当线程(进程)在一个实时策略(SCHED_FIFO,SCHED_RR)下调度并且sched_priority值在1(低)到99(高)范围内时才会出现这种情况.与非实时进程的静态/动态优先级相比,这是最高的. 更多信息:http://man7.org/linux/man-pages/man3/pthread_getschedparam.3.html 现在,问你的问题:
因此,对于非实时调度策略,每个进程都有一些静态优先级,更高的优先级使线程启动,后来为了避免任何不公正,优先级被提升/降低,这成为动态优先级.
不是,它取决于适当的调度机制.
那是动态进入画面的时候.阅读给定链接中的“好价值”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |