进程、线程、进程池、进程三态、同步、异步、并发、并行、串行
阅读本文大概需要 5.5 分钟。
来自:https://cnblogs.com/songhaixing/p/13799827.html
一进程, 线程
1.进程
什么是进程?
开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。
明白点: 当我们运行一个程序,那么我们将运行的程序叫进程。
进程是申请一块内存空间,将数据放到内存空间中去, 是申请数据的过程是最小的资源管理单元
进程是线程的容器
程序与进程的区别
程序是数据和指令的集合, 是一个静态的概念, 就是一堆代码, 可以长时间的保存在系统中
进程是程序运行的过程, 是一个动态的概念, 进程存在着生命周期, 也就是说进程会随着程序的终止而销毁, 不会永久存在系统中
进程之间交互
进程之间通过 TCP/IP 端口实现
2.线程
什么是线程
线程是操作系统能够进行运算调度的最小单位。
它被包含在进程之中,是进程中的实际运作单位。
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
是进程的一条流水线, 只用来执行程序,而不涉及到申请资源, 是程序的实际执行者最小的执行单元
线程之间交互
多个线程共享同一块内存,通过共享的内存空间来进行交互
3.进程与线程的关系
例子:
进程是线程的容器
4.总结
进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——
资源分配的最小单位
。线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程——
程序执行的最小单位
。进程要分配一大部分的内存,而线程只需要分配一部分栈就可以了.
一个程序至少有一个进程,一个进程至少有一个线程.
一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行.
二.并行, 并发, 串行
并发: 多个任务看起来是同时进行, 这是一种假并行
单核下使用多道技术实现
并行: 多个任务同时进行
串行: 一个程序完完整整的运行完,再运行下一个进程
四.任务运行的三种状态
1.就绪态 (Ready)
当进程已分配到除CPU以外的所有必要的资源后,只要再获得CPU, 便可执行程序, 进程这时的状态就称为就绪态,
在一个系统中处于就绪态的进程可能有多个, 通常将他们排成一个队列, 这就叫就绪队列
2.运行态 (Running)
当进程已经获得CPU操作权限, 其程序正在运行, 着就叫做运行态
在单核操作系统中, 只有一个进程处于运行态, 多核操作系统有多个进程处于运行态
3.阻塞态 (Blocked)(sleep)
正在执行的进程, 由于等待某个事件而无法执行时, 便被操作系统剥夺了cpu的操作时间, 这是就是阻塞态
引起阻塞的原因多种, 例如: 等待I/O操作, 更高优先级的任务抢走了CPU权限等.
4.进程三种状态 间的转换
就绪态➠➠运行态
运行态➠➠就绪态
运行态➠➠阻塞态
阻塞态➠➠就绪态
四.任务提交的两种方式
1.同步
同步是指发送方发送数据后, 等接收方发回响应后才发下一个数据报的通讯方式
同步是指两个程序的运行是相关的, 其中一个线程在阻塞需要等待状态, 那另一个线程才运行
2.异步
异步是指发送方发出数据后, 不等接收方发回响应, 接着就发下个数据报的通讯方式
异步是指两个线程毫无相关, 自己运行自己的
3.例子
同步
异步
五.进程池
1.什么是进程池?
进程池是资源进程, 管理进程组成的技术的应用.
2.为什么要有进程池?
3.进程池的概念
定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中的进程来处理任务
等到处理完毕,进程并不关闭,而是将进程再放回进程池中继续等待任务
如果有很多任务需要执行,池中的进程数量不够,任务就要等待之前的进程执行任务完毕归来,拿到空闲进程才能继续执行。
也就是说,进池中进程的数量是固定的,那么同一时间最多有固定数量的进程在运行
这样不会增加操作系统的调度难度,还节省了开关进程的时间,也一定程度上能够实现并发效果。
4.资源进程
预先创建好的空闲进程,管理进程(好比池子)会把工作分发到空闲进程来处理。
5.管理进程
管理进程负责创建资源进程,把工作交给空闲资源进程处理,回收已经处理完工作的资源进程。
资源进程与管理进程的交互
推荐阅读:
微信扫描二维码,关注我的公众号
朕已阅