38.进程及同步异步的概念理解

进程丶线程


  • 单进程丶多进程:
  • 单进程:同时只能处理一件事
  • 硬件可以同时支持多个事件
    • CPU核心,单核,多核
  • 多进程:提升程序效率,同时处理多个事件
    • 多核心的电脑下开展多个进程
    • 不是开的多就是好
  • 线程/进程的数量最好不要超过逻辑核心数的1.5~2倍
    • 逻辑核心:是抽象
    • 物理核心:真正存在的物理核心数
    • pip3 install psutil / import psutil / psutil.cpucount()   #在python中查看当前电脑的逻辑核心
  • 什么是进程:当前真正在运行的(内存中)的任务
  • 什么是程序:磁盘上的二进制文件
  • 进程的属性:
    • 每个进程彼此之间是独立,进程内存独立
    • PID:进程的编号
      • 范围0~65535
      • 进程ID是有限的,所以在使用后要记得释放
      • 整个系统下不会有重复的ID
    • PID:0 是看不到的
      • 调度进程,祖先进程,系统初始化的第一个进程
    • PID :1
      • init进程,由进程0创建,完成剩余的系统工作
      • 开启软件,回收没有没有人回收的资源,系统引导进程
    • PID:2
      • 内核线程管理 
    • UID,是哪个用户开启的进程 userID
      • linux下用户很多,用的很多
      • 比如root用户,超级用户
  • 进程PCB:process control block
    • 进程控制块:专门用来维护进程中的这些数据
    • 操作系统真正管理的一个数据结构
    • 1:PID丶UID
    • 2:调度状态
      • CPU在执行进程任务的时候,不是一直执行完
      • 轮询:遍历进程任务列队
      • 中断:那个进程有事,进程招手,CPU执行,现在用的大多数都是中断
        1. 进程的信号
        2. 挂起,休眠
        3. 运行,准备运行
      • 权重优先级:nice值-19 ~ +20
        1. 值越小,进程优先级越高
        2. 负数优先级只有超级用户可以设置
    • 3:使用的文件,设备,IO套接字
    • 4:处理信息:堆栈指针,计数器,寄存器
  • 进程状态:
    • 运行状态:实际占用CPU,正在工作的进程
    • 睡眠状态:当前进程处于等待,挂起状态
      • 连接别人
      • 下电影
      • 打来文件,把数据从磁盘搬到内存,消耗时间,对于CPU来说,这个时间太长
        1. CPU会直接切换,而不会等待
        2. 不能直接处理磁盘
        3. 只能处理内存数据
      • 如果以上事件完成,进程会被唤醒,被CPU处理
    •  暂停:打断点
    • 僵尸状态:僵尸状态是任何一个要结束的进程都要经历的,非常短暂
      • 进程在退出的时候,需要释放资源,但是会保留PCB
    • 停止状态:更短暂
      • 进程的最后一步
    • PPID:当前进程的父进程ID
      • PPID用来监护
      • 创建,释放
    • 孤儿进程:当前进程没有父进程
      • 1号(init)进程会查找,担任他们的父进程
    • 僵尸进程:子进程工作完毕,父进程不管,会有危害
      • 子进程会滞留在僵尸状态(PCB),PID占用
      • 占用完毕,没有办法创建新的
      • 记得一定要回收
  • 同步,异步
 
  • 同步:(同时间进行X),有序执行
    • 可以维护某些数据稳定有序
    • 尽量处于就绪状态,提高CPU占用率
    • 不能高效里用CPU资源
  • 异步:不管顺序,只要有CPU资源,我就执行
    • 高效的利用CPU资源
    • 导致数据,可能有些时候会在多个进程同时处理的时候,顺序不一致,导致混乱
    • 处理的数据太大,但是都是一个整体,开多个进程处理的快
    • 异步:随便拿,CPU有资源执行即可
原文地址:https://www.cnblogs.com/zhangan/p/10202278.html