zoukankan      html  css  js  c++  java
  • 进程的切换和系统的一般执行过程

    张潇月+ 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 

    一、进程调度与进程调度的时机分析

    1.不同类型的进程有不同的调度需要

    第一种分类:I/O-bound、CPU-bound;第二种分类:批处理过程、实时进程、交互式进程;

    2.什么是调度策略?

    是一组规则,他们决定什么时候以怎样的方式选择一个新的进程运行。

    3.liunx进程的优先级

    用特定的算法计算出进程的优先级,用一个值表示,这个值表示把进程如何适当的分配给CPU

    Linux进程中的优先级是动态的,调度程序会根据进程的行为周期性的调整进程的优先级

    较长时间未非配到CPU,优先级上升;在CPU上运行了很长时间,优先级下降。

    4.schedule函数(负责实现调度)

    进程调度的时机:

    中断处理过程、直接调用schedule函数或返回用户态的根据need_resched标记调用schedule

    内核线程可以直接调用schedule函数进行进程切换,可主动可被动

    用户态进程无法实现主动调度,仅能通过某个时机进行调度,即中断处理过程中进行调度。

    用户态进程只能被动调用。

    二、进程上下文切换的代码分析

    为了控制进程的执行,内核必须有能力挂起正在CPU上执行的进程,并恢复以前挂起的某个进程的执行,这叫做进程切换、任务切换、上下文切换;

    挂起正在CPU上执行的进程,与中断时保存现场是不同的,中断前后是在同一个进程上下文中,只是由用户态转向内核态执行;

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

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

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

    硬件上下文(注意中断也要保存硬件上下文只是保存的方法不同)

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

    先是选择进程

    进程上下文切换

    关键

    next_ip一般是$1f,对于新创建的子进程是ret_from_fork

    jmp是寄存器传递参数的

    三、Linux系统的一般执行过程分析

    1.最一般的情况:

    关键点:中断和中断返回有一个CPU上下文的切换,进程调度过程中有进程上下文的切换。

    2.特殊情况:

    next_ip=ret_from_fork

    3.内核与舞女

    dancing girl vs. taxi girl

    哪一个进程招手就可以陷入到内核态,内核态里面走一程之后返回到用户态,再需要到中断就进入到内核态,没人了就空转。内核就相当于舞女,进程就相当于客人。内核是各种中断处理过程中和内核线程的集合。

    四、Linux操作系统架构和系统执行过程概览

    操作系统的基本概念

    操作系统内核架构

    最简单也是最复杂的操作——执行ls命令

    从CPU和内存的角度看Linux系统的执行

     

  • 相关阅读:
    敏捷个人手机应用:如何下载敏捷个人资料
    2014年8月10日:敏捷个人奥森跑步+慢走分享
    敏捷个人手机应用:如何进行敏捷个人练习
    敏捷个人新体系:定位
    任何社区,只要能影响他人成长的人,都可以成为敏捷个人的荣誉会员
    亲密爱人:《亲密关系》读书笔记
    亲密爱人:《亲密关系
    2014.7.12 敏捷个人奥森健步走&敏友分享会.活动报道
    开放产品开发(OPD):产品负责人的工作原则和方法
    #敏捷个人资料# 免费下载 《敏捷个人-认识自我,管理自我 v0.8.pdf》
  • 原文地址:https://www.cnblogs.com/20135131zxy/p/5390502.html
Copyright © 2011-2022 走看看