一、进程:
进程是一个程序在一个数据集中的一次动态执行过程,可以理解为“正在执行的程序”。进程一般由程序集、数据集、进程控制块三部分组成。进程是系统进行资源分配和调度的基本单位,是操作系统的基础。进程是线程的容器,进程是程序的实体。
程序集:描述进程要完成哪些功能以及如何完成
数据集:程序在执行过程所需要使用的资源
进程控制块:保存程序运行的状态
进程的局限性是创建、撤销和切换的开销比较大。
二、线程
线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行的最小单位。一个进程最少有一个主线程。
线程的优点:减小了程序并发执行的开销,提高了系统的并发性能。
线程的缺点:线程没有自己的系统资源,只有运行时不可缺少的资源,但是同一进程的各线程可以共享进程所拥有的系统资源。对于某些独占资源存在锁机制,处理不当会出现死锁。
三、协程
协程是一种用户态的轻量级线程,又称微线程。协程调度完全由用户控制,相当于子程序。
协程的优点:协程执行效率高。因为子程序切换不是线程切换,由程序自身控制,没有线程切换的开销。
协程不需要多线程的锁机制。在协程中控制共享资源不加锁,只需要判断状态就好
四、进程和线程区别
1、资源方面:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其他进程不可见
2、通信:进程间通信IPC,进程间可以直接读写进程数据段进行通信——需要进程同步和互斥手段辅助,以保证数据的一致性
3、调度和切换:线程上下文切换比进程上下文切换要快的多
4、在多线程OS中,线程不是一个可执行的实体
五、并发并行
1、并行是两个或者多个时间在同一时刻发生的;而并发是两个或者多个时间在同一时间间隔发生。
2、并行是在不同实体上的多个事件,并发是同一实体上多个事件
3、在一台机器上同时处理多个文件;在多个处理器上同时处理多个任务
解释:
并行:同时做不同事情的能力
并发:交替做不同事情的能力
专业术语:
并行:不同的代码块同时执行
并发:不同的代码块交替执行
并行并发的意义:
并发和并行都可以处理“多任务”,二者的主要区别在于是否是“同时进行”多个的任务。
但是 涉及到任务分解(有先后依赖的任务就不能做到并行)、任务运行(可能要考虑互斥、锁、共享等)、结果合并
下一篇文章再贴代码