总目录:https://blog.csdn.net/qq_41106844/article/details/105553392
Python - 子目录:https://blog.csdn.net/qq_41106844/article/details/105553333
在了解进程和线程前需要了解一下什么是多任务。
什么是多任务
操作系统同时完成多项任务的处理。
现在计算机CPU已经普遍是多核,可以同时执行多个任务。但是以前的单核CPU也可以执行多任务,他先把任务A执行0.01秒,再把任务B执行0.0.1秒。。其实每个任务都在轮流执行,但是cpu的速度太快,让我感觉他是在执行多任务。(分时复用)
并发和并行
既然是多任务,变引申出来两个定义,并发和并行。
并发:指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机(CPU)上运行,但任一个时刻点上只有一个程序在处理机(CPU)上运行。
并行:是计算机系统中能同时执行两个或更多个处理的一种计算方法。并行处理可同时工作于同一程序的不同方面。并行处理的主要目的是节省大型和复杂问题的解决时间。
并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。所以说,并行是并发的子集。
什么是进程
进程是一个程序的执行实例。每个进程提供执行程序所需的所有资源。本质上是资源的合集。
一个进程有虚拟的地址空间、可执行的代码、操作系统的接口、安全的上下文(记录该进程的用户和权限)、唯一的进程ID、环境变量、优先级类、最大和最小的工作空间(内存空间),还要至少有一个线程。
什么是线程
线程是操作系统能够运算调度的最小单位。线程被包含在进程之中,是进程中的实际运作单位。一条线程是进程中一个单一顺序的控制流,一个进程可以并发多个线程,每条线程并行执行不同的任务。
如果我们把一个CPU比作一个工厂。
单核CPU:只有一个车间的工厂。(也就是一个车间)
多核CPU:有多个车间的工厂。
进程:一条流水线。
多进程:一个车间里面有多条流水线。
线程:一条流水线上的一个工人。
多线程:一条流水线上有多个工人。
内存共享:车间内的空间是工人共享的。
内存安全:车间有一个工人容量,达到容量其他工人不能进这个车间。
互斥锁:车间卫生间是单人卫生间,一个工人进去锁上门,另外一个工人发现锁门了就在外面排队。
信号量:后来担任卫生间修建成多个单人卫生间了,但是所有厕所都满了以后,还是要排队。