电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
arm linux是如何保证原子性操作,都有哪些机制?
已解决
73482
个问题
已帮助
5993
位优秀工程师
arm linux是如何保证原子性操作,都有哪些机制?
游~游~游
2018-09-08
浏览量:1152
arm linux是如何保证原子性操作,都有哪些机制?
显示全部
其他
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
米饭米饭吖
系统中原子操作是通过一个程序“独占监测”机制来实现,在系统中原子操作是可以被同一个cpu中的线程和中断打断,也可以被其他cpu的线程打断,但是“独占监测机制保证的是两个所谓的原子操作成功之后的结果是确定的,操作结果不会是一个中间值”。“独占监测”机制的实现依赖于新增加的两条汇编指令(ldrex 和 strex)和两个monitor(Local monitor 和 Global monitor)。
ldrex : 将内存a中的数加载到寄存器中,并且对该内存的 Global monitor 标志为当前 cpu0 正在访问,将 cpu0 的 Local monitor 标志为 cpu0 正在访问内存a
strex : 检查当前 cpu0 的 Local monitor 是否在访问内存a,Global monitor 是否标志为内存a被cpu0访问。如果是则 strex 指令执行成功,否则 strex 指令执行失败。
发布于
2018-09-11
举报
评论 0
0
0
其他答案
数量:
9
FEItwo
在单个cpu的系统中,原子操作是通过关闭中断实现的。
关闭中断可以避免进程和中断,进程和进程之间的资源共享访问问题(进程的调度程序依靠中断实现调度)。
发布于
2018-09-08
举报
评论 0
0
0
@曲终人散@
一种是使用软件机制,不如信号量,另一种就是硬件机制,现在的arm很多都有内存互斥访问总线
发布于
2018-09-08
举报
评论 0
0
0
chen0000009
原子操作需要禁用所有中断来实现,也可以在中断触发的时候不做任何响应
发布于
2018-09-09
举报
评论 0
0
0
robe_zhang
把操作对象加个信号量封装起来,就能实现
发布于
2018-09-09
举报
评论 0
0
0
Administrator
ARM V6及其之后原子操作是使用:LDREX、STREX指令实现的原子操作
发布于
2018-09-10
举报
评论 0
0
0
Florrie
这种都是有对应的信号量还有对应的资源保护来做的,要把对应的函数进行封装
发布于
2018-09-28
举报
评论 0
0
0
drepa
那就是依靠锁,锁在linux里面功能非常强大,其中包括原子操作,保证资源独占性等。
发布于
2018-09-30
举报
评论 0
0
0
菜鸟冷虎
大部分就是依靠解锁还有对应的资源占用机制来处理
发布于
2018-10-13
举报
评论 0
0
0
Angel_YY
首先关闭所有终端,然后使用信号量进行同步。
发布于
2018-10-17
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
arm linux是如何保证原子性操作,都有哪些机制?
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: