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

    进程的调度策略

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

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

    优先级是动态的

    进程调度的时机:

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

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

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

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

    进程的切换

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

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

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

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

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

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

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

  • 相关阅读:
    [PTA练习] 愿天下有情人都是失散多年的兄妹(25分)
    sql server远程连接非1433端口
    java把double转化为long型
    StringUtils工具类
    JfreeChart折线图
    Log4j配置
    Ibatis,Spring整合(注解方式注入)
    Spring中的autowire属性(转)
    MyBatis3入门样例
    struts2 ibatis Spring系统架构图
  • 原文地址:https://www.cnblogs.com/gaocan/p/5383136.html
Copyright © 2011-2022 走看看