操作系统6

一、相关进程与无关进程

1.相关进程:在逻辑上具有某种联系的进程

2.无关进程:在逻辑上没有联系的进程

3.举例:

        (1)为两个不同的源程序进行编译的进程,它们可以并发执行,但它们之间无关

        (2)三个进程,分别是读数据进程、处理数据进程、打印结果进程,它们相互依赖、相互合作,是一组相关进程。

二、与时间有关的错误

        对于相关进程来说,可能有若干并发进程同时使用共享资源,即一个进程一次使用未结束,另一进程也开始使用,形成交替使用共享资源。

        结果:形成与时间有关的错误

三、进程的同步

进程的同步:

        是指进程之间一种直接的协同工作关系,一些进程相互合作共同完成一项任务。

例如:

        进程A从硬盘上读记录,每读出一个记录就存入缓冲区,进程B从缓冲区中取出记录加工,直至所有记录处理结束。

        直接制约关系:A若没有把记录读入缓冲区,B等待,反之,B若没有从缓冲区取出记录,A等待。

        在系统中,许多进程常常需要共享资源,而这些共享资源往往需要排他性的使用,即一次只能为一个进程服务,因此,各进程只能互斥使用这些资源,进程间的这种关系就是进程的互斥。

例如:

        多个进程竞争使用打印机、一些变量、表格等资源。

        进程间的互斥是一种间接制约关系

三、临界区

1.临界资源:

        若在系统中的某些资源一次只允许一个进程使用,则这类资源称为临界资源或共享变量。

2.临界区:

        访问临界资源的那段代码。

3.相关临界区:

        如果有若干进程共享某一临界资源(书上临界区,错误,改正),则该临界区称为相关临界区

4.相关临界区的调度使用原则:

        (1)当临界资源(书上是临界区,请改正)空闲时,若有一个进程要求进入临界区,应允许它立即进入。---有空让进,有效利用资源。

        (2)若有一个进程已在临界区,其他要求进入临界区的进程必须等待。---无空等待,互斥进入

        (3)当没有进程在临界区,而同时有多个进程要求进入临界区,选择其一进入,其他等待。---多种择一

        (4)任一进程进入临界区的要求应在有限时间满足---有限等待,避免死等。

        (5)处于等待状态的进程应放弃占用处理器。---让权等待,避免盲等。

四、信号量

1.信号量的提出

        1965年,荷兰学者Dijkstra首先提出关于信号量的概念,他把信号量定义为一个用于表示资源数目的整型量S,与一般整型量不同,除初始化外,仅能通过两个标准的操作P操作和V操作来访问。

2.P、V操作的使用

        放在程序中,用P(S)和V(S)表达,实现进程间的同步与互斥。

五、P、V操作

1.P操作定义:

P(S)
{
S=S-1;
若S<0,将该进程状态置为等待状态,然后将该进程的PCB插入相应的S信号量等待队列队尾,直到有其他进程在S上执行V操作为止;
}

2.V操作定义:

V(S)
{
S=S+1;
若S<=0,唤醒在S信号量队列中等待的一个进程,将其状态改变为就绪态,并将其插入就绪队列;
执行本操作的进程继续执行;
}

六、信号量与P、V操作的物理含义

        信号量S表示某类可用的资源。对于不同的资源,用不同的信号表示。

        S>0时,S表示某类资源的可用数量

        S<0时,其绝对值表示排在S等待队列中进程的数目。

        执行一次P操作,表示请求一个资源;

        执行一次V操作,表示进程释放一个资源。

七、用P、V操作实现进程之间的互斥

假设有进程A、B竞争进入临界区,用P、V操作实现进程之间的互斥。

首先定义互斥型信号量S,并使之初值为1

八、用P、V操作实现进程间的同步

解决思路:

        如果有两个进程同步,设置两个信号量S1、S2,初始值可以设为0.为了表达同步,同一信号量的P、V操作分属于两个进程。

例如:

        有三个进程,进程get从输入设备上不断读取数据,并放入缓冲区buffer1;进程copy不断地将缓冲区buffer1中的内容复制到缓冲区buffer2;进程put则不断将buffer2中的内容在打印机上输出。

三者的制约关系:

        get进程必须先从设备读数据到buffer1;copy进程才能从buffer1复制内容到buffer2;最后put进程才能打印buffer2的内容。

        反之,copy进程从buffer取走数据之后,get进程才能继续从设备读数据到buffer1;put进程从buffer2取走数据之后,copy进程才能复制buffer1的数据到buffer2.故可以设置四个信号量来保证三者的执行顺序。

信号量设置:

        S1:初值为1,保证get进程能够从设备读数据到buffer1.

        S2:初始值为0,copy进程能否将buffer1的内容复制到buffer2;

        S3:初始值为0,put进程能否将buffer2的内容打印输出。

        S4:初始值为1,保证buffer2缓冲区可以使用

九、信号量及P、V操作总结

1.P、V操作必须成对出现

2.互斥操作时,P、V操作出现在同一个进程

3.同步操作时,P、V操作出现在不同进程

4.既有同步,又有互斥操作时,同步信号量P操作在前,互斥信号量P操作在后,V操作顺序不限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值