1. 什么是CPU

(1)         Central  Progressing  Unit 中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。

(2)         CPU包括 运算器,高速缓冲存储器,总线。

(3)         它的工作,主要是解释计算机中的指令,和处理计算机软件中的数据。它在计算机中起着最重要的作用,构成了系统的控制中心,对各个应用程序进行统一协调和控制。

  1. 线程

(1)         进程,一个进程就是一个具有独立功能的应用程序,关于某个数据集合上的一次运行活动。进程是系统进行资源分配和调度的一个独立单位。

(2)         线程,线程是进程的实体,属于进程,是CPU调度和分派的基本单位。

资源分配给进程,所有线程共享该进程的资源

(3)         操作系统的设计,可以归纳为3点。

  1. 以多进程形式,允许多个任务同时运行。
  2. 以多线程形式,允许一个任务拆分成多个线程运行。
  3. CPU提供协调机制,允许线程之间共享资源,防止线程之间产生冲突。
  4. CPU和线程的关系

(1)         第一阶段,单CPU时代,单CPU在同一时间点,只能执行单一线程。比如,的某一刻00:00:00 这一秒,只计算1+1=2(假设cpu每秒计算一次)

(2)         第二阶段,单CPU多任务阶段,计算机在同一时间点,并行执行多个线程。但这并非真正意义上的同时执行,而是多个任务共享一个CPU,操作系统协调CPU在某个时间点,执行某个线程,因为CPU在线程之间切换比较快,给人的感觉,就好像多个任务在同时运行。比如,电脑开了两个程序qq和qq音乐,假设这两个程序都只有一个线程。人能够感觉到CPU切换的频率是一秒一次,假设当前cpu计算速度是1秒1次,那么我们就能明显感到卡顿,当聊天,点击发送按钮时候,qq音乐就会停止运行。当前cpu计算速度是1秒100次,也就是它能在一秒之内在这两个进程见切换100次,那么我们就感不到卡顿,觉得QQ和QQ音乐是同时在运行。

(3)         第三阶段,多CPU多任务阶段,真正实现的,在同一时间点运行多个线程。具体到哪个线程在哪个CPU执行,这就跟操作系统和CPU本身的设计有关了。

  1. 举例说明

(1)假设一种极端情况,一台单核计算机,只运行2个程序A和B。

假设A和B的优先级相同,A有3个线程,B有1个线程,那么CPU分配给A和B的执行时间应该是3:1。

(2)假设同一种情况发生在一台多核计算机,核1处理A和B各一个线程,核2处理A剩下的线程。

(3)刚才说的是线程只消耗CPU,在实际应用中这种情况是不存在的,程序总会跟资源打交道,比如读个文件,查询数据库,访问网络,这个时候多线程才能体现出优势。在一个进程中,让A先用一下CPU去查询数据库,在A查询数据库的时候CPU空闲,B就用一CPU去读文件,让C去访问网络。相对于查询数据库,读取文件这些操作来说,CPU的计算时间几乎可以忽略不计。所以,多线程,实际上是计算机多种资源的并行运用,跟CPU有几个核心没什么关系。

多线程和CPU的关系的更多相关文章

  1. python2.0_s12_day9_协程&多线程和cpu,磁盘io之间的关系

    事件驱动和异步io有什么直接关系. 当我们访问一个网页,不考虑网络问题.我们人类不觉得网页慢. 但是实际中对计算机来说还是慢.那慢在哪里.io io操作是整个网络操作中最慢的.比如你打开网页要是有2秒 ...

  2. 多线程与CPU和多线程与GIL

    多线程与CPU:1.单核CPU  CPU密集型的程序(做计算操作的程序)  单线程即可( 此时的任务已经把CPU资源100%消耗了,就没必要也不可能使用多线程来提高计算效率)2.单核CPU  IO密集 ...

  3. Java多线程(二)关于多线程的CPU密集型和IO密集型这件事

    点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...

  4. Android的.so文件、ABI和CPU的关系

    Android的.so文件.ABI和CPU的关系有篇文章描述的很详细了 见 http://blog.csdn.net/xx326664162/article/details/51163905

  5. 电脑内存和CPU的关系

    http://zhidao.baidu.com/link?url=OmHYd0uUJ3elyOnx1Qpdw1GGhMQBzwbdKSwR62Dn6j0090-sR0sQWR02THP-uPx7cK6 ...

  6. 虚拟化中虚拟机处理器核数与物理主机cpu的关系

    vCPU,顾名思义,是虚拟CPU. 创建虚拟机时,需要配置vCPU资源. 因此vCPU是虚拟机的部件. 因此脱离VM,谈论vCPU是没有意义的.虚拟化管理系统如何调度vCPU,取决于系统内的虚拟机数目 ...

  7. 内存与cpu的关系

    CPU是负责运算和处理的,内存是交换数据的.当程序或者操作者对CPU发出指令,这些指令和数据暂存在内存里,在CPU空闲时传送给CPU,CPU处理后把结果输出到输出设备上,输出设备就是显示器,打印机等. ...

  8. 关于ESXI能虚拟出多少个虚拟机和CPU的关系

    当你的虚拟机报如下错误的时候: esxi5.0版本最高配置: https://www.vmware.com/content/dam/digitalmarketing/vmware/zh-cn/pdf/ ...

  9. vCPU 和 CPU 的关系

    vCPU 和 pCPU 的关系不是数量,当被底层虚拟化之后,任何一个 vCPU 都是用到所有的 pCPU 核心总体的百分比,不是某一个核心这么去看的,并没有对应的关系,也不是一个很绝对的分配到具体某个 ...

随机推荐

  1. 使用Mac的过程中的一些小操作

    前言:使用Mac的过程中的一些小操作 查看Mac系统是32位还是64位: 方法1: 点击左上角的苹果按钮->关于本机->概览->系统报告->软件->偏好设置面板:右侧有提 ...

  2. mongodb基础环境部署(windows系统下)

    Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNorma ...

  3. 使用phpExcel将数据批量导出

    if(isset($_POST['export']) && $_POST['export'] == '导出所选数据') { //此处为多选框已勾选的数据 $export_id=$_PO ...

  4. poj_1845_Sumdiv

    Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S m ...

  5. activemq启动闪退/失败 (Illegal character in hostname at index 5: ws://****:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600)

    java.net.URISyntaxException: Illegal character in hostname at index 5: ws://****:61614?maximumConnec ...

  6. 百度MIP校验错误整理与解决方法

    MIP校验工具地址: https://www.mipengine.org/validator/validate 1.强制性标签缺失或错误 错误提示:line 1,col 1: 强制性标签'<sc ...

  7. MOS管学习笔记

    最近在做一个小的电路设计项目,其中遇到了MOS管,经过查询资料,多年遗忘的数电.模电渐渐又浮现在我的脑海,在百度文库找到一篇比较不错的文章,把它截图使用出来,如原稿作者看到感觉侵权,请及时联系我,以便 ...

  8. 学习Pytbon第十天 函数2 内置方法和匿名函数

    print( all([1,-5,3]) )#如果可迭代对象里所有元素都为真则返回真.0不为真print( any([1,2]) )#如果数据里面任意一个数据为真返回则为真a= ascii([1,2, ...

  9. python flask豆瓣微信小程序案例

    项目步骤 定义首页模板index.html <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  10. C语言数组篇(三)字符空间 和 非字符空间

     一维数组和字符串         首先是字符数组(区别字符串) ] = {'a','b','c'}; //这只是单纯的字符数组,不是字符串          字符串最重要的标志就是结尾有一个'\0' ...