当前位置: 首页 > news >正文

Operating System 实验五 进程管理编程实验

实验目标

  1. 写个多线程的程序,重现竞争条件,并通过信号量或者互斥量,解决临界区问题
  2. 某工厂有两个生产车间和一个装配车间,两个生产车间分别生产A、B两种零件,装配车间的任务是把A、B两种零件组装成产品。两个生产车间每生产一个零件后,都要分别把它们送到装配车间的货架F1、F2上。F1存放零件A,F2存放零件B,F1和F2的容量均可存放10个零件。装配工人每次从货架上取一个零件A和一个零件B后组装成产品。请用P、V操作进行正确管理。(不需要编程序,写伪代码即可)

实验设备

  1. 硬件:微机, linux环境
  2. 软件:gcc

1、写个多线程的程序,重现竞争条件,并通过信号量或者互斥量,解决临界区问题

注意:

  1. gcc生成可执行文件,需要加-lpthread参数,表示连接pthread库
  2. 如果重现不了竞争条件,提高线程循环次数LOOP_TIMES,或者提高线程数量THREAD_COUNT,再观察
  3. 请修改代码,解决临界区问题。解决后,无论如何运行,counter值均输出0

【代码test1.c】

#include <stdio.h>        // 包含标准输入输出库

#include <pthread.h>      // 包含多线程库

#define LOOP_TIMES 10000   // 每个线程循环操作的次数

#define THREAD_COUNT 100   // 线程的数量

int g_counter = 0;        // 全局共享变量,初始值为0

pthread_mutex_t lock;  // 互斥锁,用于同步访问

// 线程函数,每个线程执行的操作,都对counter加减操作,按理说输出counter值一直为0

void *thread_func() {

相关文章:

Operating System 实验五 进程管理编程实验

实验目标: 写个多线程的程序,重现竞争条件,并通过信号量或者互斥量,解决临界区问题某工厂有两个生产车间和一个装配车间,两个生产车间分别生产A、B两种零件,装配车间的任务是把A、B两种零件组装成产品。两个生产车间每生产一个零件后,都要分别把它们送到装配车间的货架F…...

Deep Reinforcement learning for real autonomous mobile robot navigation

​​​​​​​https://www.youtube.com/watch?vKyA2uTIQfxw AI Learns to Park - Deep Reinforcement Learning https://www.youtube.com/watch?vVMp6pq6_QjI Q Learning simply explained | SARSA and Q-Learning Explanation https://www.youtube.com/watch?vMI8ByADM…...

计算机网络 | 应用层(4)--DNS:因特网的目录服务

&#x1f493;个人主页&#xff1a;mooridy-CSDN博客 &#x1f493;文章专栏&#xff1a;《计算机网络&#xff1a;自定向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 &#x1f339;关注我&#xff0c;和我一起学习更多计算机网络的知识 &#x1f51d;&#x1f51d; 目录 …...

WPF核心技术解析与使用示例

WPF核心技术解析与使用示例 一、依赖属性(Dependency Property)详解 1. 依赖属性基础 ​​核心概念​​: 依赖属性是WPF实现数据绑定、样式、动画等特性的基础通过属性系统实现高效的内存管理和值继承​​标准定义模式​​: public class MyControl : Control {// 1. 定义…...

JVM运行机制全景图:从源码到执行的全过程

JVM运行机制全景图:从源码到执行的全过程 引言:你真的了解 Java 是怎么跑起来的吗? 许多开发者写完 Java 代码之后,就交给编译器和运行时去“神奇”地执行了。但你有没有想过,一段 .java 文件是如何一步步变成可运行的程序?今天,我们就从 源码 ➝ 字节码 ➝ 类加载 ➝…...

使用 AFL++ 对 IoT 二进制文件进行模糊测试 - 第二部分

在上一部分中,我们研究了如何使用 AFL++ 对简单的物联网二进制文件进行模糊测试。这些程序接受来自文件的输入,并且易于模糊测试。 在本文中,我们将研究套接字二进制文件。使用套接字进行网络通信的模糊测试二进制文件与使用基于文件 I/O 的模糊测试二进制文件不同。Vanill…...

在华为云平台上使用 MQTT 协议:构建高效可靠的物联网通信

&#x1f310; 在华为云平台上使用 MQTT 协议&#xff1a;构建高效可靠的物联网通信 随着物联网&#xff08;IoT&#xff09;技术的发展&#xff0c;设备间的高效通信变得尤为重要。MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;作为一种轻量级的消息传输…...

基于STM32的物流搬运机器人

功能&#xff1a;智能循迹、定距夹取、颜色切换、自动跟随、自动避障、声音夹取、蓝牙遥控、手柄遥控、颜色识别夹取、循迹避障、循迹定距…… 包含内容&#xff1a;完整源码、使用手册、原理图、视频演示、PPT、论文参考、其余资料 资料只私聊...

H.264/AVC标准主流开源编解码器编译说明

An artisan must first sharpen his tools if he is to do his work well. 工欲善其事,必先利其器. 前言 想研究和学习H.264/AVC视频编解码标准的入门的伙伴们,不论是学术研究还是工程应用都离不开对源码的分析,因此首要工作是对各类编解码器进行编译,本文针对主流的一些符…...

Xilinx FPGA支持的FLASH型号汇总

以博主这些年的FPGA开发使用经验来看&#xff0c;FPGA开发的主流还是以Xilinx FPGA为主&#xff0c;贸易战关税战打了这么多年&#xff0c;我们做研发的也不可避免的要涉及一些国产替代的工作&#xff1b;这里把Xilinx FPGA官方支持的各类&#xff08;国产和非国产&#xff09;…...

【C++ 类和数据抽象】消息处理示例(1):从设计模式到实战应用

目录 一、数据抽象概述 二、消息处理的核心概念 2.1 什么是消息处理&#xff1f; 2.2 消息处理的核心目标 三、基于设计模式的消息处理实现 3.1 观察者模式&#xff08;Observer Pattern&#xff09; 3.2 命令模式&#xff08;Command Pattern&#xff09; 四、实战场景…...

LiveCharts.WPF图表模块封装

WPF LiveCharts.WPF 封装实现 下面是一个完整的 WPF LiveCharts.WPF 封装实现,提供了常用图表的简单使用方式,并支持数据绑定和更新。 一、LiveCharts.WPF 封装类 1. 图表基类 (ChartBase.cs) using LiveCharts; using LiveCharts.Wpf; using System.Collections.Generic;…...

微信小程序,基于uni-app的轮播图制作,轮播图本地文件图片预览

完整代码 <template><swiper class"banner" indicator-dots circular :autoplay"false"><swiper-item v-for "item in picture" :key"item.id"><view><image tap"onPreviewImage(item.img)" :…...

【QQmusic】复习笔记第四章分点讲解

4.1 音乐加载 功能概述 该部分实现了从本地磁盘加载音乐文件到程序中&#xff0c;并在界面上显示的功能。通过QFileDialog类创建文件选择对话框&#xff0c;用户可选择多个音乐文件&#xff0c;程序筛选出有效音频文件后&#xff0c;交由MusicList类管理&#xff0c;并更新到…...

设置右键打开VSCode

在日常的开发工作中&#xff0c;VSCode 是一款非常受欢迎的代码编辑器。为了更加便捷地使用它&#xff0c;我们可以将 VSCode 添加到右键菜单中&#xff0c;这样只需右键点击文件或文件夹&#xff0c;就能快速用 VSCode 打开&#xff0c;极大地提高工作效率。下面我就来介绍一下…...

数据结构和算法(八)--2-3查找树

目录 一、平衡树 1、2-3查找树 1.1、定义 1.2、查找 1.3、插入 1.3.1、向2-结点中插入新键 1.3.2、向一棵只含有一个3-结点的树中插入新键 1.3.3、向一个父结点为2-结点的3-结点中插入新键 1.3.4、向一个父结点为3-结点的3-结点中插入新键 1.3.5、分解根结点 1.4、2…...

JSAPI2.4——正则表达式

一、语法 const str 一二三四五六七八九十 //判断内容 const reg /二/ //判断条件 console.log(reg.test(str)); //检查 二、test与exec方法的区别 test方法&#xff1a;用于判断是否符合规则的字符串&#xff0c;返回值是布尔值 exec方法&…...

FPGA 100G UDP纯逻辑协议栈

随着器件等级的升高&#xff0c;高速serdes的线速率也随之提高&#xff0c;RFSOC 4x最大可支持100G&#xff0c;主流方案为RDMA方案&#xff0c;该方案相对比较复杂&#xff0c;除了需要负责逻辑端的开发&#xff0c;还需操作系统中开发RDMA的驱动&#xff0c;对于对丢包不那么…...

分享一个可以批量巡检GET和POST接口的Shell脚本

一、场景痛点与需求分析 在分布式系统架构中&#xff0c;服务接口的可用性和稳定性直接影响业务连续性。当面临以下场景时&#xff0c;需批量巡检GET和POST接口&#xff1a; 上线验证&#xff1a;新版本发布后批量验证核心接口 故障恢复&#xff1a;异常数据修复后的批量重试…...

机器学习之一:机械式学习

正如人们有各种各样的学习方法一样&#xff0c;机器学习也有多种学习方法。若按学习时所用的方法进行分类&#xff0c;则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念&#xff0c;…...

区分PROJECT_SOURCE_DIR, CMAKE_SOURCE_DIR,CMAKE_CURRENT_SOURCE_DIR

目录 示例工程 PROJECT_SOURCE_DIR的行为 CMAKE_SOURCE_DIR的行为 CMAKE_CURRENT_SOURCE_DIR 示例工程 根目录 |-----CMakeLists.txt |-----sub1 |--------CMakeLists.txt |-----sub2 |--------CMakeLists.txt 根目录下的CMakeList.txt: project(main)message("main …...

Python循环结构深度解析与高效应用实践

引言&#xff1a;循环结构在编程中的核心地位 循环结构作为程序设计的三大基本结构之一&#xff0c;在Python中通过while和for-in两种循环机制实现迭代操作。本文将从底层原理到高级应用&#xff0c;全面剖析Python循环机制的使用技巧与优化策略&#xff0c;助您掌握高效迭代的…...

25【干货】在Arcgis中根据字段属性重新排序并自动编号的方法(二)

上一篇关于属性表自动编号的文章因为涉及到代码&#xff08;【干货】在Arcgis中根据字段属性重新排序并自动编号的方法&#xff08;一&#xff09;&#xff09;&#xff0c;担心大家有些东西确实不熟悉&#xff0c;今天就更新一篇不需要代码也能达到这个目的的方法。主要的思路…...

SinSR模型剪枝实验报告

SinSR模型剪枝实验报告 实验概述 我成功地对SinSR模型进行了L1范式剪枝&#xff0c;剪枝比例为50%。通过分析剪枝前后的模型参数和性能&#xff0c;我们得出了以下结论。 剪枝实现方法 创建专用的main_prune.py脚本&#xff0c;用于剪枝训练。创建quick_prune.py脚本&#…...

IT社团分析预测项目(pandas、numpy、sklearn)

IT社团人数的增长陷入迟滞&#xff0c;同时不同目标任务和不同经营模式的社团更是层出不穷。在面临内忧外患的情况下&#xff0c;本社团希望结合社团行业现状&#xff0c;分析同学和出勤的数据&#xff0c;挖据数据中的信息&#xff0c;通过对人数流失进行预测寻找到相应的对策…...

C语言中位段的应用

一&#xff0c;位段的主要应用场景 硬件寄存器操作 嵌入式开发中&#xff0c;硬件寄存器通常以位为单位控制设备状态。位段可直接映射到寄存器&#xff0c;简化位操作&#xff1a; typedef struct {unsigned int enable : 1; // 使能位unsigned int mode : 3; // 模式选择&…...

【Linux网络#1】:网络基础知识

1、网络发展 在计算机发展历程中&#xff0c;经历过下面四个阶段&#xff1a; 1.独立模式 独立模式&#xff1a;计算机之间相互独立&#xff0c;每台计算机做自己的事情&#xff0c;彼此之间没有直接信息传递。如果两台计算机需要通信就需要将当前计算机的数据通过某种方式拷贝…...

基于物联网的园林防火监测系统

标题:基于物联网的园林防火监测系统 内容:1.摘要 随着全球气候变化和人类活动影响&#xff0c;园林火灾发生频率呈上升趋势&#xff0c;给生态环境和人类生命财产造成巨大损失。为有效预防和应对园林火灾&#xff0c;本文提出基于物联网的园林防火监测系统。该系统综合运用传感…...

华为云loT物联网介绍与使用

&#x1f310; 华为云 IoT 物联网平台详解&#xff1a;构建万物互联的智能底座 随着万物互联时代的到来&#xff0c;物联网&#xff08;IoT&#xff09;已成为推动数字化转型的关键技术之一。华为云 IoT 平台&#xff08;IoT Device Access&#xff09;作为华为云的核心服务之…...

Redis 数据类型全览:特性、场景与操作实例

Redis 是一款开源的内存数据库&#xff0c;支持多种数据类型&#xff0c;以下是对常见 Redis 数据类型的介绍&#xff1a; 1. String&#xff08;字符串&#xff09; 描述 字符串是 Redis 里最基础的数据类型&#xff0c;其值可以是简单的字符串、数字&#xff0c;甚至是二进…...

Qt动态库信号崩溃问题解决方案

在Qt中&#xff0c;当动态库向主程序发送信号导致崩溃时&#xff0c;通常涉及线程安全或对象生命周期问题。以下是逐步解决方案&#xff1a; 1. 检查线程上下文 问题&#xff1a;动态库所在的线程与主程序线程不同&#xff0c;跨线程信号未正确处理。解决方案&#xff1a; 显式…...

Go设计模式-观察者模式

简介 在软件开发中&#xff0c;我们常常会遇到这样的场景&#xff1a;一个对象的状态变化需要通知到多个其他对象&#xff0c;让它们做出相应的反应。观察者模式&#xff08;Observer Pattern&#xff09;就是解决这类问题的一种设计模式。在 Go 语言中&#xff0c;由于其简洁…...

《TCP/IP详解 卷1:协议》之第七、八章:Ping Traceroute

目录 一、ICMP回显请求和回显应答 1、ICMP回显请求 2、ICMP回显应答 二、ARP高速缓存 三、IP记录路由选项&#xff08;Record Route&#xff0c;RR&#xff09; 1、记录路由选项的工作过程 2、RR 选项的 IP 头部格式 2.1、RR 请求 2.2、RR响应 四、ping 的去返路径 五…...

Unity任务系统笔记

数据结构设计 任务基类包括的字段&#xff1a; string 任务内容&#xff1b; Transform 任务目的地&#xff1b; MyCharacter 任务开启后要更新对话的NPC&#xff1b; MyTalkData 任务开启后相关NPC要说的对话数据&#xff1b; 共同方法&#xff1a;开启任务、完成任务。…...

Three.js + React 实战系列-3D 个人主页:构建 Hero 场景组件(项目核心)✨

在本节中&#xff0c;我们将完成整个 3D 主业项目中最核心的组件 —— Hero.jsx。 这个组件作为首页的主视觉部分&#xff0c;整合了 3D 模型、动画相机、交互按钮与自适应布局&#xff0c;构建出一个立体、酷炫、可交互的主场景。 前置准备&#xff1a; ✅安装依赖&#xff…...

线程池(二):深入剖析synchronized关键字的底层原理

线程池&#xff08;二&#xff09;&#xff1a;深入剖析synchronized关键字的底层原理 线程池&#xff08;二&#xff09;&#xff1a;深入剖析synchronized关键字的底层原理一、基本使用1.1 修饰实例方法1.2 修饰静态方法1.3 修饰代码块 二、Monitor2.1 Monitor的概念2.2 Moni…...

网络原理 - 9

目录 数据链路层 以太网 以太网帧格式 MAC 地址 DNS&#xff08;Domain Name System&#xff09; 完&#xff01; 数据链路层 这里的内容也是简单了解&#xff0c;除非是做交换机开发&#xff0c;一般程序员不需要涉及~~ 以太网 ”以太网“不是一种具体的网络&#xf…...

springboot入门-业务逻辑核心service层

在 Spring Boot 中&#xff0c;Service 层是业务逻辑的核心&#xff0c;负责协调数据访问层&#xff08;Repository 或 Mapper&#xff09;和控制器层&#xff08;Controller&#xff09;&#xff0c;处理业务规则、事务管理以及数据转换。以下是 Service 层的详细说明、常用注…...

在RHEL 10上安装和配置TFTP服务器(不使用xinetd)

RHEL10已经废弃xinetd&#xff0c;使用下面的方式安装配置TFTP服务器。 1. 安装TFTP服务器和客户端 sudo dnf install tftp-server tftp -y 2. 配置TFTP服务器 创建TFTP根目录并设置权限 sudo mkdir -p /var/lib/tftpboot sudo chmod -R 777 /var/lib/tftpboot sudo chown -R…...

AIGC在游戏开发中的革命:自动化生成3A级游戏内容

一、智能游戏开发架构 1.1 传统开发痛点与AIGC创新 开发环节 传统痛点 AIGC解决方案 角色原画设计 美术资源产能瓶颈 文生图3D模型自动生成 场景搭建 重复劳动占比高 程序化生成风格迁移 NPC行为设计 模式化严重 强化学习驱动智能行为 任务系统 剧情线性缺乏变化 动态剧情生成系…...

ChatGPT、deepseek、豆包、Kimi、通义千问、腾讯元宝、文心一言、智谱清言代码能力对比

均使用测试时的最强模型 均是一次对话,对话内容一样 均开启深度思考 能联网的都联网了&#xff0c;但是作用不大&#xff0c;因为蓝桥杯刚考完&#xff0c;洛谷题目刚上传没多久 问题一测试了两遍 从问题三开始不再测试智谱清言&#xff08;它思考时间太长了&#xff0c;前两个…...

Linux扩展

目录 扩展 查找如何进行后台运行程序的指令 使用 & 符号 使用 nohup 命令 使用 screen 或 tmux find命令 基本语法 常用选项 grep 命令 基本语法 常用选项 如何使用 vim 直接定位到错误行 1. 使用 :make 和 :copen 2. 使用 :lineno 定位 3. 通过 :grep 或 :…...

Java Hotspot VM researcher

** therefore, careful design and understanding of modules are essential to fully reap the performance benefits. **...

java—基础

目标 ├── 第一阶段&#xff1a;内容清单 │ └── 目标&#xff1a;建立编程思想 ├── 第二阶段&#xff1a;内容清单 │ └── 目标&#xff1a;提升编程能力 └── 第三阶段&#xff1a;内容清单└── 目标&#xff1a;分析需求&#xff0c;代码实现能力以下是根…...

【OpenCV】第二章——图像处理基础

图像处理基础学习笔记 本章节详细介绍了图像处理的基础内容&#xff0c;包括图像的读取、显示、保存&#xff0c;基本属性的查看&#xff0c;图像的变换与操作&#xff0c;以及常用的图像处理方法。 目录 图像的读取与显示图像基本属性图像的灰度化与二值化图像的色彩空间转换…...

在WSL2+Ubuntu22.04中通过conda pack导出一个conda环境包,然后尝试导入该环境包

如何导出一个离线conda环境&#xff1f;有两种方式&#xff0c;一种是导出env.yml即环境配置&#xff0c;一种是通过conda pack导出为一个环境包&#xff0c;前者只是导出配置&#xff08;包括包名、版本等&#xff09;&#xff0c;而后者是直接将环境中所有的内容打包&#xf…...

C++:类和对象(上)---镜中万象:C++类的抽象之境与对象的具体之象

类&#xff08;Class&#xff09;是一种用户自定义的数据类型。 文章目录&#xff1a; 前言一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 3.1类是什么&#xff1f; 3.2类的定义 四、类的访问限定符和封装 4.1类的访问限定符 4.2封装 五、类和对象的关系 六、类对…...

碰一碰发视频源码搭建全解析,支持OEM

在数字化交互体验不断升级的背景下&#xff0c;“碰一碰发视频” 功能凭借其便捷性和趣味性&#xff0c;逐渐成为营销推广、社交分享等场景中的热门需求。该功能基于近场通信技术&#xff0c;实现设备间快速的数据传输。本文将详细介绍其源码搭建过程&#xff0c;助力开发者实现…...

搭建spark-local模式

要搭建Spark的local模式&#xff0c;你可以按照以下步骤进行操作&#xff08;以在Linux系统上安装为例&#xff0c;假设你已经安装了Java环境&#xff09;&#xff1a; 1. 下载Spark安装包&#xff1a;访问Spark官方网站&#xff08;https://spark.apache.org/downloads.html&a…...

Goland终端PowerShell命令失效

Goland终端Terminal的PowerShell不能使用&#xff0c;明明windows上升级了PowerShell 7设置了配置文件&#xff0c;但是只能在windows终端下使用&#xff0c;goland终端下直接失效报错&#xff0c;安装升级PowerShell请看[博客](Windows11终端升级PowerShell7 - HashFlag - 博客…...