zoukankan      html  css  js  c++  java
  • 进程的调度

    进程的调度策略

    调度策略:一组规则,决定什么时候以怎样的方式选择一个新进程运行。

    Linux的调度基于分时和优先级,进程根据优先级来排队

    优先级是动态的

    进程调度的时机:

    • 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule();

    • 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度;

    • 用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度。

    内核线程是只有内核态没有用户态的特殊进程。

    进程的切换

    进程的切换:挂起正在cpu上正在执行的进程,并恢复以前挂起的某个进程的执行,也叫任务切换。

    中断上下文的切换是在同一个进程中的。

    进程上下文包含了进程执行的所有信息:

         用户地址空间;程序代码,数据,用户堆栈等等

          控制信息:进程描述符,内核堆栈等

          硬件上下文:使用switch_to函数,而中断仅仅只是保存现场和恢复现场

    schedule()函数选择一个新的进程来运行,并调用context_switch进行上下文的切换,这个宏调用switch_to来进行关键上下文切换

  • 相关阅读:
    Spring Transaction属性之Propagation
    Eclipse使用代码清理功能(Clean Up)
    JAVA字符串格式化-String.format()的使用
    PHP Windows环境部署
    http server 下载地址
    微信APP支付(Java后台生成签名具体步骤)
    微信APP支付Java后端回调处理
    过滤HTML控件,将输入控件替换成SPAN
    pulic CMS 使用手册
    public cms 配置站点
  • 原文地址:https://www.cnblogs.com/gaocan/p/5383136.html
Copyright © 2011-2022 走看看