系统相关
首页 > 系统相关> > 操作系统学习笔记——第二章 进程的描述与控制(二)

操作系统学习笔记——第二章 进程的描述与控制(二)

作者:互联网

2.3 进程控制

进程控制是对系统中的全部进程实施有效的管理,包括进程创建、终止、进程阻塞和唤醒。

一、进程的创建

图片1

图片2

创建原语是由若干条指令组成,能够完成一定功能的程序段

二、进程的终止

1、 引起进程终止的事件

   正常结束
   异常结束
          越界错误、非法指令等
   外界干预
          操作员或操作系统干预
          父进程请求
          父进程终止

2、 进程的终止过程

图片3

三、进程的阻塞与唤醒

图片4

2、 进程阻塞过程(主动阻塞过程)

图片5

3、进程唤醒过程

图片6

四、进程的挂起与激活

图片7

图片8

2.4 进程同步

目的与要求

一、进程的同步基本概念

二、信号量机制

三、信号量的应用

进程同步的主要任务:

对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能够有效地共享资源和相互合作,从而使程序的执行具有可再现性。

一、进程同步的基本概念

1、进程间两种形式的制约关系

 间接相互制约关系-------源于资源共享
 直接相互制约关系-------源于进程合作

2、临界资源

nextp为临时变量

因为缓冲区是生产者和消费者所共享的,属于临界资源,所以要使用缓冲区要先申请,缓冲区有空间可以存储才可以使用,所以这里需要一个临时变量来存储刚刚生产出来的商品。
如果counter = n, 则证明缓冲区满了,此时生产出的商品无法存储进入缓冲区,所以执行do no-op
如果counter不是n,则缓冲区没满,此时把nextp中的商品存储进入缓冲区,再让指针in指向下一个存储空间,再令counter+1

关于消费者的程序:

当counter等于0时,则证明缓冲区里没有商品,则无法进行取出商品的操作。
当counter不等于0时,则证明缓冲区中有商品,则从对应存储位置将商品取出,存入临时变量nextc中,再令out指向下一个存储空间,令counter减一,然后消费者从nextc中将商品取出。

存在的问题

图片12

图片13

3、临界区

进入区就是申请临界资源,临界区就是访问临界资源,退出区就是释放临界资源。

图片14

4、同步机制应遵循的规则

        空闲让进
        忙则等待
        有限等待
        让权等待

二、信号量机制

1965年荷兰Dijkstra提出的信号量(Semaphores)是一种卓有成效的进程同步工具,在长期的应用中,得到了很大的发展,从整形信号量经过记录型信号量,进而发展为“信号量集”机制。

1、整型信号量

图片15

wait(S)即P(S),也就是P操作,用来申请资源

signal(S)即V(S),也就是V操作,用来释放资源

整型信号量存在的问题

在整型信号量机制中的wait操作,只要是信号量S<=0,就会不断地测试。因此,该机制并未遵循“让权等待”的准则,而是使进程处于“忙等”的状态。记录型信号量机制则是一种不存在“忙等”现象的进程同步机制。

2、记录型信号量(重点!!!)

图16

为了解决采取“让权等待”策略后出现多个进程等待访问同一临界资源的情况,在信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表指针list,用于链接上述的所有等待进程。记录型信号量是由于它采用了记录型的数据结构而得名。

图17

图18

比如:两个进程A,B,打印机有1台

假设A先访问打印机,则:

3、AND型信号量

前面所述的进程互斥问题针对的是多个并发进程仅共享一个临界资源的情况。在有些应用场合,是一个进程往往需要获得两个或者更多的共享资源后才能执行其任务。如下图:
图19
相应地,在两个进程中都要包含两个对Dmutex和Emutex的操作,即
图20

上图就是获得多个共享资源的情况下可能出现的问题!

AND同步机制的基本思想:将进程在整个运行过程中需要的所有资源,一次性全部分配给进程,待进程使用完后再一起释放。只要尚有一个资源未能分配给进程,其他所有可能为之分配的资源,也不分配给它。即对临界资源的分配采取原子操作,成为同时wait操作即Swait()。

图21

4、信号量集

记录型信号量机制:

   每次只能获得或释放一个单位的资源,低效
   每次分配前必须测试资源数量,看其是否大于其下界值对AND信号量机制加以扩充

   对AND信号量机制加以扩充
   S为信号量;t为下限值;d为需求值

图22

图23

一般信号量集的几种特殊情况:

图24

信号量的应用

1、利用信号量实现进程互斥(模式)

为使多个进程互斥的访问某临界资源,需为该资源设置一互斥信号mutex,并设其初始值为1(N个相同的临界资源的话,就是N),然后将各进程访问资源的临界区CS置于wait(mutex)和signal(mutex)之间即可。
图25

中间的两个process的程序段位于parbegin与parend之间,则说明这两个process是可以并发执行的。

wait(mutex)和signal(mutex)必须成对出现

图26

2、利用信号量实现前驱关系(模式)

图27

图28

思路:

3、利用记录型信号量实现进程同步(模式)

图29

图30

empty和full称为资源信号量

以上就是这两小节的内容!

标签:操作系统,counter,笔记,信号量,缓冲区,临界,进程,第二章,资源
来源: https://blog.csdn.net/loveCC_orange/article/details/122776569