今天在看阮一峰关于 JS单线程介绍的时候,发生疑惑:什么是单线程。同时经常听见进程。也就产生疑问:什么是进程?两者的区别是什么?同时我们在买CPU的时候,经常听见4核8进程,这又是什么?
进程和线程是计算机中中的概念,进程相当于我们在电脑桌面上开了一个程序,例如运行了QQ,这QQ就是一个进程。而线程就是在QQ这个进程上面,我们可以进行QQ相关的操作。比如聊天,发文件等。**
具体概念:
- 进程:(process),是计算机中已运行程序的实体。其在分时系统是作为基本运行单位。而在面向过程设计的系统中,进程是程序的基本执行实体,但在面向线程设计的系统中,进程本身不是基本单位,其是线程的容器 简而言之:其是具有一定独立功能的程序、是系统进行资源进行资源分配和调度的一个独立的单位。重点在于系统调度和单独的单位
- 线程:(thread),是操作系统能够进行运算调度的最小单位。其被包含在进程之中,是进程中实际运作单位。简而言之:线程是进程中的一个实体,是由CPU调度的分派的基本单位。
区别:
进程是独享内存空间和相关文件、资源,而线程是在被包含在进程中的,是去共享这个进程的空间、文件和相关资源。资源分配给进程,同一进程的所有线程共享该进程的所有资源(同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。)一个进程可以有很多的线程,每条线程并行去执行不同的任务,至少有一个线程(主线程)
线程在执行过程中,需要协同同步,不同的进度中的线程要利用消息通信的办法实现同步
真正在电脑上进行运行的是线程
CPU的四核心和八线程,四核心,说明这个cpu在物理上,其的硬件存在四个核心。在这里的线程并不是跟上面软件中的线程是同一个意思。这里的线程指的是更像上面进程的意思。
同时一个核心就只能处理一个线程。这个相当于一个人在一个时间段中只能干一件事情。
为什么四个核心可以有八个进程呢?
在这里,就要提到英特尔用到超线程技术,将一个核心可以对于两个线程。也就是说一个核心可以同时运行两个线程。参考