进程与线程

举报
阿柠 发表于 2022/10/31 23:43:33 2022/10/31
【摘要】 进程 概念进程和程序的区别程序是静态的指令集合进程是动态的程序的一次执行过程进程是进程实体的运行过程,是系统资源分配和调度的基本单位注意:进程之间可以是独立的,也可以是交互性的 进程实体的组成PCB(面向操作系统)进程标识符PID用户标识符UID进程优先级堆栈指针是进程的唯一标识,进程创建时创建,进程结束时结束程序段(面向进程自己)数据段(面向进程自己) 进程的状态状态就绪态 :无CPU,...

进程

概念

  • 进程和程序的区别

    • 程序是静态的指令集合
    • 进程是动态的程序的一次执行过程
  • 进程是进程实体的运行过程,是系统资源分配和调度的基本单位

  • 注意:进程之间可以是独立的,也可以是交互性的

进程实体的组成

  • PCB(面向操作系统)

    • 进程标识符PID
    • 用户标识符UID
    • 进程优先级
    • 堆栈指针
    • 是进程的唯一标识,进程创建时创建,进程结束时结束
  • 程序段(面向进程自己)

  • 数据段(面向进程自己)

进程的状态

  • 状态

    • 就绪态 :无CPU,有其他所有资源
    • 运行态:有CPU,有其他所有资源
    • 阻塞态:无CPU,资源不全
    • 创建态
    • 终止态
  • 状态的转换

    • image-20221031233018186

进程通信

  • 顾名思义就是进程之间的信息交换

  • 共享存储

    • 特点:两个进程对共享空间互斥访问,使用同步互斥工具
  • 管道通信

    • 管道:连接读写进程的共享文件
  • 消息传递

    • 消息进程提供发送/接收消息两个原语进行数据交换

线程

线程是一个基本的CPU执行单位,也是程序执行流的最小单位

引入线程目的

  • 减少进程并发带来的时空开销(线程之间切换的开销很小)
  • 引入之后不仅进程之间可以并发,进程内各线程也可以并发

特性和优点

  • 并发系统开销降低,并发性提升

    • 注意:不同进程之间的线程切换是会导致进程切换的
  • 引入线程之后,线程是CPU调度的基本单位,进程仍然是资源分配的基本单位

  • 多CPU的系统上,各个线程也可以分派到不同的CPU上并行执行

  • 线程几乎不拥有资源(极少)

    • 系统资源在进程那里
  • 由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预

实现方式

  • 用户级线程

    • 所有的线程管理工作都是用户基于线程库在管理,操作系统看不见多线程
    • image-20221031233323331
  • 内核级线程

    • 所有的线程管理工作都是操作系统负责,操作系统能看到多线程
    • image-20221031233336608
  • 多线程模型

    • 一对一

      • 一个用户级线程连接一个内核级线程

      • 操作系统只能看得内核级线程,所以只有内核级线程才是处理机分配的基本单位

    • 多对一

      • 多个用户级线程连接一个内核级线程

        • 优点:开销小
        • 缺点:并发度低:一个线程阻塞,所有进程阻塞
      • image-20221031233406481

    • 多对多

      • image-20221031233416123

        • 读个用户连接到多个内核
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。