1、核心数与线程数
-
CPU个数即CPU芯片个数
-
CPU的核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。
-
线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。比如,可以通过一个CPU核心数模拟出2线程的CPU,也就是说,这个单核心的CPU被模拟成了一个类似双核心CPU的功能。
-
超线程技术,一个核心可以对应两个线程,也就是说它可以同时运行两个线程。
-
CPU的线程数概念仅仅只针对Intel的CPU才有用,因为它是通过Intel超线程技术来实现的,最早应用在Pentium4上。如果没有超线程技术,一个CPU核心对应一个线程。所以,对于AMD的CPU来说,只有核心数的概念,没有线程数的概念。
2、并发与并行
-
并发:时间段内有很多的线程或进程在执行,但何时间点上都只有一个在执行,多个线程或进程争抢时间片轮流执行。
-
并行:时间段和时间点上都有多个线程或进程在执行。
-
单核单线程只能实现并发,不能实现并行。单核双线程可以实现并行
3、同步与互斥
-
相交进程之间的关系主要有两种,同步与互斥。
-
所谓互斥,是指散步在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。
-
所谓同步,是指散步在不同进程之间的若干程序片断,它们的运行必须严格按照规定的 某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。
-
显然,同步是一种更为复杂的互斥。
-
总结:
-
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
-
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。