操作系统习题课1
[参考答案] 这两个定义是等价的,在图5.3的定义中,当信号量的值为负值时,它的 值代表了有多少个进程在等待。在此题中的定义中,虽然你没有关于有 多少个进程在等待这个信息,但是这两个版本的函数是一样的。
25
5.补充1
假定一个阅览室最多可以容纳100人,读者进入和离开阅览室必须登 记和去除登记。而且每次只允许一个人登记或者去除登记。用伪代码 描述读者的行为。
[参考答案] 是的,因为两个进程间的模式切换要储存更多的状态信息。
18
P.136 4.2 在比较用户级线程和内核级线程时曾指出用户级线程的一个缺点是, 当一个用户级线程执行系统调用时,不仅这个线程被阻塞,进程中的 所有线程都被阻塞。请问这是为什么?
[参考答案] 因为对于用户级线程来说,一个进程的线程结构对操作系统是不可见的 ,而操作系统的调度是以进程为单位的。
4.进程B重新开始,将1(当前的tally值)载入到它自己的寄存器中,但此时 被迫放弃处理器(注意这是B的最后一次载入)。
5.进程A被重新安排开始,但这次没有被中断,直到运行完成它剩余的49次 载入,增加和存储操作,结果是此时tally值已经是50。
6.进程B在它终止前完成仅有的最后一次增加和存储操作。它的寄存器值
H×Tc+(1-H)×(Tc+Tm) = (1+10%)×Tc
Tc+(1-H)×Tm = 1.1×Tc
(1-H)×(1200) = (0.1)×(100)
H=1190/1200
12
2.补充 以时间为主线,请总结本节课程中提到的各种操作系统的局限,并阐 述新的操作系统是如何解决上述局限的。
13
P.110 3.4 对于图3.9(b)中给出的7状态进程模型,请仿照图3.8(b)画出它的排 队图。
增至2,同时存储这个值做为这个共享变量的最终结果。
22
因此tally值的正确范围是[2,100]。
[参考答案] b. 对一般有N个进程的情况下,tally值的最终范围是[2,N*50],因为对其他 所有进程来说,从最初开始运行到在第五步完成。但最后都被进程B破坏掉它 们的最终结果。
23
P.176 5.12 考虑下面关于信号量的定义: void semWait(s) { if(s.count>0){ s.count--; } else{ place this process in s.queue; block; } } void semSignal(s)
106(0.05×5+0.95×2) = 2.15×106 周期/秒 如果我们假设DMA模块可以使用所有这些周期,并且忽略任何设置和状10态
检查时间,那么这个值就是最大的I/O传送速率。
P.28 1.10 考虑以下代码: for ( i = 0;i < 20;i++ ) for ( j = 0;j < 10;j++ ) a[i] = a[i]*j a.指出代码中空间局部性的一个例子。 b.指出代码中时间局部性的一个例子。
2.一个16位局部地址总线和一个16位局部数据总线。
[参考答案]
a. 224 = 16 Mbytes.
b. 1.由于局部地址总线为32位,因此,整个地址可以通过一次 传输并在内存中解码。但是,由于局部数据总线为16位,需要2 个指令周期来获取一个32位的指令或者操作数。
2.由于通过16位局部地址总线传输来的16位地址无法访问到 整个内存空间,因此,需要两步来获得一个地址,则需要一些更 加复杂的内存接口控制来锁定地址的第一部分和第二部分。例如 6 ,可以假设前半部分是地址的行,后半部分是地址的列。同样, 需要2个指令周期来获取一个32位的指令或者操作数。
“一个DMA模块从外部设备给内存传送字符,传送速度为9600位每秒 (b/s)”,也就是说,DMA模块传输字符的速度为每秒1200个字符,或每个 字符833微秒。
因此,由于DMA活动,处理器的速度将会减慢 1/833*100% = 0.12%
9
P.28 1.9
一台计算机包括一个CPU和一台I/O设备D,通过一条共享总线连接到 内存M,数据总线的宽度为1个字。CPU每秒最多可执行106条指令,平 均每条指令需要5个处理器周期,其中3个周期需要使用存储器总线。 存储器读/写操作使用1个机器周期。假设CPU正在连续不断地执行后 台程序,并且需要保证95%的指令执行速度,但没有任何I/O指令。假 设1个处理器周期等于1个总线周期,现在要在M和D之间传送大块数据。
19
P.137 4.4 考虑这样一个环境,用户级线程和内核级线程呈一对一的映射关系, 并且允许进程中的一个或多个线程产生会引发阻塞的系统调用,而其 他线程可以继续运行。解释为什么在单处理器机器上,这个模型可以 使多线程程序比相应的单线程程序运行速度更快?
[参考答案] 问题在于机器会花费相当多的时间等待I/O操作的完成。在一个多线程程 序中,可能一个内核级线程会产生引发阻塞的系统调用,而其他内核级 线程可以继续执行。而在单处理器机器上,进程则必须阻塞直到所有的 系统调用都可以继续运行。
20
P.174 5.4 考虑下述程序: const int n = 50; int tally; void total() { int count; for ( count = 1; count <= n; count++ ){ tally++; } } void main() {
tally = 0; parbegin(total(),total()); write(tally); } a.确定该并行程序最终输出的 变量tally的合适下界和上界。 假设这些进程可以以任意相对 速度执行,并且一个变量只能 在被一条单独的机器指令载入 到寄存器后自增。 b.在a中假设的基础上,进一步 假设任意数量的这种进程被允 许并行地执行,那么对tally的 上界和下界有什么影响?
P.27 1.3 假设有一个32位微处理器,其32位的指令由两个域组成:第一个字节 包含操作码,其余部分为一个直接操作数或一个操作数地址。 c.程序计数器和指令寄存器分别需要多少位? [参考答案] c. 程序计数器至少要24位。通常,一个32位的微处理器有一个 32位的外部地址总线和一个32位的程序计数器,除非使用片内寄 存器则可以用较小的程序计数器。如果指令寄存器要包含整个指 令,则它需要32位。如果它只包含运算码(成为运算码寄存器) ,则它需要8位长。
{ if(there is at least one
process blocked on semaphore){ remove a process P from
s.queue; place process P on ready
list; } else s.count++;
} 将该定义与图5.3中的定义进行比较, 得出两个定义之间有一个区别:在前面 的定义中,信号量永远不会取负值。当 在程序中分别使用这两种定义时,其效 果有什么不同?即能否在不改变程序意 义的前提下,用一个定义代替另一2个4?
1.进程A载入tally值,tally值加到1,在此时失去处理器(它已经增加寄存 器的值到1,但是还没有存储这个值)。
2.进程B载入tally值(仍然是0),然后运行完成49次增加操作,在它已经将 49这个值存储给共享变量tally后,失去处理器控制权。
3.进程A重新获得处理器控制权去完成它的第一次存储操作(用1去代替先 前的49这个tally值),此时被迫立即放弃处理器。
[参考答案] 图9.3给出了单个阻塞队列的结果。该图可以很容易地推广到多个阻塞队 列的情形。
14
15
P.110 3.5 考虑图3.9(b)中的状态转换图。假设操作系统正在分派进程,有进程 处于就绪态和就绪/挂起态,并且至少有一个处于就绪/挂起态的进程 比处于就绪态的所有进程的优先级都高。有两种极端的策略:(1)总 是分派一个处于就绪态的进程,以减少交换;(2)总是把机会给具有 最高优先级的进程,即使会导致在不需要交换时进行交换。请给出一 种能均衡考虑优先级和性能的中间策略。
实用操作系统习题课
1
P.27 1.1 假设图1.3中所示的理想处理器还有两条I/O指令: 0011 = 从I/O中载入AC 0111 = 把AC保存到I/O中 在这种情况下,使用12位地址标识一个特殊的外部设备。请给出以下 程序的执行过程(按照图1.4的格式): 1.从设备5中载入AC。 2.加上存储器单元940的内容。 3.把AC保存到设备6中。 假设从设备5中取到的下一个值为3,内存单元940中的值为2。
b.使用高速缓存技术,1MB的主存储器价格为多少?
c.如果有效存取时间比高速缓存存取时间多10% ,命中率H为多少?
[参考答案]
a. Cost = Cm×8位×220 ≈ Cm×8位×106 = 8×103 ¢ = $80 b. Cost = Cc×8×220 ≈ Cc×8×106 = 8×104 ¢ = $800 c. 由等式1.1知:
8
P.28 1.8 一个DMA模块从外部设备给内存传送字符,传送取指令,由于DMA活动,处 理器的速度将会减慢多少?
[参考答案] 让我们忽略数据读/写操作,假设处理器只获取指令。“处理器可以以100 万次每秒的速度取指令”,也就是说,处理器每微秒访问内存一次。
[参考答案] a. 读取第一条指令,紧接着读取第二条指令。 b. 在很短的间隔时间内, a[i]在循环内部被访问了十次。
11
P.28 1.12
考虑一个存储器系统,它具有以下参数:
Tc = 100 ns
Cc = 0.01 分/位
Tm = 1200 ns
Cm = 0.001 分/位
a.1MB的内存价格为多少?
a.若使用程序控制I/O,I/O每传送1个字需要CPU执行两条指令,请估 计通过D的I/O数据传送的最大可能速率。