OS复习文档Word格式.docx
《OS复习文档Word格式.docx》由会员分享,可在线阅读,更多相关《OS复习文档Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
陷阱与当前正在运行的进程所产生的错误或异常条件相关,如非法的文件访问。
习题:
3.10图3.7(b)表明一个进程每次只能在一个事件队列中。
a.是否能够允许进程同时等待一个或多个事件?
请举例说明。
b.在这种情况下,如何修改图中的排队结构以支持这个新特点?
a.一个进程可能正在处理从另一个进程收到的数据并将结果保存到磁盘上。
如果当前在另一个进程中正有数据在等待被取走,进程就可以继续获得数据并处理它。
如果前一个写磁盘操作已经完成,并且有处理好的数据在等待写出,那么进程就可以继续写磁盘。
这样就可能存在某一时刻,进程即在等待从输入进程获得数据,又在等待磁盘可用。
b.有很多种方法解决这一问题。
可以使用一种特殊的队列,或者将进程放入两个独立的队列中。
不论采用哪种方法,操作系统都必须处理好细节工作,使进程相继地关注两个事件的发生。
4.2请列出线程间的模式切换比进程间的模式切换开销更低的原因。
包含的状态信息更少。
(正因为上述很多信息是进程有而线程没有的)
4.3在进程概念中体现出的两个独立且无关的特点是什么?
资源所有权和调度/执行。
(p112)
4.5哪些资源通常被一个进程中的所有线程共享?
例如地址空间,文件资源等。
习题
4.2在比较用户级线程和内核级线程时曾指出用户级线程的一个缺点,即当一个用户级线程执行系统调用时,不仅这个线程被阻塞,而且进程中的所有线程都被阻塞。
请问这是为什么?
因为对于用户级线程来说,一个进程的线程结构对操作系统是不可见的,而操作系统的调度是以进程为单位的。
4.7一个多处理系统有8个处理器和20个附加磁带设备。
现在有大量的作业提交给该系统,完成每个作业最多需要4个磁带设备。
假设每个作业开始运行时只需要3个磁带设备,并且在很长时间内都只需要这3个设备,而只是在最后很短的一段时间内需要第4个设备以完成操作。
同时还假设这类作业源源不断。
a.假设操作系统中的调度器只有当4个磁带设备都可用时才开始一个作业。
当作业开始时,4个设备立即被分配给它,并且直到作业完成时才被释放。
请问一次最多可以同时执行几个作业?
采用这种策略,最多有几个磁带设备可能是空闲的?
最少有几个?
b.给出另外一种策略,要求其可以提高磁带设备的利用率,并且同时可以避免系统死锁。
分析最多可以有几个作业同时执行,可能出现的空闲设备的范围是多少。
a.采用一个保守的策略,一次最多同时执行20/4=5个作业。
由于分配各一个任务的磁带设备最多同时只有一个空闲,所以在同一时刻最多有5个磁带设备可能是空闲的。
在最好的情况下没有磁带设备空闲。
b.为了更好的利用磁设备,每个作业在最初只分配三个磁带设备。
第四个只有的需要的时候才分配。
在这种策略中,最多可以有20/3=6个作业同时执行。
最少的空闲设备数量为0,最多有2个。
参考:
AdvancedComputerArchitectrue,K.Hwang,1993.
5.1列出与并发相关的四种设计问题
进程间的交互,共享资源之间的竞争,多个进程的同步问题,对进程的处理器时间分配问题(p144)
5.2列出并发的三种上下文
多个应用程序,结构化应用程序,操作系统结构
5.5竞争进程和合作进程进程间有什么区别。
竞争进程需要同时访问相同的资源,像磁盘,文件或打印机。
合作进程要么共享访问一个共有的资源,像一个内存访问区,要么就与其他进程相互通信,在一些应用程序或活动上进行合作。
5.11.什么是管程。
管程是由一个或多个过程,一个初始化序列和局部数据组成的软件模块。
5.2.考虑一个并发程序,它有两个进程p和q,定义如下。
A.B.C.D和E是任意的原子语句。
假设住程序执行两个进程的parbegin
Voidp()voidq()
{A;
{D;
B;
E;
C;
}
ABCDE;
ABDCE;
ABDEC;
ADBCE;
ADBEC;
ADEBC;
DEABC;
DAEBC;
DABEC;
DABCE;
5.4.忙等待是否总是比阻塞等待效率低(根据处理器的使用时间)?
请解释。
就一般情况来说是对的,因为忙等待消耗无用的指令周期.然而,有一种特殊情况,当进程执行到程序的某一点处,在此处要等待直到条件满足,而正好条件已满足,此时忙等待会立即有结果,然而阻塞等待会消耗操作系统资源在换出与换入进程上.
6.2可能发生死锁所必须的三个条件是什么?
互斥,占有且等待,非抢占。
6.3产生死锁的第4个条件是什么?
循环等待
6.1写出图6.1(a)中死锁的四个条件。
解:
互斥:
同一时刻只有一辆车可以占有一个十字路口象限。
占有且等待:
没有车可以倒退;
在十字路口的每辆车都要等待直到它前面的象限是空的。
非抢占:
没有汽车被允许挤开其他车辆。
循环等待:
每辆汽车都在等待一个此时已经被其他车占领的十字路口象限。
6.5
考虑下面的一个系统,当前不存在未满足的请求。
可用
r1r2r3r4
2
1
当前分配最大需求仍然需求
r1
r2
r3
r4
r1
r2
r1
r3
0
1
7
5
3
4
6
6
4
a计算每个进程仍然可能需要的资源,并填入标为“仍然需要”的列中。
b系统当前是处于安全状态还是不安全状态,为什么。
c系统当前是否死锁?
为什么?
d哪个进程(如果存在)是死锁的或可能变成死锁的?
e如果P3的请求(0,1,0,0)到达,是否可以立即安全地同意该请求?
在什么状态(死锁,安全,不安全)下可以立即同意系统剩下的全部请求?
如果立即同意全部请求,哪个进程(如果有)是死锁的或可能变成死锁的?
a.0000
0750
6622
2002
0320
b.系统当前处于安全状态,因为至少有一个进程执行序列,不会导致死锁,运行顺序是p1,p4,p5,p2,p3.
c.系统当前并没有死锁,因为P1进程当前分配与最大需求正好相等,P1进程可以运行直至结束,接下来运行其他进程
d.P2,P3,P4,P5可能死锁
e.不可以,当进程P1,P4,P5执行完可用资源为(4,6,9,8),P2,P3将死锁,所以不安全,完全不可以立即同意系统剩下的全部请求。
6.5请把6.4中的死锁检测算法应用于下面的数据,并给出结果。
Available=(2100)
20010010
Request=1010Allocation=2001
21000120
1.W=(2100)
2.MarkP3;
W=(2100)+(0120)=(2220)
3.MarkP2;
W=(2220)+(2001)=(4221)
4.MarkP1;
nodeadlockdetected没有死锁
6.13
a.3个进程共享4个资源单元,一次只能保留或释放一个单元。
每个进程最大需要2个单元。
说明不会死锁。
b.N个进程共享M个资源单元,一次只能保留或释放一个单元。
每个进程最大需要单元数不超过M,并且所有最大需求的总和小于M+N。
说明不会发生死锁。
a.说明由于每个进程最多需要2个资源,最坏情况下,每个进程需要获得一个,系统还剩1个,这一个资源,无论分给谁都能完成。
完成进程释放资源后,使剩余进程也完成,故系统不会死锁。
b.假定每个进程最多申请X个资源,最坏情况下,每个进程都得到X-1个资源都在申请最后一个资源,这时系统剩余资源数量为M-N(X-1),只要系统还有一个剩余资源,就可以使其中的一个进程获得所需要的全部资源,该进程运行结束以后释放资源,就可以使其他进程得到全部资源的满足,因此,当M-N(X-1)》1时系统不会发生死锁,解这个不等式X《(M+N-1),系统不会发生死锁,因此,当所有进程的需求总和小于M+N时,系统是不会发生死锁的。
6.17假设有两种类型的哲学家。
一类总是先拿起左边的叉子(左撇子),另一类总是先拿起右边的叉子(右撇子)。
左撇子的行为和图6.12中定义的一致。
右撇子的行为如下:
begin
repeat
think;
wait(fork[(i+1)mod5]);
wait(fork[i]);
eat;
signal(fork[i]);
signal(fork[(i+1)mod5]);
forever;
end;
证明:
a如果至少有一个左撇子或右撇子,则他们的任何就座安排都可以避免死锁。
b如果至少有一个左撇子或右撇子,则他们的任何就座安排都可以防止饥饿。
a假设存在死锁情况,设有D个哲学家,他们每人都有一支叉子而且另一支叉子被邻居占有。
不失一般性,设Pj是一个左撇子。
Pj抓牢他的左边叉子而且没有他的右边叉子,他的右边邻居Pk没有完成就餐因此也是一个左撇子。
因此依次推理下去所有这D个哲学家都是左撇子。
这与既有左撇子又有右撇子的条件矛盾,假设不成立,不存在死锁。
b
假设左撇子Pj饥饿,也就是说,有一部分人在就餐而Pj从不吃。
假如Pj没有叉子。
这样Pj的左边邻居Pi一定持续地占有叉子而始终不吃完。
因此Pi是右撇子,
抓住他的右边叉子,但是从不得到他的左边叉子来完成就餐,也就是说Pi
也饥饿。
现在Pi左边邻居也一定是持续占有右边叉子的右撇子。
向左进行这样的推理,得出所有哲学家都是饥饿的右撇子,这同Pj是个左撇子矛盾。
因此Pj一直拥有左边子而且在等待他的右边叉子,Pj的右边邻居Pk一直举着他的左边叉子而且从不完成一餐,也就是,Pk是也饥饿的左撇子。
如果Pk不是一直拿着他的左边叉子,Pj就可以就餐;
因此Pk拿着他的左边叉子。
向右推理可得所有哲学家都是饥饿的左撇子。
这与条件矛盾,因此假设不成立,没有人饥饿。
7.1内存管理需要满足哪些需求?
重定位、保护、共享、逻辑组织和物理组织。
7.2为什么需要重定位进程的能力?
通常情况下,并不能事先知道在某个程序执行期间会有哪个程序驻留在主存中。
此外还希望通过提供一个巨大的就绪进程池,能够把活动进程换入和换出主存,以便使处理器的利用率最大化。
在这两种情况下,进程在主存中的确切位置是不可预知的。
7.6内部碎片和外部碎片有什么区别?
内部碎片是指由于被装入的数据块小于分区大小而导致的分区内部所浪费的空间。
外部碎片是与动态分区相关的一种现象,它是指在所有分区外的存储空间会变成越来越多的碎片的。
7.7逻辑地址、相对地址和物理地址间有什么区别?
逻辑地址是指与当前数据在内存中的物理分配地址无关的访问地址,在执行对内存的访问之前必须把它转化成物理地址。
相对地址是逻辑地址的一个特例,是相对于某些已知点(通常是程序的开始处)的存储单元。
物理地址或绝对地址是数据在主存中的实际位置。
习题7.2
考虑使用大小相等分区的固定分区方案。
分区大小为2e16字节,贮存的大小为2e24字节。
使用一个进程表来包含每一个进程对应的分区。
这个指针需要多少位?
答:
分区的数量等于主存的字节数除以每个分区的字节数:
224/216=28.需要8个比特来确定一个分区大小为28中的某一个位置。
7.5动态分区的另一种放置算法是最坏适配,在这种情况下,当调入一个进程时,使用最大的空闲存储块。
该方法与最佳适配、首次适配、邻近适配相比,优点和缺点各是什么?
它的平均查找长度是多少?
一种对最佳适配算法的评价即是为固定分配一个组块后和剩余空间是如此小以至于实际上已经没有什么用处。
最坏适配算法最大化了在一次分配之后,剩余空间的大小仍足够满足另一需求的机率,同时最小化了压缩的概率。
这种方法的缺点是最大存储块最早被分配,因此大空间的要求可能无法满足。
7.6如果使用动态分区方案,下图所示为在某个给定的时间点的内存配置:
阴影部分为已经被分配的块;
空白部分为空闲块。
接下来的三个内存需求分别为40MB,20MB和10MB。
分别使用如下几种放置算法,指出给这三个需求分配的块的起始地址。
a.首次适配
b.最佳适配
c.临近适配(假设最近添加的块位于内存的开始)
d.最坏适配
a.40M的块放入第2个洞中,起始地址是80M.20M的块放入第一个洞中.起始地址是20M.10M的块的起始地址是120M。
b.40M,20N,10M的起始地址分别为230M,20M和160M.
c.40M,20M,10M的起始地址是80M,120160M.
d.40M,20M,10M,的起始地址是80M,230M,360M.
7.13分页系统中的虚地址a相当于一对(p,w),其中p是页号,w是页中的字节号。
令z是一页中的字节总数,请给出p和w关于z和a的函数。
关系是:
a=pz+w,其中p=∟a/z,a/z的整数部分。
w=Rz(a),a除以z的余数
7.14在一个简单分段系统中,包含如下段表:
起始地址
长度(字节)
660
248
1752
442
222
198
996
604
对如下的每一个逻辑地址,确定其对应的物理地址或者说明段错误是否会发生:
a.0,198
b.2,256
c.1,530
d.3,444
e.0,222
a.段0定位在660,所以我们有物理地址660+190=858.
b.222+156=378
c.段1长度为422,所以会发生错误
d.996+444=1440
e.660+222=882.
8.1简单分页与虚拟分页有什么区别?
简单分页:
一个程序中的所有的页都必须在主存储器中程序才能正常运行,除非使用覆盖技术。
虚拟内存分页:
不是程序的每一页都必须在主存储器的帧中来使程序运行,页在需要的时候进行读取。
8.3为什么在使用虚拟内存时,局部性原理是至关重要的?
可以根据局部性原理设计算法来避免抖动。
总的来说,局部性原理允许算法预测哪一个当前页在最近的未来是最少可能被使用的,并由此就决定候选的替换出的页。
8.7驻留集管理和页替换策略有什么区别?
驻留集管理主要关注以下两个问题:
(1)给每个活动进程分配多少个页帧。
(2)被考虑替换的页集是仅限在引起页错误的进程的驻留集中选择还是在主存中所有的页帧中选择。
页替换策略关注的是以下问题:
在考虑的页集中,哪一个特殊的页应该被选择替换。
8.11驻留集和工作集有什么区别?
一个进程的驻留集是指当前在主存中的这个进程的页的个数。
一个进程的工作集是指这个进程最近被使用过的页的个数。
习题8.1
假设在处理器上执行的进程的也表如下所示。
所有数字均为十进制数,每一项都是从0开始记数的,并且所有的地址都是内存字节地址。
页尺寸为1024个字节。
虚拟页号
有效位
访问位
修改位
页帧号
7
2
—
3
5
a.描述CPU产生的虚拟地址通常是如何转化成一个物理主存地址的。
b.下列虚拟地址对应于哪个物理地址(不用考略页错误)?
(i)1052
(ii)2221
(iii)5499
解答
a:
由虚拟地址求得页号和偏移量,用虚拟页号作为索引页表,得到页帧号,联系偏移量得到物理地址
b:
(i)1052=1024+28查表对应的页帧号是7,因此物理地址为7*1024+28=7196
(ii)2221=2*1024+173此时出现页错误
(iii)5499=5*1024+379对应的页帧号为0因此物理地址是379
8.2考虑一个使用32位的地址和1KB大小的页的分页虚拟内存系统。
每个页表项需要32位。
需要限制页表的大小为一个页。
a.页表一共需要使用几级?
b.每一级页表的大小是多少?
提示:
一个页表的大小比较小。
c.在第一级使用的页较小与在最底下一级使用的页较小相比,那种策略使用最小个数的页?
虚拟内存可以分为232/210=222页,所以需要22个bit来区别虚拟内存中的一页,每一个页表可以包含210/4=28项,因此每个页表可以包含22bit中的8个bit,所以需要三级索引。
b:
第二级页表有28个页表项,第一级页表有26个页表项。
c:
如果顶层有26个页表项将会减少使用空间,在这种情况下,中间层页表有26个并且每个都有28个页表项,底层有214个页并且每个都有28个页表项,因此共有1+26+214页=16,449页。
如果中间层有26个页表项,那么总的页数有1+28+214页=16,641页。
如果底层有26个页表项,那么总的页表数是1+28+216页=65,973页。
一个进程分配给4个页帧(下面的所有数字均为十进制数,每一项都是从0开始计数的)。
上一次把一页装入到一个页帧的时间,上一次访问页帧中的页的时间,每个页帧中的虚拟页号以及每个页帧的访问位(R)和修改位(M)如下表所示(时间均为从进程开始到该事件之间的时钟时间,而不是从事件发生到当前的时钟值)。
页帧
加载时间
访问时间
R位
M位
60
161
130
160
26
162
20
163
当虚拟页4发生错误时,使用下列内存管理策略,哪一个页帧将用于置换?
解释原因。
a.FIFO(先进先出)算法
b.LRU(最近最少使用)算法
c.Clock算法
d.最佳(使用下面的访问串)算法
e.在页错误之前给定上述内存状态,考虑下面的虚拟页访问序列:
4,0,0,2,4,2,1,0,3,2
如果使用窗口大小为4的工作集策略来代替固定分配,会发生多少页错误?
每个页错误何时发生?
a:
页帧3,在时间20加载,时间最长。
页帧1,在时间160访问距现在时间最长。
c:
清除页帧3的R位(最早加载),清除页帧2的R位,(次最早加载),换出的是页帧0因为它的R位为0。
d:
换出的是页帧3中的虚拟页3,因为它将最晚被访问到。
e:
一共有6个错误,如下
8.12考虑一个进程的页访问序列,工作集为M帧,最初都是空的。
页访问串的长度为P,包含N个不同的页号。
对任何一种页替换算法,
a.页错误次数的下限是多少?
b.页错误次数的上限是多少?
a.N
b.P
8.18考虑一个分页式的逻辑地址空间(由32个2KB的页组成),将它映射到一个1MB的物理内存空间。
a.该处理器的逻辑地址空间格式是什么?
b.页表的长度和宽度是多少(忽略“访问权限”位)?
c.如果物理内存空间减少了一半,则会对页表有什么影响?
a.
页码(5)
偏移量(11)
b.32个页表项长,每个页表项9个bits宽
c.如果页表项还是32个且页大小不变,那么每个页表项变为8bits宽
第9章作业
ReviewQuestions
9.1Brieflydescribethethreetypesofprocessorscheduling.
9.3Whatisthedifferencebetweenturnaroundtimeandresponsetime?
9.5Whatisthedifferencebetweenpreemptiveandnonpreemptivescheduling?
Problems
9.3Provethat,amongnonpreemptiveschedulingalgorithms,SPNprovidestheminimumaveragewaitingtimeforabatchofjobsthatarriveatthesametime.Assumethattheschedulermustalwaysexecuteataskifoneisavailable.
9.16Fivebatchjobs,AthroughE,arriveatacomputercenteratessentiallythesametime.Theyhaveanestimatedrunningtimeof15,9,3,6,and12minutes,respectively.Their(externallydefined)prioritiesare6,3,7,9,and4respectively,withalowervaluecorrespondingtoahigherpriority.Foreachofthefollowingschedulingalgorithms,determinetheturnaroundtimeforeachprocessandtheaverageturnaroundforallobs.Ignoreprocessswitchingoverhead.Explainhowyouarri