热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

操作系统之信号量机制

文章目录为什么引入信号量什么是信号量机制整型信号量记录型信号量为什么引入信号量因为之前我们不管是软件还是硬件都无法全满足那四个条件满则等待空闲让进让权等待有限等待所以用了信号量来实




文章目录


  • 为什么引入信号量
  • 什么是信号量机制
      • 整型信号量
      • 记录型信号量





为什么引入信号量

在这里插入图片描述


  • 因为之前我们不管是软件还是硬件都无法全满足那四个条件 满则等待 空闲让进 让权等待 有限等待 所以用了信号量来实现进程同步和互斥的方法

什么是信号量机制

在这里插入图片描述


  • 用户进程可以通过操作系统提供的一对原语来队信号量操作,来实现进程互斥和进程同步
  • wait(S)原语 也称P操作
  • signal(S)原语 也称V操作

整型信号量

在这里插入图片描述


  • 用一个整数型的变量作为信号量,用来表示系统中的某种资源的数量
  • 因为p v 操作是原子性的,所以避免了并发和异步导致的问题
  • wait是通过轮询来检查资源是否足够 我们通过比较s的值是否小于等于0 信号量值是一个共享变量 轮询这种运算,就是CPU一直在允许却没干正事
  • signal操作就是直接将资源数加1
  • 但是整型信号量是不满足让权等待的原则

记录型信号量

在这里插入图片描述


  • 记录型信号量是为了解决忙等的情况,也就是满足让权等待
    • 通过我们的block 和 wakeup进行线程的阻塞
  • 所谓记录型中有一个等待队列
  • wait操作 就是将对应的信号量减1,如果资源数小于0,说明资源不够,那么就将这个线程阻塞
  • signal操作 先将对应的信号量加1,释放资源之后,若资源数小于等于0,说明是有线程在等待这个资源,就将等待队列中的一个进程唤醒,变成就绪态

在这里插入图片描述







推荐阅读
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • 深入解析 Synchronized 锁的升级机制及其在并发编程中的应用
    深入解析 Synchronized 锁的升级机制及其在并发编程中的应用 ... [详细]
  • 性能测试中的关键监控指标与深入分析
    在软件性能测试中,关键监控指标的选取至关重要。主要目的包括:1. 评估系统的当前性能,确保其符合预期的性能标准;2. 发现软件性能瓶颈,定位潜在问题;3. 优化系统性能,提高用户体验。通过综合分析这些指标,可以全面了解系统的运行状态,为后续的性能改进提供科学依据。 ... [详细]
  • 本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • Java并发机制详解及其在数据安全性保障中的应用方案 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • 深入解析Linux内核中的进程上下文切换机制
    在现代操作系统中,进程作为核心概念之一,负责管理和分配系统资源,如CPU和内存。深入了解Linux内核中的进程上下文切换机制,需要首先明确进程与程序的区别。进程是一个动态的执行流,而程序则是静态的数据和指令集合。进程上下文切换涉及保存当前进程的状态信息,并加载下一个进程的状态,以实现多任务处理。这一过程不仅影响系统的性能,还关系到资源的有效利用。通过分析Linux内核中的具体实现,可以更好地理解其背后的原理和技术细节。 ... [详细]
  • 探讨Redis的最佳应用场景
    本文将深入探讨Redis在不同场景下的最佳应用,包括其优势和适用范围。 ... [详细]
  • 在Linux系统中,通过命令行查询计算机硬件配置是一项重要的技能。本文介绍了多种实用的命令和技巧,帮助用户高效地获取硬件信息。例如,可以通过 `cat /proc/cpuinfo | grep "physical id"` 命令来查看物理CPU的数量。此外,文章还涵盖了其他关键硬件组件的查询方法,如内存、磁盘和网络设备等。这些命令不仅适用于系统管理员,也适合普通用户了解自己的系统配置。 ... [详细]
  • 微机原理学习心得与第一章要点总结:深入理解计算机系统基础
    在《微机原理学习心得与第一章要点总结:深入理解计算机系统基础》一文中,作者详细介绍了微型计算机系统的初步概念。文章首先阐述了计算机系统的基本组成,强调了中央处理单元(CPU)作为计算机核心的重要性。CPU不仅负责执行指令,还承担着数据处理的关键任务。此外,文章还探讨了CPU的内部结构及其工作原理,并对内存储器进行了介绍,指出其主要特点是存取速度极快,能够有效支持CPU的高效运行。通过这些内容,读者可以对计算机系统的基础有更深入的理解。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
author-avatar
707282400_de0c8b
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有