进程的描述与控制

一、前驱图和程序执行

1.在早期未配置OS的系统和单道批处理系统中,程序的执行方式是顺序执行,即在内存中仅装入一道用户程序,由它独占系统中的所有资源,只有在一个用户程序执行完成后,才允许装入另一个程序并执行。

2.缺点:浪费资源、系统运行效率低等缺点。

1.多道程序系统中,由于内存中可以同时装入多个程序,使它们共享系统资源,并发执行,显然可以克服上述缺点。     

2.程序的这两种执行方式间有着显著的不同,尤其是考虑到程序并发执行时的特征,才导致了在操作系统中引入进程的概念。

3.因此,这里有必要先对程序的顺序和并发执行方式做简单的描述。

二、前驱图

1.程序顺序执行

        一个较大的程序通常都由若干个程序段组成 程序在执行时,必须按照某种先后次序逐个执行,仅当前一操作执行完后,才能执行后继操作。

I代表输入操作,C代表计算操作,P代表打印操作

2.前趋图-用于描述程序执行的先后顺序

        有向无循环图,用于描述 进程之间执行的先后顺序,结点表示进程或程序段,乃至一条语句,有向边表示前趋关系

3.应当注意,前趋图中是不允许有循环的,否则必然会产生不可能实现的前趋关系。

4.如图(b)所示的前趋关系中就存在着循环。它一方面要求在S3开始执行之前,S2必须完成,另一方面又要求在S2开始执行之前,S3必须完成。显然,这种关系是不可能实现的。

1.以下程序段,包含了三条语句的程序段: S1: a =x+y; S2: b =a-5; S3: c =b+1;

2.其中,语句S2必须在语句S1后(即a被赋值)才能执行,语句S3也只能在b被赋值后才能执行,因此,三条语句存在着这样的前趋关系:S1→S2→S3

三、程序顺序执行时的特征

在程序顺序执行时,具有这样三个特征:

1. 顺序性:指处理机严格地按照程序所规定的顺序执行,即每一操作必须在下一个操作开始之前结束;

2.封闭性:指程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响;

3. 可再现性:指只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都可获得相同的结果。程序顺序执行时的这种特性,为程序员检测和校正程序的错误带来了很大的方便

四、程序并发执行

程序并发执行:

采用多道程序技术,将多个程序同时装入内存,使之并发运行。

前趋关系:

1.Ii->Ci ,        Ii -> Ii+1 ,

2.Ci ->Pi  ,     Ci->Ci+1 ,

3.Pi -> Pi+1

例:程序段如下:      S1:     a:=x+2      S2:     b:=y+4      S3:     c:=a+b      S4:     d:=c+b

-->分析各语句的前趋关系。可以看出: S3必须在a和b被赋值后方能执行; S4必须在S3之后执行; 但S1和S2则可以并发执行,因为它们彼此互不依赖。

五、程序并发执行的特征

在        引入了程序间的并发执行功能后,

        优点:提高了系统的吞吐量和资源利用率, 缺点:由于它们共享系统资源,以及它们为完成同一项任务而相互合作,致使在这些并发执行的程序之间必将形成相互制约的关系。 由此会给程序并发执行带来新的特征

(1) 间断性。

>>并发程序之间相互制约。

>>执行——暂停执行——执行。

(2) 失去封闭性。

>>多个程序共享全机资源。

>>执行状态受外界因素影响。

(3) 不可再现性。 

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

不可再现性的例子

  

        有两个(并发的)循环程序A和B,他们以不同的速度运行。(假定某时刻变量N的值为n)。可能出现下述三种情况:

>> N:=N+1  在print(N)和N:=0之前,此时得到的N值分别为n+1,n+1,0

>>N:=N+1  在print(N)和N:=0之后,此时得到的N值分别为n, 0 , 1

>>N:=N+1  在print(N)和N:=0之间,此时得到的N值分别为n,n+1,0

        结论:失去了可再现性。程序经过多次执行,即使执行时的环境和初始条件相同,但得到的结果却各不相同。

六、进程的定义和特征

  1. 在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性,以及其运行结果不可再现性的特征。    
  2. 由此,决定了通常的程序是不能参与并发执行的,否则,程序的运行也就失去了意义。
  3. 为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,人们引入了“进程”的概念。

几种典型定义:

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

进程定义:

1.进程是进程实体的运行过程,是系统进行资源分配调度的一个独立单位。

2.是操作系统最核心的概念之一;

3.是换作系统要面对的最核心的管理对象;

4.是占用CPU资源和其他资源的实体

进程控制块(process control block, PCB):

专门的数据结构,与进程一一对应。 

  1. 为了使参与并发执行的每个程序(含数据)都能独立地运行,在操作系统中必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block,PCB)。系统利用PCB来描述进程的基本情况和活动过程,进而控制管理进程
  2.  这样,由程序段、相关的数据段和PCB三部分便构成了进程实体(又称进程映像)。
  3. 一般情况下,我们把进程实体就简称为进程,例如,所谓创建进程,实质上是创建进程实体中的PCB∶而撤消进程,实质上是撤消进程的PCB。

 七、进程的特征

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

(1) 动态性。     进程实体有一定的生命期,而程序则只是一组有序指令的集合,是进程的最基本的特征

(2) 并发性。     多个进程实体同存于内存中,且能在一段时间内同时运行

(3) 独立性。     进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位

(4) 异步性。     进程在并发运行时虽具有异步性,但仍能保证进程并发执行的结果是可再现

八、进程、作业和程序的区别

  1. 进程是程序的一个实例,是程序的一次执行。
  2. 进程是活动的,程序是静态的。
  3. 程序是进程的代码部分。
  4. 进程在内存中,程序在外存中
  5. 作业:用户提交给系统的一个计算任务
  6. 批作业=程序+数据+作业控制说明书
  7. 交互作业=程序+数据+交互命令
  8. 作业是用于人机之间交互的一个概念
  9. 程序是作业的组成部分
  10. 进程对应一个程序的一次动态执行过程

九、进程的状态及转换

进程的三种基本状态

        由于多个进程在并发执行时共享系统资源,致使它们在运行过程中呈现间断性的运行规律,所以进程在其生命周期内可能具有多种状态。一般而言,每一个进程至少应处于以下三种基本状态之一:

(1) 就绪(Ready)状态。

(2) 执行(Running)状态。

(3) 阻塞(Block)状态。

1.就绪状态

        进程已处于准备好指向性的状态,已分配到除CPU以外所有必要资源

        只要获得CPU,就可立即执行。

        就绪队列

2.执行状态:已获得CPU,正在执行的状态

        单处理机:一个进程处于执行状态

        多处理机:多个进程处于执行状态

3.阻塞状态

        正在执行的进程由于发生某事件而暂时无法继续执行的状态

        典型事件:请求I/O、申请缓冲空间

        根据阻塞原因,设置多个阻塞队列 

十、创建状态和终止状态

  1. 进程从产生到消亡的整个过程中都是由操作系统来控制的
  2. 操作系统中实现进程控制的功能程序"原语

原语:机器指令构成的一种实现特定功能的小程序,它的运行具有不可分割性

特点:贴近底层、最重要的、运行过程具有原子性(不可中断)、系统小程序

操作系统中的原语类别:

  1. 进程控制用的原语—实现进程管理和状态切换  如:进程创建原语、进程撤销原语、阻塞原语、唤醒原语、进程挂起原语、进程激活原语、进程调度原语等
  2. 进程通信用的原语:用于实现进程之间通信的,如:消息发送原语、消息接收原语等
  3. 资源互斥与同步用的原语:解决资源互斥访问的,主要有P操作原语和V操作原语。
  4. 资源管理用的原语:主要有请求资源的原语和释放资源的原语

        为了满足进程控制块对数据及操作的完整性要求以及增强管理的灵活性,通常在系统中又为进程引入了两种常见的状态∶创建状态和终止状态

进程创建原语:(以下情况会导致创建原语运行)

批作业调度、交互作业提交、系统提供服务、用户程序创建子进程

创建状态:

申请一个空白PCB;填写PCB;分配资源;设置就绪状态插入就绪队列

 

 

终止状态:

等待OS善后;

收回PCB

>>何时中止?

(1)进程自行终止
(2)用户或父进程的原因使进程终止
(3)运行超时而终止
(4)运行出错而终止

 十一、引入挂起状态的状态转换

        将内存中当前某个尚不能运行的进程调到外存上去,腾出来的空间接纳更多的进程。这一处理称作进程“挂起”(Suspend)

1.当该操作作用于某个进程时,改进程将被挂起,意味着此时进程处于静止状态。

        如果进程正在执行:则其此时会暂停执行;

        如果进程原本处于就绪状态:则其此时暂不接受调度。

2.与“挂起”对应的操作是“激活”。

引入挂起操作的原因,是基于系统和用户的如下需要:

(1) 终端用户的需要。 (2) 父进程请求。 (3) 负荷调节的需要。 (4) 操作系统的需要。

举个例子:

        若系统的内存用户区有20MB空间,收到的作业平均长度500KB。每时刻可容纳的作业数量最多为40个。若每个作业平均执行10^4条指令将产生一次I/O,普通配置的PC机相当于每次使用CPU运行0.1ms就需要等待20ms的I/O时间

两种挂起状态:
挂起某些暂时不能运行的进程,目的是腾出内有装入更多进程,使CPU忙碌起来。

>>挂起阻塞(S-Blocked)状态

>>挂起就绪(S-Ready)状态

         在引入挂起原语和激活原语后,在它们的作用下,进程将可能发生以下几种状态的转换:

(1)活动就绪->静止就绪

(2)活动阻塞->静止阻塞

(3)静止就绪->活动就绪

(4)静止阻塞->活动阻塞

(5)NULL->创建

(6)创建->活动就绪

(7)创建->静止就绪

(6)执行->终止

十二、操作系统中的数据结构

  1. 在计算机系统中,对于每个资源和每个进程都设置了一个数据结构,用于表征其实体,我们称之为资源信息表或进程信息表,其中包含了资源或进程的标识、描述、状态等信息以及一批指针。
  2. 通过这些指针,可以将同类资源或进程的信息表,或者同一进程所占用的资源信息表分类链接成不同的队列,便于操作系统进行查找。
  3. 如图所示,OS管理的这些数据结构一般分为以下四类:内存表、设备表、文件表和用于进程管理的进程表,通常进程表又被称为进程控制块PCB

 进程控制块PCB

        PCB是进程的一部分,是操作系统中最重要的记录型数据结构,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是进程存在的唯一标志,常驻内存

PCB的作用: 作为独立运行基本单位的标志; 能实现间断性运行方式; 提供进程管理所需要的信息; 提供进程调度所需要的信息; 实现与其他进程的同步与通信

PCB中的信息:

进程标识符 处理机状态 进程调度信息 进程控制信息

PCB的组织方式:

线性方式 链接方式 索引方式

 进程同步

1.进程同步机制:是对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性。

2.在多道程序环境下,处于一个系统中的多个进程,它们之间可能存在以下两种形式的制约关系:

>>间接相互制约关系

>>直接相互制约关系

两种形式的制约关系

 间接相互制约关系(同步)

1.多个程序在并发执行时,由于共享系统资源,致使在这些并发执行的程序之间形成相互制约的关系。

>> 如CPU、I/O设备等

2.为了保证这些进程能有序地运行,对于系统中的这类资源,必须由系统实施统一分配

>> 用户在要使用之前,应先提出申请,而不允许用户进程直接使用。

 直接相互制约关系(同步)

1.某些应用程序,为了完成某任务而建立了两个或多个进程。这些进程将为完成同一项任务而相互合作。进程间的直接制约关系就是源于它们之间的相互合作。

>> 如:生产者和消费者问题。

临界资源(Critical Resouce)

1.许多硬件资源如打印机、 磁带机等,都属于临界资源:独占

2.诸进程间应采取互斥方式,实现对这种资源的共享。

信号量机制

        1965年,由荷兰学者迪科斯彻Dijkstra提出(P、V分别代表荷兰语的Proberen (test)和Verhogen (increment)),是一种卓有成效的进程同步机制。 

信号量-软件解决方案:

  1. 保证两个或多个代码段不被并发调用
  2. 在进入关键代码段前,进程必须获取一个信号量,否则不能运行
  3. 执行完该关键代码段,必须释放信号量
  4. 信号量有值,为正说明它空闲,为负说明其忙碌

类型:

整型信号量 

记录型信号量

AND型信号量

信号量集

整型信号量

1.信号量S-整型变量: 最初由Dijkstra把整型信号量定义为一个用于表示资源数目的整型量S

2.提供两个不可分割的原子操作访问信号量

Wait(s)又称为P(S)

Signal(s)又称为V(S)

缺点:进程忙等 

wait用法:

wait(num),num是目标参数,wait的作用是使其(信息量)减一

(减一表示要使用这个临界资源了,如果减之前value值小于等于0,表示这个临界资源不可用,则进行阻塞)
如果信息量>=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。

signal用法:

signal(num),num是目标参数,signal的作用是使其(信息量)加一
如果信息量>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。

记录型信号量

  1. 在整型信号量机制中的wait操作,只要是信号量S≤0, 就会不断地测试。因此,该机制并未遵循“让权等待”的准则, 而是使进程处于“忙等”的状态。
  2. 记录型信号量机制,则是一种不存在“忙等”现象的进程同步机制。
  3. 在信号量机制中,除了需要一个用于代表资源数目的整型变量value外, 还应增加一个进程链表L,用于链接上述的所有等待进程。
  4. 但在采取了“让权等待”的策略后,又会出现多个进程等待访问同一临界资源的情况。

一个记录型信号量包含两个分量:信号量的值、信号量的等待队列指针


使用该类型声明一个信号量s 
vars:semaphore;或者semaphore 


则s.value的不同取值表示临界资源的使用情况,

s.L对应因临界区不能进入而阻塞的进程组成的阻塞队列 

 

 >>P:减一表示要使用这个临界资源了,如果减之后value值小于等于0,说明减之前value值小于等于0,表示这个临界资源不可用,则进入阻塞队列

>>P:用于进临界区之前检查资源,当临界资源被其他进程占用时,就将自己阳塞,具有“阻塞”功能

>>V:用于进程出临界区之前进行释放操作的,假设在释放的过程中,有因为它而阻塞等待的进程,则将它们唤醒

>>V:加一表示用完这个资源进行释放,如果加之后value值小于等于0,说明加之前value值小于等于0,表示有资源因为响应该资源而不能用, 在阻塞等待,则进行唤醒原语操作,唤醒进程,被唤醒的进程将获得资源使用权,进入它的临界区

信号量机制解决互斥问题:

(CR:临界资源)

  1. 一种CR设一个信号量
  2. 信号量的初值设置为系统初始状态CR的可用量
  3. P操作用于临界区前,相当于进入CS之前中请CR
  4. V操作用于临界区后,相当于出临界区后释放CR
  5. P、V换作必须成对匹配
  6. 信号量的值: 

信号量机制解决同步问题:

  1. 一种同步信号设一个信号量
  2. 信号量的初值设置为系统初始状态下信号的有无
  3. P操作用于临界区前,相当于检查同步信号
  4. V操作用于临界区后,相当于发出同步信号
  5. P、V操作不成对匹配 
  6. 信号量的值

互斥、同步解决方法之异同分析:

信号量的设置
信号量的初值
P操作的含义
V操作的含义
P、V操作是否匹配 

 记录型信号量机制解决问题的步骤:
分析问题中的进程、资源
分析进程间关系
分别设置互斥、同步信号量
写出并发进程体,找出相关CS
分别加PV操作并分析结果

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值