进程

进程是程序在一个数据集合运行的过程,它是系统进行资源分配和调度的一个独立单位

一个进程包括控制结构和执行结构;
控制结构是进程控制块PCB,执行结构包括程序以及需要操纵的数据集合。
进程可以由程序段、数据段和进程控制块描述

PCB是进程存在的唯一标识。
一个进程执行过程中只能对应一个PCB

  • 进程和程序的区别

    进程是程序的一次执行过程,进程是动态的,程序是静态的。


创建进程的步骤

1,申请空白PCB(进程控制块);
2,为新进程分派内存等资源;
3,初始化PCB;
4,将PCB链入进程就绪队列


进程状态转换

进程基本状态有就绪、运行、阻塞

  • 1、就绪态 => 执行态

    进程被调度程序选中

  • 2、执行态 => 就绪态

    cpu占用时间结束 (就绪状态是进程等待CPU
    如:因为时间片用完而被暂停执行 / 出现了比现运行进程优先权更高的进程(抢占式系统)/ 出现中断

  • 3、执行态 => 阻塞态

    等待某一事件,如:运行进程需作I/O操作
    当某个进程需要的资源(非CPU)被其它进程占用时,会进入阻塞状态。

  • 4、阻塞态 => 就绪态

    其它进程释放了资源后,则等待该资源的进程会由阻塞状态转为就绪状态,等待CPU执行。
    如: 一次I/O操作结束

“合作”进程的唤醒:新数据尚未到达。对于合作的进程,如果一个进程A需要先获得另一进程B提供的数据后,才能对该数据进程处理,只要数据尚未到达,进程A只能阻塞。当进程B提供数据后,便可以去唤醒进程A。

进程的阻塞是主动行为,挂起是一种被动行为,都是等待任务或者资源时的一种表现

静止就绪/阻塞 和 活动就绪/阻塞

  • 1、静止就绪

    这个也叫做挂起就绪,是指进程被对换到辅存时的就绪状态,是不能被直接调度的状态。只有当主存中没有活跃就绪态进程,或者是挂起就绪态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪。

  • 2、活动就绪

    进程在主存并且可被调度的状态。

  • 3、静止睡眠(阻塞)

    是指进程对换到辅存时的阻塞状态,一旦等待的事件产生便进入静止就绪状态。

  • 4、活动睡眠(阻塞)

    是指进程已在主存,一旦等待的事件产生便进入活跃就绪状态。

如:
(1)正在执行的进程由于其时间片用完被暂停执行,此时进程应从执行状态变为活动就绪状态;
(2)处于静止睡眠状态的进程,在进程等待的事件出现后,应变为静止就绪状态;
(3)若进程正处于执行状态时,因终端的请求而暂停下来以便研究其运行情况,这时进程应转变为静止就绪状态;若进程已处于睡眠状态,则此时应转变为静止睡眠状态
(4)当一个进程从CPU上退下来时,它的状态应变为活动就绪状态。


原语转换进程状态

活动就绪——suspend——>静止就绪
活动就绪<——active——静止就绪

活动阻塞——suspend——>静止阻塞
活动阻塞<——active——静止阻塞

Block原语是由被阻塞进程自我调用实现的
Wakeup原语则是由一个与被唤醒进程相合作或被其他相关的进程调用实现的。


直接制约和间接制约

进程之间存在着直接制约和间接制约两种制约关系。

  • 直接制约(同步)

    进程间的相互合作 而引起的

  • 间接制约(互斥)

    进程间共享临界资源 而引起的。

如果有一组进程,进程之间具有直接相互制约性。这组并发进程之间必定相关


导致进程创建的时间

在多道程序环境中,只有进程才能在系统中运行。
因此为了使程序运行必须为其创建进程,而导致进程创建的时间典型的有四种:

  • 1.用户登录

    系统为用户创建一个进程,并插入就绪队列

  • 2.作业调度

    系统会为调度的作业分配资源,从后备队列中将其放入内存中,并为其创建进程。

  • 3.提供服务

    系统为用户请求创建一个进程

  • 4.应用请求

    用户程序自己创建进程


进程调度算法

  • 一、强占式静态优先权法

    可能会出现进程长期得不到调度的情况。

    • 抢占式

      保证了高优先级的进程可以直接抢夺低优先级进程的资源,优先运行

    • 静态优先权

      在进程运行前就已经分配了固定的优先权,在进程运行的过程中不再对优先权进行调整,这样就导致了低优先级的进程一直得不到资源,即“饥饿”状态!

  • 确定静态优先权 有如下三个方面:
    ①进程类型:通常,系统进程(如接收进程、对换进程、磁盘I/O进程)的优先权高于一般用户进程的优先权
    ②进程对资源的要求:如进程的估计执行时间及内存需要量的多少,对这些要求的进程应赋予较高的优先权
    用户要求:这是用户进程的紧迫程度用户所付费用的多少来确定优先权的

  • 二、优先权调度算法

考虑到紧迫型作业进入系统后能得到优先处理,引入了最高优先级优先调度算法

在采用动态优先权的优先权调度算法中,如果所有进程都具有相同优先权初值,则此时的优先权调度算法实际上和(先来先服务调度算法)相同。

  • 动态优先权

    指在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。

  • 三、多级队列和多级反馈队列

  • 多级队列:

    该算法将系统中的进程就绪队列从一个拆分为若干个,将不同类型或性质的进程固定分配在不同的就绪队列,不同的就绪队列采用不同的调度算法,一个就绪队列中的进程可以设置不同的优先级,不同的就绪队列本身也可以设置不同的优先级。

  • 多级反馈队列:

    1)设置多个就绪队列。在系统中设置多个就绪队列,并为每个队列赋予不同的优先级第一个队列的优先级最高,第二个次之,其余的优先级逐个降低。该算法为不同的队列中的进程所赋予的执行时间片的大小也各不相同在优先级愈高的队列中,其时间片就愈小。
    2)每个队列都采用FCFS算法
    3)按队列优先级调度。

多级反馈队列的调度中就绪队列的设置不是像多级队列调度一样按作业性质划分,而是按时间片的大小划分

  • 四、短作业优先算法

    短作业优先又称为“短进程优先”SPN(Shortest Process Next);这是对FCFS算法的改进,其目标是减少平均周转时间。

    • 定义:

      对预计执行时间短的作业(进程)优先分派处理机。通常后来的短作业不抢先正在执行的作业。

    • SJF的特点:

      (1) 优点:
      比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间; 提高系统的吞吐量;
      (2) 缺点:
      对长作业非常不利,可能长时间得不到执行; 未能依据作业的紧迫程度来划分执行的优先级;

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值