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

    进程的调度策略

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

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

    优先级是动态的

    进程调度的时机:

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

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

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

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

    进程的切换

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

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

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

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

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

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

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

  • 相关阅读:
    CentOS7配置VIP
    Linux定时任务crontab命令
    zabbix安装部署
    ansible部署EFK
    Python中参数的冒号与箭头表示注释
    pycharm 进行远程服务器修改与调试
    判别模型与生成模型
    写Python机器学习时的一些注意事项
    numpy基本操作
    手写神经网络
  • 原文地址:https://www.cnblogs.com/gaocan/p/5383136.html
Copyright © 2011-2022 走看看