首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
182 阅读
2
php接口优化 使用curl_multi_init批量请求
144 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
786
篇文章
累计收到
28
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
1
篇与
的结果
2023-08-30
进程、线程、进程池、进程三态、同步、异步、并发、并行、串行
进程、线程、进程池、进程三态、同步、异步、并发、并行、串行一.进程, 线程1.🌵进程🍹什么是进程?开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。明白点: 当我们运行一个程序,那么我们将运行的程序叫进程。👉精简重点👈进程是申请一块内存空间,将数据放到内存空间中去, 是申请数据的过程是最小的资源管理单元进程是线程的容器🍹程序与进程的区别程序是数据和指令的集合, 是一个静态的概念, 就是一堆代码, 可以长时间的保存在系统中进程是程序运行的过程, 是一个动态的概念, 进程存在着生命周期, 也就是说进程会随着程序的终止而销毁, 不会永久存在系统中🍹进程之间交互进程之间通过 TCP/IP 端口实现2.🌵线程🍹什么是线程线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。👉精简重点👈是进程的一条流水线, 只用来执行程序,而不涉及到申请资源, 是程序的实际执行者最小的执行单元🍹线程之间交互多个线程 共享同一块内存 ,通过共享的内存空间来进行交互3.🌵进程与线程的关系🍹例子我们打开一个聊天软件,这就是开启了一个进程当我们在软件里面打开一些功能,比如空间, 扫一扫, 设置...,这些操作就是线程所以可以说 "进程" 包含 "线程", "线程" 是 "进程" 的子集🍹进程是线程的容器工厂流水线例子4.🌵总结进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程; 进程——资源分配的最小单位。线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。 线程——程序执行的最小单位。进程要分配一大部分的内存,而线程只需要分配一部分栈就可以了.一个程序至少有一个进程,一个进程至少有一个线程.一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行.二.并行, 并发, 串行并发: 多个任务看起来是同时进行, 这是一种假并行单核下使用多道技术实现并行: 多个任务同时进行并行必须有多核才能实现,否则只能实现并发(伪并行)串行: 一个程序完完整整的运行完,再运行下一个进程三.任务运行的三种状态进程在运行的过程中不断地改变其运行状态 通常一个运行的进程必须具有三种状态:就绪态, 运行态, 阻塞态1.就绪态 (Ready)当进程已分配到除CPU以外的所有必要的资源后,只要再获得CPU, 便可执行程序, 进程这时的状态就称为就绪态,在一个系统中处于就绪态的进程可能有多个 , 通常将他们排成一个队列, 这就叫 就绪队列2.运行态 (Running)当进程已经获得CPU操作权限, 其程序正在运行, 着就叫做运行态在单核操作系统中, 只有一个进程处于运行态 , 多核操作系统有多个进程处于运行态3.阻塞态 (Blocked)(sleep)正在执行的进程, 由于等待某个事件而无法执行时, 便被操作系统剥夺了cpu的操作时间, 这是就是阻塞态引起阻塞的 原因 多种, 例如: 等待I/O操作, 更高优先级的任务抢走了CPU权限等.4.进程三种状态 间的转换一个进程在运行期间, 会不断地在一种状态切换到另一只种状态 他可以是多次处于就绪态和运行态, 也可以多次处于阻塞态, 下图是三种状态的转换图就绪态➠➠运行态处于就绪态的进程, 当进程调度程序为之分配了CPU的时间片后, 该进程就会由就绪态转变成运行态运行态➠➠就绪态处于运行态的进程在运行过程中, 因为分配的时间片用完了, 于是失去了CPU的使用权限, 运行态就会重新转为就绪态运行态➠➠阻塞态正在运行的进程由于遇到I/O操作或被更高优先级的任务抢走CPU使用权限而无法继续执行, 便从运行态转为阻塞态阻塞态➠➠就绪态处于阻塞态的进程, 若其等待的事情已经处理完毕, 于是进程从阻塞态转为就绪态四.任务提交的两种方式1.同步同步是指发送方发送数据后, 等接收方发回响应后才发下一个数据报的通讯方式同步是指 两个程序的运行是相关的 , 其中一个线程在阻塞需要等待状态, 那另一个线程才运行2.异步异步是指发送方发出数据后, 不等接收方发回响应, 接着就发下个数据报的通讯方式异步是指 两个线程毫无相关 , 自己运行自己的3.例子同步你叫我去吃饭, 我听到了就立即和你去吃饭, 如果没有听到, 你就不停的叫, 直到我告诉你听到了, 才一起去吃饭打电话好比同步, 两边是同时进行不能再打给另一个人异步你叫我去吃饭, 然后自己去吃饭了, 我得到消息后可能立即走, 也可能过会儿走发消息好比异步, 和一个人发完消息就可能和另一个人发消息五.进程池1.什么是进程池?👉 进程池是资源进程, 管理进程组成的技术的应用.2.为什么要有进程池?忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。 那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么? 首先,创建进程需要消耗时间,销毁进程也需要消耗时间。第二即便开启了成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响程序的效率。因此我们不能无限制的根据任务去开启或者结束进程。那么我们要怎么做呢?3.进程池的概念定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中的进程来处理任务 等到处理完毕,进程并不关闭,而是将进程再放回进程池中继续等待任务 如果有很多任务需要执行,池中的进程数量不够,任务就要等待之前的进程执行任务完毕归来,拿到空闲进程才能继续执行。重点来了 ,也就是说, 进池中进程的数量是固定的,那么同一时间最多有固定数量的进程在运行 这样不会增加操作系统的调度难度,还节省了开关进程的时间,也一定程度上能够实现 并发 效果。4.资源进程预先创建好的空闲进程 ,管理进程(好比池子🏊)会把工作分发到空闲进程来处理。5.管理进程🏊管理进程 负责创建资源进程,把工作交给空闲资源进程处理,回收已经处理完工作的资源进程。资源进程与管理进程的交互管理进程如何有效的管理资源进程,分配任务给资源进程? 通过IPC,信号,信号量,消息队列,管道等进行交互。
2023年08月30日
16 阅读
0 评论
0 点赞