进程
-
单进程:同时只能做一件事
-
硬件可以支持同时处理多个任务
- CPU核心,多核心
- 单核
-
多进程:提升程序的效率,同时做的事情多了
- 多核心的电脑下开展多进程
- 不是多就是好
-
当前操作系统的工作方式:
- Web服务器:1000个人访问
- Mysql数据库
-
一个程序多的话 线程/进程数量不超过逻辑核心数的1.5~2倍
- 逻辑核心:抽象的
- 物理核心:真正存在的物理的
-
#pip3 install psutil >>> import psutil >>> psutil.cpu_count() 4
-
啥是进程:当前真正在运行的(在内存中)一个任务 进程
-
啥是程序:磁盘上的二进制可执行文件
-
进程的属性:
- 1:每个进程彼此之间独立,内存
- 2:PID,会给进程编号,僵尸进程
- 进程ID值是有限的,所以,在使用完毕一个进程之后,一定要记的释放
- PID值不够用了。
- 0 ~ 65535的值
- 要有的,整个操作系统下不会有第二个
- 进程ID值是有限的,所以,在使用完毕一个进程之后,一定要记的释放
- PID:0 大家看不到的
- 调度进程,祖先进程,系统初始化的第一个进程,其他进程的祖先
- PID:1,专门管理进程的,
- init进程,由进程0创建,完成剩余的系统工作
- 开启软件,回收没有人回收的进程资源,系统引导工作
- PID:2 关门管理线程
- 内核线程管理
- 3:UID,是哪个用户开启的进程 user ID
- Linux下用的很多,Linux用户很多
- root用户,超级用户
###进程PCB:process control block
- 进程控制块:专门用来维护进程中这些数据的
- 操作系统真正管理进程的一个数据结构
- 1:PID、UID
- 2:调度状态
- CPU在执行进程任务的时候,不是一直执行完
- 轮询:遍历进程任务队列了
- 游戏机
- 手柄
- 中断:哪个进程有事,进程招手,CPU执行
- 进程的信号
- 挂起,休眠
- 运行,准备运行
- 权重优先级:nice值 -19 ~ +20
- 值越小,进程的优先级越高
- 负数优先级只有超级用户可以设置
- 3:使用的文件,设备,IO套接字
- 4:处理信息:堆栈指针,寄存器(纳米二极管),计数器
进程状态:
- 运行状态:实际占用CPU,正在工作的进程
- 就绪状态 我有
- 外界用户,底层硬件,信号
- 可中断睡眠状态:当前进程处于等待,挂起状态
- 连接别人
- 下电影
- 看电影
- 打开文件呢,把数据从磁盘搬到内存,消耗时间,对于CPU来说,这个时间,太长了
- CPU会直接切换,而不会等待
- 不能直接处理磁盘
- 只能处理内存数据
- 如果以上事件完成,进程会被唤醒,被CPU处理
- 暂停:打断点
- 僵尸状态:僵尸状态是任何一个要结束的进程都要经历的,非常短暂
- 二流程序员可以写出非常漫长的僵尸状态进程
- 进程在退出的时,需要释放资源,但是会保留PCB
- a = 1 ,b = 2
- 停止状态:更短暂
- 进程最后一瞬间了
- 65535 PID的
- char:8位 255 ascii
- short:16位的 65535
- int:32位的 21亿
- long :64位
- PPID:当前进程的父进程ID
- PPID用来监护
- 创建,释放
- 孤儿进程:当前进程没有父进程
- 1号进程会查找,担任他们的父进程
- init:面试常考:会回收孤儿进程,别人捅了了篓子,擦屁股
- 孤儿进程
- 僵尸进程,0~65535
僵尸、孤儿进程
- 进程有PCB控制块:
- PID:0~65535 范围内的数字,用来给进程标号的,如果没有这个数字,没办法创建进程
- 释放的时候:
- 一定要处理PCB控制块
- 父进程:
- A子进程,B子进程,
- 等待回收资源
- 孤儿进程:子进程工作完毕,没有父进程回收了,没啥危害
- init进程,1号进程接手
- 僵尸进程:子进程工作完毕,父进程不管,会有危害
- 子进程会滞留在僵尸状态(PCB),PID占用
- 占用完毕,没有办法创建新的。
- 回收一定要记得
同步、异步
-
上厕所:
- 坑位有限:排着队,有序进坑,同步
- 任务执行有顺序,等待一个任务结束,下一个任务才能开启
- 坑位有限:谁强壮,谁进坑,异步
- 任务执行无顺序,谁厉害,谁先来
- 坑位有限:排着队,有序进坑,同步
-
同步:(同时间进行X),有序执行
- 可以维护某些数据稳定有序
- 尽量处于就绪状态,提高CPU占用率
- 不能高效里用CPU资源
-
异步:不管顺序,只要有CPU资源,我就执行
- 高效的利用CPU资源
- 导致数据,可能有些时候会在多个进程同时处理的时候,顺序不一致,导致混乱
-
处理的数据太大,但是都是一个整体,开多个进程处理的快
- 10000
-
异步:随便拿,CPU有资源执行即可