循环缓冲题目

news2024/11/16 3:12:30

题目:一环形缓冲区由 6 个缓冲区 0~5 组成,其中 Full 表示装满数据的缓冲区,Empty 表示空缓冲区。按照顺时针方向,指针 Pf 指向第一个 “满” 缓冲区,指针 Pe 指向第一个 “空” 缓冲区。进程 In 在 Pe 指示下不断向 Empty 中输入数据,进程 Out 在 Pf 指示下不断从 Full 中取出数据。当所有缓冲区均为 “满” 缓冲区时,Pe 指向 “null”。当所有缓冲区均为 “空” 缓冲区时,Pf 指向 “null”。初始状态时,所有缓冲区均为 “空” 缓冲区,Pe 指向 0 号缓冲区。试用信号量和 P、V 原语写出进程 In 和 Out 的同步算法。

定义信号量

mutex = 1, empty = 6, full = 0;

In 进程

void in() {
    wait(empty);
    wait(mutex);
    if (Pf == NULL) Pf = Pe;
    // 向Pe指向的缓冲区写入数据
    Pe = (Pe + 1) % 6;
    if (Pe == Pf) Pf = NULL;
    signal(mutex);
    signal(full);
}

Out 进程

void out() {
    wait(full);
    wait(mutex);
    if (Pe == NULL) Pe = Pf;
    // 从Pf指向的缓冲区取出数据
    Pf = (Pf + 1) % 6;
    if (Pf == Pe) Pe = NULL;
    signal(mutex);
    signal(empty);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/657118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XSS数据接收网站——XSS在线平台

文章目录 前言使用步骤1、进入到xss在线平台主页2、创建项目3、生成攻击poc4、查看返回结果 前言 平台的网址是: 链接: XSS在线平台 使用步骤 1、进入到xss在线平台主页 2、创建项目 我的项目,点击创建,项目名称和描述随便填,…

Docker安装和使用,Docker拉取Mysql.

Docker Unbuntu安装dockerdocker的相关操作开启docker服务查看镜像搜索镜像拉取镜像删除镜像运行容器查看容器停止运行容器重新运行容器删除容器构建一个Docker镜像登陆Dockerhub提交镜像到dockerhub退出dockerhub进入正在运行的容器的交互式终端其他docker操作 docker拉取mysq…

qemu arm Linux 环境测试交叉编译的 glib 库 测试用例 tests

环境搭建 ubuntu 20.04 arm 平台交叉编译 glib 库 交叉编译 glib 库 glib 库 本身带有大量的测试用例 tests,分别在 glib 各个模块目录下的 tests 目录,如果是 ARM Linux 平台的交叉编译,可以开启 installed_tests 选项 开启 glib tests 测…

2.pixi.js编写的塔防游戏(类似保卫萝卜)-场景编辑器

游戏说明 一个用pixi.js编写的h5塔防游戏,可以用electron打包为exe,支持移动端,也可以用webview控件打包为app在移动端使用 环境说明 cnpm6.2.0 npm6.14.13 node12.22.7 npminstall3.28.0 yarn1.22.10 npm config list electron_mirr…

一种正弦信号叠加高频噪声的信号基频率准确测量方法

1.问题 当信号叠加有高频噪声时,特别是类似有变频器这类强干扰源存在的情况下,如何测得信号的准确频率,是个问题。FFT要求长时间采样,对于嵌入式应用,采样点数和时间消耗都是个问题。而即使用示波器的波形叠加功能&…

Debian12 U盘安装

今天买了一个蓝牙适配器,想着在我的Centos7上把这个蓝牙使用起来,但遗憾的是即使经过淘宝客服的远程操作也无法正常使用起来,原因是我的Centos版本太低,有些头文件缺失内容导致编译不过,然后蓝牙驱动无法正常安装。在客…

【八】spring boot集成数据库连接池druid

spring boot集成数据库连接池druid 最近在进行程序优化的过程中发现程序瓶颈在数据库连接这块,于是开始研究怎么对数据库连接池参数进行调优,在这个过程中发现很多人使用druid很不规范,经常会出现导入的包和配置参数不对应的情况,…

Mybatis-Plus《学习笔记(22版尚硅谷)》

一、MyBatis-Plus 1.简介 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 我们的愿景是成为 MyBatis 最好的搭档&…

【SpringCloud入门】-- Ribbon入门

1.什么是Ribbon? Ribbon就是netflix公司的一个开源项目,主要功能是提供客户端负载均衡算法和服务调用。Ribbon客户端组件提供了完善的配置项,如连接超时,重试等等。Ribbon作为服务消费者的负载均衡器,有两种使用方式&…

LeetCode 2481. Minimum Cuts to Divide a Circle【数学,几何】简单

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

AMD——CPU微架构分析

一、SoC架构 1.1 整体架构 Zeppelin 参考链接:wikichip: Zeppelin 通过infinity fabric总线将单die分成多die的SoC架构,每个Die包含两个CPU核(CCX)、2各DDR通道、USB、低功耗IO以及多个IFOP和IFIS serdes接口。 如下所述中&…

【Python 随练】三数字排序

题目: 输入三个整数 x, y, z,请按照从小到大的顺序输出这三个数。 简介: 在本篇博客中,我们将使用Python代码解决一个简单的排序问题:如何将输入的三个整数按照从小到大的顺序进行排序并输出。我们将提供问题的解析…

力扣动态规划专题(三)完全背包 518.零钱兑换II 377. 组合总和 Ⅳ 70. 爬楼梯 322. 零钱兑换 279.完全平方数 139.单词拆分 步骤及C++实现

文章目录 完全背包一维dp数组 滚动数组 518.零钱兑换II377. 组合总和 Ⅳ70. 爬楼梯322. 零钱兑换279.完全平方数139.单词拆分 完全背包 完全背包的物品数量是无限的,01背包的物品数量只有一个 完全背包和01背包分许步骤一样,唯一不同就是体现在遍历顺序上…

JVM内存分析:Aviator低版本内存泄漏问题分析

目录 1.频繁FullGC告警 2.堆转储操作生成dump文件 3.利用MAT工具分析dump文件 3.1 大对象视图分析内存泄漏原因 3.2 Aviator框架中什么地方用到ThreadLocal? 3.3 fnLocal为什么存在内存泄漏? 3.4 LambdaFunctionBootstrap为什么没有释放&#xff…

002mavenSettings配置

Maven –Settings 官网说明https://maven.apache.org/guides/mini/guide-mirror-settings.html 官网说明 模板 <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"htt…

【Redis】持久化机制

一、三种持久化机制 RDF快照&#xff1a;通过某一时刻的快照&#xff0c;将数据以二进制形式永久存储在磁盘中。AOF&#xff1a;将每个修改命令通过write函数追加到文件中。混合持久化&#xff1a;AOF重写时&#xff0c;将重写这一刻之前的内存做RDB快照存储&#xff0c;并将此…

前端vue上拉加载下拉刷新组件,支持列表分页 本地分页

前端vue上拉加载下拉刷新组件,支持列表分页 本地分页, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id12942 喜欢我的前端组件分享文章的&#xff0c;帮忙加个关注&#xff0c;非常感谢&#x1f64f;&#x1f64f; 效果图如下: #### 使用方法…

StarRocks 文章收集

StarRocks在58的实践 StarRocks在58的实践 - 墨天轮StarRocks在58的实践 --2022-06-08https://www.modb.pro/db/639611 StarRocks之系统架构 StarRocks之系统架构 - 墨天轮https://www.modb.pro/db/610300 StarRocks小规模集群部署最佳实践(1/2) 0016.S StarRocks小规模集…

JDBC 2023年最新学习笔记!

课程笔记说明 我的笔记是来源于尚硅谷的赵伟风老师的2023年最新版jdbc的课程 视频链接&#xff1a; 尚硅谷JDBC实战教程&#xff08;2023最新版jdbc&#xff0c;JDK17MySQL8&#xff09;_哔哩哔哩_bilibili 课程资料&#xff1a; 关注“尚硅谷教育”&#xff0c;后台回复J…

中年“难”人

对于每个打工人而言&#xff0c;人生无外乎两种状态&#xff0c;要么已是中年人&#xff0c;要么走在成为中年人的路上&#xff0c;可是当下横空出世的中产作死三件套&#xff0c;让每个打工人都不寒而栗 - 房贷近千万&#xff1b; 配偶不上班&#xff1b; 两娃上国际。 这个…