• 2024-12-29【操作系统】同步
    同步(Synchronization)涉及到在多线程或多进程环境中协调多个执行线程的执行顺序,以确保数据的一致性和完整性。同步的目的是防止多个线程同时访问同一资源(如内存、文件、数据库等)时发生的冲突和数据不一致问题。实现方法:互斥锁(Mutex):一种同步机制,用于保护共享资源不被多个线
  • 2024-12-25实现同步,临界区问题,锁和信号量的实现
    LocksandContextSwitchingConcurrency并发多个任务在同一时间段内进行,但不一定是真的同时运行。例如,在单核CPU上,操作系统通过快速切换任务实现并发。补充:并行,多个任务真正地同时运行,通常需要多核CPU支持,每个核心同时运行一个任务。Amdahl'slaw通过并行加快速率。S=1/
  • 2024-12-20第二章 进程管理
    本文总结了操作系统第二章的重点知识,适合平时上课预习大概内容、期末复习的小伙伴们!目录1、程序顺序执行时的特征2、程序并发执行时的特征3、为什么引入进程?进程定义4、(问答题) 进程和程序的区别(从动态性、并发性、独立性和异步性四个方面)5、进程三个基本状态及相互
  • 2024-12-19golang的互斥锁和读写锁
    golangmutex(互斥锁)1.锁最本质的作用保证原子性2.mutex使用原则适用于并发编程,尽量减少加锁区域的逻辑3.mutex的局限性仅限于单个进程内操作sema(信号量,semaphore的简称)是一种用于并发控制的机制资源计数:信号量维护一个资源计数。这个计数表示当前可用的资源数量获
  • 2024-12-19操作系统-同步问题分析
    生产者-消费者问题问题描述:一组生产者和一组消费者共享一个大小为n的缓冲区;只有缓冲区还有空位的时候生产者才能往里放数据;只有缓冲区不为空的时候消费者才能从中取数据;缓冲区是临界资源,只允许一个生产者往里放数据或者一个消费者从中取数据关系分析:因为缓冲区是临界资源,所以
  • 2024-12-14计数信号量的获取与释放
    信号量的获取计数器等于0,将任务插入等待队列;计数器大于0,将计数器减1,消耗掉一个资源或事件。信号量的释放检查计数器是否等于0,以及事件控制块是否有等待任务。有则释放掉一个任务;没有则计数器加1.设计实现信号量的wait信号量的notify信号量的无等待获取tSem.c#incl
  • 2024-12-14计数信号量的原理与创建
    目录计数信号量设计原理设计实现计数信号量信号量就是一个带事件控制的计数器,在其上定义了三个操作:可以被初始化一个非负数wait操作:若该值为0,则执行操作的任务等待;否则将计数值减1notify操作:将信号量的值增1后,若该值为非正,则执行操作的任务唤醒设计原理计数器负
  • 2024-12-14【Linux】:多线程(POSIX 信号量 、基于环形队列的生产消费者模型)
  • 2024-12-11OS之《进程管理》
    进程同步同步实际上是指:将多个进程,按照顺序,有序执行。让进程有序进行的场景有很多。比如:一个进程依赖另外一个进程的计算结果;一个进程等待另外一个对临界资源的访问;还有像生产者消费者模型中的相互配合等等。进程同步应该遵循以下原则1.空闲让进:有效利用临界资源2.忙着等待:保
  • 2024-12-11头歌 计算机操作系统 Linux之线程同步二
    第1关:信号量任务描述在上一个实训中,我们学习了使用互斥锁来实现线程的同步,Linux系统中还提供了另一个类似互斥锁的线程不同操作,那就是信号量。本关任务:学会使用信号量来实现线程间的同步与互斥。相关知识互斥锁变量(Mutex)是非0即1的,可看作一种资源的可用数量。当初始
  • 2024-12-11初识Linux · 编写生产消费模型(2)
    目录前言:RingQueue编写生产消费模型认识接口开始编写前言:前文我们介绍了基于阻塞队列实现生产消费模型,使用阻塞队列实现生产消费模型中,我们学习到了pthread_cond_wait的第二个参数的重要性,不仅会解锁,此时锁被其他人持有,当条件满足的时候,就重新竞争锁,所以在pthread_cond_
  • 2024-12-09FreeRTOS学习随记-3
    09-2_信号量的常规使用二进制信号量实现互斥要先把信号量写入计数型信号量实现同步但是要注意,让ready状态/读取信号量的任务的优先级高于running态/写信号量的任务,或者让写信号量的任务在写完主动让出10-1_互斥量的理论讲解正常实现互斥要谁上锁谁解锁,所以引入互斥
  • 2024-12-08线程与进程的区别和应用场景,以及各种锁的使用
    目录一:线程1:定义2:多线程的优点3:线程切换到底是切换的什么4:什么时候使用多线程5:多线程中锁的使用(线程同步)二:进程1:定义2:多进程的优点3:多进程的应用场景4:进程间通信的方式三:线程和进程哪个好?我先讲一下进程:那还需要线程干嘛?所以我们不能一味的只追求哪个好,而是分
  • 2024-12-06Freertos学习笔记(五)
    此篇文章在2022年2月12日被记录二进制信号量计数型信号量Mutex互斥量递归互斥量第十四课二进制信号量#include"freertos/semphr.h"xSemaphoreCreateBinary();SemphoreHandle_tHandle;//二进制信号量Handle=xSemaphoreCreateBinary();//创建xSemaphoreGive(Hand
  • 2024-12-04线程信号量 Linux环境 C语言实现
    既可以解决多个同类共享资源的互斥问题,也可以解决简易的同步问题头文件:#include<semaphore.h>类型:sem_t初始化:intsem_init(sem_t*sem,intpshared,unsignedintvalue);//程序中第一次对指定信号量调用p、v操作前必须做初始化清理:intsem_destroy(sem_t*sem);//程序
  • 2024-12-04Linux网络编程——进程、线程同步方式
    线程同步与进程同步方式要注意这里的同步并不是指同时进行的意思,而是按照先后顺序依次进行。首先了解一下同步与互斥的概念:同步:多个进程因为合作产生的直接制约关系,使得进程有一定的先后执行关系;互斥:多个进程在同一时刻只有一个进程能进入临界区。一、进程同步方式进程同
  • 2024-11-27【Linux】多线程(POSIX信号量、线程池、线程安全)
  • 2024-11-26《解读 freeRTOS queue.c 源码:探寻任务间高效通信的核心机制》(建议收藏)
    摘要:文章介绍了FreeRTOS中的队列机制,包括队列的基本概念、创建与初始化方式、数据操作(发送、接收、查看等)、状态查询与管理、在互斥量与信号量中的应用以及队列集的相关操作建议:作者在这里建议,结合queue.c源码来看效果会更好一下FreeRTOS队列:任务间通信与同步的高效利器
  • 2024-12-12C++ Boost库 tuple元组
    元组boost::tuple是Boost库中提供的允许程序员创建固定大小的元组,这些元组可以包含不同类型的元素。元组是一个数据结构,它可以存储多个值,这些值可以是不同类型的。boost::tuple是C++标准库中std::tuple的前身,后者在C++11标准中被引入。特点固定大小:一旦创建,boost::tuple的大小
  • 2024-12-07tidyverse学习笔记——Data Transformation篇
    DataTransformationAssumethatflightsisatibblewith336,776rowsand19columns.RowsOperatorsfliterfliter()keepsrowsbasedonthevaluesofthecolumns.flights|>fliter(a==1&b>1|c==1|d%in%c(1,2))arrangearrange(
  • 2024-12-05地址空间布局随机化(ASLR,Address Space Layout Randomization) 是一种重要的安全技术,旨在通过随机化程序和系统进程在内存中的加载位置,从而增加攻击者成功利用漏洞的
    地址空间布局随机化(ASLR,AddressSpaceLayoutRandomization)是一种重要的安全技术,旨在通过随机化程序和系统进程在内存中的加载位置,从而增加攻击者成功利用漏洞的难度。ASLR是防止许多类型的内存攻击(如缓冲区溢出、ROP(ReturnOrientedProgramming)攻击等)的有效手段。ASLR的工
  • 2024-12-01类型转换
    一、自动类型转换1.容量由小到大变化:byte-short-int-long-double-float-double或char-int-long-double-float-doubleintn1=10;//ok//floatd1=n1+1.1;//错误n1+1.1=>结果类型是double//doubled1=n1+1.1;//对n1+1.1=>结果类型是doublefloatd1=n
  • 2024-11-29Kinova 轻型机械臂:轻量设计,功能强大
    在当今科技领域,科研、医疗、工业等行业都在寻求更高效、便捷的机械臂解决方案。不少用户面临机械臂笨重、集成困难、技术兼容性差等问题,Kinova轻量仿生机械臂为大家带来了新的选择。Kinova是一家专注生产轻便紧凑型仿生机械臂的知名厂商。Kinova的产品主要为科研、农业、医
  • 2024-11-29C++11-lambda表达式
    目录 1.labmda的表达式1.1.仿函数的使用  1.2lambda表达式的书写 1.3lambda的捕获列表1.3.1传值捕捉1.3.2mutable可以修改拷贝对象  1.3.3 引用捕获 1.3.4混合捕捉  1.4函数对象与lambda表达式 1.5  lambda和仿函数的比较
  • 2024-11-29Linux服务器部署java项目(一)
    前一阵子实验室的项目要部署在服务器上(ubuntu22.04),记录一下部署的过程1.jdk1.8安装解压安装包tar-zxvfjdk版本号加配置文件sudovim/etc/profile.d/my_env.sh#JAVA_HOMEexportJAVA_HOME=/opt/jdk1.8.0_191exportPATH=$PATH:$JAVA_HOME/bin测试是否安