IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 第二十八章 -> 正文阅读

[嵌入式]第二十八章

1.首先用标志-p flag.s 运行 x86.py。该代码通过一个内存标志“实现”锁。你能理解 汇编代码试图做什么吗?
在这里插入图片描述
查看flag.s的内容:

在这里插入图片描述
可以知道这是类似书上28.1中的锁
在这里插入图片描述
2.使用默认值运行时,flag.s 是否按预期工作?
它会产生正确的结果吗?使用-M 和-R 标志跟踪变量和寄存器(并打开-c 查看它们的
值)。你能预测代码运行时标志最终会变成什么值吗?

在这里插入图片描述

在这里插入图片描述
flag的变化与预期是一致的

3.使用-a 标志更改寄存器%bx 的值(例如,如果只运行两个线程,就用-a bx = 2,bx = 2)。代码是做什么的?对这段代码问上面的问题,答案如何?

由于bx的值变成了2,由之前的汇编代码分析可以知道每个线程都可以执行两次,ax总共可以得到4次加一的操作,所以最终答案是4.

用-c来查看答案:

在这里插入图片描述
在这里插入图片描述
与预期结果一致!

4.对每个线程将 bx 设置为高值,然后使用-i 标志生成不同的中断频率。什么值导致产 生不好的结果?什么值导致产生良好的结果?

bx为高值说明要进行的循环次数很多,这是如果中断的频率很高,就很容易出问题,所以我认为i的值越小(中断频率越高)会导致产生不好的结果;i的值越大(中断频率越低)会导致产生好的结果。

下面运行程序来验证猜想(以中断频率为4举例):
./x86.py -p flag.s -R ax,bx -M flag,count -a bx=4,bx=4 -i 4 -c

在这里插入图片描述
运行结果太长,这里以一部分举例:

在这里插入图片描述
这里可以看到最初先运行线程0,flag设置成了1,由于中断跳到了线程1,由于flag为1,未开锁,线程1在执行while(1),占用了cpu却没做有用的事,会产生不好的结果。
第二次执行线程0时,最终flag设置成了0,开了锁,中断到线程1,线程1也能正常执行,cpu得到了充分利用,是一种很好的结果。

运行结果与猜想一致!

5.现在让我们看看程序 test-and-set.s。首先,尝试理解使用 xchg 指令构建简单锁原语 的代码。获取锁怎么写?释放锁如何写?

在这里插入图片描述
在这里插入图片描述
6.现在运行代码,再次更改中断间隔(-i)的值,并确保循环多次。代码是否总能按 预期工作?有时会导致 CPU 使用率不高吗?如何量化呢?

还是以中断为4来验证答案:

./x86.py -p test-and-set.s -i 7 -R ax,bx -M mutex,count -a bx=5 -c

在这里插入图片描述
这里可以看到代码能够按预期正常工作,但是题4中的问题依然存在,不合时宜的中断会占用cpu却不做实事。

7.使用-P 标志生成锁相关代码的特定测试。例如,执行一个测试计划,在第一个线程 中获取锁,但随后尝试在第二个线程中获取锁。正确的事情发生了吗?你还应该测试什么?

输入命令验证:
./x86.py -p test-and-set.s -i 10 -R ax,bx -M mutex,count -a bx=5 -P 1100111000111000111000 -c

在这里插入图片描述
正确的事发生了。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:35:52  更:2022-05-05 11:37:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:39:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码