转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
Linux 2.4进程调度分析 5         ★★★★

Linux 2.4进程调度分析 5

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2148 更新时间:2009/4/22 20:45:51
在循环中检查等待条件是否满足,不满足则调用schedule(),满足了就退出循环;
  • 将进程从事件等待队列中删除。
  • 从"调度器工作流程"中我们知道,调度器会将处于休眠状态的进程从就绪队列中删除,而只有就绪队列中的进程才有可能被调度到。将该进程重新放到就绪队列中的动作是在事件发生时的"唤醒"过程中完成的。在以上所示的鼠标驱动中,鼠标中断将调用mousedev_event()函数,该函数的最后就会使用wake_up_interruptible()唤醒等待鼠标事件的所有进程。wake_up_interruptible()将最终调用try_to_wake_up()函数:

    /* 节选自[kernel/sched.c] */

    static inline int try_to_wake_up(struct task_struct * p, int synchronous)

    {

                        unsigned long flags;

                        int success = 0;

     

                        spin_lock_irqsave(&runqueue_lock, flags);

                        p->state = TASK_RUNNING;

                        if (task_on_runqueue(p))

                                   goto out;

                        add_to_runqueue(p); /* 添加到就绪队列中 */

                        if (!synchronous || !(p->cpus_allowed & (1 << smp_processor_id())))

                                   reschedule_idle(p); /* 这种情况下调用wake_up(),synchronous总为0,此时,*/

                                                       /* 如果本CPU不适合运行该进程,则需要调用reschedule_idle()寻找合适的CPU */

                        success = 1;

                  out:

                        spin_unlock_irqrestore(&runqueue_lock, flags);

                   return success;

    }

     

     

    这时启动schedule()就是被动的了。

    B. 被动式

    在系统调用执行结束后,控制由核心态返回到用户态之前,Linux都将在ret_from_sys_call入口检查当前进程的need_resched值,如果该值为1,则调用schedule():

              /* 节选自[arch/i386/kernel/entry.S] */

                  ENTRY(ret_from_sys_call)

    上一页  [1] [2] [3]  下一页


    [C语言系列]C# 和 Linux 时间戳转换  [Web开发]PHP flock文件锁介绍
    [Web开发]flock() Linux下的文件锁  [电脑应用]Linux下的六个免费的虚拟主机管理系统介绍
    [电脑应用]Linux数据库大比拚  [操作系统]在Windows中玩转Linux操作系统
    [办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]掌握 Linux 调试技术
    [办公软件]理解 Linux 配置文件  [聊天工具]Real10 & Xpdf installation on Linux Box
    教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台