进程

  • 定义 是进程实体的运行过程 & 系统进行资源分配和调度的一个独立单位
  • 作用 使得多个程序可以并发执行,提高系统的资源利用率和吞吐量
  • 进程状态
    • 就绪
      • 进程获得了除了处理器外的一切所需资源
      • 一旦得到了处理器就进入运行状态
    • 运行
      • 处理器环境下,一个tick最多只有一个进程处于运行状态
    • 阻塞
      • 进程等待某一事件而暂停运行
      • 即使处理器空闲,该进程也不能运行
    • 创建
      • 进程创建的步骤:
        • 申请空白PCB并且向空白PCB中写入进程管理信息
        • 由系统为该进程分配运行时所必须的资源
        • 最后把进程转入就绪状态
    • 结束
      • 先将进程置于结束状态
      • 处理资源释放等工作
  • 什么是进程的系统资源?(字节面试)
    • 独立的内存地址空间
      • 代码段
        • 存放程序执行的机器指令
      • 数据段
        • 存放已经初始化的全局变量和静态变量
      • BSS段
        • 存放程序中未初始化的全局变量和静态变量
        • 有时和数据段一起称为 静态数据区
        • 动态内存分配
        • new in C++; malloc in C
        • 大小不固定,需要程序员或 GC 进行管理
        • 这个是每个线程都有的
    • 文件描述符:打开的文件、套接字等
    • 程序计数器(线程私有)
    • 寄存器(线程私有)
    • 与进程相关的内核数据结构:Process Control Block
    • I/O状态信息
    • 权限和安全属性

线程

  • 定义 一个基本的 CPU 执行单元 & 程序流执行单元

协程

  • 用户态线程,更小的上下文
  • 主动切换(suspend)
  • 上下文保存在协程栈中或者一个状态机对象保存在堆内存中