• 2024-08-24Cortex-m0临界代码段
    Cortex-m0临界代码段保护1.stm32中断1.1中断特殊功能寄存器PRIMASKPRIMASK寄存器用于控制中断的使能和禁止,它只有一个位,即PRIMASK位。当PRIMASK位被设置为1时,所有中断都被禁止,包括NMI和HardFault中断。当PRIMASK位被设置为0时,所有中断都被使能。操作PRIMASK寄存器的方法是
  • 2024-08-06OS第二章——进程管理
    2.1进程与线程进程的概念、组成、特征进程的概念程序是静态的,就是一个存放在磁盘里的可执行文件,就是一系列的指令集合。进程:是动态的,是程序的依次执行过程。(同一个程序的多次执行会对应多个进程)进程的组成PCB当进程被创建时,OS会为该进程分配一个唯一的、不重复的“身份
  • 2024-07-17资源管理
    对于共享资源的访问或者一些非原子操作的保护,有几种常用方法:1.通过挂起中断创建临界区2.通过挂起调度器3.通过互斥量 1.挂起中断taskENTER_CRITICAL();taskEXIT_CRITICAL();对于临界区的内容处理短、快速的代码,可以使用中断挂起,但是,该套函数挂
  • 2024-07-08【操作系统】进程管理——进程的同步与互斥(个人笔记)
    学习日期:2024.7.8内容摘要:进程同步/互斥的概念和意义,基于软/硬件的实现方法进程同步与互斥的概念和意义为什么要有进程同步机制?回顾:在《进程管理》第一章中,我们学习了进程具有异步性的特征,即各个并发执行的进程以各自独立、不可预知的速度向前推进。但是,有的情况下,我们希
  • 2024-07-06STM32F1+HAL库+FreeTOTS学习6——临界段代码保护函数&任务调度器的挂起和恢复函数
    STM32F1+HAL库+FreeTOTS学习6——临界段代码保护函数临界段临界段代码保护函数任务调度器的挂起和恢复函数上一期我们学习了FreeRTOS的内核中断管理以及中断屏蔽控制函数,下面我们来学习临界端代码保护函数的使用临界段临界段也叫临界区,指的是必须完整运行完,不能被
  • 2024-06-16FreeRTOS简单内核实现4 临界段
    @目录0、思考与回答0.1、思考一0.2、思考二0.3、思考三1、关中断1.1、带返回值1.2、不带返回值2、开中断3、临界段4、应用0、思考与回答0.1、思考一为什么需要临界段?有时候我们需要部分代码一旦这开始执行,则不允许任何中断打断,这段代码称为临界段0.2、思考二如何实现临界段
  • 2024-06-06临界区保护
    1.临界区的保护实际应用中可能需要的场合:调用公共函数的代码(不可重入函数)读取或者修改变量(全局变量)使用硬件资源(MCU的ram、flash、uart、spi、adc等)对时序有精准要求的操作(I2C通讯)某些用户不想被打断的代码(比如printf打印),串口接收的状态、接收中断重新开启等操作2.
  • 2024-06-04转子动力学系列(一):临界转速与坎贝尔图
    转子动力学为固体力学的分支。主要研究转子-支承系统在旋转状态下的振动、平衡和稳定性问题,尤其是研究接近或超过临界转速运转状态下转子的横向振动问题。转子是涡轮机、电机等旋转式机械中的主要旋转部件。运动方程为:1.例子如图刚性支撑单圆盘转子,圆盘质量m=20kg,半径R=1
  • 2024-06-03八、FreeRTOS学习笔记-临界段代码保护及调度器挂起与恢复
    临界段代码保护什么是临界段:临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段适用场合如:问题:什么可以打断当前程序的运行?1、临界段代码保护函数介绍FreeRTOS在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断函数描述taskENTE
  • 2024-06-01在进程中使用条件量和互斥锁实现线程的同步以及临界资源的互斥访问
    /******************************************************************** author :北极甜虾呦* date :2024/06/01* function:进程中使用条件量和互斥锁实现线程的同步以及临界资源的互斥访问* note :None* CopyRight(c)[email protected]
  • 2024-05-31使用条件量和互斥锁实现线程的同步以及临界资源的互斥访问
    /********************************************************************** name :* function:主线程需要创建2个子线程之后主线程终止,此时进程中有2个子线程A和B,此时进程中有一个临界资源fag,子线程A获取触摸屏坐标并判断坐标值是否在LCD屏的左上角,如果坐标范围满足
  • 2024-05-27postgressq——四种进程间锁(4)
    进程间锁在PostgreSQL里有四种类型的进程间锁:Spinlocks:自旋锁,其保护的对象一般是数据库内部的一些数据结构,是一种轻量级的锁。LWLocks:轻量锁,也是主要用于保护数据库内部的一些数据结构,支持独占和共享两种模式。Regularlocks:又叫heavyweightlocks,也就是我们常说的表锁
  • 2024-04-248. Mutex Locks互斥锁
    临界区问题(critical-sectionproblem)Eachconcurrent(并发)processhasasegmentofcode,calledacriticalsection,inwhichtheprocessmaybechangingcommonvariables(公共数据),updatingatable,wrintingafile,andsoon.Theimportantfeatureofthesys
  • 2024-04-23忙等待互斥——Peterson解法
    ANSIC编写的Peterson解法抽象化表示如下:其中,turn是共享资源,两进程会进行抢夺。intertest[2]看似是共享资源,但intertst[0]只被进程1修改,intertst[1]只被进程2修改,可看作他们的私有资源。该算法核心原理是:“每个进程在进入临界区之前,只会修改turn1次”。假设1:线程1进入临界区
  • 2024-04-23解决多线程竞争条件——临界区
    如图所示,黑色表示没有获得CPU,绿色表示获得CPU,假设为单核两线程程情况。线程1开始运行,并进入临界区,在出临界区运行过程中到了上下文切换时间。线程2获得CPU,正常运行一段时间后需要运行至临界区代码,此时,线程1位于临界区。因为不能两个线程同时位于临界区,所以线程2阻塞。线程1获
  • 2024-04-04FreeRTOS临界段代码保护和任务调度器的挂起与恢复学习
    FreeRTOS临界段代码保护和任务调度器的挂起与恢复学习临界段代码保护所谓临界段代码保护就是指必须完成运行,不能被打断的代码段。比如需要严格按照时序除初始化的外设:IIC、SPI,再或者因为系统自身需求和用户需求。FreeRTOS在进入临界段代码的时候需要关闭中断,当处理完临界段代
  • 2024-03-27操作系统高级议题:并发控制与进程互斥技术
    ✨✨欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨
  • 2024-03-26Unix系统上使用semop函数写一个信号量函数,确保只有一个进程能访问临界资源
    semop是Unix系统调用,用于操作信号量集。信号量是一种用于保护共享资源或临界区域免受并发访问的同步原语。以下是一个使用semop的简单示例,确保只有一个进程能访问临界资源:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<
  • 2024-03-26linux 线程的一些简答概念
    基本概念1.临界资源:多线程执行流共享的资源2.临界区:访问临界资源的代码3.原子性:只有完成和未完成两种状态。4.互斥:同一时间只能允许一个线程访问临界资源,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。可以加锁实现。加锁可以保证单个线程对临界
  • 2024-03-25spinlock和mutex选用方法
    资料参考:《宋宝华Linux设备驱动开发详解》 spinlock和mutex选用方法如下:1、当锁不能被获取到时,使用互斥体的开销仅仅是上下文切换,使用自旋锁的开销是等待获取自旋锁(由临界区的执行时间决定)。若临界区比较小,适合使用自旋锁。若临界区较大,适合使用互斥锁2、互斥锁所保护的临
  • 2024-03-25基于 “CRITICAL_SECTION“ 的同步方法
    CRITICAL_SECTION 在Windows操作系统中通常用于同步多个线程,确保一次只有一个线程可以访问特定的代码段或资源。这对于防止数据竞争和不一致至关重要。以下是使用 CRITICAL_SECTION 的基本步骤:声明和初始化:首先,你需要声明一个 CRITICAL_SECTION 类型的变量。然后,使用
  • 2024-03-2406_FreeRTOS临界段代码保护及调度器挂起与恢复
    FreeRTOS临界段代码保护及调度器挂起与恢复临界段代码保护简介临界段代码保护函数介绍任务调度器的挂起和恢复
  • 2024-03-23Linux线程互斥
    文章目录Linux线程互斥mutex接口初始化互斥量销毁互斥量加锁和解锁加锁解锁的原理使用示例Linux线程互斥进程线程间的互斥相关背景概念临界资源:多线程执行流共享的资源就叫做临界资源临界区:每个线程内部,访问临界资源的代码,就叫做临界区互斥:任何时刻,互斥保证有
  • 2024-03-23再谈Redis的锁
    Redis:锁单机悲观锁参考实现流程加锁,如果失败,则放弃或重试占用,业务逻辑释放实现​INCR​:通过返回结果是不是0​SETNX​:通过判断结果是否为0​MSETNX​:一次性获取多个key的占用Redis:msetnx乐观锁定义乐观锁并不会直接对临界数据加锁,而是在对临
  • 2024-03-15【Linux】互斥 | 死锁
    线程互斥一些概念临界资源:多线程之间共享的资源就是临界资源。通常为一些全局的变量。临界区:访问或者修改临界资源的代码就是临界区。互斥:任何时刻,保证只有一个执行流访问临界资源。原子性:不受调度机制打断的操作。操作要么完成,要么就是未完成,一步到位。锁的背景编写一个