并发编程-深入理解进程和线程
1.序言
本文讲解进程和线程,首先会做一个通用讲解,然后会详细讲解各语言的多线程理论。
2.程序:静态程序和动态程序
在进一步探讨进程和线程之前,我们先来看一下程序的生成及运行。我们把生成的产物称为静态程序,把运行的程序称为动态程序。
我们用高级语言编写源文件,经编译器编译,生成的产物称为静态程序。
静态程序读入内存中,经由CPU执行,我们称为动态程序。
静态程序和动态程序之间的关系:现代计算机都是冯诺依曼结构,由IOMC五部分组成,计算机本质是CPU核心部分与辅助部分协作循环往复不断执行指令的过程。因此程序的本质是指令的集合,静态程序是存储在外存上的指令集合,而动态程序是读入内存中的经由CPU不断执行的指令集合的过程。
3.进程和线程
进程与动态程序密切相关。进程,运行中的程序,是操作系统分配资源的基本单位。线程,CPU调度的基本单位。
那么该如何理解这句话的意思。首先操作系统是一类特殊的程序,其特殊在于它与硬件紧密相关,类似于硬件管家的角色。因此可以对硬件资源做分配。因此这里所说的资源指的就是硬件资源。那具体是计算机五部分结构中的哪一部分呢?我们上文提到程序本质是指令的集合,而指令的本质是数据及对数据的处理,因此我们再抽象一层,程序是数据及其数据处理的集合。因此在动态程序中,对应数据,其对应的硬件资源便是内存,操作系统会为每一个程序为基本单位分配内存。这便是进程:由操作系统分配了内存硬件资源的指令集合。而对应数据的处理
则是指占用CPU的资源。这便是线程。是CPU调度的基本单位。占用一定内存资源的指令集合,CPU不断按照指令集合运行,对数据做处理,如果自始至终只有一种数据处理行为占用CPU,称为单线程。进程中产生两种以上的处理行为轮流占用CPU,称为多线程。
https://maples7.com/2018/10/21/understand-concurrency/

浙公网安备 33010602011771号