• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

在没有操作系统的情况下怎么实现一个互斥锁

晚上猫经验 2020-02-23 浏览量:712
应该怎么实现这个互斥锁
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 在没有操作系统的条件下,我们一般是用资源占用标志位来实现互斥锁,当一个任务在访问一个资源的时候就把这个占用标志设置为占用模式,当其他的任务要访问这个资源的时候先检查是否占用标志位是空闲的状态,如果是空闲的状态就是可以读取,如果是占用的状态就是等待该资源标志位释放再操作
    • 发布于 2020-02-27
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 互斥锁是多个可能同时运行的任务需要访问同一资源的保护机制,它的目的是让一个任务等待另外一个任务访问资源结束。无操作系统就只可能同时有一个任务访问资源,也就没有俩个任务互斥之说。
    • 发布于2020-02-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 互斥就是两个任务不同时运行,可以设置一个全局变量来标记哪个任务在运行,另一个任务中进行判断
    • 发布于2020-02-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果你无操作系统还要进行多(子)任务执行,就需要用到全局变量来标识相应的资源,这就可以作为一种互斥锁。

    比如A任务先运行,需要用到资源时先检测对应全局变量是否还是初始状态(比如为0),则先修改该变量为1,然后使用资源,在使用完成后恢复变量值为0,即表明已经释放了资源使用权限。

    B任务要运行时使用该资源时也要先检测该变量,如果变量不为0,则任务暂停或者先做其他处理等待该变量变成0后再运行涉及资源的部分。同样开始运行时先置变量为1,使用完后恢复为0.

    这就是一种互斥锁的原型。

    • 发布于2020-02-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 那么你要使用一个全局变量,根据全局变量的值来判断运行哪个任务
    • 发布于2020-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以用标志位来控制,操作系统也是利用相同的原理来实现的
    • 发布于2020-03-01
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

在没有操作系统的情况下怎么实现一个互斥锁