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 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【操作系统导论】第26章课后习题解答 -> 正文阅读

[C++知识库]【操作系统导论】第26章课后习题解答

前言

内容仅作记录,解答有参考别人的地方,请谨慎参考

26.1

题目描述

在这里插入图片描述

分析及解答

使用cat loop.s查看程序代码:
在这里插入图片描述

这段代码首先将寄存器%dx中的值减1,test指令表示将寄存器%dx中的值与0做与运算,jgte表示“大于等于”则跳转。这里的halt指令表示停止这个线程。
在这里插入图片描述

输入指令:./x86.py -p loop.s -t 1 -i 100 -R dx运行程序
在这里插入图片描述

该进程只有一个线程,由于未设置寄存器%dx值初始值,这里默认为0,所以dx的值最开始为0,减1之后变为-1,程序停止。

输入指令:./x86.py -p loop.s -t 1 -i 100 -R dx -c运行程序查看结果
在这里插入图片描述

可以看到寄存器%dx一开始的值为0,后来变为了-1,线程停止。

26.2

题目描述

在这里插入图片描述

分析及解答

由于这里设置操作系统每100条指令进行一次中断,程序dx初始值设置为3,将会在dx减到-1时跳出循环,这个过程将会在操作系统未中断之前完成,即两个线程之间不影响计算,不存在竞争条件,之后再执行另一个线程。
在这里插入图片描述

输入指令:./x86.py -p loop.s -t 2 -i 100 -R dx -a dx=3,dx=3 -c运行程序查看结果:
在这里插入图片描述

可以看到运行结果与分析一致。由于程序在操作系统中断之前完成,所以多个线程的存在没有影响计算,代码没有竞争条件。

26.3

题目描述

在这里插入图片描述

分析及解答

输入指令:./x86.py -p loop.s -t 2 -i 3 -R dx -a dx=3,dx=3 -r -c -s 1查看种子为1时的结果
在这里插入图片描述
输入指令:./x86.py -p loop.s -t 2 -i 3 -R dx -a dx=3,dx=3 -r -c -s 2查看种子为2时的结果
在这里插入图片描述
输入指令:./x86.py -p loop.s -t 2 -i 3 -R dx -a dx=3,dx=3 -r -c -s 3查看种子为3时的结果
在这里插入图片描述

从三个不同种子下的程序运行结果可以看出,当操作系统的中断频率变得小(这里指发生中断之前不足以使一个线程运行完)且频繁,将会改变这个程序的行为,在发生中断的时候,操作系统将会保存当前正在执行的线程A的状态,同时恢复线程B的状态转而去执行线程B,在线程B未执行完之前发生中断同理。

26.4

题目描述

在这里插入图片描述

分析及解答

输入指令:cat looping-race-nolock.s查看程序代码:
在这里插入图片描述

由代码可以知道程序的功能:
·将内存地址2000中的值赋给寄存器%ax
·将寄存器%ax中的值加1
·将寄存器%ax中的值重新写回内存地址2000中
·根据寄存%bx中的值执行以上循环(这里未设置,默认bx为0,执行一次)
由此得到程序单线程运行情况,及内存地址2000中值的变化情况:
在这里插入图片描述

输入指令:./x86.py -p looping-race-nolock.s -t 1 -M 2000 -c查看程序运行结果:
在这里插入图片描述

可以看到程序运行结果与分析一致。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:31:12  更:2022-05-01 15:31:37 
 
开发: 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/23 22:29:21-

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