计算机系统基础第五章程序的执行
计算机系统基础:进程、异常与中断单元测试与答案

一、单选题1、以下有关计算机程序和进程的描述中,错误的是()。
A.用高级语言编写的程序必须转换为机器代码才能在计算机中运行B.机器代码通常以可执行目标文件或共享库文件形式保存在磁盘中C.机器代码及其数据被映射到统一的虚拟地址空间即形成一个进程D.同一个程序如果处理不同的数据集合就会对应很多不同的进程正确答案:C解析: C、程序需要被启动执行后才能成为进程,机器代码和数据被映射到统一的虚拟地址空间这件事是链接程序完成的,链接后只能生成一个可执行文件或共享库文件,不能形成一个进程。
2、以下关于引入进程好处的叙述,其中错误的是()。
A.每个进程具有确定的逻辑控制流,不会因为进程被打断执行而改变B.每个进程须独占使用处理器,以保证每次运行都有同样的运行结果C.每个进程具有独立的虚拟地址空间,便于编译、链接、共享和加载D.每个进程各自占用不同的主存区域,便于操作系统实现存储保护正确答案:B解析: B、处理器可以被不同的进程轮流使用或并行使用,在一个进程的整个生命周期中,通常不会独占使用处理器,在某个进程执行遇到异常、中断和I/O操作时,操作系统会调度其他进程使用处理器。
3、以下是关于进程的逻辑控制流的叙述,其中错误的是()。
A.进程的逻辑控制流在其对应机器代码被链接生成时就已经确定B.不同进程的逻辑控制流中有可能会存在相同的地址序列C.不同进程的逻辑控制流在时间上交错或重叠的情况称为并发D.进程的逻辑控制流指其运行过程中执行指令的虚拟地址序列正确答案:A解析: A、因为进程的逻辑控制流指其运行过程中执行指令的虚拟地址序列,而每个进程的虚拟地址空间都是一样的,例如,IA-32/Linux系统中每个进程的虚拟地址空间都是0000 0000~FFFF FFFFH,因此,不同进程的逻辑控制流中可能存在相同的指令地址序列。
链接时可以确定每条指令和每个数据在虚拟地址空间中的地址,但是,不能确定条件转移指令的条件是否满足,因而也就不能确定具体执行的是哪些指令,因而链接时不能确定将来执行时的逻辑控制流。
计算机程序的执行过程

一。
计算机程序的执行过程程序就是指令的集合为使计算机按预定要求工作,首先要编制程序。
程序是一个特定的指令序列,它告诉计算机要做哪些事,按什么步骤去做。
指令是一组二进制信息的代码,用来表示计算机所能完成的基本操作。
1.程序程序是为求解某个特定问题而设计的指令序列。
程序中的每条指令规定机器完成一组基本操作。
如果把计算机完成一次任务的过程比作乐队的一次演奏,那么控制器就好比是一位指挥,计算机的其它功能部件就好比是各种乐器与演员,而程序就好像是乐谱。
计算机的工作过程就是执行程序的过程,或者说,控制器是根据程序的规定对计算机实施控制的。
例如,对于算式计算机的解题步骤可作如下安排:步骤1:取a ;步骤2:取b ;步骤3:判断;. 若b≥0,执行步骤4.若b<0,执行步骤6步骤4:执行a+b;步骤5:转步骤7;步骤6:执行a-b;步骤7:结束。
计算机的工作过程可归结为:取指令→分析指令→执行指令→再取下一条指令,直到程序结束的反复循环过程。
通常把其中的一次循环称为计算机的一个指令周期。
总之,我们可把程序对计算机的控制归结为每个指令周期中指令对计算机的控制。
2.指令程序是由指令组成的。
指令是机器所能识别的一组编制成特定格式的代码串,它要求机器在一个规定的时间段(指令周期)内,完成一组特定的操作。
指令的基本格式可归结为操作码OP和操作数地址AD两部分,具体内容是:⑴指出计算机应完成的一组操作内容,如传送(MOV)、加法(ADD)、减法(SUB)、输出、停机(HLT)、条件转移(JZ)等。
这部分称为指令的操作码部分。
⑵两个操作数的地址和存放结果的地址及寻址方式。
⑶为保证程序执行的连续性,在执行当前指令时,还需指出下一条指令的地址。
由于指令在存储器中一般是顺序存放的,所以只要设置一个指令指针(IP),每执行一条指令,IP自动加1,便自动指出下一条指令的地址,而不必在指令中专门指出下一条指令的地址。
只有在转移指令中才指出下一条指令的地址。
计算机操作系统教程_第四版_(张尧学著)_清华大学出版社_第5章

5.1.2 地址变换
• 内存地址的集合称为内存空间或物理地址空间。内存中,每 一个存储单元都与相应的称为内存地址的编号相对应。显然, 内存空间是一维线性空间。 • 虚存的一维线性空间或多维线性空间变换到内存的唯一的一 维物理线性空间所涉及的两个问题:
– 第一个问题是虚拟空间的划分问题。 • 虚拟空间的划分使得编译链接程序可以把不同的程序模块(它们 可能是用不同的高级语言编写的),链接到一个统一的虚拟空间 中去。虚拟空间的划分与计算机系统结构有关。 • VAX-11型机中的虚拟空间就是划分为进程空间和系统空间两大 部分,而进程空间又更进一步划分为程序区和控制区。VAX-11 的虚拟空间容量为232单元,其中程序区占230单元,用来存放用 户程序,程序段以零为基址动态地向高地址方向增长,最大可 达230-1号单元。控制区也占230个单元,存放各种方式和状态下 的堆栈结构及数据等,其虚拟地址由231-1号地址开始由高向低 地址方向增长。系统空间占231个单元,用来存放操作系统程序。
5.1.3 内外存数据传输的控制 要实现内存扩充,在程序执行过程中,内存和外存之间 必须经常地交换数据。也就是说,把那些即将执行的程序和 数据段调入内存,而把那些处于等待状态的程序和数据段调 出内存。那么,按什么样的方式来控制内存和外存之间的数 据流动呢?最基本的控制办法有两种。一种是用户程序自己控 制,另一种是操作系统控制。
5.1.1 虚拟存储器 • 虚拟存储器是存储管理的核心概念。 • 实验证明,在一个进程的执行过程中,其大部分程 序和数据并不经常被访问。这样,存储管理系统把 进程中那些不经常被访问的程序段和数据放入外存 中,待需要访问它们时再将它们调入内存。那么, 对于那些一部分数据和程序段在内存而另一部分在 外存的进程,怎样安排它们的地址呢? • 通常由用户编写的源程序,首先要由编译程序编译 成CPU可执行的目标代码。然后,链接程序把一个 进程的不同程序段链接起来以完成所要求的功能。 显然,对于不同的程序段,应具有不同的地址。
第5章 计算机执行程序的过程

ALU把MDR
6
输出与AC输出 相加,结果送
①=00
AC输出计算结 果
AC
控制信号产 生电路
①②③④⑤⑥
PC ⑤
+4
CLK
1)ADD指令
时钟周期1 时钟周期2
准备指令 地址
取指
时钟周期3 时钟周期4
传送指令 译码
时钟周期5
取数
时钟周期6
计算
③=0 ④=0
②=1
⑥=1
③=1 ④=0
⑤=01
②=1
5d
pop %ebp
同?如何确定操作数是在寄
6 804839e: c3
ret
存器中还是在存储器中?一
条指令执行结束后如何正确
°对于add函数
读取到下一条指令?
✓指令按顺序存放在0x08048394开始的存储空间。
✓各指令长度可能不同,如push、pop和ret指令各占一个字节,第2行 mov指令占两个字节,第3行mov指令和第4行add指令各占3字节。
指令时,则需要根据条件码、操作码和寻址方式等确定下条指令地址。
机器指令的执行过程
° CPU执行指令的过程 - 取指令 - 指令译码 - 进行主存地址运算 - 取操作数 - 进行算术 / 逻辑运算
“1”:指一条 指令的长度,定 长指令字每次都 一样;变长指令 字每次可能不同
- 存结果
- PC+“1”
RW
3 MDR送IR
⑥=1 IR输出指令
存储体
IR操作码字段
进行译码;IR 地址码字段送 MAR
③=1
①
4 设置读条件 ④=0
MAACR输出数 ②
A据L地U 址,RW 输出读信号
计算机工作原理和指令执行过程

计算机工作原理和指令执行过程1 计算机工作原理计算机的工作过程是将现实世界中的各种信息转换成计算机能够理解的二进制代码(信息编码),然后保存在计算机的存储器(数据存储)中,再由运算器对数据进行处理(数据计算)。
在数据存储和计算过程中,需要通过线路将数据从一个部件传输到另外一个部件(数据传输)。
数据处理完成后,再将数据转换成人类能够理解的信息形式(数据解码)。
在以上工作过程中,信息如何编码和解码,数据存储在什么位置,数据如何进行计算等,都由计算机能够识别的机器指令(指令系统)控制和管理。
2 计算机指令系统各计算机公司设计生产的计算机芯片,其指令的数量与功能、指令格式、寻址方式、数据格式都有差别,即使是一些常用的基本指令,如算术逻辑运算指令、转移指令等也是各不相同的。
为了缓解新机器的推出与原有应用程序的继续使用之间的矛盾,1964年在设计IBM360计算机时所采用的系列机思想较好地解决了这一问题。
从此以后,各个计算机公司生产的同一系列的计算机尽管其硬件实现方法可以不同,但指令系统、数据格式、I/O系统等保持相同,因而软件完全兼容(在此基础上,产生了兼容机)。
当研制该系列计算机的新型号或高档产品时,尽管指令系统可以有较大的扩充,但仍保留了原来的全部指令,保持软件向上兼容的特点,即低档机或旧机型上的软件不加修改即可在比它高档的新机器上运行,以保护用户在软件上的投资。
常见指令按功能可划分为:①数据处理指令:包括算术运算指令、逻辑运算指令、移位指令、比较指令等。
②数据传送指令:包括寄存器之间、寄存器与主存储器之间的传送指令等。
③程序控制指令:包括条件转移指令、无条件转移指令、转子程序指令等。
④输入-输出指令:包括各种外围设备的读、写指令等。
有的计算机将输入-输出指令包含在数据传送指令类中。
⑤状态管理指令:包括诸如实现置存储保护、中断处理等功能的管理指令。
计算机是通过执行指令来处理各种数据的。
为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息:(1)操作码。
大学计算机基础第五章

大学计算机基础第五章第五章软件技术基础1.程序设计语言(1)机器语言和汇编语言由计算机硬件系统可以识别的指令组成的语言称为机器语言。
汇编语言是将机器指令映射为一些可以被人读懂的助记符。
由于计算机只能识别机器语言,所以汇编语言通常需要通过汇编程序翻译为机器语言。
汇编语言的翻译软件称为汇编程序,它可以将程序员写的助记符直接转换为机器指令,然后由计算机去识别和执行。
用机器语言编写的程序是计算机可以直接执行的程序。
用机器语言编写的程序,代码长度短,执行效率高。
但是,这种语言的缺点也很明显。
最主要的是编写机器语言程序必须要熟知CPU 的指令代码,编写程序既不方便,又容易出错,调试查错也非常困难。
而且编写的程序只能在特定的机器上运行,没有通用性。
(2)高级语言高级语言源程序翻译为指令代码有两种做法:编译或者解释。
编译通过编译程序来完成。
解释则是通过解释程序完成。
解释的结果产生可以直接执行的指令。
编译的结果是得到目标程序。
目标程序也是要经过连接才会得到可执行程序目前应用比较广泛的几种高级语言由FORTRAN/BASIC/PASCAL/C等。
(3)面向对象的语言(4)未来的语言2、语言处理程序语言处理程序是把源程序翻译成机器语言的程序,可分为三种:汇编程序、编译程序和解释程序。
(1)汇编程序把汇编语言源程序翻译成机器语言程序的程序称为汇编程序,翻译的过程称为汇编。
汇编程序在翻译源程序时,总是对源程序从头到尾一个符号一个符号地进行阅读分析,一般用两遍扫描完成对源程序的加工转换工作。
汇编语言在翻译的同时,还对各种形式的错误进行检查和分析,并反馈给用户,以便修改。
反汇编程序也是一种语言处理程序,它的功能与汇编程序相反,它能把机器语言程序转换成汇编语言程序。
(2)编译程序编译程序是把高级语言源程序(如Fortran、Pascal、C 等)翻译成目标程序(机器语言程序)的一种程序,翻译的过程称为编译。
(3)解释程序解释程序也是一种对高级语言源程序进行翻译处理及的程序。
计算机系统(课后习题答案)

嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的 控制系统。
【1-6】冯·诺伊曼计算机的基本设计思想是什么? [答案]
采用二进制形式表示数据和指令。指令由操作码和地址码组成。 将程序和数据存放在存储器中,计算机在工作时从存储器取出指令加以执行,自动完 成计算任务。这就是“存储程序”和“程序控制”(简称存储程序控制)的概念。 指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行,程序分支由转移 指令实现。 计算机由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并规定 了 5 部分的基本功能。
【2-6】将下列压缩 BCD 码转换为十进制数: (1)10010001 (2)10001001 (3)00110110
[答案] (1)91 (2)89 (3)36 (4)90
(4)10010000
【2-7】将下列十进制数用 8 位二进制补码表示: (1)0 (2)127 (3)-127 (4)-57
“计算机系统基础”习题解答
第 1 章 计算机系统概述
【1-1】简答题 (1)计算机字长(Word)指的是什么? (2)处理器的“取指-译码-执行周期”是指什么? (3)总线信号分成哪 3 组信号? (4)外部设备为什么又称为 I/O 设备? (5)Windows 的控制台窗口与模拟 DOS 窗口有什么不同? [答案] (1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。 (2)指令的处理过程。处理器的“取指—译码—执行周期” 是指处理器从主存储器 读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作 (简称执行)的过程。 (3)总线信号分成 3 组,分别是数据总线、地址总线和控制总线。 (4)因为外设以输入(Input)和输出(Output)形式与主机交换数据。 (5)Windows 的控制台窗口是基于 32/64 位 Windows 操作系统,模拟 DOS 窗口是基于 16 位 DOS 操作系统。
计算机系统基础试题(精心汇编)

第一部分计算机系统基础一、选择题【1】计算机最主要的工作特点是A) 高速度 B) 高精度 C) 存记忆能力★D) 存储程序与自动控制【2】目前微型计算机中采用的逻辑元件是A) 小规模集成电路B) 中规模集成电路★C) 大规模和超大规模集成电路D) 分立元件【3】下列四条叙述中,有错误的一条是A) 两个或两个以上的系统交换信息的能力称为兼容性B) 当软件所处环境(硬件/支持软件)发生变化时,这个软件还能发挥原有的功能,则称该软件为兼容软件C)不需调整或仅需少量调整即可用于多种系统的硬件部件,称为兼容硬件★D) 着名计算机厂家生产的计算机称为兼容机【4】下列四条叙述中,有错误的一条是A) 以科学技术领域中的问题为主的数值计算称为科学计算B) 计算机应用可分为数值应用和非数值应用两类C) 计算机各部件之间有两股信息流,即数据流和控制流★D) 对信息(即各种形式的数据)进行收集*、储存*、加工与传输等一系列活动的总称为实时控制【5】软件与程序的区别是A) 程序价格便宜、软件价格昂贵B) 程序是用户自己编写的,而软件是由厂家提供的C) 程序是用高级语言编写的,而软件是由机器语言编写的★D) 软件是程序以及开发*、使用和维护所需要的所有文档的总称,而程序是软件的一部分【6】某单位自行开发的工资管理系统,按计算机应用的类型划分,它属于A) 科学计算 B)辅助设计★C)数据处理 D)实时控制【7】微型计算机中使用数据库管理系统,属下列计算机应用中的哪一种?A) 人工智能 B) 专家系统★C) 信息管理 D) 科学计算【8】英文缩写CAD的中文意思是A) 计算机辅助教学 B) 计算机辅助制造★C) 计算机辅助设计 D) 计算机辅助测试【9】目前计算机应用最广泛的领域是A) 人工智能和专家系统B) 科学技术与工程计算★ C) 数据处理与办公自动化D) 辅助设计与辅助制造【10】联想"奔腾三代"计算机所采用的主要电子元器件是()A、电子管B、晶体管C、集成电路★D*、大规模集成电路【11】能对二进制数据进行移位和比较操作的计算机工作部件是()A、累加器★B*、运算器 C、控制器 D、寄存器【12】CD-ROM 常作为多媒体套件中的外存储器,它是()A、只读存储器★B*、只读光盘 C、只读硬盘 D、只读大容量软盘【13】微型计算机的性能主要取决于()A、内存★B*、中央处理器 C、硬盘 D、显示卡【14】在学校里,能用于打印蜡纸的打印机是()A、激光打印机★B*、针式打印机 C、喷墨打印机 D、热敏式打印机【15】在微机系统中,最基本的输入输出模BIOS存放在()A、RAM中★B*、ROM中 C、硬盘中 D、寄存器中【16】IBM PC/AT 微型机采用的CPU芯片是()A、Z-80B、8086C、8088 ★D*、80286【17】486DX2/80 中的数字486代表(),数字80代表()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将printf的两 个实参入栈
0804840a: call 0x8048310
0804840f : leave
08048410: ret
程序及指令的执行过程
在内存存放的指令实际上是机器代码(0/1序列)
程序执行需要解决的问题:
08048394 <add>:
如何判定每条指令有多长?
1 8048394: 2 8048395: 3 8048397: 4 804839a: 5 804839d:
ret
存器中还是在存储器中?一
条指令执行结束后如何正确
° 对于add函数
读取到下一条指令?
指令按顺序存放在0x08048394开始的存储空间。
各指令长度可能不同,如push、pop和ret指令各占一个字节,第2行 mov指令占两个字节,第3行mov指令和第4行add指令各占3字节。
各指令对应的0/1序列含义有不同的规定,如“push %ebp”指令为 01010101B,其中01010为push指令操作码,101为EBP的编号, “pop %ebp”为01011101B,其中01011为pop指令的操作码。
° 程序的执行流的控制 • 将要执行的指令所在存储单元的地址由程序计数器PC给 出,通过改变PC的值来控制执行顺序
° 指令周期:CPU取出并执行一条指令的时间
程序及指令的执行过程
main:
……
call outputs
mov eax,…
对于3.6.1中的例子
…… ret
#include "stdio.h"
简要介绍,详细内容参看《计算机组成与系统结构(第2版)》
教材特点 1.强调软件和硬件的关联
2.细化流水线CPU设计 3.注重用实例图表阐述概念 4. 提供丰富的教辅资源
提供配套的辅助教材: 《计算机组成与系统结构 习题解答与教学指导》
第2版的改进部分
程序的执行机制
° 分以下三个部分介绍 • 第一讲:程序执行概述 - 程序及指令的执行过程 - CPU的基本功能和基本组成 • 第二讲:数据通路基本结构和工作原理 - 数据通路基本结构 - 数据通路的时序控制 - 数据通路基本工作原理 • 第三讲:流水线方式下指令的执行 - 指令流水线的基本原理 - 适合流水线的指令集特征 - CISC和RISC风格指令集 - 指令流水线的实现 - 高级流水线实现技术
程序的执行
程序执行和指令执行概述 数据通路基本结构和工作原理
流水线方式下指令的执行
程序的执行机制
° 主要教学目标
– 理解CPU如何控制程序的执行流 – 了解一条指令的执行过程 – 了解CPU的主要功能和内部结构 – 了解数据通路的基本组成和定时方式 – 理解指令执行时数据通路中信息的流动过程 – 了解指令流水线的基本概念 – 了解内部异常和外部中断的基本概念
#include "string.h"
void outputs(char *str)
{
char buffer[16];
strcpy(buffer,str);
printf("%s \n", buffer);
}
……
outputs: …… call strcpy …… call printf …… ret
程序及指令的执行过程
° 程序和指令的关系 • 程序由一条一条指令组成,指令按顺序存放在内存连续单元
° 程序的执行:周而复始地执行一条一条指令 • 正常情况下,指令按其存放顺序执行 • 遇到需改变程序执行流程时,用相应的转移指令(包括无 条件转移指令、条件转移指令、调用指令和返回指令等) 来改变程序执行流程
程序及指令的执行过程
访存或I/O:涉及存储系统、总线和 I/O接口等内容(以后章节内容)
CPU内部操作: 涉及CPU内部数据通路(本章节内容)
CPU运行程序的过程就是执行一条一条指令的过程 CPU执行指令的过程中,包含CPU操作、访问内存或I/O端口的操作两类
机器指令的执行过程
° CPU执行指令的过程
- 检测是否有“中断”请求,有则转中断处理
常在译码前做
问题:
,变长指令字
“取指令”一定在最开始做吗?PC+“1”一定在译码之前做吗?在译码后做!
“译码”须在指令执行前做吗?
strcpy:
程序执行流: ……
call outputs ……
call strcpy ……
call printf …...
ret mov %eax,…
……
int main(int argc, char *argv[]) {
outputs(argv[1]); return 0; }
Strcpy 的栈帧
55
push %ebp
如何判定操作类型、寄存器
89 e5 mov 8b 45 0c mov
%esp, %ebp 0xc(%ebp), %eax
编号、立即数等?如何区分
03 45 08 add 0x8(%ebp), %eax 第2行和第3行mov指令的不
5d
pop %ebp
同?如何确定操作数是在寄
6 804839e: c3
将strcpy的两
080483f1 : lea 0xfffffff0(%ebp),%eax 个实参入栈
080483f4 : mov %eax,(%esp)
080483f7 : call 0x8048330 <__gmon_start__@plt+16>
080483fc : lea 0xfffffff0(%ebp),%eax 080483ff : mov %eax,0x4(%esp) ቤተ መጻሕፍቲ ባይዱ8048403: movl $0x8048500,(%esp)
- 取指令
取指
- PC+“1” 阶段
- 指令译码
- 进行主存地址运算
- 取操作数
“1”:指一条 指令的长度,定 长指令字每次都 一样;变长指令 字每次可能不同
- 进行算术 / 逻辑运算
- 存结果
- 以上每步都需检测“异常”
指 令 执 行 执行 过 阶段 程
- 若有异常,则自动切换到异常处理程序
定长指令字通
程序及指令的执行过程
反汇编得到的outputs汇编代码
080483e4 : push %ebp
080483e5 : mov %esp,%ebp
080483e7 : sub $0x18,%esp
080483ea : mov 0x8(%ebp),%eax
080483ed: mov %eax,0x4(%esp)