线程、进程

进程

  • 单进程:同时只能做一件事

  • 硬件可以支持同时处理多个任务

    • CPU核心,多核心
    • 单核
  • 多进程:提升程序的效率,同时做的事情多了

    • 多核心的电脑下开展多进程
    • 不是多就是好
  • 当前操作系统的工作方式:

    • Web服务器:1000个人访问
    • Mysql数据库
  • 一个程序多的话 线程/进程数量不超过逻辑核心数的1.5~2倍

    • 逻辑核心:抽象的
    • 物理核心:真正存在的物理的
  • #pip3 install psutil 
    >>> import psutil
    >>> psutil.cpu_count()
    4
    
  • 啥是进程:当前真正在运行的(在内存中)一个任务 进程

  • 啥是程序:磁盘上的二进制可执行文件

  • 进程的属性:

    • 1:每个进程彼此之间独立,内存
    • 2:PID,会给进程编号,僵尸进程
      • 进程ID值是有限的,所以,在使用完毕一个进程之后,一定要记的释放
        • PID值不够用了。
      • 0 ~ 65535的值
      • 要有的,整个操作系统下不会有第二个
    • 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有资源执行即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值