嵌入式每日八股3.21

进程互斥的软件实现

进程互斥是指在多个进程并发执行时,为了保证它们之间不会相互干扰、不会发生数据冲突等问题,需要采取一些方法来协调它们之间的访问和执行。下面介绍几种常见的进程互斥的软件实现方法:

  1. 单标志法:该方法通过设置一个公共的标志来实现进程互斥。当一个进程需要访问共享资源时,先检查标志是否被占用,如果未被占用,则将标志设置为占用状态,并进入临界区;如果已被占用,则等待其他进程释放标志。在离开临界区时,清除标志,其他进程才能获取标志。
  2. 双标志先检查法:该方法在单标志法的基础上,增加了一个等待标志。当一个进程需要访问共享资源时,先检查等待标志是否已被占用,如果未被占用,则将等待标志设置为占用状态,并检查标志是否被占用,如果未被占用,则将标志设置为占用状态,并进入临界区;如果已被占用,则释放等待标志并等待其他进程释放标志和等待标志。在离开临界区时,清除标志和等待标志,其他进程才能获取标志和等待标志。
  3. 双标志后检查法:该方法与双标志先检查法类似,但是是先进入临界区后检查等待标志,如果等待标志已被占用,则释放标志并等待其他进程释放等待标志和标志。该方法相比双标志先检查法,可以减少不必要的等待,但也可能会导致优先级反转的问题。
  4. Peterson算法:该算法是一种经典的软件实现方法,可以实现两个进程之间的互斥。它通过使用共享的标志位和选择位,来控制两个进程的访问顺序。当一个进程需要进入临界区时,先将选择位设置为自己,然后等待对方进入临界区或者对方放弃访问,然后再进入临界区,执行完毕后清除选择位,对方才能进入临界区。该算法可以保证两个进程之间的互斥和无死锁,但需要硬件支持。

【嵌入式八股】精华版(免费216问精华八股) https://www.nowcoder.com/creation/manager/columnDetail/0rOeJm

【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM

【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym

【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM

【嵌入式八股】四、嵌入式Linux篇https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0

全部评论

相关推荐

学习准备:需要C语言基础VMware下的ubuntu14.04(Linux基础篇-网络篇),博主用的是ubuntu18.04华清远见FS4412开发板(ARM篇-Linux驱动篇)- 可在淘宝购买 或者 在华清远见官网进行租赁学习建议:本系列基础篇-网路篇通用,ARM篇-驱动篇可以根据教程方法应用于不同的开发板可以先看关于Linux的教学视频,在来看本系列Linux学习内容很多,其中一个方面都可以作为一辈子的学习,建议学习时,先总体在细分,先运行在原理。二、Linux基础篇  本篇讲解linux系统的常用操作以及使用的命令,通过下面5节内容可以对linux系统有一个初步掌握以及应用。【Linux】基础篇一–linux系统常用命令【Linux】基础篇二–软件包管理及shell命令【Linux】基础篇三–linux shell命令【Linux】基础篇四–shell脚本编程【Linux】基础篇五–linux C语言高级编程【Linux】基础篇六–Makefile学习上面的六篇后,linux的学习算是入门了。三、数据结构与算法基础  在学习linux应用前,需要对数据结构与算法有一个基础掌握,不仅是为了C语言的提高,因为后面的学习也运用了数据结构与算法的相关知识,当然您如果是这方面的高手可以跳过本篇往下学习。【数据结构与算法】程序的内修三、Linux应用篇  本篇讲解Linux上层的知识,学习完本篇可以对Linux上层应用制作有一个初步了解。【Linux】应用篇一–标准IO【Linux】应用篇二–标准IO的字符输入和输出【Linux】应用篇三–流的刷新定位与格式化输入输出【Linux】应用篇四–文件IO【Linux】应用篇五–目录与库【Linux】应用篇六–进程的创建与回收【Linux】应用篇七–exec函数族和守护进程【Linux】应用篇八–线程的创建与回收【Linux】应用篇九–线程的取消与互斥【LInux】应用篇十–条件变量和线程池【Linux】应用篇十一–进程间的通信【Linux】应用篇十二–共享内存【Linux】应用篇十三–信号机制【Linux】应用篇十四–消息队列与信号灯建议学习本篇时,多使用man手册,重点掌握IO、进程、线程的知识。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
转发
4 1 评论
分享
牛客网
牛客企业服务