整型信号量和PV操作(计算机操作系统)

在整型信号量机制中,信号量被定义为一个整形变量。除初始化外,仅能通过两个标准的原子操作Wait(S)和Signal(S)来访问。其通常分别被称为P、V操作。

描述如下:

P操作:S=S-1;如果S小于0,则进程进入等待状态,否则继续执行。

V操作:S=S+1;如果S>=0,则唤醒等待队列中的一个等待进程。

信号量有其自身的物理含义:当S>0时,其值表示要管理的某类资源的数量;当S<0时,它的绝对值表示在相关队列中等待的进程个数。

进程的同步

一般来说,一个进程相对与另一个进程的运行速度是不确定的,也就是说,进程是在异步环境下运行的,每个进程都以各自独立的、不可预知的速度向前推进。但是,相互合作的进程需要在某些确定的点上协调他们的工作,当一个进程到达了这些点后,除非另一个进程已经完成了某些操作,否则就不得不停下来等待这些操作结束。这就是进程的同步。

进程的互斥

在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,这种资源称为临界资源。

对临界区的管理原则:有空则进,无空则等,有限等待,让权等待。

进程互斥的情况,信号量初值是1;而同步的情况,信号量初值是0.

在解决具体问题时,面对各种并发进程,首先应该分析它们之间哪些是互斥关系,哪些是同步关系,由此而确定应该设置哪些信号量及它们的初值。

如果所设置的信号量,每个相关进程即对它施行P操作,也对它施行V操作,则称其为共用信号量。用于互斥的都是公用信号量。

若设置的信号量,只有一个进程能对它施行P操作,其他进程只能对它施行V操作,则称其为那一个进程的私用信号量。用于同步或资源分配管理的信号量都是私用信号量。

时间: 2024-12-22 08:02:06

整型信号量和PV操作(计算机操作系统)的相关文章

信号量与PV操作

在操作系统中进程之间经常会存在互斥和同步两种关系.为了有效处理这种情况,W.Dijskra在1965年提出信号量和PV操作的概念(1)信号量:一种特殊的变量,表现形式是一个整型S和一个队列(2)P操作:也成为"down()和wait()操作",使S=S-1,若S<0,进程暂停执行并放入信号量的等待队列.(3)V操作,也称为"up()和signal()操作",使S=S+1,若S<=0,唤醒等待队列中的一个进程. PV操作属于进程的低级通信. 利用信号量和P

整型信号量与记录型信号量

信号量机构是一种功能较强的机制,可用来解决互斥与同步的问题,它只能被两个标准的原语wait(S)和signal(S)来访问,也可以记为"P操作"和"V操作". 原语是指完成某种功能且不被分割不被中断执行的操作序列,通常可由硬件来实现完成不被分割执行特性的功能.如前述的"Test-and-Set"和"Swap"指令,就是由硬件实现的原子操作.原语功能的不被中断执行特性在单处理机时可由软件通过屏蔽中断方法实现. 原语之所以不能被中

用信号量及其PV操作处理实际问题

1.书上课后练习P187-43 semaphore mutex , sweat , water ,orange ; semaphore empty; process Supply(){ while(1){ P(empty) ; 产生一个0-2的随机数 ; if(s==0) V(sweat) ; else if( s==1) V(water); else V(orange) ; } } process P1(){ while(1){ P(orange) ; P(mutex) ; V(mutex)

Operating System-进程/线程内部通信-信号量、PV操作的实现和应用(解决哲学家进餐和生产者消费者问题)

本文主要内容: 信号量的实现 利用信号量解决哲学家用餐问题 利用信号量解决生产者消费者问题 一.信号量的实现 1.1 信号量结构 typedef struct { int value; struct process * list } semaphore; value代表当前信号量可以使用的数量,list代表当前信号量上所等待的进程. 1.2 P操作实现 P(semaphore * s) { s.value--; if(s.value < 0) { add current process to s

Operating System-进程/线程内部通信-信号量和PV操作

本文介绍操作系统进程管理的两个核心概念: 信号量 PV操作 一.信号量介绍 1.1 信号量引入 信号量(Semaphore)1965年由Dijkstra引入的.信号量一般由一个值是一个变量,其值有可能是0,或者一个正数,或者是负数: 0表示没有资源可以使用 大于0,标识可用资源的数量 小于0,其绝对值表示等待这个资源的进程的个数 针对信号量,Dijkstra提出了两个操作: P操作 V操作 信号量的值只有通过PV操作来完成. 1.2 PV原语操作(atomic action) PV操作里面会有一

整型数值的反转操作

public class ReverseInteger { /* * 思路如下 * 1.先把整型变量转化为字符串 * 2.再把字符串转换为char型数组,再通过比较传入变量的正负 * 3.如果为正的话就直接反转 * 4.如果为负的话,就先把正负号提取出来,然后在反转 * * * * */ public int revInt(int x) { String str=Integer.toString(x); char[] ch=str.toCharArray(); char [] b=new cha

软考(2)-操作系统之PV操作

在操作系统中已经学过PV操作,一直懵懵懂懂的,这次软考又有操作系统的内容,对PV操作有了新的认识.PV操作是操作系统中的一个难点也是重点,只要理解了,也不是什么难题.接下来简单的介绍一下PV操作. 1)基本概念 为了解决进程间的同步与互斥问题,我们引入了PV操作.接下来理解一下同步与互斥及相关的概念: 临界资源:在进程中,一次只能供一个进程使用的资源,如打印机,磁带机等. 进程间的互斥:同一个资源,多个程序想要使用,但只有一个程序能够占用资源.如千军万马过独木桥. 进程间的同步:双方共同协作完成

计算机操作系统

基于<计算机操作系统>(第四版)总结:OS引论.进程描述与控制.处理机调度与死锁.存储器管理.虚拟存储器.输入输出系统.文件系统 一.操作系统引论 1.目标:方便性.有效性.可扩充性.开放性 2.作用: 1.作为用户与计算机硬件系统之间的接口 2.作为计算机系统资源的管理者 3.实现对计算机资源的抽象 3.发展过程: 1.人工操作方式:用户独占全机,CPU等待人工操作--带(卡)装卸 2.脱机输入/输出方式:事先将装有用户程序和数据的纸带装入纸带输入机,外围机控制,把纸带内容输入到磁带上(类似

软考复习——PV操作

 在操作系统中,进程之间经常会存在互斥(都需要共享独占性资源时)和同步(完成异步的两个进程的协作)两种关系.而信号量和PV操作完美有效的处理了这两种情况.     互斥:就好比过独木桥,一次只能执行一个进程.     同步:好比一个人骑车一个人步行,双方协作完成一件事情,速度快的每过一段时间就停下来等等速度慢的 信号量是一种特殊的变量,表现形式是一个整型S和一个队列,根据控制对象的不同被赋予不同的值.分为以下两类: 1,公用信号量.实现进程间的互斥,初值为1或资源的数目, 2,私用信号量.实