2016 - 2024

感恩一路有你

策略模式应用场景代码举例 linux进程调度的三种策略是什么?

浏览量:2654 时间:2023-05-11 20:12:29 作者:采采

linux进程调度的三种策略是什么?

进程调度策略应该是调度系统种哪一个进程来CPU不运行。

这种调度分2层考虑到。

第一层,进程状态这个是最被优先的,也就是说优先级最高的。

在linux中只有就绪态的进程才有可能会被调度选中后再全部土地CPU,其它状态的进程不可能占有的到CPU。

下面是linux中进程的状态TASK_RUNNING:就位状态,能得到CPU就可以运行。

TASK_INTERRUPTIBLE:浅层睡眠,资源合理到位或者造成信号都会转成准备完毕态。

TASK_UNINTERRUPTIBLE:浅度睡眠,资源到位就会进入到准备完毕态,不服务控制器信号。

TASK_ZOMBIE:被凝固态,进程exit后。

TASK_STOPPED:恢复正常态,发来SIG_CONT信号刚刚进入就绪态。

第二层,反正真正在操作系统中的实现,那就是所有准备就绪态进程链接成一个队列,进程调度时候只会决定这个队列中的进程,对其它的进程不考虑到,这就利用了第一层中的要求。

这一次就是就位队列内部各个进程的竞争了。

Linux常规3种有所不同的调度政策,SCHED_FIFO(下面缩写成FIFO,先来先服务),SCHED_RR(简写成RR,时间片轮流),SCHED_OTHER(下面简写成OTHER)。

这里大家就能察觉出一个问题,按结构相当于调度政策的进程之间也就有可比性,Linux3种调度政策并存,那么有所不同调度政策间的进程如何都很呢?也算他们之间根本不会就没有可比性。

当然在调度时候,调度只看一个指标,那是各个进程所更具的权值,权值最大的且在可执行队列中排在最前面的变会被调度负责执行。

而权值的计算才会啊,设计到各方面因素,其中调度政策的确在计算权值中,份量是不比寻常的。

为什么Linux要这样干呢?这是的原因事务的多样性改变的,进程有实时性进程和非实时性的进程2种,FIFO和RR是利用接受实时自动性进程的调度,我们查查这3种政策下权值的计算公式就清楚了:FIFO和RR计算公式,权值1000进正的运行时间OTHER计算公式,当时间片为0时,权值0.当时间片不为0时候,权值剩余时间片20-yep,另外假如是内核线程有1的小加分,这是毕竟内核线程不必用户空间的切换到,所以才给它加了一分,奖励他在进程切换到时候开销小的功劳。

时间片好理解,这样的话yeah这个值,用过linux系统的人都明白了,这是一个从unix下不能继承过去的概念,来表示懂得谦让度,是一个从20~-19的数,可以不实际yeah和renice指令来设置。

从代码中也能看见值越小就越不会歉让他人。

从这里我们看得出FIFO和RR起码有1000的基数,所以在有FIFO和RR调度政策进程修真者的存在时,OTHER进程是没有机会被调度指挥的到的。

从权值计算公式同时也能看出,FIFO先来先服务的调度政策柯西-黎曼方程了,但RR这个时间片分头的调度如果没有通过这种权值算出是肯定不能柯西-黎曼方程时间片分头这一概念的。

这里只是权值的计算,在调度时候对RR政策的进程特珠全面处理。

以上都是权值换算,下面看一下真正的的调度过程,是需要是对RR政策进程的普通处理,假如当前进程区分的RR政策,这样看他的时间片是否是只能用一次,用完了就踢到准备完成队列尾部,同时完全恢复他的时间片。

然后把是便利雷鸣就绪队列,找到最后一个权值的最的进程来运行。

整体调度效果就是:要是有FIFO和RR政策的进程,就优先于指挥和调度他们2个,他们之间看已不能执行时间长短做出决定胜负,而2种政策内部则尊守各自调度政策。

而OTHER唯有在前面2种不必然于准备完成队列时候才有可能先执行,他们实际中也是分头执行,但他们之间是靠剩余时间和NICE值来改变胜负。

另外就绪队列中排在最前面的最被优先在同样的权值情况下。

主键生成策略有哪些,举例2-3个?

多主多写的话,会。

1.多主单写。性能冗余设计。

2.主键生成策略根据主数量取模。很简单比较可靠,根本无法扩展。

3.由应用生成主键。不需要内部改造业务代码。

mesh。这个就必须架构的改造了。

进程 政策 调度 权值 时间

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。