2.1进程与线程

  • 2.1进程与线程
    进程与程序的区别
    程序:静态的,是在磁盘中的可执行文件,一系列的指令集合
    进程:动态,程序的一次执行过程
    一个程序可以对应多个进程,每个进程都是程序的一个独立执行实例
    • 2.1.1 进程的概念和特征
      • 为实现并发性和共享性,提高资源利用率和系统吞吐量——引入进程概念
      • 进程实体【反应进程的某一时刻情况,静态,有时候会将进程实体与进程当作一回事】由程序段、相关数据段、PCB组成
      • 进程定义:进程是进程实体的运行过程,是系统进行资源分配的一个独立单位
      • 进程特征:(1)动态性(2)并发性(3)独立性(4)异步性(5)结构性
    • 2.1.2进程的组成


      PCB 是给操作系统用的。程序段、数据段是给进程自己用的。
      • 程序控制块PCB
        • PCB是进程实体的一部分,进程存在的唯一标志
        • OS通过PCB控制进程
        • 进程ID【PID】:创建进程时,OS为其分配的唯一不重复ID
        • PCB的组织方式【为更好的控制和管理进程】

          • (1)链接方式【队列】
          • (2)索引方式【数组】
    • 2.1.3进程状态与转换⭐


      ​主要有三种基本状态:运行态、阻塞态、就绪态
      进程状态之间的相互转换如上图所示
      • 运行态:进程占有CPU,在CPU上运行【单CPU上最多只能有一个进程处于运行态】
      • 就绪态:获得除了CPU以外的一切资源,等待CPU【用到某种算法】,进程切换该态频繁
      • 阻塞态:与就绪态不同,因缺少除了CPU以外的某种资源而等待【要能够区分就绪态和阻塞态】,切换该态次数较少
      • 创建态:进程被创建【1.申请空白PCB并填写进程信息 2.分配资源 3.插入到就绪队列—转就绪态】#创建进程
      • 终止态:进程撤销,系统回收资源
    • 2.1.4 进程控制
      也就是进程各种状态之间的转换,其中进程控制使用的程序段叫“原语”【具有原子性,执行一气呵成不可中断;通过关中断和开中断实现原语】
      • 进程创建--使用创建原语
        • 进程可以创建子进程,进程关系为树形结构
          • 单词
            • 词义
            • 助记
            • 例句
        • 如何创建进程?【选择】#创建进程
        • 引起进程创建的事件:(1)用户登录(2)作业调度(3)提供服务(4)应用请求

      • 进程终止--撤销/终止原语
        • 如何终止进程?(1)找到终止进程的PCB(2)剥夺CPU给其他进程(3)终止所有子进程(4)回收资源(5)删除该PCB
        • 引起进程终止的条件:(1)正常结束【进程任务已完成】(2)异常结束【内中断/外异常】(3)外界干预
      • 进程的阻塞与唤醒--阻塞原语Block/唤醒原语Wakeup成对使用

    • 2.1.5进程通信
      进程通信就是进程之间的信息交换,分低级通信方式和高级通信方式
      • 为什么进程通信与OS有关?
        各进程拥有的内存地址空间相互独立,一个进程不能直接访问另一个进程的地址空间。OS提供了进程通信的机制
      • 高级通信方式
        • 共享存储:
          • 多个进程对于共享空间的访问是互斥的【可以使用P-V操作】
          • 有两种共享存储:(1)基于数据结构的共享【速度比较慢,低级方式共享】(2)基于存储区的共享【传输数据速度比(1)快】
          • 两个进程之间共享空间--通过特殊的系统调用实现
        • 消息传递:
          • 以格式化的消息(Message)为单位,使用“发送消息/接收消息”两个原语进行数据交换。
          • 有两种通信方式:(1)直接通信方式【消息发送指定接收的PID】(2)间接通信方式【通过信箱发送信息,不指定接受PID】
        • 管道通信:


          “管道”是一个特殊的共享文件,又名pipe文件。与共享存储不同:数据流向是单向的,遵循先进先出的原则。​
          • 各进程互斥的访问管道
          • 多个进程使用管道通信时,要考虑管道数据一旦读出就会彻底消失这一问题,解决方案:
            • 多个写进程一个读进程
            • 多个写进程多个读进程,系统会让各个读进程轮流从管道中读数据
    • 2.1.6 线程和多线程模型
      • 线程基本概念
        • 为减小程序在并行执行过程中的时空开销提高OS的并发性能——引进线程概念
        • 线程就是“轻量级进程”。一个基本的CPU执行单元,也是程序执行流的最小单位,是被系统独立调度和纷用的基本单位。
        • 线程没有系统资源——与同一进程的其他线程贡享进程资源+并行执行
      • 线程VS进程

        • 线程也支持多处理机系统,多线程进程中可以将多个线程放在不同CPU上运行
      • 线程的属性⭐
        • 每个线程都有一个线程ID、线程控制块(TCB)
        • 有就绪/阻塞/运行三种基本状态
        • 同一进程的不同线程间共享进程的资源
        • 由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
        • 同一进程中的线程切换,不会引起进程切换;不同进程中的线程切换,会引起进程切换
        • 切换同进程内的线程,系统开销很小;切换进程,系统开销较大
      • 线程的实现方式
        • 用户级线程--代码逻辑载体
          • 概念:(1)“用户级线程”就是“从用户视角看能看到的线程”(2)有关线程管理的所有工作都是由应用程序在用户态完成的,无需操作系统干预。(3)在用户看来,是有多个线程;在操作系统内核看来,并意识不到线程的存在。
          • 优缺点:(1)优点:用户级线程切换在用户空间即可完成,不需要切换到核心态,开销小,效率高;用户级线程的实现与操作系统无关(2)缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高;多个线程不可在多核处理机上并行运行。
        • 内核级线程--内核级线程是处理机分配的单位。
          • 概念:(1)操作系统会为每个内核级线程建立相应的线程控制块TCB,通过TCB对线程进行管理。(2)线程调度、切换等都由内核负责,内核级线程的切换在核心态下才能完成。(3)“内核级线程”就是“从操作系统内核视角看能看到的线程”
          • 优缺点:(1)优点:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核处理机上并行执行。(2)缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,成本高,开销大。
        • 组合方式--以上两种线程的结合
      • 多线程模型

        • 多对一模型
        • 一对一模型
        • 多对多模型
  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值