剖析Android中进程与线程调度之nice

剖析Android中进程与线程调度之nice

ID:42586659

大小:33.78 KB

页数:5页

时间:2019-09-18

剖析Android中进程与线程调度之nice_第1页
剖析Android中进程与线程调度之nice_第2页
剖析Android中进程与线程调度之nice_第3页
剖析Android中进程与线程调度之nice_第4页
剖析Android中进程与线程调度之nice_第5页
资源描述:

《剖析Android中进程与线程调度之nice》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、剖析Android中进程与线程调度之nice在计算机操作系统中,进程是进行资源分配和调度的基本单位,同时每个进程之内也可以存在多个线程。那么在Android系统(LinuxKernel)中,进程是如何去抢占资源,线程又是如何根据优先级切换呢,本文将尝试剖析这个问题,研究nice在Linux以及Android系统中的应用。一些概念·进程是计算机系统中,程序运行的实体,也是线程的容器。·线程是进程中实际执行单位,一个线程是程序执行流的最小单元。在一个进程中可以有多个线程存在。nice与进程调度Linux中,使用nicevalue(以下成为nice值)来

2、设定一个进程的优先级,系统任务调度器根据nice值合理安排调度。·nice的取值范围为-20到19。·通常情况下,nice的默认值为0。视具体操作系统而定。·nice的值越大,进程的优先级就越低,获得CPU调用的机会越少,nice值越小,进程的优先级则越高,获得CPU调用的机会越多。·一个nice值为-20的进程优先级最高,nice值为19的进程优先级最低。·父进程fork出来的子进程nice值与父进程相同。父进程renice,子进程nice值不会随之改变。词源考究nice这个命令的来源几乎没有资料提到,于是便尝试自己来推断一下。在诸如词霸,沪江等

3、词典给出的意思均为好的;美好的;可爱的;好心的,友好的。而有道词典则稍微给出了一个其他词典没有的和蔼的。个人认为有道给出的这个比较合理。要想做到和蔼,就需要做到谦让,因此或多或少牺牲自己一点,成全他人。所以nice值越高,越和蔼,但是自己的优先级也会越低。renice对于一个新的进程我们可以按照下面的代码为一个进程设定nice值。1.nice -n 10 adb logcat  对于已经创建的进程,我们可以使用renice来修改nice值1.sudo renice -n 0 -p 24161  该命令需要使用root权限,-p对应的值为进程id。注

4、意renice命令在Linux发行版中-n的值应该为进程的目标优先级。而Mac下-n,则是代表对当前权限的增加值。比如在Mac下,讲一个进程的nice值由19改成10,可以这样操作sudorenice-n-9-p24161,这一点需要注意,避免掉进坑里。Android中的nice由于Android基于LinuxKernel,在Android中也存在nice值。但是一般情况下我们无法控制,原因如下:·Android系统并不像其他Linux发行版那样便捷地使用nice命令操作。·renice需要root权限,一般应用无法实现。线程调度虽然对于进程的优先

5、级,我们无法控制,但是我们可以控制进程中的线程的优先级。在Android中有两种线程的优先级,一种为AndroidAPI版本,另一种是Java原生版本。AndroidAPIAndroid中的线程优先级别目前规定了如下,了解了进程优先级与nice值的关系,那么线程优先级与值之间的关系也就更加容易理解。·THREAD_PRIORITY_DEFAULT,默认的线程优先级,值为0。·THREAD_PRIORITY_LOWEST,最低的线程级别,值为19。·THREAD_PRIORITY_BACKGROUND后台线程建议设置这个优先级,值为10。·THREA

6、D_PRIORITY_FOREGROUND用户正在交互的UI线程,代码中无法设置该优先级,系统会按照情况调整到该优先级,值为-2。·THREAD_PRIORITY_DISPLAY也是与UI交互相关的优先级界别,但是要比THREAD_PRIORITY_FOREGROUND优先,代码中无法设置,由系统按照情况调整,值为-4。·THREAD_PRIORITY_URGENT_DISPLAY显示线程的最高级别,用来处理绘制画面和检索输入事件,代码中无法设置成该优先级。值为-8。·THREAD_PRIORITY_AUDIO声音线程的标准级别,代码中无法设置为该

7、优先级,值为-16。·THREAD_PRIORITY_URGENT_AUDIO声音线程的最高级别,优先程度较THREAD_PRIORITY_AUDIO要高。代码中无法设置为该优先级。值为-19。·THREAD_PRIORITY_MORE_FAVORABLE相对THREAD_PRIORITY_DEFAULT稍微优先,值为-1。·THREAD_PRIORITY_LESS_FAVORABLE相对THREAD_PRIORITY_DEFAULT稍微落后一些,值为1。使用AndroidAPI为线程设置优先级也很简单,只需要在线程执行时调用android.os.

8、Process.setThreadPriority方法即可。这种在线程运行时进行修改优先级,效果类似renice。1.ne

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。