第二章 进程
-
在操作系统中为什么要引入进程的概念?
引入进程的概念是为了更好的区分程序与运行中的程序
在多道程序设计中, 并发执行的程序共享系统资源, 相互制约, 程序的实际执行过程并不是一气呵成的, 具有动态特性, 所以引入进程的概念来区分静态的程序与动态的进程 -
比较程序与进程的区别与联系。
- 程序是静态的概念, 是指令在存储器上的有序集合, 而进程是动态的, 是程序在处理机行一次执行的过程
- 程序是永久性的, 而进程具有一定的生命周期
- 程序与进程相互对应, 一个程序可以对应多个进程, 但是一个进程只能关联一个程序
-
PCB的作用具体表现在哪几个方面?
PCB用于保存每一个进程和相关资源的信息, 便于操作系统管理进程与资源, 同时操作系统也仅通过PCB控制管理进程
-
PCB提供了进程管理和进程调度所需要的哪些信息?
进程标识符, 处理机状态, 进程调度信息, 进程控制信息
-
操作系统内核的主要功能是什么?
存疑…
线程调度, 中断与异常处理, 内存管理, 文件管理, 设备管理, 网络管理
-
在进程切换时,所要保存的处理机状态信息有哪些?
进程当前的暂存信息, 下一条指令的地址, 进程状态信息, 过程&系统调用参数与调用地址信息
-
创建一个进程所要完成的主要工作是什么?
- 操作系统调用进程创建原语
- 申请创建空白PCB
- 为进程分配资源
- 初始化PCB
- 将新进程加入就绪队列
-
为什么要在OS中引入线程?
引入线程的主要因素是为了减少系统开销, 因为线程切换比进程切换所需的时空开销更小, 提升了系统的并发性
-
为什么要引入进程同步?
由于在现代操作系统中, 程序通常是并发的, 当协同进程对共享数据进行访问时, 很可能出现数据不一致的问题, 进程同步主要用于保证数据的一致性
-
多线程模型有哪几种类型?
多对一模型: 多个用户级线程对应到一个内核级线程
一对一模型: 每个用户级线程对应一个内核级线程
多对多模型: n个用户级线程对应m个内核级线程, 且m<=n
第三章 处理机调度 作业
-
处理机调度算法的共同目标是什么? 批处理系统的调度目标又是什么?
处理机调度算法的共同目标: 资源利用率, 公平性, 平衡性等
批处理系统的调度目标: 平均周转时间段, 系统吞吐率高, 处理机利用率高
-
为什么要引入高响应比优先调度算法? 它有何优点?
为了综合FCFS与SJF调度算法的优点而引入了高响应比优先调度算法, 其有利于短作业的同时, 又能兼顾到长作业, 避免了SJF中长作业的饥饿问题
-
在选择调度方式和调度算法时,应遵循的准则是什么?
面向用户准则: 平均周转时间短, 响应速度快, 截止时间的保证, 优先权原则
面下系统准则: 系统吞吐率高, 处理机利用率高, 各类资源平衡利用
-
何谓静态和动态优先级? 确定静态优先级的依据是什么?
静态与动态优先级的区别在于创建进程后, 进程的优先级是否可变, 可变的优先级意味着更好的调度性能
静态优先级的确认原则:
系统进程>用户进程, 交互式进程>非交互式进程(后台进程), IO型进程>计算性进程 -
试比较FCFS和SJF两种进程调度算法。
FCFS算法较为简单, 但效率较低, 对长作业有利, 但是不利于短作业, 对CPU繁忙型作业有利, 对IO繁忙型作业不利
SJF算法具有最少的平均等待时间与平均周转时间, 对短作业有利, 但长作业不利, 可能导致饥饿现象
-
为什么说多级反馈队列调度算法能较好地满足各方面用户的需要?
多级反馈队列的优点兼顾了各个方面的需求:
对于终端型用户, 为短作业优先
对于短批处理作业用户, 周转时间较短
对于长批处理作业用户, 长作业在经过前面几个队列后得到部分处理, 不会饥饿 -
为什么说传统的几种调度算法都不能算是公平调度算法?
传统的几种算法都仅仅满足了部分调度需求, FCFS不利于短作业和IO型作业, SJF不利于长作业与紧迫型作业, PSA优先级算法不利于优先权低的作业, RR时间片轮转算法不利于紧迫作业
-
按调度方式可将实时调度算法分为哪几种?
- 非抢占式:
又细分为轮转调度算法与优先权调度算法 - 抢占式:
细分为基于时钟中断的抢占式优先权调度算法与立即抢占的优先权调度算法
- 非抢占式:
-
什么是最早截止时间优先调度算法? 举例说明之。
最早截止时间优先调度算法按照任务的截止时间将就绪队列升序排序, 每次选择就绪队列中最靠前的任务执行
如任务1,2,3,4依次到达, 进入就绪队列等候, 系统按照截止时间将4个任务升序排序, 最终的执行顺序为2,3,1,4 -
何谓死锁? 产生死锁的原因和必要条件是什么?
死锁为多个进程在竞争系统资源时产生的一种僵局, 在没有外力作用的情况下无法自解
死锁的原因主要在于资源的竞争与资源的释放, 当系统的资源不足以满足进程需求且系统对于资源的释放顺序不当时, 可能发生死锁
死锁的必要条件:
- 资源的排他性使用
- 进程持有资源的同时又对其他资源发出请求
- 进程持有的资源在使用完成前无法被剥夺
- 多个进程对资源的请求形成环路
-
在解决死锁问题的几个方法中,哪种方法最易于实现? 哪种方法使资源利用率最高?
解决死锁问题可以从4个方面入手: 预防, 避免, 检测, 解除, 其中预防死锁最容易实现, 而避免死锁使得资源利用率最高
-
- 能够找到一个安全序列(p0, p3 p4 p1 p2), 所以系统是安全的