进程调度管理读书报告

进程调度管理读书报告

问:Android 进程管理篇(五)-调度策略与优先级
  1. 答:接上篇cpuset,这篇来看看进程优先级与调度策略管理。
    Linux中,优先级埋差号一共有0-139,其中0-99的是RT(实时)进程,100-139的是非实时进程。
    数字越低优先级越高。
    SCHED_IDLE idle状态低优先级进程调度
    先看Process中调度策略的划分,与上面介绍的一样。
    首先在AMS中封装了FIFO和NORMAL的两个策尺茄略,NORMAL好说,看看FIFO在哪用到
    这里Process.setThreadScheduler并没有太多的应用,我们直接来看优先级设置吧。else中将top app的UI线程与render线程都设置为TOP_APP_PRIORITY_BOOST优先级,nice值为-10,非常高。
    这里主要调用androidSetThreadPriority方法
    这里通过set_sched_policy来调整调度策略,并通过setpriority设置进程优先级。这里不特意区分进程与线程了,反正在linux中都是进程。
    这里与前面的cpuset非常相似,依然是写节点,节点前面也提了就是:
    那么这里又引入了一个schedtune子系统,简单介绍下:
    schedtune是ARM/Linaro为了EAS新增的一个子系统,主要用来控制进程调度选择CPU以及boost触发。通过权重来分配CPU负载能力来陵液察实现快速运行。高权重意味着会享受到更好的cpu负载来处理对应的任务,换句话说你能享受相对更好的cpu运行性能。
    简单梳理下schedtune和不同类型SchedPolicy之间的对应关系:
    看下具体文件夹内容:
    系统配置:
    这里/dev/stune相关配置只做了这么一个
问:进程调度的功能
  1. 答:记录系统中所有进程的执行情况
    进程调度的具体功能可总结为如下几点:作为进程调度的准备,进程管理模块必须将系统中各进程的执行情况和状态特征记录在各进程的PCB表中。并且,根据各进程的状态特征和资源需求等、进程管理模块还将各进程的PCB表排成相应的队列并进行动态哪带队列转接。进程调度模块通过PCB变化来掌握系统中存在的所有进程的执行情况和状态特征,并在适当的时机从就绪队列中选择出一个进程占据处理机。
    选择占有处理机的进程
    进程调度的主要功能是按照一定的策略选择—个处于就绪状态的进程,使其获得处理机执行。根据不同的系统设计目的,有各种各样的选择策略,例如系统开销较少的静态优先数调度法,适合于的轮转法(Round RoLin)和多级互馈轮转法(Round Robin with Multip1e feedback)等。这些选择策略决定了调度算法的性能。
    进行进程上下文切换
    —个进程的上下文(context)包括进程的状态、有关变量和的值、机器的值和PCB以及有关程序、数据等。一个进程的执行是在进程的上李含芦下文中执行。当正在执行的进程由于某种原因要让出处理机时,系统要做进程上下文切换,以使另一个进程得以执行。当进行上下文切换时点统要首先检查是否允许做老粗上下文切换(在有些情况下,上下文切换是不允许的,例如系统正在执行某个不允许中断的时)。然后,系统要保留有关被切换进程的足够信息,以便以后切换回该进程时,顺利恢复该进程的执行。在系统保留了CPU现场之后,调度程序选择一个新的处于就绪状态的进程、并装配该进程的上下文,使CPU的控制权掌握在被选中进程手中。
进程调度管理读书报告
下载Doc文档

猜你喜欢