操作系统习题

主要做一个整理

1.1、在多道程序和分时环境中,多个用户同时共享一个系统,这种情况导致多种安全问题。a. 列出此类的问题 b.在一个分时机器中,能否确保像在特殊用途系统中一样确认同样的安全程序,并解释之

先简单的介绍下分时系统,分时是指多个用户分享使用同一台计算机。多个程序分时共享硬件和软件资源。分时操作系统是指在一台主机上连接多个带有显示器和键盘的终端,同时允许多个用户通过主机的终端,以交互方式使用计算机,共享主机中的资源。分时操作系统是一个多用户交互式操作系统,分时操作系统是利用时间片,轮转对多个用户进行服务

分时系统的四个特点:

  • 1、多路性。允许一台主机上联接多台终端,系统按分时原则为每个用户服务
  • 2、独立性。每个用户各占一个终端,独立操作,互不干扰
  • 3、及时性。用户的请求能在很短的时间内获得响应
  • 4、交互性。用户可通过终端与系统进行广泛的人机对话

a、会导致窃取或者复制某用户的程序或数据;没有合理的预算来使用资源(CPU,内存,磁盘空间,外围设备),b、应该不行,因为人类设计的任何保护机制都会不可避免的被另外的人所破译,而且很自信的认为程序本身的实现 是正确的是一件困难的事。

1.5、描述对称多处理(SMP)和非对称多处理之间的区别。多处理系统的有哪些优点和缺点?

SMP意味着所以处理器都对等,而且 I/O 可以在任何处理器上运行。非对称多处理有一个主处理器控制系统,与剩下的处理器是随从关系。主处理器为从处理器安排工作,而且 I/O 也只在主处理器上运行。多处理器系统能比单处理器系统节省资金,这是因为他们能共享外设,大容量存储和电源供给。它们可以更快速的运行程序和增加可靠性。多处理器系统能比单处理器系统在软、硬件上也更复杂(增加计算量、规模经济、增加可靠性)

2.3、讨论向操作系统传递参数的三个主要的方法

  • 1、通过寄存器传递参数
  • 2、寄存器传递参数块的首地址
  • 3、参数通过程序存放或压进堆栈当中,并且通过操作系统弹出堆栈

这里写图片描述

3.1、论述短期、中期、长期调度之间的区别

  • a.短期调度:在内存作业中选择就绪执行的作业,并为他们分配CPU
  • b.中期调度的核心思想就是能将进程从内存当中移出,从而降低了多道程序设计的程度,在此之后,进程还能被重新调入内存,并且从中断处继续执行,这种方案就称为交换,通过中期调度程序,进程可换出以及在后来可以被换入
  • c.长期调度程序就是去确定哪些进程会被调入到内存当中去执行的,通常对于批处理系统来说进程更多地是被提交,而不是马上去执行,这些进程就会被放到大容量存储设备的缓冲池当中,然后长期调度程序会从这个缓冲池中选取进程

批处理是指用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。这种采用批量处理作业技术的操作系统称为批处理操作系统。批处理操作系统分为单道批处理系统和多道批处理系统。批处理操作系统不具有交互性,它是为了提高CPU的利用率而提出的一种操作系统

3.2、描述一下内核在两个进程间进行上下文切换的过程

其实就是操作系统必须保存正在运行的进程的状态,恢复进程的状态,保存进程的状态主要包括CPU寄存器的值和内存分配等,每个进程在操作系统当中使用PCB来表示,PCB就是进程控制块,它包含了一个特定进程相关的信息,当进行上下文切换的时候通过执行一个状态保存来保存CPU当前状态(不管它是内核模式还是用户模式),之后执行一个状态恢复,重新开始执行

4.2、描述一下线程库采取行动进行用户级线程上下文切换的过程

用户线程之间的上下文切换和内核线程之间的相互转换是非常相似的,但它依赖于线程库和怎样把用户线程指给内核程序,一般来说,用户线程之间的上下文切换涉及到一个用户程序的轻量级进程和用另一个线程来代替,这种行为通常涉及到寄存器的使用和释放

5.1、为什么对调度程序而言,区分CPU约束程序和I/O约束程序很重要?

I/O限制的程序有在运行I/O操作前只运行很少数量的计算机操作的性质。这种程序一般来说不会使用很多的CPU。另一方面,CPU限制的程序利用整个的时间片,且不做任何阻碍I/O操作的工作。因此,我们通过给I/O限制的程序优先权和允许在CPU限制的程序之前运行,可以很好的利用计算机资源

5.5、下面哪些算法会引起饥饿

  • 先到先服务
  • 最短工作优先调度
  • 轮转法调度
  • 优先级调度算法

最短工作优先调度算法和优先级调度算法会导致饥饿

6.1、第一个著名的正确解决两个进程的临界区问题的软件方法是由Dekker设计的,两个进程P0和P1共享以下变量

boolean flag[2] /*initially false*/
int turn;

进程Pi(i==0或1)的代码结构(下面会针对代码做分析)如下所示,另一个进程为Pj(j==0或1),试证明这个算法满足临界区的三个要求

do{
flag[i]=TRUE; //表示Pi想进入临界区
while(flag[j])//如果Pj也想进入临界区就进入循环
{
  if(turn==j){ //如果已经轮到了Pj进入临界区
     flag[i]=false;//设置Pi放弃进入临界区
     while(turn==j)//直到turn=i,也就是要轮到自己Pi到达的时候
     ;//do something
     flag[i]=TRUE;//表示Pi想进入临界区了
   }
}
//critical section
turn=j; //离开临界区,轮到了Pj进入了
flag[i]=FALSE; //表示Pi不想进入临界区了
//remainder section
}while(TRUE)

这里写图片描述
6.3、忙等待的含义是什么?在操作系统中还有哪些其他形式的等待?忙等待能完全避免吗?

忙等待意味着一个进程正在等待满足一个没有闲置处理器的严格循环的条件。在操作系统中一个进程通过放弃处理器来等待,在这种情况下的块会等待在将来某个适当的时间被唤醒。忙等待能够避免,可以让一个进程处于沉睡状态,当相应程序的状态达到的时候进程又被唤醒有关

临界区的问题的解答必须满足下面三个条件

  • 1、互斥:如果进程Pi在其临界内执行,那么其他进程都不能其临界区内执行
  • 2、有空让进:如果没有进程在其临界区内执行且有进程需进入临界区,那么只有那些不在剩余区执行的进程可参加选择,以确定谁能下一个进入临界区,且这种选择不能无限推迟
  • 3、有限等待:从一个进程做出进入其临界区的请求,直到该请求被允许为止,其他进程被允许进入其临界区的次数有上限

7.6、假设系统中有四个相同类型的资源被三个进程共享。每个进程最多需要两个资源。证明这个系统不会死锁

假设该系统进入死锁,这就意味着每一个进程持有一个资源,并且正等待另一个资源。因为有三个进程和四个资源,一个进程就必须获取两个资源,这一进程完成之后就会去释放其占有的资源,然后进行释放

7.7、假设一个系统有m个相同类型的资源被n个进程共享,进程每次只请求或释放一个资源。试证明只要符合下面两个条件,系统就不会发生死锁

  • a、每个进程需要资源的最大值在1~m之间
  • b、所有进程需要资源的最大值的和小于m+n

Max(进程所需资源)< m+n,1<=Maxi(单个资源)<=m,用Needi(表示需要的资源) = Maxi-Allocationi(单个进程已经分配的资源),如果存在单个进程Allocationi=m,那么Needi + Allocationi < m + n,那么其实可以化简为Needi + m < m + n,所以Needi < n

所以如果存在一个Pi进程,其Needi=0,如果Maxi>=1,那么Pi进程至少有一个资源可以释放,从而系统就不会进入死锁状态

这里写图片描述

a、Need矩阵分别为P0(0 0 0 0),P1(0 7 5,0),P2(1 0 0 2),P3(0 0 2 0),P4(0 6 4 0)
b、系统处于安全状态,因为Available矩阵等于(1 5 2 0),进程P0和P3都可以运行,当进程P3运行完时,它释放它的资源,而允许其他进程执行
c、可以被满足,满足之后,Available矩阵等于(1 1 0 0),当以次序P0、P2、P3、P1、P4运行时候,可以完成运行

8.1、解释内部碎片和外部碎片的区别

内部碎片是某一区域或某一页中,未被占据其位置的作业所使用的区域。知道作业完成,释放页或区域,这个空间才能被系统所利用,外部碎片指的是还没有被分配出去(不属于任何进程),但是太小了,无法分配给申请内存空间的新进程

8.2、如果有内存块100KB、500KB、200KB、300KB、600KB(按顺序),首次适应算法、最佳适应算法、最差适应算法各自将怎样放置大小分别为212KB、417KB、112KB、426KB(按顺序)的进程?哪一种算法的内存利用率最高?

这里写图片描述
这里写图片描述

8.9、假设一个将页表存放在内存的分页系统:

  • 如果一次内存访问需200ns,访问一页内存要用多久时间
  • 如果加入TLB,并且75%的页表引用发生在TLB,内存有效访问时间是多少?(假设在TLB中查找页表项占用零时间,如果页表项在其中。)

a、400ns,200ns是进入页表的,200ns是进入内存中的单元
b、TLB是快速内存访问单元,题目中说明了不花费查找页表入口的时间,所以在TLB当中的页表我们只需要算200ns就可以了,所以时间 = 0.75*200ns + 0.25 * 400ns = 250ns

这里写图片描述

设页错误发生率为P,总的时间 = 发生页错误的访问时间+发生页错误的处理时间,设有发生页错误的访问时间为(1-P)*存储器存取时间,发生页错误的处理时间:(30%*P)*8ms+(70%*P)*20ms

200ns = (1-P)*100ns + (30%*P) * 8ms + (70%*P) *20ms
0.2 = (1-P)*0.1 + 0.3P*8000 + 0.7P*20000
0.1 = -0.1P + 2400P + 14000P
0.116400P
P≈0.000006

这里写图片描述

从题目中可以看出从分页磁盘的时间利用率可以看出97.7%,我们可以得出,该系统显然花费了许多时间进行分页,显示过度分配的内存,出现了颠簸,出现颠簸的原因就在于CPU调度程序发现CPU使用率降低,因此会增加多道程序的程度。新进程试图从其他运行进程中拿到帧,从而引起更多页错误,形成更长的调页设备的队列,所以CPU使用率进一步降低,CPU调度程序试图再增加多道程序的程度,这样就会出现了系统颠簸

这里写图片描述

A、CPU利用率只有20%,所以CPU已经很空闲了,再快其实就没有意义了
B、分页磁盘再增大的话,就会有更多的页,如果存储更多的页,那么就会浪费更多的时间在寻址上
C、D是可以的提高多道程序、降低多道程序的程度
E、因为有更多的地方可以用来保存缓冲的页面,有更多的页面保持驻地,因此在内存的页面访问命中率就会增加,可能提高CPU利用率
F、更快的磁盘,CPU将会获得更多的数据传输速率
G、如果采取预调页算法的话,那么CPU在访问有些页的时候就不需要再去磁盘中调度了,而是直接从内存中调度
H、如果数据访问是顺序进行的,增加页面大小将会减少页面错误,因为每一页的内容增加了,可读取更少的页来获取更多的内容,但是,如果数据访问是随机的,当发生页错误需要调入页的时候,增加页面的大小反而会浪费更多的时间在调入页面上

这里写图片描述

80%是TLB命中的,所以只需要内存访问1μs,剩下20%就是去进行页访问的,不缺页就要进行2μs,如果10%缺页就是使用20μs需要装入页表,2μs就是通过页表进行访问

20毫秒(ms)=20000微秒(μs)

有效访问时间 = (0.8)(1μs) + (0.18)(2μs) + (0.02)*(20002μs) = 401.2μs

9.15、颠簸的原因是什么?系统怎样检测颠簸?一旦系统检测到颠簸,系统怎么样来消除这个问题

分配的页数少于进程所需的最小页数时发生颠簸,并迫使它不断地页错误。该系统可通过对比多道程序的程度来估计 CPU 利用率的程度,以此来检测颠簸

降低多道程序的程度可以消除颠簸

这里写图片描述

FCFS的调度是143、86、1470、913、1774、948、1509、1022、1750、130,总寻求的距离是7081
SSTF的调度是143、130、86、913、948、1022、1470、1509、1750、1774,总寻求距离是1745
SCAN的调度是143、913、948、1022、1470、1509、1750、1774、4999、130、86,总寻求距离是9769
LOOK的调度是143、913、948、1022、1470、1509、1750、1773、130、86,总寻求的距离是3319
C-SCAN的调度是143、913、948、1022、1470、1509、1750、1774、4999、86、130,总寻求距离9813
C-LOOK的调度是143、913、948、1022、1470、1509、1750、1774、86、130,总寻求距离3363

  • 9
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值