zoukankan      html  css  js  c++  java
  • 操作系统期中复习思考题

    本文主要适用于计算机类本科操作系统课程的期中考试。

    1. 操作系统分层设计/按模块设计
      分层设计定义层次结构和接口,每个层次建立在下层的基础上。构建和调试简单,难以对层次做准确的定义,层次间交互关系错综复杂,调用开销大。
      按模块设计用面向对象技术,将系统设计为一个核心内核和若干个可加载的内核模块。能动态实现特定功能,比分层系统更加灵活,比微内核更加高效(不需要消息传递)。
    2. 微核
      微内核最大限度地将功能从内核移到服务模块,实现了清晰的分离,具有良好的弹性,方便扩展,可靠安全,也面临巨大的切换/通信开销。
    3. 用户模式/内核模式,模式位的作用
      内核态下可以运行用户态下无法运行的特权指令,通常用户进程运行在用户态,处理系统调用、异常、中断时进入内核态。
      模式位标识了当然是运行在用户态还是内核态。
    4. 线程/进程/程序
      程序是被动实体,通常是可执行文件;进程是活动实体,是程序的一次执行过程,当可执行文件被载入内存,程序才能称为进程。线程是程序执行流的最小单元,进程通常包含多个线程。
      进程与线程的比较:调度;系统资源分配;并发;系统开销;地址空间;通信。
    5. 多道程序设计及其作用
      在内存中同时装载若干道程序并发执行,共享系统中的各种资源。
      作用:具有宏观上并行的特点,使OS能更好地实现管理,使硬件资源得到更充分的利用。
    6. 短期调度/中期调度/长期调度
      进程调度:从就绪队列中选取一个进程,将处理机分配给它,几十毫秒一次。
      内存调度:将暂时不能运行的进程调到外存等待(挂起),具备运行条件的进程在内存有空闲时重新调入内存。
      作业调度:从外存中处于后备状态的作业中选取一个或多个给它分配内存。
      关系:进程调度是必须的;作业调度为进程活动做准备;频率差异。
    7. 什么时候应该进行进程切换?什么时候不应该?
      应该:引起调度条件,或当前进程无法运行下去;中断或陷阱处理结束。
      不应该:处理中断过程中;处于内核程序临界区内;处于需要屏蔽中断的原子操作中。
    8. 上下文切换的时候发生了什么
      Hdw save u-regs(A) to k-stack(A)
      OS save k-regs(A) to PCB(A)
      OS switch to procB
      OS restore k-regs(B) from PCB(B)
      Hdw restore u-regs(B) from k-stack(B)
    9. 共享内存/消息传递
      共享内存:通过对一块可直接访问的共享空间的读写,OS提供存储空间和同步互斥工具。
      消息传递:通过OS提供的发送/接收原语,操作消息缓冲队列。
      消息传递适用于少量信息,便于实现。共享内存虽然快,但面临缓存一致性问题,不适用于多处理器系统。
    10. 多线程的优点
      响应度高,资源共享,开销小,充分利用多处理器。
    11. 多线程模型
      多对一:效率高;集体阻塞,不适用多处理器。
      一对一:并发能力强;开销大。
      多对多:并发度高,同时开销不大。
    12. 评价进程调度的标准
      CPU利用率,吞吐量,周转时间,等待时间,响应时间。
    13. 各种调度算法的优缺点?
      FCFS:简单,效率低,短作业护航。
      SJF:长作业饥饿,未考虑紧迫程度,估计时间不准。
      PRIO:低优先级可能饥饿。
      HRRN:别人家的孩子。
      RR:公平、公平、公平,响应时间短,周转时间长,片小开销大,片大退化。
      PSJF:周转时间短,响应时间长。
      MLQ:级别固定。
      MLFQ:兼顾周转时间和响应时间,具有自适应性。对终端型表现为SJF,对短批表现为周转时间优化,对长批保证不会饥饿。
      FCFS和SJF可靠性差,PRIO适合实时OS,HRRN,RR,MLFQ适合分时OS。
    14. 剥夺调度/非剥夺调度
      剥夺调度会一直让进程运行到终止或阻塞才切换,而剥夺调度在有更重要更紧迫的进程进入时就切换进程。
      剥夺调度能提高系统吞吐率和响应效率,非剥夺调度能够避免竞态条件出现。
    15. 为什么要区分CPU密集和IO密集程序
      作业调度器希望引入混合的CPU-BOUND和I/O-BOUND程序,使得硬件资源得以充分利用。
    16. 临界区问题是什么?与同步问题的不同?解决临界区问题的三个要求?
      设计协议实现进程对临界区(当一个进程在临界区内执行时,不允许其它进程进入邻接区)的访问。
      同步问题是两个进程间的相互等待。
      互斥访问,空闲让进,有限等待。
    17. 为什么自旋锁不适合单处理器系统而适合多处理器系统
      自旋锁(内核态,高优先级)打破条件只可能在执行一个不同的进程时完成,而在单处理器系统中这是不可能发生的。
    18. 忙等是什么?在什么时候是我们想要的什么时候又不是
      通过循环等手段反复检查一个条件是否为真。
      对偶尔发生的或者时间较短的适合使用忙等(没有上下文切换),否则应采用信号量等同步机制阻塞等待替换以节约CPU资源。

    UPD: 判断第二题后来 T 和 F 都算对了

    UPD:我第五个简答写的有些问题的……另外不用写这么多字,点到为止即可

  • 相关阅读:
    node path.resolve()和path.join()
    完美替代postman的接口测试工具—— apipost
    localforage indexedDB如何使用索引
    ApiPost V5 升级指南
    Chrome升级到91版本以上后Cookies SameSite问题,IdentityServer4登录不上问题?
    React直接调用Bootstrap的方案
    Golang的module模式下项目组织结构
    Linux部署SpringBoot项目jar包,输出日志到文件并追踪
    mybatis plus 查询语句
    springboot 引入AOP 切面 @Aspect 注解使用
  • 原文地址:https://www.cnblogs.com/mollnn/p/14747400.html
Copyright © 2011-2022 走看看