RH442-6 Linux进程调度(4)
来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:30 点击:次
4. 所有任务都采用SCHED_RR(实时调度策略,时间片轮转)调度策略时
l 创建任务时指定调度参数为RR,并设置任务的实时优先级和nice值(nice值将会转换为该任务的时间片的长度)。
l 如果没有等待资源,则将该任务加入到就绪队列中。
l 调度程序遍历就绪队列,根据实时优先级计算调度权值(1000+rt_priority),选择权值最高的任务使用cpu。
l 如果就绪队列中的RR任务时间片为0,则会根据nice值设置该任务的时间片,同时将该任务放入就绪队列的末尾。重复步骤3。
l 当前任务由于等待资源而主动退出cpu,则其加入等待队列中。重复步骤3。
5. 既有SCHED_OTHER,又有SCHED_RR和SCHED_FIFO调度
l RR调度和FIFO调度的进程属于实时进程,以分时调度的进程是非实时进程。
l 当实时进程准备就绪后,如果当前cpu正在运行非实时进程,则实时进程立即抢占非实时进程。
l RR进程和FIFO进程都采用实时优先级做为调度的权值标准,RR是FIFO的一个延伸。FIFO时,如果两个进程的优先级一样,则这两个优先级一样的进程具体执行哪一个是由其在队列中的未知决定的,这样导致一些不公正性(优先级是一样的,为什么要让你一直运行?),如果将两个优先级一样的任务的调度策略都设为RR,则保证了这两个任务可以循环执行,保证了公平。
6. SHCED_RR时间片轮转调度和SCHED_FIFO先进先出调度比较
l 不同点:
Ø 当采用SHCED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。
Ø SCHED_FIFO一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。
Ø 如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准备好,FIFO时必须等待该进程主动放弃后才可以运行这个优先级相同的任务。而RR可以让每个任务都执行一段时间。
l 相同点:
Ø RR和FIFO都只用于实时任务。
Ø 创建时优先级大于0(1-99)。
Ø 按照可抢占优先级调度算法进行。
Ø 就绪态的实时任务立即抢占非实时任务。
六、进程调度设置
1. 查看进程的调度策略和优先级
[root@www ~]# chrt -p pid
[root@www ~]# chrt -p 29441
pid 29441's current scheduling policy: SCHED_OTHER
pid 29441's current scheduling priority: 0
#进程调度方法:SCHED_OTHER
#优先级:默认优先级0
[root@www ~]# ps axo pid,comm,rtprio,plicy
PID COMMAND RTPRIO POL
1 init - TS
2 migration/0 99 FF
3 ksoftirqd/0 - TS
4 watchdog/0 99 FF
5 migration/1 99 FF
6 ksoftirqd/1 - TS
相关新闻>>
- 发表评论
-
- 最新评论 更多>>