基本概念
1、物理CPU、逻辑CPU、CPU核数
(1) 一个物理CPU上有多个CPU核,如果采用了intel的超线程技术(HT), 就会再多出一倍的cpu核出来
(2)一般情况下,逻辑cpu数=物理CPU*cpu核数
(3)如果采用了超线程技术,则正常逻辑cpu数=物理CPU*cpu核数*2
top看到的cpu个数以及java中的Runtime.getRuntime().availableProcessors()获得到的都是逻辑cpu数。
2、 队列中的记录通常是进程的进程控制块。
3、CPU调度决策可在如下四种环境下发生
(1)当一个进程从运行状态切换到等待状态 例如,I/O请求或调用wait以等待一个子进程的终止
(2) 当一个进程从运行状态切换到就需状态 例如,当出现中断
(3)当一个进程从等待状态切换到就需状态 例如,I/O完成
(4)当一个进程终止
当调度只能发生在第一和第四种种情况时,称调度方案是非抢占的,否则调度方案是可抢占的。采用非抢占调度,一旦CPU被分配给一个进程,那么该进程会一直使用CPU直到进程终止或切换到等待状态时释放CPU
查看Android设备CPU信息
查看物理CPU的个数
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
查看逻辑CPU的个数
#cat /proc/cpuinfo |grep "processor"|wc -l
查看CPU是几核
#cat /proc/cpuinfo |grep "cores"|uniq