第2章 进程的描述与控制

进程的由来(1⭐)

程序并发执行的特征(解释为何失去了封闭性)

间断性

程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,这些并发执行的程序之间形成了相互制约的关系。
如图所示I、C、P是三个互相合作的程序。当计算程序Ci-1完成计算时,如果输入程序Ii尚未完成数据输入,,则计算程序Ci就无法进行数据处理,此时必须暂停执行。

程序并发执行时的前驱图
I4
I3
I2
I1
C4
C3
C2
C1
P4
P3
P2
P1

失去封闭性

系统中存在多个可以并发执行的程序时,系统中的各种资源将为它们所共享,而这些资源的状态也会由这些程序来改变,致使其中任一程序在执行时,其执行环境必然会受到其他程序的影响。

不可再现性

程序并发时,失去封闭性会导致失去可再现性。

例如程序A和B,共享变量N。

// 程序A
N = N +1;
// 程序B
printf("%d",N);
N = 0;

执行种可能有几种结果

  1. A程序在B之前执行

    1. N = n+1

    2. 输出N = n+1

    3. N = 0

  2. B在A前

    1. 输出N = n

    2. N = 0

    3. N = 1

  3. N+1在printf和N=0之间执行

    1. 输出N = n

    2. N = n+1

    3. N = 0

进程概念的由来

多道程序环境下,程序的执行属于并发执行,因此它们会失去封闭性,并具有间断性和运行结果不可再现性。
通常,程序是不能参与并发执行的,否则程序就失去了意义。
为了使得程序可以并发执行,并且可以对并发执行的程序加以描述和控制,所以人们在OS中引入了“进程”这个概念。

PCB

Process Control Block

系统利用进程控制块来描述进程的基本情况和活动过程,进而控制和管理进程,是进程存在的唯一标识

进程的组成
程序段
进程实体
相关的数据段(数据/结构集)
PCB

进程控制块信息

PCB标识符
进程名
进程标识符
标识符
进程号
用户名
用户标识
用户号
父进程
家族联系
子进程

进程的概念/描述(2⭐)

进程的定义

从不同的角度可以有不同的定义

  1. 进程是程序的一次执行。
  2. 进程是一个程序及其数据在处理机上顺序执行所发生的活动。
  3. 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位(最小单位)。

引入进程的概念后,我们可以把传统OS中的进程定义为:
进程是程序的执行过程,是系统进行资源分配调度的一个独立单位。

进程的特征

进程和程序是不同的概念,除了进程具有程序所没有的PCB结构外,还具有下面一些特征:

动态性(最基本)

进程的实质是程序的执行过程。
进程有一定的生命期:进程由创建产生,由调度而执行,由撤销而消亡。

并发性

多个进程共存于内存中,且能在一段时间内同时执行。
引入进程也正是为了使进程能和其他进程并发执行。
没有建立PCB的程序是不能参与并发执行的。

独立性

进程是一个能够独立运行、独立获取资源、独立接收调度的基本单位。
没有建立PCB的程序都不能作为一个独立的单位参与并发执行。

异步性

进程按各自独立的、不可预知的速度向前推进。

总结:程序经过多次执行后,虽然多次执行时的环境和初始条件相同,但得到的结果却各不相同。

进程的状态(3⭐)

为什么要引入状态

由于多个进程在并发执行时需要共享资源,它们会在执行过程中呈现间断性规律,因此,进程在其生命周期内可能具有多种状态。

三大基本状态

就绪(Ready)

此时进程已分配到除CPU以外的所有必要资源,只要获得CPU后,便可立即执行
如果系统中有多个就绪进程,通常它们按照一定的策略*(e.g. 优先级策略)排成队列,则该队列就成为就绪队列*。

执行(Running)

单处理系统中,只有一个进程处于执行状态。
多处理机系统中,则可能会有多个进程处于执行状态。

阻塞(Block)

由于发生某事件*(e.g. I/O请求、申请缓冲区失败)暂时无法继续执行,即进程的执行收到了阻塞。
此时会引发进程调度,OS会把处理机分配给另一个就绪进程,而让受阻进程处于暂停状态(又称阻塞状态、等待状态或封锁状态)。
通常系统会将阻塞状态的进程排成一个队列,则该队列就成为
阻塞队列*。

在较大的系统中,为了减少阻塞队列的操作开销,提高系统效率,则会设置多个阻塞队列。

创建状态和终止状态

为满足PCB对数据与操作的完整性要求和增强管理灵活性,则通常会引入这两种状态。

创建状态

进程进程一般要通过多个步骤才能完成

  1. 进程申请一个空白PCB,并向PCB中填写用于控制和管理进程的信息。
  2. 为该进程分配运行时所需的资源。
  3. 把该进程状态转换为就绪状态,并将其插入到就绪队列中。

如果进程所需的资源不足,此时进程将不能被调度运行,此时进程所处的状态称为创建状态(新建状态)。

终止状态

  1. 等待OS善后处理。
  2. 将进程的PCB清零,并将PCB空间返还给OS。

进程进入终止状态后,OS中依然会保留一个记录,保存状态码和一些计时统计数据以供其他进程收集。

进程状态的转换(5⭐)

进程的5种基本状态及转换关系
进程的3种基本状态及转换关系
许可
I/O完成
进程调度
时间片完
I/O请求
释放
创建
就绪
阻塞
执行
终止

进程挂起(1⭐)

挂起状态引入的原因

终端用户的需要

终端用户发现自己的程序在运行时有可疑问题,希望暂停程序运行,以便用户研究其执行情况或对其进行修改。

父进程的需要

父进程有时候需要考察和修改子进程,协调各子进程间的活动。

负荷调节的需要

实时系统工作负荷较重时,可能会影响到对实时任务的控制,系统可以将不重要的进程挂起,保证自身的运行正常。

操作系统(OS)的需要

OS有时需要挂起进程,以便检查进程运行过程中资源使用情况或进行记账。

进程挂起状态图(3⭐)

在这里插入图片描述

实现进程通信的方式

共享存储器

相互通信的进程通过共享某些数据结构或存储区来进行通信,可分为

  1. 共享数据结构方式
    仅适用于传送相对较少的数据,通信效率低下,属于低级进程通信。
  2. 共享存储区方式
    属于高级进程通信。

管道(共享文件)

利用共享文件来实现进程间的通信。

消息传递

进程间的消息交换以消息或报文为单位,程序员利用一组通信**命令(原语)**来实现通信,可分为

  1. 直接通信方式
  2. 间接通信方式

常用原语

  1. 创建、撤销原语
  2. 阻塞(Block)原语,由执行到阻塞状态。
  3. 唤醒(Wake Up)原语,由阻塞到运行状态。

线程

拥有资源所有权的称为进程,而调度的最小单位称为线程,或轻量级进程。

进程是资源独立占有的单位。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客BOY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值