进程管理
处理器调度
作业调度
- 先来先服务:按照进入就绪队列的先后顺序分配处理机
- 短作业优先:就绪队列中最快完成的作业获得处理机
- 优先级调度:就绪队列中优先级最高的作业获得处理机(分抢占式和非抢占式)
- 高响应比优先:考虑作业的等待时间和运行时间,高响应比作业获得处理机。响应比=(作业等待时间+估计运行时间)/估计运行时间
进程调度
- 先来先服务:同上
- 短作业优先:同上
- 优先级调度:同上
- 时间片轮转调度:适用于分时系统,就绪队列的所有进程依次获得处理机并执行相等的时间(时间片)后进入就绪队列队尾
- 多级反馈队列调度:综合时间片轮转调度和优先级调度,设置多个就绪队列,优先级依次降低。新进程先进入第一队列队尾,如果在一个时间片内未完成,则进入第二个就绪队列队尾,依次向下。(就绪队列优先级越高,时间片越短)
死锁
死锁的避免
- 银行家算法:根据已有的表格数据和资源确定是否可以找到一个安全序列,如果进程P获得资源后能够运行完,则将P所占有的资源回收到可用资源中。
内存管理
基础内存管理
连续分配管理方式
-
单一连续分配:
原理:将内存分为两个区域,一个分配给操作系统。另一个分配给用户作业。
缺点:只适用于单用户、单任务的操作系统,内存中只装入一道作业,会产生内部碎片。 -
固定分区分配:
原理:将内存分为多个固定大小的分区(大小可不等,但大小事先确定,运行时不可改变),采用静态重定位方式将程序装入内存。
缺点:不能实现多个进程共享一个内存区,会产生内部碎片。 -
动态分区分配
- 首次适应(First Fit,FF):每次为进程分配内存时都从队首开始找,顺着链表找到足够大的空闲分区。
- 下次适应(Next Fit,NF):又称循环首次适应,将队列改成循环队列,在FF的基础上每次从上次找到的空闲分区的下一个分区开始找。
- 最佳适应(Best Fit,BF):将空闲分区按容量递增的顺序排列,每次将满足空间大小的最小的空闲分区分配给作业,会产生很多碎片空间。
- 最差适应(Worst Fit,WF):将空闲分区按容量递减的顺序排列,每次将满足空间大小的最大的空闲分区分配给作业
非连续分配管理方式(离散)
-
分页存储
原理:将作业地址空间分为多个大小相等的区域,成为页。主存的存储空间也分为大小相等的存储区域,成为块。将程序的页放到任意的块中,并构建页表(由页号和块号组成,反映页号和块号的一一对应关系)。
注意事项:页号P=(int)(A/L) ;页内位移W=A%L (页面大小L,页表长度M,逻辑地址A,物理地址E)
常规情况下存取一个数据需要访问两次内存,引入块表机构(TLB)后在命中的情况下只访问一次内存。分页存储不会产生外部碎片 -
分段存储
原理:将作业的地址空间分为若干个逻辑段,每个分段都有自己的名字,都从0开始编址。每一个进程都有一个段表(由段号,段长,该段内存起始地址组成)。分段存储不会产生内部碎片 -
段页式存储
原理:在分段存储的基础上,将每一段又分为若干个页。不会产生外部碎片但会产生内部碎片。
虚拟内存管理
页面置换算法
- 最佳置换(Optimal,OPT):每次都淘汰以后不会再使用或以后最迟使用的页面。由于无法实现,只能作为衡量置换算法优劣的标准
- 先进先出(First Input First Output,FIFO):每次淘汰最先进入内存的页面。
- 最近最少使用(Least Recently Used,LRU):每次淘汰最长时间没有被使用过的页面。需要借助寄存器组和栈且效率最接近OPT。
- 时钟置换(CLOCK):又称最近未使用(NRU),为每个页面设置一个访问位,当访问链中存在所请求的页时,该页访问位置为1,指针不变,否则,指针从上次被淘汰的页面的下一个位置开始循环遍历,当指针指向的页面访问位为1时,则将其清零,如果访问位为0,则淘汰此页面。
- 改进型时钟置换:为每个页面添加记录其是否被更改的修改位,淘汰顺序:① 访问位=0 修改位=0, ② 访问位=1 修改位=0,③ 访问位=0 修改位=1,④ 访问位=1 修改位=1。
- 最不常用置换(Least Frequently Used,LFU):每次淘汰到当前时间为止访问次数最少的页面。
- 页面缓冲算法(Page Buffering Algorithm,PBA):空闲页面和已修改的页面会在内存中停留一段时间,为了减少IO次数,当修改页达到一定数目后再一起写入磁盘。
文件管理
磁盘调度算法
-
先来先服务(First Come First Service):按进程请求访问磁盘的先后顺序进行调度。
-
最短寻道时间优先(Shortest Seek Time First,SST F):选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。
-
扫描/电梯调度(SCAN):服务在磁头当前移动方向上距离磁头最近的请求。
-
LOOK调度:在SCAN基础上,当磁头运动方向上无请求时立即改变运动方向。
-
循环扫描(C-SCAN):磁头移动到最外侧磁道时立即返回到最里磁道,循环扫描。
-
C-LOOK调度:在C-SCAN基础上,当磁头运动方向上无请求时立即返回最里磁道。
注:无特别说明的话,题目中的SCAN和C-SCAN指的就是LOOK和C-LOOK。
文章参考《2020王道操作系统》和《2020操作系统高分笔记-天勤》
原文地址:https://www.jhxblog.cn/article/?articleid=11