• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

详解开发语言程序中的进程与线程的概念

武飞扬头像
juejin
帮助76

进程

概念

  • 进程和程序的区别

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

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

进程实体的组成

  • PCB(面向操作系统)

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

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

进程的状态

  • 状态

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

    • image-20221031233018186

进程通信

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

  • 共享存储

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

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

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

线程

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

引入线程目的

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

特性和优点

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

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

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

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

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

实现方式

  • 用户级线程

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

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

    • 一对一

      • 一个用户级线程连接一个内核级线程
      • 操作系统只能看得内核级线程,所以只有内核级线程才是处理机分配的基本单位
    • 多对一

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

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

    • 多对多

      • image-20221031233416123

        • 读个用户连接到多个内核

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanehhi
系列文章
更多 icon
同类精品
更多 icon
继续加载