第二章习题-ddg
第二章 进程管理习题和答案
第二章进程管理习题和答案第二章进程管理习题和答案--一、填空1.进程是一个程序对某个数据集的一次执行过程。
进程从结构上讲,包括程序、数据和PCB。
2.过程是一个动态的概念,程序是一个静态的概念。
3.操作系统中,可以并行工作的基本单位是进程,它是由程序、数据集和pcb类型4.工艺存在的唯一标志是PCB的存在。
当系统创建一个流程时,系统会建立一个一个pcb,当进程被撤销时系统就将其收回。
5.进程有三种基本状态,即运行状态、就绪状态、阻塞状态。
当进程由(1)变换当(2)或(3)时,会立即导致重新安排。
6.在操作系统中,不能被中断的操作称为原语。
7.并发进程之间的基本关系是同步或互斥。
其中互斥是指进程之间的一种间接关系8.关键资源是指一段时间内只允许一个进程使用的资源,关键区域是指访问该进程中关键资源的程序代码。
9.P,V操作原语对信号量进行操作。
10.信号量的物理意义是:当信号量的值大于零时,表示可用资源的数量;当信号量值小于零时,其绝对值为等待使用信号量所代表资源的进程的数量。
11.有n个进程共享同一个临界区,若使用信号量机制实现对临界资源的互斥访Q、信号量值的变化范围为1~-(n-1)。
12.如果系统中有n个进程,等待(阻塞)队列中的最大进程数可以是个n。
13.如果信号量的当前值为-5,则表示系统中在该信号量上有5个等待进程。
14.某程序运行时经常需打印中间结果。
计算时,该进程处于用户态,打印时处在系统状态下,打印结束时流程处于用户状态。
(指系统状态)15在操作系统中引入线程的主要目的是减少程序执行的并发性。
16.如果一个程序可以由多个进程同时共享和执行,那么它应该用纯代码编写,即该程序是可重人码程序,这种程序的特点是:在它执行过程中自身不可修改。
17.中断优先级是由硬件规定的,若要调整中断的响应次序可通过系统调用。
18.进程初建时处于就绪态,运行时因为时钟中断而处于就绪态,因等待事件或资源而处于阻塞态。
第2章作业及参考答案
4 题:文法G 的产生式集合如下,试给出句子aaabbbccc 的一个推导和一个归约S T aBCIaSBCCB T BCaB t abbB t bbbB t bbC t bccC t ccC t cc6 题:文法G 的产生式集合如下,请给出G 中每个语法范畴代表的集合S t aSaIaaSaaIaAaA t bAIbbbAIbBB t cBIcCC t ccCIDDD t dDId7 题: 给定如下文法,请用自然语言描述它们定义的语言(4)S t aBIbAA t aIaSIBAAB t bIbSIABB8题:设刀={0,1},请给出刀上下列语言的文法(3)所有以11 开头, 以11 结尾的串;(6)所有长度为偶数的串9题:设刀={a,b,c},构造下列语言的文法(2)L2={ a n b m|n,m》1}(3)L3={ a n b n a n|n》1}(4)L4={a n b m a k|n,m,k > 1}(6)L6={xwx T| x,w +}(7)L?={w | w = w T, w +}补充:对给定RGS t abAIbaBA t abAIabB t baBIba构造等价文法,新文法的产生式形如:A T a, A T aB, A,B € V , a€ T参考答案4、文法G的产生式集合如下,试给出句子S T aBC|aSBCCB T BCaB T abbB T bbbB T bbC T becC T eeC T ee答:S 二aSBC=aaSBCBC=aaaBCBCBC=aaabCBCBC=aaabBCCBC=aaabbCCBC=aaabbCBCC=aaabbBCCC=aaabbbCCC=aaabbbeeC=aaabbbeee6、文法G的产生式集合如下,请给出S T aSa|aaSaa|aAaA T bA|bbbA|bBB TC B|C CC T CC C|DDD T dD|d解:(注意方法)Set(D)= {d m| m> 1} set(C)= {e 2n d m| n> 0,m > 2}(注意:aaabbbeee的一个推导和一个归约G中每个语法范畴代表的集合d只要大于n mset(B)= {e d | n> 1,m> 2}set(A)= {b k e n d m| k> 1,n》1,m>2}set(S)= {a p b k e n d m a p| p> 1,k > 1, n> 1,m > 2} 问题:2,不一定是偶数,可以没有e)不可写作:S={……}讨论:*n nS= a Aa*n i m f n=a b Ba*二a n b m e x Ca n*n ■ m x_ —=a b e DDa5 a n b m e x d y a nn - m x - y nS ={a b e d a | n,m, x -1,y -2} 06级张言飞7(4)、给定如下文法,请用自然语言描述它们定义的语言S T aB|bAA T a|aS|BAAB t b|bS|ABB解:该文法定义字母表刀={a,b}上的所有a和b的个数相等的字符串构成的语言。
习题-ddg
第二章习题答案1.给出以下概念的解释说明。
真值机器数数值数据非数值数据无符号整数带符号整数定点数原码补码变形补码溢出浮点数尾数阶阶码移码阶码下溢阶码上溢规格化数左规右规非规格化数机器零非数(NaN)BCD码逻辑数ASCII码汉字输入码汉字内码机器字长大端方式小端方式最高有效位最高有效字节(MSB) 最低有效位最低有效字节(LSB) 掩码算术移位逻辑移位0扩展符号扩展零标志ZF 溢出标志OF 符号标志SF 进位/借位标志CF2.简单回答下列问题。
(1)为什么计算机内部采用二进制表示信息?既然计算机内部所有信息都用二进制表示,为什么还要用到十六进制或八进制数?(2)常用的定点数编码方式有哪几种?通常它们各自用来表示什么?(3)为什么现代计算机中大多用补码表示带符号整数?(4)在浮点数的基数和总位数一定的情况下,浮点数的表示范围和精度分别由什么决定?两者如何相互制约?(5)为什么要对浮点数进行规格化?有哪两种规格化操作?(6)为什么有些计算机中除了用二进制外还用BCD码来表示数值数据?(7)为什么计算机处理汉字时会涉及到不同的编码(如,输入码、内码、字模码)?说明这些编码中哪些用二进制编码,哪些不用二进制编码,为什么?3.实现下列各数的转换。
(1)(25.8125)10= (?)2= (?) 8= (?) 16(2)(101101.011)2 = (?)10= (?) 8= (?) 16= (?) 8421(3)(0101 1001 0110.0011)8421 = (?)10= (?) 2= (?) 16(4)(4E.C)16 = (?)10= (?) 24.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码表示。
+0.1001,–0.1001,+1.0,–1.0,+0.010100,–0.010100,+0,–05.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。
第二章部分习题答案
习题6、试从动态性、并发性和独立性上比较进程和程序。
答:(1)从动态性角度:进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。
动态性还表现在:“它由创建而产生,由调度而执行,由撤消而消亡”。
可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的。
(2)从并发性角度:这是指多个进程实体同存于内存中,且能在一段时间内同时运行。
并发性是进程的重要特征,同时也成为OS的重要特征。
引入进程的目的也正是为了使其进程实体能和其它进程实体并发执行;而程序(没有建立PCB)是不能并发执行的。
(3)从独立性角度:在传统的OS中,独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。
凡未建立PCB的程序都不能作为一个独立的单位参与运行。
7、试说明PCB的作用,为什么说PCB是进程存在的惟一标志?答:(1)进程控制块PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。
(2)在进程的整个生命期中,系统总是通过PCB对进程进行控制的,亦即,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的。
所以说,PCB 是进程存在的惟一标志。
9、为什么要引入挂起状态?该状态有哪些性质?答:引入挂起状态的原因:(1)终端用户的请求。
(2)父进程请求。
(3)负荷调节的需要。
(4)操作系统的需要。
处于挂起状态的进程最大的特点是主动放弃CPU调度。
引入挂起状态后,进程状态转换图中增加了活动阻塞、静止阻塞、活动就绪、静止就绪四个状态,并增加了活动就绪与静止就绪之间的相互转换,活动阻塞与静止阻塞之间的相互转换。
16、进程在运行时存在哪两种形式的制约?并举例说明之。
答:(1)间接相互制约关系。
同处于一个系统中的进程,通常都共享着某种系统资源,如共享CPU、共享I/O设备等。
习题-ddg
第二章习题答案1.给出以下概念的解释说明。
真值机器数数值数据非数值数据无符号整数带符号整数定点数原码补码变形补码溢出浮点数尾数阶阶码移码阶码下溢阶码上溢规格化数左规右规非规格化数机器零非数(NaN)BCD码逻辑数ASCII码汉字输入码汉字内码机器字长大端方式小端方式最高有效位最高有效字节(MSB) 最低有效位最低有效字节(LSB) 掩码算术移位逻辑移位0扩展符号扩展零标志ZF 溢出标志OF 符号标志SF 进位/借位标志CF2.简单回答下列问题。
(1)为什么计算机内部采用二进制表示信息既然计算机内部所有信息都用二进制表示,为什么还要用到十六进制或八进制数(2)常用的定点数编码方式有哪几种通常它们各自用来表示什么(3)为什么现代计算机中大多用补码表示带符号整数(4)在浮点数的基数和总位数一定的情况下,浮点数的表示范围和精度分别由什么决定两者如何相互制约(5)为什么要对浮点数进行规格化有哪两种规格化操作(6)为什么有些计算机中除了用二进制外还用BCD码来表示数值数据(7)为什么计算机处理汉字时会涉及到不同的编码(如,输入码、内码、字模码)说明这些编码中哪些用二进制编码,哪些不用二进制编码,为什么3.实现下列各数的转换。
(1)10= ()2= () 8= () 16(2)2 = ()10= () 8= () 16= () 8421(3)(0101 1001 8421 = ()10= () 2= () 16(4)16 = ()10= () 24.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码表示。
+,–,+,–,+,–,+0,–05.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。
+1001,–1001,+1,–1,+10100,–10100,+0,–06.已知[x]补,求x(1)[x]补= (2)[x]补= (3)[x]补=01010010 (4)[x]补=7.某32位字长的机器中带符号整数用补码表示,浮点数用IEEE 754标准表示,寄存器R1和R2的内容分别为R1:0000108BH,R2:8080108BH。
计算机操作系统课后习题答案第二章
计算机操作系统课后习题答案第二章第二章1. 什么是前趋图?为什么要引入前趋图?答:前趋图(Precedence Graph)是一个有向无循环图,记为DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。
2. 画出下面四条诧句的前趋图:S1=a:=x+y;S2=b:=z+1;S3=c:=a-b;S4=w:=c+1;答:其前趋图为:3. 为什么程序并发执行会产生间断性特征?程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的进程之间,形成了相互制约的关系,从而也就使得进程在执行期间出现间断性。
4. 程序并发执行时为什么会失去封闭性和可再现性?因为程序并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态是由多个程序来改变,致使程序的运行失去了封闭性。
而程序一旦失去了封闭性也会导致其再失去可再现性。
5. 在操作系统中为什么要引入进程概念?它会产生什么样的影响?为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,从而在操作系统中引入了进程概念。
影响: 使程序的并发执行得以实行。
6. 试从动态性,并发性和独立性上比较进程和程序?a. 动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,是静态实体。
b. 并发性是进程的重要特征,同时也是OS的重要特征。
引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身是不能并发执行的。
c. 独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。
而对于未建立任何进程的程序,都不能作为一个独立的单位来运行。
7. 试说明PCB的作用?为什么说PCB是进程存在的唯一标志?a. PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。
第二章习题-ddg
第二章习题答案1.给出以下概念的解释说明。
真值机器数数值数据非数值数据无符号整数带符号整数定点数原码补码变形补码溢出浮点数尾数阶阶码移码阶码下溢阶码上溢规格化数左规右规非规格化数机器零非数(NaN)BCD码逻辑数ASCII码汉字输入码汉字内码机器字长大端方式小端方式最高有效位最高有效字节(MSB) 最低有效位最低有效字节(LSB) 掩码算术移位逻辑移位0扩展符号扩展零标志ZF 溢出标志OF 符号标志SF 进位/借位标志CF2.简单回答下列问题。
(1)为什么计算机内部采用二进制表示信息?既然计算机内部所有信息都用二进制表示,为什么还要用到十六进制或八进制数?(2)常用的定点数编码方式有哪几种?通常它们各自用来表示什么?(3)为什么现代计算机中大多用补码表示带符号整数?(4)在浮点数的基数和总位数一定的情况下,浮点数的表示范围和精度分别由什么决定?两者如何相互制约?(5)为什么要对浮点数进行规格化?有哪两种规格化操作?(6)为什么有些计算机中除了用二进制外还用BCD码来表示数值数据?(7)为什么计算机处理汉字时会涉及到不同的编码(如,输入码、内码、字模码)?说明这些编码中哪些用二进制编码,哪些不用二进制编码,为什么?3.实现下列各数的转换。
(1)(25.8125)10= (?)2= (?) 8= (?) 16(2)(101101.011)2 = (?)10= (?) 8= (?) 16= (?) 8421(3)(0101 1001 0110.0011)8421 = (?)10= (?) 2= (?) 16(4)(4E.C)16 = (?)10= (?) 24.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码表示。
+0.1001,–0.1001,+1.0,–1.0,+0.010100,–0.010100,+0,–05.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。
第2章 进程管理课后习题解答
第2章 进程管理 章
END
15
13
第2章 进程管理 章
19.设公共汽车上有一位司机和一位售票员,它们的活动 如下:
请分析司机与售票员之间的同步关系,如何用P、V 操作实 现。 【解答】为了安全起见,显然要求:关车门后才能启动车辆; 到站后才能开车门。所以司机和售票员在到站、开门、关门、 启动车辆这几个活动之间存在着同步关系。两个信号量S1、 S2分别表示可以开车和可以开门,S1的初值为1,S2的初 值为0。
5
第2章 进程管理 章
9.试说明进程的基本状态及转换的原因。 【解答】略
10.在创建一个进程时,所要做的工作有哪些? 【解答】操作系统通过进程创建原语来创建一个进 程。创建原语通过下述步骤创建一个进程: (1)申请空白PCB。 (2)为新进程分配资源。 (3)初始化进程控制块。 (4)将新建进程插入就绪态队列。
9
第2章 进程管理 章
15.什么是线程?说明它与进程的主要区别。 【解答】略
10
第2章 进程管理 章
16.什么是多线程机制?引入它有什么好处? 【解答】多线程机制是指操作系统支持在一个进程 内执行多个线程的能力。 引入线程的好处有以下几点: (1)易于调度。由于线程只作为独立调度的基本单 位,同一进程的多个线程共享进程的资源,所以线 程易于切换。 (2)提高了系统的效率。通过线程可方便有效地实 现并发性。进程可创建多个线程来执行同一程序的 不同部分。 (3)创建一个线程比创建一个进程花费的开销少, 创建速度快。 (4)在多处理器的系统中,有利于发挥多处理器的 功能,提高进程的并行性。 11
7
第2章 进程管理 章
12.在生产者—消费者问题中,如果缺少了 signal(full)或signal(empty),对执行结果将会有 何影响? 【解答】略 13.在生产者—消费者问题中,如果两个wait操作 即wait(mutex)和wait(empty)位置互换,会产生 什么后果? 【解答】如果两个wait操作即wait(mutex)和 wait(empty)位置互换,则有可能产生死锁。
第2章练习
第二章练习一、选择题1. 进程依靠()从阻塞状态过渡到就绪状态。
A、程序员的命令B、系统服务C、等待下一个时间片到来D、“合作”进程的唤醒2、某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态将()。
A. 从就绪变为运行;B.从运行变为就绪;C. 从运行变为阻塞;D.从阻塞变为就绪;3、进程控制块是描述进程状态和特性的数据结构,一个进程()。
A、可以有多个进程控制块;B、可以和其他进程共用一个进程控制块;C、可以没有进程控制块;D、只能有惟一的进程控制块。
4.如果有N个进程共享同一互斥段,而且每次最多允许M个(M<N)进程进入该互斥段,则信号量的初值应设置为()A. NB. MC. 1D. 05、进程状态从就绪状态到运行状态的转化工作是由()完成的A、作业调度B、中继调度C、进程调度D、设备调度6、在多进程的系统中,为了保证公共变量的完整性,各进程应互斥进入临界区,所谓临界区是指():A、一个缓冲区B、一段数据区C、同步机制D、一段程序7.实现进程同步时,每个消息与一个信号量对应,进程()可把不同的消息发送出去A.在不同信号量上调用P操作B.在同一信号量上调用P操作C.在不同信号量上调用V操作D.在同一信号量上调用V操作8.若信号量S的初值为2,当前值为-2,则表示当前系统中存在着( )个进程。
A. 1B. 2C. 3D. 49.()在下面关于线程的叙述中,正确的是:A.不管系统中是否还有线程,进程都是拥有资源的独立单位B.不论是系统支持线程还是用户级线程,其切换都需要内核的支持C.线程是资源的分配单位,进程是调度和分派的单位D.在引入线程的系统中,进程仍是资源分配和调度分派的基本单位二、填空题1、程序的____________执行是现代操作系统的基本特征之一,为了更好地描述这一特征而引入了____________这一概念。
2、进程至少有三种基本状态:____________、____________和____________。
第2章习题及答案(必做)
第五章习题及答案习题号(共20 道): 1. 4. 5. 6. 8. 10. 15. 17. 18. 21. 24. 27. 28. 29. 31. 32. 34. 37. 38. 39.1. 8086CPU 内部由哪两部分组成?它们的主要功能是什么?答:8086CPU 内部由执行单元EU 和总线接口单元BIU 组成。
主要功能为:执行单元EU 负责执行指令。
它由算术逻辑单元(ALU) 、通用寄存器组、16 位标志寄存器(FLAGS) 、EU 控制电路等组成。
EU 在工作时直接从指令流队列中取指令代码,对其译码后产生完成指令所需要的控制信息。
数据在ALU 中进行运算,运算结果的特征保留在标志寄存器FLAGS 中。
总线接口单元BIU 负责CPU 与存储器和I/O 接口之间的信息传送。
它由段寄存器、指令指针寄存器、指令队列、地址加法器以及总线控制逻辑组成。
4. 要完成下述运算或控制,用什么标志位判别?其值是什么?( 1)比较两数是否相等 ( 2)两数运算后结果是正数还是负数( 3)两数相加后是否溢出 ( 4)采用偶校验方式,判定是否要补1( 5)两数相减后比较大小 ( 6)中断信号能否允许答:(1) ZF,两数相减,若ZF=1,则相等。
( 2) SF,SF=1 则为负,否则为正(3)对有符号数:OF,OF=1 为溢出;对无符号数:CF,CF=1 为溢出(4)PF, PF=1,不补1(5)对有符号数:无溢出时( OF=0),女口ZF=1,则两数相等;如ZF=0且SF=0, 则被减数大;如ZF=0且SF=1,则减数大;有溢出时(OF=1),女口SF=1,则被减数大;如SF=0,则减数大;对无符号数:如ZF=1,则两数相等;如CF=0,则被减数大;如CF=1,则减数大( 6) IF, IF=1 ,允许中断5. 8086 系统中存储器采用什么结构?用什么信号来选中存储体?答:8086 系统中,存储器采用分体结构, 1MB 的存储空间分成两个存储体:偶地址存储体和奇地址存储体,各为512KB 。
第2章习题解答
第2章习题解答一、填空1.进程在执行过程中有3种基本状态,它们是运行态、就绪态和阻塞态。
2.系统中一个进程由程序、数据集合和进程控制块(PCB)三部分组成。
3.在多道程序设计系统中,进程是一个动态概念,程序是一个静态概念。
4.在一个单CPU系统中,若有5个用户进程。
假设当前系统为用户态,则处于就绪状态的用户进程最多有 4 个,最少有 0 个.注意,题目里给出的是假设当前系统为用户态,这表明现在有一个进程处于运行状态,因此最多有4个进程处于就绪态。
也可能除一个在运行外,其他4个都处于阻塞。
这时,处于就绪的进程一个也没有。
5.总的来说,进程调度有两种方式,即不可剥夺方式和剥夺方式.6.进程调度程序具体负责中央处理机(CPU)的分配.7.为了使系统的各种资源得到均衡使用,进行作业调度时,应该注意 CPU忙碌作业和 I/O 忙碌作业的搭配。
8.所谓系统调用,就是用户程序要调用操作系统提供的一些子功能。
9.作业被系统接纳后到运行完毕,一般还需要经历后备、运行和完成三个阶段。
10.假定一个系统中的所有作业同时到达,那么使作业平均周转时间为最小的作业调度算法是短作业优先调度算法。
11.在引入线程的操作系统中,所谓“线程”,是指进程中实施处理机调度和分配的基本单位。
12.有了线程概念后,原来的进程就属于是单线程的进程情形。
二、选择1.在进程管理中,当 C 时,进程从阻塞状态变为就绪状态。
A.进程被调度程序选中B.进程等待某一事件发生C.等待的事件出现D.时间片到2.在分时系统中,一个进程用完给它的时间片后,其状态变为 A 。
A.就绪B.等待C.运行D.由用户设定3.下面对进程的描述中,错误的是 D .A.进程是动态的概念B.进程的执行需要CPUC.进程具有生命周期D.进程是指令的集合4.操作系统通过 B 对进程进行管理。
A.JCB B.PCB C.DCT D.FCB5.一个进程被唤醒,意味着该进程 D 。
A.重新占有CPU B.优先级变为最大C.移至等待队列之首D.变为就绪状态6.由各作业JCB形成的队列称为 C 。
计算机系统结构 第二章(习题解答)
1. 数据类型、数据表示和数据结构之间是什么关系?在设计一个计算机系统时,确定数据表示的原则主要有哪几个? 答:略2. 假设有A 和B 两种不同类型的处理机,A 处理机中的数据不带标志位,其指令字长和数据字长均为32位。
B 处理机的数据带有标志位,每个数据的字长增加至36位,其中有4位是标志符,它的指令条数由最多256条减少至不到64条。
如果每执行一条指令平均要访问两个操作数,每个存放在存储器中的操作数平均要被访问8次。
对于一个由1000条指令组成的程序,分别计算这个程序在A 处理机和B 处理机中所占用的存储空间大小(包括指令和数据),从中得到什么启发? 答:我们可以计算出数据的总数量:∵ 程序有1000条指令组成,且每条指令平均要访问两个操作数 ∴ 程序访问的数据总数为:1000×2=2000个 ∵ 每个数据平均访问8次∴ 程序访问的不同数据个数为:2000÷8=250对于A 处理机,所用的存储空间的大小为:bit 4000032250321000Mem Mem Mem data n instructio A =⨯+⨯=+=对于B 处理机,指令字长由32位变为了30位(条数由256减少到64),这样,所用的存储空间的大小为:bit 3900036250301000Mem Mem Mem data n instructio B =⨯+⨯=+=由此我们可以看出,由于数据的平均访问次数要大于指令,所以,采用带标志符的数据表示不会增加总的存储空间大小。
3. 对于一个字长为64位的存储器,访问这个存储器的地址按字节编址。
假设存放在这个存储器中的数据中有20%是独立的字节数据(指与这个字节数据相邻的不是一个字节数据),有30%是独立的16位数据,有20%是独立的32位数据,另外30%是独立的64位数据;并且规定只能从一个存储字的起始位置开始存放数据。
⑴计算这种存储器的存储空间利用率。
⑵给出提高存储空间利用率的方法,画出新方法的逻辑框图,并计算这种方法的存储空间利用率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章习题答案1.给出以下概念的解释说明。
真值机器数数值数据非数值数据无符号整数带符号整数定点数原码补码变形补码溢出浮点数尾数阶阶码移码阶码下溢阶码上溢规格化数左规右规非规格化数机器零非数(NaN)BCD码逻辑数ASCII码汉字输入码汉字内码机器字长大端方式小端方式最高有效位最高有效字节(MSB) 最低有效位最低有效字节(LSB) 掩码算术移位逻辑移位0扩展符号扩展零标志ZF 溢出标志OF 符号标志SF 进位/借位标志CF2.简单回答下列问题。
(1)为什么计算机内部采用二进制表示信息既然计算机内部所有信息都用二进制表示,为什么还要用到十六进制或八进制数(2)常用的定点数编码方式有哪几种通常它们各自用来表示什么(3)为什么现代计算机中大多用补码表示带符号整数(4)在浮点数的基数和总位数一定的情况下,浮点数的表示范围和精度分别由什么决定两者如何相互制约(5)为什么要对浮点数进行规格化有哪两种规格化操作(6)为什么有些计算机中除了用二进制外还用BCD码来表示数值数据(7)为什么计算机处理汉字时会涉及到不同的编码(如,输入码、内码、字模码)说明这些编码中哪些用二进制编码,哪些不用二进制编码,为什么3.实现下列各数的转换。
(1)10= ()2= () 8= () 16(2) 2 = ()10= () 8= () 16= () 8421(3)(0101 1001 8421 = ()10= () 2= () 16(4)16 = ()10= () 24.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码表示。
+,–,+,–,+,–,+0,–05.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。
+1001,–1001,+1,–1,+10100,–10100,+0,–06.已知 [x]补,求x(1)[x]补= (2)[x]补= (3)[x]补=01010010 (4)[x]补=7.某32位字长的机器中带符号整数用补码表示,浮点数用IEEE 754标准表示,寄存器R1和R2的内容分别为R1:0000108BH,R2:8080108BH。
不同指令对寄存器进行不同的操作,因而不同指令执行时寄存器内容对应的真值不同。
假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的真值分别为多少(1)无符号整数加法指令(2)带符号整数乘法指令(3)单精度浮点数减法指令8.假定机器M的字长为32位,用补码表示带符号整数。
表中第一列给出了在机器M上执行的C语言程序中的关系表达式,请参照已有的表栏内容完成表中后三栏内容的填写。
表题8用表9.在32位计算机中运行一个C语言程序,在该程序中出现了以下变量的初值,请写出它们对应的机器数(用十六进制表示)。
(1)int x=-32768 (2)short y=522 (3)unsigned z=65530(4)char c=’@’(5)float a= (6)double b=10. 在32位计算机中运行一个C语言程序,在该程序中出现了一些变量,已知这些变量在某一时刻的机器数(用十六进制表示)如下,请写出它们对应的真值。
(1)int x:FFFF0006H (2)short y:DFFCH (3)unsigned z:FFFFFFFAH(4)char c:2AH 5)float a:C4480000H (6)double b:C0000000H11. 以下给出的是一些字符串变量在内存中存放的字符串机器码,请根据ASCII码定义写出对应的字符串。
指出代码0AH和00H对应的字符的含义。
(1)char *mystring1:68H 65H 6CH 6CH 6FH 2CH 77H 6FH 72H 6CH 64H 0AH 00H(2)char *mystring2:77H 65H 20H 61H 72H 65H 20H 68H 61H 70H 70H 79H 21H 00H12. 以下给出的是一些字符串变量的初值,请写出对应的机器码。
(1)char *mystring1="./myfile" (2)char *mystring2="OK, good!"13. 已知C语言中的按位异或运算(“XOR”)用符号“^”表示。
对于任意一个位序列a,a^a=0,C语言程序可以利用这个特性来实现两个数值交换的功能。
以下是一个实现该功能的C语言函数:1 void xor_swap(int *x, int *y)2 {3 *y=*x ^ *y; /* 第一步 */4 *x=*x ^ *y; /* 第二步 */5 *y=*x ^ *y; /* 第三步 */6 }假定执行该函数时*x和*y的初始值分别为a和b,即*x=a且*y=b,请给出每一步执行结束后,x和y各自指向的内存单元中的内容分别是什么14. 假定某个实现数组元素倒置的函数reverse_array调用了第13题中给出的xor_swap函数:1 void reverse_array(int a[], int len)2 {3 int left, right=len-1;4 for (left=0; left<=right; left++, right--)5 xor_swap(&a[left], &a[right]);6 }当len为偶数时,reverse_array函数的执行没有问题。
但是,当len为奇数时,函数的执行结果不正确。
请问,当len为奇数时会出现什么问题最后一次循环中的left和right各取什么值最后一次循环中调用xor_swap函数后的返回值是什么对reverse_array函数作怎样的改动就可消除该问题15. 假设以下表中的x和y是某C语言程序中的char型变量,请根据C语言中的按位运算和逻辑运算的定义,填写表,要求用十六进制形式填写。
表题15用表16.对于一个n(n≥8)位的变量x,请根据C语言中按位运算的定义,写出满足下列要求的C语言表达式。
(1)x的最高有效字节不变,其余各位全变为0。
(2)x的最低有效字节不变,其余各位全变为0。
(3)x的最低有效字节全变为0,其余各位取反。
(4)x的最低有效字节全变1,其余各位不变。
17. 以下是一个由反汇编器生成的一段针对某个小端方式处理器的机器级代码表示文本,其中,最左边是指令所在的存储单元地址,冒号后面是指令的机器码,最右边是指令的汇编语言表示,即汇编指令。
已知反汇编输出中的机器数都采用补码表示,请给出指令代码中划线部分表示的机器数对应的真值。
80483d2: 81 ec b8 01 00 00 sub &0x1b8, %esp80483d8: 8b 55 08 mov 0x8(%ebp), %edx80483db: 83 c2 14 add $0x14, %edx80483de: 8b 85 58 fe ff ff mov 0xfffffe58(%ebp), %eax80483e4: 03 02 add (%edx), %eax80483e6: 89 85 74 fe ff ff mov %eax, 0xfffffe74(%ebp)80483ec: 8b 55 08 mov 0x8(%ebp), %edx80483ef: 83 c2 44 add $0x44, %edx80483f2: 8b 85 c8 fe ff ff mov 0xfffffec8(%ebp), %eax80483f8: 89 02 mov %eax, (%edx)80483fa: 8b 45 10 mov 0x10(%ebp), %eax80483fd: 03 45 0c add 0xc(%ebp), %eax8048400: 89 85 ec fe ff ff mov %eax, 0xfffffeec(%ebp)8048406: 8b 45 08 mov 0x8(%ebp), %eax8048409: 83 c0 20 add $0x20, %eax18. 假设以下C语言函数compare_str_len用来判断两个字符串的长度,当字符串str1的长度大于str2的长度时函数返回值为1,否则为0。
1 int compare_str_len(char *str1, char *str2)2 {3 return strlen(str1) - strlen(str2) > 0;4 }已知C语言标准库函数strlen原型声明为“size_t strlen(const char *s);”,其中,size_t被定义为unsigned int类型。
请问:函数compare_str_len在什么情况下返回的结果不正确为什么为使函数正确返回结果应如何修改代码19.考虑以下C语言程序代码:1 int func1(unsigned word)2 {3 return (int) (( word <<24) >> 24);4 }5 int func2(unsigned word)6 {7 return ( (int) word <<24 ) >> 24;8 }假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。
无符号数采用逻辑移位,带符号整数采用算术移位。
请填写表,并说明函数func1和func2的功能。
表题19用表20.填写表,注意对比无符号整数和带符号整数的乘法结果,以及截断操作前、后的结果。
表题20用表21.以下是两段C语言代码,函数arith( )是直接用C语言写的,而optarith( )是对arith( )函数以某个确定的M和N编译生成的机器代码反编译生成的。
根据optarith( ),可以推断函数arith( ) 中M和N的值各是多少#define M#define Nint arith (int x, int y){int result = 0 ;result = x*M + y/N;return result;}int optarith ( int x, int y){int t = x;x << = 4;x – = t;if ( y < 0 ) y += 3;y>>2;return x+y;}22. 下列几种情况所能表示的数的范围是什么(1)16位无符号整数(2)16位补码表示的带符号整数(3)下述格式的浮点数(基数为2,移码的偏置常数为128)1位8位移码7位原码数值部分23. 以IEEE 754单精度浮点数格式表示下列十进制数。
+,+19,–1/8,25824.设一个变量的值为4098,要求分别用32位补码整数和IEEE 754单精度浮点格式表示该变量(结果用十六进制形式表示),并说明哪段二进制位序列在两种表示中完全相同,为什么会相同25.设一个变量的值为–2 147 483 647(提示:2 147 483 647=231-1),要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制形式表示),并说明哪种表示其值完全精确,哪种表示的是近似值。