哈尔滨网站关键字优化,杭州做网站哪里好,网站页面如何设计,免费微信小程序商城官网关于android进程调度#xff0c;线程调度的使用总结
一 java层的调用流程
上层关于调度主要用到的接口(ams,pms,SchedulingPolicyService等)#xff1a; setThreadScheduler setThreadGroupAndCpuset setThreadGroup setProcessGroup setProcessFrozen 调用到native对应的实…关于android进程调度线程调度的使用总结
一 java层的调用流程
上层关于调度主要用到的接口(ams,pms,SchedulingPolicyService等) setThreadScheduler setThreadGroupAndCpuset setThreadGroup setProcessGroup setProcessFrozen 调用到native对应的实现
android_os_Process_setProcessGroup//设置内部所有线程的sched android_os_Process_setThreadGroup//设置线程的sched android_os_Process_setThreadGroupAndCpuset android_os_Process_setThreadGroupAndCpuset//设置单个线程的cpuset 调用到libprocessgroup库 对应的接口SetTaskProfiles 这里分别对应的是修改 sche调度策略系统 和 cpuset资源分配系统 即调用AddTidToCgroup将线程号写到对应的fd里面去 setProcessFrozen 对应的是freezer子系统 就是直接调用AddTidToCgroup将线程号写到对应的fd里面去 io相关的一个没有这里有欠缺可考虑增加对于的子系统的支持
二 native层的调用流程
native往往直接用set_sched_policyset_cpuset_policy -SetTaskProfiles来设置surfaceflingeraudiotrack等等 三 两个系统的说明
sched系统是一种调度策略一个是按优先级划分不同等级的规则算法 cpuset是一个cgroup子系统一个资源限制或隔离系统一个是按文件夹方式隔离分配cpu和内存io等资源。 setThreadScheduler和 另一个接口setThreadPriority功能比较相似 setThreadScheduler主要是用来调整几个调度策略的等级实时与非实时的调整不同等级对应不同区间的nice值 setThreadPriority 主要是调整 普通线程的nice值
具体的两个系统划分等级 * cpuset profile array for: * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7) * sched profile array for: * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7)