你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux 进程调度

[日期:2012-09-13] 来源:Linux社区  作者:lijizh1013 [字体: ]

参考Robert love的著作:

2.6内核版本以后的linux实现了抢占式内核,实现了内核抢占

进程调度顺序:

1. 实时进程 > 非实时进程

2. 实时进程之间,比较实时优先级,0到99,越大越高。

3. 实时优先级相同的实时进程之间,根据调度策略来执行。分FIFO和RR两种。

    1)其中RR方式,是轮询的在3.5.3内核版本中,rt_sched_class中task_tick的RR_TIMESLICE为100ms。当RR时间片超时后,进程被放到“实时优先级”相同的实时进程队列的队尾

    2)FIFO方式,则不轮询

    3)新加入的实时进程,放在同优先级队列的头部?尾部?3.5.3版本中不一定?

4. 非实时进程之间,采用完全公平调度策略CFS进行调度,与nice值有很大关系。nice值越小,“处理器使用比”越小,如果“使用比”比当前进程小,则新进程投入运行。

5. 内核线程的执行有自己的时机,不在此范围内,不用考虑。

进程调度的时机:

一、用户抢占:有TIF_NEED_RESCHED标记

1.系统调用返回用户空间时;

2. 中断处理程序返回用户空间时;

二、内核抢占:

1、中断处理程序返回内核空间时;

2、内核再一次具有可抢占性的时候;如执行spin_unlock等。具体参见preempt_check_resched函数,要求当前进程有TIF_NEED_RESCHED标记,并且thread_info的preempt_count为0,则表示可以抢占了。

3、显示调用schedule();

4、进程被阻塞;阻塞为调用prepare_to_wait,修改了当前进程的状态,并且释放锁的时候进行了类似于情况2的检查。

进程的阻塞和唤醒很好!(prepare_to_wait,wake_up)

1、案例:当年vxworks时?????????

      select也可以换成epoll,效率更好!

2、内核中大量使用此方法,效率高。

linux
相关资讯       Linux内核开发 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款