首页 > 技术文章 > 操作系统概念大纲

Java-Starter 2018-08-28 10:11 原文

第三章 进程

3.1 概念

进程是活动实体,包括当前活动,通过程序计数器的值和处理器寄存器的内容来表示

3.2 进程状态

  • 新的:进程正在被创建
  • 运行:指令正在被执行
  • 等待:进程等待某个事件的发生
  • 就绪:进程等待分配处理器
  • 终止:进程完成执行

第五章 CPU调度

5.1 先到先服务调度

先到先服务算法(first-come,first-served(FCFS) Scheduling algorithm),先请求CPU的进程先分配到CPU

缺点:平均等待时间过长

5.2 最短作业优先调度

最短作业优先调度算法(shortest-job-first (SJF) scheduling algorithm)

当CPU为空闲时,它会赋给具有最短CPU区间的进程。如果两个进程具有同样长度,那么可以使用FCFS调度来处理

平均等待时间最少

考虑到达时间,存在抢占和非抢占两种情况

5.3 优先级调度

优先级调度算法(priority scheduling algorithm)

每个进程都有一个优先级与其关联,具有最高优先级的进程会分配到CPU。具有相同优先级的进程按FCFS顺序调度。SJF算法可作为通用优先级调度算法的一个特例

5.4 轮转法调度

轮转法(round-robin,RR)调度算法是专门为分时系统设计的。它类似于FCFS调度,但是增加了抢占以切换进程。定义一个较小时间单元,称为时间片(time slice)

将就绪队列作为循环队列。CPU调度程序循环就绪队列,为每个进程分配不超过一个时间片的CPU

第七章 死锁

7.1 死锁的必要条件

互斥:至少有一个资源必须处于非共享模式,即一次只有一个进程使用。如果另一个进程申请该资源,那么申请进程必须等到该资源释放为止

占有并等待:一个进程必须占有至少一个资源。并等待另一个资源,而该资源为其他进程所占有

非抢占:资源不能被强占,即资源只能在进程完成任务后自动释放

循环等待:有一组等待进程{P0,P1,···,Pn},P0等待的资源为P1所占有,P1等待的资源为P2所占有,······,Pn-1等待的资源为Pn所占有,Pn等待的资源为P0所占有

4个条件必须同时满足才会出现死锁

 

图7.3 存在环,且R2的两个实例都被分配,存在死锁

图7.4 存在环,但是R2的一个实例分配给了P4,P4可能会释放掉R2的实例,这个资源可以再分配给P3,以打破环,故不存在死锁

 

7.2 死锁预防

从死锁的4个必要条件入手

互斥:为了确保这一条件不成立,需要确保:进程绝不需要等待共享资源

占有并等待:为了确保这一条件不成立,必须保证:当一个进程申请一个资源时,它不能占有其他资源

非抢占:为了确保这一条件不成立,可以使用如下协议:如果一个进程占有资源并申请另一个不能被立即释放的资源,那么其现已分配的资源都可被抢占

循环等待:为了确保这一条件不成立,对所有资源类型进行完全排序,且要求每个进程按递增顺序来申请资源

 

7.3 死锁避免

7.3.1 资源分配图算法:

消除环

7.3.2 银行家算法:

7.3.2.1 安全性算法

7.3.2.2 资源请求算法

7.3.2.3 举例

7.4 死锁恢复

  • 终止所有进程
  • 一次只终止一个进程直到取消死循环为止

 

第九章 虚拟内存

9.1 FIFO页面置换

当必须置换一页时,将选择最旧的页

9.2 最优置换

最优页置换算法(optimal page-replacement algorithm)

9.3 LRU页面置换

最近最少使用算法(least-recently-used algorithm)

推荐阅读