进程的引入 & 进程状态讲解 & PCB


      在上一章节已经讲过了在单道系统的时代,内存中只有一个程序,这样的系统效率是不高的,所以需要在内存中同时运行多个程序, 同时运行多个程序有什么问题吗?

顺序和并发

先来看一下顺序程序的特征:

  • 顺序性:顺序性是指内存中只有一个程序,资源的利用率是很低的
  • 封闭性:程序独占系统的资源
  • 可再现性:相同的环境下由于只有一个程序独占资源,所以多次相同的输入会有相同的输出

对比顺序程序,多道中的多个程序运行有什么特征,看一下并发程序的特征:

  • 间断性:多个程序宏观上并发,微观上轮流使用CPU,所以每一个程序都是走走停停,具有间断性,这样做提高了资源的利用率
  • 失去封闭性:多个程序共享系统的资源,所以资源的状态不专属于一个程序,失去了封闭性
  • 不可再现性:由于多个程序共享资源,每个程序都有对资源修改的权利,所以程序的输出结果是不一定的

      操作系统设计的最终目的是不但要提高资源的利用率,而且还要具备封闭性和可再现性,如何解决封闭性的问题

引入进程

解决封闭性有两种方法

1.Bernstein条件:既然所有运行的程序不能并发运行,那么能否让一部分互不干扰的程序并发运行,在一部分程序上实现并发
具体内容:
在这里插入图片描述
      其实要表达的意思是这样的,将程序的所有读的集合和写的集合挪列出来,如果两个程序仅仅只有读集有交集,说明两个程序是可以并发的,也就是说两个程序可以同时读,但一个读一个写和同时写都是不能并发的

2.引入进程

那么能否有一个东西将资源封闭起来呢?

      进程就被引入了,进程是系统进行资源分配处理机调度的独立单位,所以进程之间是可以并发的。

                                  进程 = 数据段 + 程序段 + PCB

程序和进程有什么区别?
  1. 进程是动态的,程序是静态的
  2. 进程具备并发性,程序没有
  3. 进程是资源分配和处理机调度的独立单位,并发性受系统制约
  4. 一个程序运行多次,对应多个进程
PCB是做什么用的?

      PCB是程序控制块,为了使参与并发执行的每个程序都能独立的运行,在操作系统专门配备的数据结构。结构中有什么内容,在学习完进程的基本状态后再进行理解

进程的基本状态

进程的基本状态可以分为:就绪状态阻塞状态执行状态
三者的转换关系用一张图来表示:
在这里插入图片描述
描述一下这个过程

  1. 当作业从外存的后备队列中调入内存的时候,该进程就处于了就绪状态,这个时候等待CPU时间片,如果CPU有空闲的时间,经过进程调度该进程进入运行状态,如果中间没有等待事件比如IO请求,那么进程直接完成撤销。
  2. 如果有IO请求,那么进入阻塞状态等待IO事件,如果IO事件具备,那么进程重新进入就绪状态等待CPU的调度。
  3. 如果进程运行到一半,CPU时间片用完了,那么就该其他进程运行了,那么该进程就会进入就绪状态等待CPU时间片。

总结一下:

  1. 就绪状态:等待CPU时间片
  2. 阻塞状态:等待事件
  3. 执行状态:使用CPU
有“挂起”的进程状态
什么是挂起状态?

      挂起就是将正在活动的进程(执行,就绪,阻塞)处于静止状态,此时系统将回收这部分进程所占用的资源。

为什么需要挂起?

刚才上面的定义说到了目的和用途,那到底是什么用途?

  1. 系统负荷调节:前面讲到了实时系统,实时系统有过载保护,如何理解呢,在民用的操作系统中,有时系统超负荷时会出现死机,这时用户就会打开任务管理器关掉一部分不重要的程序,过一会在重新打开刚才关掉的程序。这个过程如果是实时系统,比如军事航空上,死机肯定是不允许的,随意关掉某个程序很复杂的。而挂起就可以解决一部分程序占用资源的问题,以达到系统负荷调节的目的。
  2. 终端用户的需要:举一个简单的例子,写代码时会用到调试,而调试就用到了挂起。
  3. 操作系统的需要:操作系统需要查看资源的使用情况,需要用到挂起。
  4. 对换的需要-虚拟内存:虚拟内存是比实际内存大的,虚拟内存就是通过把进程进行挂起,以增大内存的使用。
有挂起状态的状态讲解

      理解了什么是挂起和挂起有什么用后,看一下有挂起状态的进程状态。可以把就绪状态和阻塞状态划分为静止和活动,通过一张图来看一下状态的转换。

在这里插入图片描述
可以看到虚线上面的和基本状态演变图相似,下面多了静止就绪静止阻塞

说一说不同点:

  1. 从创建直接到静止就绪,说明考虑到系统当前资源状况和性能的要求,不分配给新建进程所需的内存资源
  2. 两个激活,两个挂起,说明内存不足或者需要用内存的时候,执行挂起,用完后又进行了激活。
PCB详解

刚才上面已经说过了,了解了进程状态后来讲解PCB,因为这里我是根据进程的生命周期来讲解PCB

PCB的作用以及描述

  1. 作为进程独立运行基本单位的标志,当系统创建了一个新进程,就建立了一个PCB,PCB因为是经常要用的,所以PCB被放到了内存区域达到系统内存
  2. PCB为进程管理所需要的信息,当调度程序调度进程时,只能根据该进程PCB中记录的程序和数据在内存或外存中的起始指针,才能找到对应的程序和数据,需要访问IO时也相同
  3. PCB提供调度所需的信息,只有处于就绪状态的进程才能被调度被执行,所以在PCB中提供了进程处于何种状态的信息,进程的优先级等信息。
  4. PCB能实现间断性的运行方式, 当进程因阻塞而暂停运行时,必须要保留CPU现场信息,当进程再次被调度时,还需要恢复CPU现场信息。
  5. 为实现与其他进程的同步与通信,PCB中有通信区域或通信队列指针等。
  6. 在进程执行完后,PCB会随之消亡

通过上面的描述,已经知道了PCB中包含的一部分信息,具体来看一下

PCB中的信息

  1. 进程标识符:唯一的表示一个进程
  2. 处理机状态:包括通用寄存器,指令计数器,程序状态字,用户栈指针
  3. 进程调度信息:进程状态,进程优先级,进程调度信息,事件
  4. 进程控制信息:程序和数据地址,进程同步,资源清单,链接地址
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值