操作系统学习-练习题个人总结(六)

操作系统学习-练习题个人总结(六)

第三章 进程管理

一、第五节-进程调度-课前测试

1、错题解析

  1. 某系统中有4个进程:A、B、C、D,其运行时间分别为6ms,3ms,1ms,7ms,均在时刻0到达系统,到达的顺序为A、B、C、D,若采用短进程优先调度算法,则平均周转时间是(8ms)。

    解析:调度顺序CBAD。

  2. 某系统中有4个进程:A、B、C、D,其运行时间分别为6ms,3ms,1ms,7ms,均在时刻0到达系统,到达的顺序为A、B、C、D,若采用时间片轮转调度算法,时间片长度为3,则平均周转时间是(10.75)。

    解析:调度顺序:ABCDAD

  3. 下列选项中,提升进程优先级的合理时机有(进程刚完成I/O操作,进入就绪队列;进程长期处于就绪队列中)。

    解析:进程时间片用完(↓);进程从就绪状态转为运行状态(运行后↓);刚被V操作唤醒的进程(此时从阻塞状态转换,但还未进行例如I/O操作等准备工作,不是合适的时机);当进行进程调度时,提升就绪队列中所有进程的优先级(没有这个必要)。

2、正确知识点总结

  1. 进程调度算法采用固定时间片轮转调度算法时,如果时间片过大,就会使时间片轮转算法转化为(先来先服务)调度算法。
  2. (先来先服务调度算法)有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业。
  3. 设有4个作业同时到达系统,每个作业的执行时间均为2h,它们在一台处理器上按单道方式运行,则平均周转时间为(5)。–顺序执行
  4. 在非剥夺调度方式下,运行进程执行V原语之后,其状态(不变)。

补充:

调度性能的评价指标:CPU的利用率;系统吞吐量;周转时间和带权周转时间;响应时间;对截止时间的保证。
高级调度:作业调度或长程调度
低级调度:进程调度
中级调度:内存外存对换(为了提高内存利用率和系统吞吐量)

进程调度时机

  • 分时系统中时间片用完;
  • 当前进程本身状态发生转换:进程终止;进程等待;
  • 进程从系统调用中返回用户态;
  • 系统从中断处理中返回用户态;
  • 就绪队列中出现比当前进程优先级更高的进程;

进程调度考虑因素(如何判断一个进程调度方式设计的优缺点?)

  • 系统设计目标:批处理系统;交互式系统;实时系统;网络系统
  • 调度的公平性
  • 资源的均衡利用:各类资源的均衡利用;多个同类资源的均衡利用
  • 合理的系统开销:调度开销->运行调度算法的开销,上下文切换开销

周转时间=完成时间-提交时间
带权周转时间=周转时间/要求执行时间
非抢占–不打断;抢占-打断

进程调度算法

  • 先来先服务调度算法(FCFS):实现简单;对长作业有利,对短作业不利;平均周转时间可能较长;没有考虑任务的紧迫性。
  • 短作业(进程)优先调度算法(SJF)
    非抢占式调度:谁短谁先来/?-?/
    抢占式调度:
    ①同非抢占思路,但是会打断执行;
    ②按照剩余时间安排【使作业的平均周转时间最短】:对长作业不利(饥饿状态);对紧迫作业不利;估计运行时间不准,难以真正做到短作业(进程)优先。
  • 高响应比优先调度算法(HRRF)
    响应比=1+等待时间/要求服务时间;
    优点:首先照顾了短作业;同时也考虑了长作业的等待时间,相对比较公平。
    缺点:每次调度都需要重新计算所有作业或就绪进程的响应比,系统开销较大;常采用非抢占调度方式;不能保证紧迫型任务得到及时处理。
  • 优先级调度算法
    ①静态优先级:有可能使得低优先级的作业一直无法得到CPU。
    ②动态优先级:【简单说就是“使用了就降低,没使用或要使用就提高”】进程使用CPU超过一定数值时,降低优先级;进程I/O操作后,增加优先级;进程等待时间超过一定数值时,提高优先级。
  • 时间片轮转调度算法-交互式系统
    时间片确定:T=Nq;N为就绪队列中进程数,T为系统响应时间,q为时间片。
  • 多级队列调度算法:优先级不同的队列;各自有各自的调度算法。
  • 多级反馈队列调度算法:优先级(调度级别)不同的队列,按照优先级(就绪队列)设置不同时间片;各级就绪队列按FCFS组织,按时间片调度,每个进程被调度后运行一个当前队列的时间片长度;最后一级按时间片轮转方式组织调度;各队列间按抢占式优先级算法调度。

调度算法举例
操作系统学习-练习题个人总结(六)_第1张图片
二、第五节-进程调度-课堂测试

正确知识点总结

  1. 若每个作业只能建立一个进程,为使短作业、长作业和交互型作业用户都满意,应采用(多级反馈队列调度算法)。
  2. 现在有三个作业同时到达系统,它们所需的执行时间分别是T1、T2、T3,且T1<T2<T3,若想获得最短的平均周转时间,请你选择合适的进程调度算法,并且所得到的最短平均周转时间是((3T1+2T2+T3)/3)。–按照SJF调度算法。

三、第五节-进程调度-课后作业

1、错题解析

  1. 试给某系统设计进程调度的解决方案,期望能满足以下性能要求:①对各进程有合理的响应时间;②有较好的外部设备利用率;③能适当照顾计算量大的进程;④系统调度开销(调度算法运行时间开销)与系统中就绪进程的数量无关;⑤紧迫型任务能得到及时处理。
    请详细说明你的设计方案是如何满足上述性能要求的。

解:
进程调度算法:优先调度与时间片调度相结合的调度算法
1、当CPU空闲时,若高优先就绪队列非空,则从高优先就绪队列中选择一个进程运行,分配时间片为30ms。
2、当CPU空闲时,若高优先就绪队列二进制数为0,即就绪队列为空,则从中等优先就绪队列中选择一个进程运行,分配时间片为30ms。
2、当CPU空闲时,若高优先就绪队列、中等优先就绪队列皆为空,则从低优先就绪队列中选择一个进程运行,分配时间片为100ms。
进程状态:运行、就绪、等待;
队列结构:低、中、高优先级就绪队列;因I/O操作等待队列;紧迫进程等待队列;
为每个就绪队列设置一个二进制位,1表示存在进程,0表示就绪队列中无进程;
操作系统学习-练习题个人总结(六)_第2张图片
四、第六节-进程通信-课前测试

1、错题解析

在管道通信机制中,管道是一个普通的共享文件。(×)

解析:概念性内容。

2、正确知识点总结

  1. 在进程通信中,(高级通信)常用信件交换信息。
  2. 在消息缓冲队列通信中,消息队列属于(临界)资源。
  3. 共享存储器通信机制的最大特点是没有中间环节,因而通信效率高。(√)

补充:

通信过程:
申请共享存储分区;
将共享存储分区映射到本进程地址空间中;
进行数据读写;
解除共享存储分区映射;
删除共享存储分区;

通信方式:

  1. 客户/服务器系统通信(C/S模式)

  2. 高级通信机制:

  • 消息传递系统通信:
  1. 直接通信:send()、receiver()原语实现
  2. 间接通信:通过一个“信箱”传递信息
    信箱头:信箱名、信箱大小、创建者、存取信件指针、信件数量等
    信箱体:存放消息
    类型:私用信箱、共享信箱(用户进程);公用信箱(操作系统);
  • 管道通信
    管道:共享文件;严格先进先出,不支持文件定位;分为无名(兄弟父子进程)、有名(任意进程)两种。
    读写操作同步互斥,通信两方必须同时存在。
  • 消息缓冲队列通信
    操作系统学习-练习题个人总结(六)_第3张图片send()发送原语:
    •申请空白消息缓冲区;
    •填写该空白消息缓冲区;
    •将该消息缓冲区挂到接收进程的消息队列上。
    receiver()接收原语:
    •从接收队列中取下一个消息缓冲区;
    •将该消息缓冲区内容复制到就收区中;
    •将该消息缓冲区清空后挂到空白消息缓冲队列上。

五、第六节-进程通信-课堂测试

1、错题解析

  1. 在消息传递通信机制的直接通信方式中,其发送原语要做的工作不包括(在发送进程自己的内存空间中设置一个发送区,并将相关信息填入其中)。

    解析:都是在缓冲区进行操作队列,真正写入和读出时才会和内存有关。

  2. 在消息缓冲队列通信机制中,消息的一般形式由四个部分组成,为(发送进程名、接收进程名、消息长度、消息正文)。

    解析:概念。

  3. 关于Linux的管道通信机制,以下说法正确的是(无名管道由一组VFS对象来实现,存在于内存的高速缓存中,没有对应的磁盘映像)。

    解析:使用mkfifo()系统调用创建一个有名管道时,系统会为其建立一个i节点(与i节点无关),并同时分配若干磁盘空间以存放管道文件内容。

  4. 管道通信是利用共享文件实现的,因此管道的容量是是由系统的文件大小决定的。(×)

    解析:管道大小是系统规定的,与文件大小无关。

2、正确知识点总结

  1. 在Linux中,创建一个共享内存段的系统调用是(shmget())。
  2. Linux中能支持两台计算机之间的通信机制是(Socket)。(客户/服务器通信)

六、第七节-死锁基本概念-课前测试

1、错题解析

  1. 产生死锁的基本原因是系统资源不足和进程推进顺序非法。(√)

    解析:概念。

  2. 使用信号量的PV操作解决进程之间的同步与互斥问题时,能有效避免系统进入死锁状态。(×)

    解析:显然有些不能。

  3. 在多进程的系统中,肯定不会因为竞争内存而产生死锁。(√)

    解析:内存是可剥夺性资源。

2、正确知识点总结

  1. 当进程资源分配图中出现环路时,系统不一定发生了死锁。
  2. 多个进程共享可剥夺资源不会产生死锁。
  3. 当系统资源配置不足时,系统最终会进入死锁状态。(×)
  4. 当系统发生死锁时,至少有两个或两个以上的进程处于等待状态。
  5. 若某时刻系统中所有进程都进入阻塞状态时,我们称系统发生了死锁。(×-比如系统中3个进程,一个进程获得打印机,在等待打印操作完成;另外两个进程在等待分配打印机,都处于等待状态,但系统没有死锁)

补充:

系统资源:

  • 可重用资源
    • 可剥夺资源:处理器、主存等
    • 不可剥夺资源:打印机、磁带机、队列、文件等【死锁】
  • 消耗性资源:中断、信号、消息等【死锁】

产生死锁的必要条件:【只要有一个条件不满足,就不会形成死锁】

  • 互斥条件
  • 请求和保持条件
  • 不剥夺条件
  • 环路等待条件

处理死锁的基本方法:

  • 预防死锁
    • 破坏占有且等待条件-静态分配资源(独占);允许动态申请资源(没有资源时才可申请)
    • 破坏不可剥夺条件-要么释放自己的资源后阻塞;要么剥夺不了就阻塞
    • 破坏循环等待条件-按顺序分配资源
  • 避免死锁
    安全状态-银行家算法
  • 死锁的检测与解除
    资源分配图
    死锁检测算法-coffman

七、第七节-死锁基本概念-课堂测试

1、正确知识点总结

  1. 在多进程的系统中,肯定不会因为竞争打印机而产生死锁。(×)
  2. 在多进程的系统中,肯定不会因为竞争CPU而产生死锁。(√)【可剥夺资源】

八、第七节-处理死锁的方法-课堂测试

1、错题解析

  1. 某时刻系统的资源分配图如下图所示,请判断系统是否发生死锁。(P1、P2和P3都发生死锁)
    操作系统学习-练习题个人总结(六)_第4张图片
    解析:去除“不独立且不阻塞的进程”,显然图中没有,存在死锁。

  2. 如果系统中只有一个临界资源,同时有很多进程要竞争该资源,那么系统(一定不会)发生死锁。

    解析:用就用,不用就不用,不存在同时用活同时等待的情况。

2、正确知识点总结

  1. 设系统中仅有一类数量为M的独占型资源,系统中有N个进程竞争该类资源,其中每个进程对该类资源的最大需求数量为W,当M、N、W分别去下列值时,可能出现死锁的情况是(6;3;3)。【当N*(W-1)+1≤M时,系统不会发生死锁】
  2. 某系统中有4个并发进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是(13)个。
  3. 系统中有13台打印机,N个进程共享打印机资源,每个进程要求3台。当N的取值不超过(6)时,系统不会发生死锁。
  4. 采用资源剥夺法可以解除死锁,还可以采用(撤销进程)方法解除死锁。
  5. 在某一时刻,进程P1和P2已执行或将执行下列关于临界资源的操作序列:P1已申请到资源S1,申请资源S2,释放资源S1;P2已申请到资源S2,申请资源S1,释放资源S2,系统继续并发执行P1和P2。若进程申请不到所需要的资源时阻塞,则系统将(必定产生死锁)。

九、第八节-线程基本概念-课堂测试

1、正确知识点总结

  1. 内核级线程的切换都需要内核的支持。
  2. 键盘是低速的独占设备,一段时间内通常为当前占据终端的应用服务。
  3. 若某个进程拥有10个用户级线程,系统进程调度采用时间片轮转调度算法,则每当该进程被调度运行时,这些线程执行时间上占用(1)个时间片。
  4. 采用纯用户级多线程策略时,处理器调度的对象是(进程)。
  5. 操作系统中引入线程的概念后,一个进程可以包含多个线程,每个线程都有自己独立的地址空间。(×)
  6. 属于同一个进程的用户级线程运行结束后,那么同一个进程的其他用户级线程还可以占有CPU运行,直到时间片用完。(√)
  7. 由一个进程中的线程切换到另一个进程中的线程时,一定需要操作系统内核的参与。
  8. 线程机制中,一个进程可以包含多个线程;一个线程也可以属于多个进程。(×)
  9. 对于纯用户级线程,其调度是由运行在用户态下面的线程库来完成的,因此两个纯用户级线程的切换将不会引起进程的切换。(×)

补充:

**线程:**线程是隶属于进程的一个实体,是比进程更小的一个运行单位。
操作系统学习-练习题个人总结(六)_第5张图片线程与进程的比较
调度:线程是CPU的调度单位;进程是独立调度和分派的基本单位
并发性:皆可
资源:进程是资源分配和拥有单位,线程基本不拥有资源,同一进程中所有线程共享进程所拥有的资源
系统开销:线程 < 进程

线程的实现机制

  • 用户级线程
    优点:线程的调度及切换开销小;线程调度由应用程序完成,可以选择最适当的算法;可运行在任何操作系统上。操作系统学习-练习题个人总结(六)_第6张图片 - 内核级线程
    优点:对多处理器,核心可以同时调度同一进程的多个线程;阻塞是在线程一级完成;核心例程是多线程的;
    缺点:同一进程内的线程切换调用内核,系统开销大。
    操作系统学习-练习题个人总结(六)_第7张图片 - 组合方式
    多对一模型:
    优点:线程管理开销小,效率高;
    缺点:线程系统调用时,将导致所属进程阻塞;核心只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上;
    操作系统学习-练习题个人总结(六)_第8张图片一对一模型:
    优点:线程系统调用时,仅阻塞线程;能获得多处理器的好处;
    缺点:线程管理开销大;
    操作系统学习-练习题个人总结(六)_第9张图片多对多模型:
    优点:线程系统调用时,仅阻塞线程;能获得多处理器的好处;线程管理开销不至于增加太大
    操作系统学习-练习题个人总结(六)_第10张图片

你可能感兴趣的:(操作系统)