CPU、核心、进程、线程、协程、串行、并发、并行

CPU

中央处理器(英文CentralProcessingUnit,CPU)是一台计算机的运算核心和控制核心。CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。差不多所有的CPU的运作原理可分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。 CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令。所谓的计算机的可编程性主要是指对CPU的编程。
原理上:可以让多个核心同时运行一个程序。但是一般系统是自动分配的,目的是平衡工作负荷。除非编程时故意设为某个核心单独运算(把所有任务都指定为某个核心上运行)。另外一般软件显示的CPU使用率是平均值,即便某个核心已经100%了,而其它核心没有达到那平均值也不是100%。

核心

仅仅提高单核芯片的速度会遇到很多问题,英特尔工程师转而“横向发展”,提高计算机性能。线程应用能够充分利用多个内核,在同样的时间内完成更多的任务,大大提高cpu的性能。多核处理器是单枚芯片,可以插入一个处理器卡槽内,操作系统会利用相关资源将单枚芯片中的多个执行内核分立为多个处理器。
CPU的核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。
现在的电脑都是多核的,使用多线程能充分利用CPU来提供程序的执行效率。

多线程(不同于程序中的多线程)

	事实上单个执行内核的性能并没有被充分利用,因此工程师们又采用了另一个思路去提高cpu性能,即让单个执行内核可以同时执行多重线程,从而进一步提高cpu性能,这就是所谓的超线程技术。
	虽然单线程核心每秒能处理成千上万条指令,但任一时刻,内核只能对一条线程进行操作,而其实这个内核还有很多性能没有被利用到,空闲着。超线程技术就是在一个执行内核上同时执行两个线程,两个线程共享这一个内核的资源。理论上来说就像两个独立的执行内核分别同时执行两个线程一样,但其实并不是这样。当两个线程同时需要同一个内核资源时,其中一个线程必须等待另一个线程使用完后释放资源,才能继续执行。所以超线程性能并不等于两个执行内核的性能。这里的多线程只是逻辑上的多线程,并不是真正意义上独立的多线程。

进程

是资源调度的最小单位
进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。凡是用于完成操作系统的各种功能的进程就是系统进程,而所有由你启动的进程都是用户进程。
每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。
进程占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、页表、文件句柄等)比较大,但相对比较稳定安全。协程切换和协程切换

线程

CPU调度的最小单位
线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。
多个线程共享所属进程的资源,同时线程也拥有自己的专属资源。
程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据

协程

协程是一种用户态的轻量级线程,协程的调度完全由用户控制。
一个线程可以拥有多个协程,协程不是被操作系统内核所管理,而完全是由程序所控制。
与其让操作系统调度,不如我自己来,这就是协程

通信方式

通信

为什么要使用多线程?

	1.在一个程序中,有很多的操作是非常耗时的,如数据库读写操作,IO操作等,如果使用单线程,那么程序就必须等待这些操作执行完成之后才能执行其他操作。使用多线程,可以在将耗时任务放在后台继续执行的同时,同时执行其他操作。
	2.可以提高程序的效率。
	3.在一些等待的任务上,如用户输入,文件读取等,多线程就非常有用了。

多线程的缺点:

	1.使用太多线程,是很耗系统资源,因为线程需要开辟内存。更多线程需要更多内存。
	2.影响系统性能,因为操作系统需要在线程之间来回切换。
	3.需要考虑线程操作对程序的影响,如线程挂起,中止等操作对程序的影响。
	4.线程使用不当会发生很多问题。
总结:多线程是异步的,但这不代表多线程真的是几个线程是在同时进行,实际上是系统不断地在各个线程之间来回的切换(因为系统切换的速度非常的快,所以给我们在同时运行的错觉)。

并行

并行:多个CPU实例或多台机器同时执行一段处理逻辑,是真正的同时。

并发

	并发:通过CPU调度算法,让用户看上去同时执行,实际上CPU操作层面不是真正的同时。
	并发时如果操作了公用资源,可能产生线程安全问题。	

高并发

高并发指的是是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化,包括,硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化……

多线程与高并发的联系

	多线程只是在同/异步角度上解决高并发问题的其中的一个方法手段,是在同一时刻利用计算机闲置资源的一种方式。
	多线程在高并发问题中的作用就是充分利用计算机资源,使计算机的资源在每一时刻都能达到最大的利用率,不至于浪费计算机资源使其闲置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值