【操作系统原理】信号量及PV操作详解

简介: 【操作系统原理】信号量及PV操作详解

信号量

  • 一个特殊变量
  • 用于进程间传递信息的一个整数值

定义如下:

struct semaphore
{
  int count;
  quenue Type quenue;
}
  • 信号量说明:semaphore s;
  • 对信号量可以实施的操作:初始化、P和V(P、V分别是荷兰语的test(proberen)和increment(verhogen))

P、V操作定义

P(s)

{
  s.count --; //信号量值减一
  if(s.count<0)
  {
    该进程状态置为阻塞态;
    将该进程插入相应的等待队列s.quenue末尾;
    重新调度
  }
}

down,semwait:也代表P操作

V(s)

{
  s.ount++;
  if(s.count<=0)
  {
  唤醒相应等待队列s.queue中等待的一个进程;
  改变其状态为就绪态,并将其插入就绪队列;
  }
}

up,semsignal:也代表V操作

相关说明

  • P,V操作为原语操作
  • 在信号量上定义了三个操作
    初始化(非负数)、P操作、V操作
  • 最初提出的是二元信号量(解决互斥)
    之后,推广到一般信号量(多值)或技术信号量(解决同步)

用PV操作解决进程间互斥问题

  • 分析并发进程的关键活动,划定临界区
  • 设置信号量mutux,初值为1
  • 在临界区前实施P(mutux)
  • 在临界区之后实施V(mutux)

相关解释:

  • 临界区 : 我们把并发进程中与共享变量有关的程序段称为临界区
  • 信号量 : 信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。
  • 进程的互斥:是指当有若干个进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用该资源,其他要使用它的进程必须等待,直到该资源的占用着释放了该资源。
  • 进程的同步:是指在并发进程之间存在这一种制约关系,一个进程依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才被唤醒。
  • pv操作又称wait,signal原语。
    主要是操作进程中对进程控制的信息量的加减控制。

注意:在霍尔管程中,wait操作signal操作用于被设计为两个可以中断的过程,而非原语。
在管程中,引入一种数据结构—条件变量(仅在管程中可以被访问)。
条件变量的两种操作:

  • wait()操作[阻塞调用进程]
  • signal()操作[释放/唤醒在条件变量上阻塞的进程]
  • wait用法:
    wait(num),num是目标参数,wait的作用是使其(信息量)减一。
    如果信息量>=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
    signal用法:
    signal(num),num是目标参数,signal的作用是使其(信息量)加一。
    如果信息量>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
目录
相关文章
|
1天前
|
算法 程序员 内存技术
深入理解操作系统内存管理:原理与实践
【5月更文挑战第18天】 在现代计算机系统中,操作系统扮演着关键角色,其中内存管理作为其核心功能之一,保障了系统资源的高效利用和程序的顺利运行。本文旨在探讨操作系统内存管理的基本原理及其在实际中的应用,涉及物理内存的组织、虚拟内存技术的实现以及内存分配策略等关键技术点。通过分析不同内存管理机制的优势与局限,我们将对操作系统如何协调多任务环境下的内存使用有更深刻的认识。
|
1天前
|
存储 缓存 算法
深入理解操作系统内存管理:原理与实践
【5月更文挑战第17天】 本文旨在探讨操作系统中的内存管理机制,通过分析其核心原理及提供实际应用场景,帮助读者深化对操作系统内存管理的认识。文章首先介绍内存管理的基础知识,然后详细阐述连续分配与非连续分配策略,接着讨论分页和分段机制,并探索虚拟内存技术如何使得内存管理更加高效。此外,文中还将涉及内存优化技巧以及现代操作系统中内存管理面临的挑战。
|
2天前
|
缓存 算法 Java
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(4)
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)
16 0
|
2天前
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(3)
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)
13 0
|
2天前
|
C++ 调度
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(2)
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)
13 0
|
2天前
|
算法 安全 调度
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(1)
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)
14 0
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(1)
|
4天前
|
存储 算法 Linux
深入理解操作系统内存管理:原理与实践
【5月更文挑战第14天】 在现代计算机系统中,操作系统的内存管理是确保系统高效稳定运行的关键组成部分。本文将详细探讨操作系统内存管理的基本原理,包括虚拟内存的概念、物理内存与进程地址空间的映射机制、以及分页和分段技术的具体实现。此外,文章还将介绍内存分配策略、内存碎片问题及其解决方案,以及现代操作系统中采用的高级内存管理特性,如Linux内核的内存管理子系统。通过理论分析与实际案例相结合的方式,旨在帮助读者深入理解并掌握操作系统内存管理的核心知识。
|
4天前
|
Ubuntu Unix Java
【操作系统原理】—— 文件系统编程
【操作系统原理】—— 文件系统编程
7 0
|
4天前
|
存储 Linux 程序员
【操作系统原理】—— Linux内存管理
【操作系统原理】—— Linux内存管理
8 0
|
4天前
|
Ubuntu Linux C语言
【操作系统原理】—— 信号量与PV操作实现
【操作系统原理】—— 信号量与PV操作实现
8 0