目录
5.掌握多道批处理OS、分时OS、实时OS的基本特性,掌握分时OS基本特点和响应时间概念和公式T=nq。
7.理解OS的基本特性及含义:并发性、共享性、虚拟性、异步性
2.复习云班课发布的录课视频(2.1操作系统接口概述,2.2Linux系统调用机制):
深入理解用户态执行库函数(如fwrite)经过系统调用write再到内核执行对应服务例程sys_write的整个详细具体过程。
3.理解PCB概念,了解PCB存储的基本信息,知道一个进程对应一个PCB,PCB是进程的唯一标志,伴随着进程的生命期存在。
8.理解进程控制操作系统内核是系统硬件的首次延伸,通过执行各种原语操作来实现对进程的控制功能(创建、调度、通讯、撤销等)。
10.理解进程上文切换的具体过程。理解切换过程中CPU现场需要保存哪些数据。
2.理解临界资源、临界区、信号量、记录型信号量(重点),了解and信号量、了解记录集信号量
3.结合实验代码理解经典的同步问题(生产者-消费者、读写问题、哲学家问题)
5.了解进程通信概念、了解高级通信和低级通信概念、了解高级通信的基本形式和基本含义,理解消息缓冲区机制。
3.理解常见处理机调度策略基本思想、特点、性能分析(时间片轮转RR--甘特图、FCFS、SJF、优先权、高响应比、抢占式、非抢占式),了解多级反馈算法,参考云班课发布的录课视频理解。
4.熟练使用时间片轮转RR--甘特图、FCFS、SJF、优先权、高响应比算法计算作业/进程的周转时间和平均周转时间。
4.理解早期动态分区内存管理原理,包括:内存分配策略(FFBFWF算法策略)、内存回收策略
6.深入理解请求分页管理原理、地址变换机构工作过程、地址变换过程(会计算虚拟地址转换为物理地址)
8.了解请求分页中的内存分配策略,包括固定分配局部置换、可变分配全局置换、可变分配局部置换的基本策略
11.理解页面置换算法策略(FIFO,OPT,LRU,CLOCK(NRU))
2.理解三种I/O控制方式的基本原理和特征,重点掌握中断和DMA控制方式
6.了解Spooling技术(假脱机技术)(基本原理和组成)。
3.深入理解这些概念:FCB、Inode、内存inode、外存inode、目录文件、目录项(FCB即目录中的一项)、盘块、扇区
4.深入理解open()系统调用作用,操作系统做了什么?fd的作用。参考录课视频理解。
1.深入理解文件外存的组织方式(连续、链接、单级索引、增量式索引的原理),重点增量式索引的原理。
2.理解文件存储空间管理策略(空闲表(链表)、位示图),重点位示图
在理解wait(s)/P(S),signal(s)/V(s)公式基础上,灵活应用多进程并发时的wait(s)signal(s)信号量s的数据变化;
生产者-消费者(单和多缓冲区)、读写问题、哲学家问题、分桔子苹果问题、get-copy-put问题模型。生产者-消费者、读写问题、哲学家问题能够结合代码理解,参考录课视频复习。
3.进程调度算法(时间片轮转RR、FCFS、SJF、优先权、高响应比),计算进程周转时间和平均周转时间
6.页面置换算法(FIFO,OPT,LRU,CLOCK(NRU))
第一章操作系统引论
1.理解操作系统的目标
方便性和有效性是设计OS的最重要两个目标。
- 方便性
- 有效性——提高系统资源利用率和吞吐量
- 可扩充性
- 开放性
2.理解OS的作用
- OS作为用户与计算机硬件系统的接口
- OS作为计算机系统资源的管理者
- OS实现了对计算机资源的抽象
3.理解操作系统的功能
- 操作系统的接口——图形接口、命令行接口、程序接口
- 进程管理——进程控制、进程调度、进程通信、进程同步
- 内存管理——内存分配、内存保护、地址映射、内存扩充
- 外设管理——缓冲管理、设备分配、设备处理
- 文件管理——文件存储空间的管理、目录管理、读写管理、权限管理
4.深入理解多道、并发OS的含义
5.掌握多道批处理OS、分时OS、实时OS的基本特性,掌握分时OS基本特点和响应时间概念和公式T=nq。
多道批处理OS、分时OS、实时OS的基本特性:
- 多道批处理OS特点:多道性、无序性、调度性
- 分时OS特点:多路性、独占性、及时性、交互性(显著特点)。
- 实时OS的基本特性:多路性、独立性、及时性、交互性、可靠性。
响应时间概念和公式T=nq:
6.了解OS设计目的
7.理解OS的基本特性及含义:并发性、共享性、虚拟性、异步性
- 并发性——多进程在同一段时间内运行(宏观上并发运行,微观上串行运行)
- 共享性——系统的资源可供内存中多个并发执行的进程共同使用
- 虚拟性——通过技术把一个物理实体变为若干个逻辑上的对应物
- 异步性——进程已不可预知的速度推进
8.理解OS的进程、内存、IO、文件、接口模块的基本功能
9.理解OS内核概念,了解什么是微内核和强内核
微内核:使内核尽量小,系统服务通过消息传递来联系。
将内核模块化设计,大部分内核都作为单独的进程,相互之间通过消息传递进行通信。
微内核的功能类似于一个消息的转发站,优点是有助于内核功能的扩展和模块间的隔离,单个模块的bug不影响整个内核,只要杀掉出问题的进程就可以了,内核稳定性高,缺点就是进程间通信肯定会影响内核的效率。
优点:开放、灵活、易扩充
强内核:(又称宏内核或单内核)包含系统服务的所有模块,模块间通过函数调用联系。
是操作系统内核架构的一种,简单理解,就是把所有要用到的东西都放到了内核里,比如:最基本的进程、线程管理、内存管理、文件系统、驱动、网络协议等等。因为所有的模块都是在内核里,但随着内核增大,管理起来也越不方便,而且只要其中一个模块出现问题,就会导致整个内核崩溃,系统的稳定性就差一些。
优点:效率高。
10.了解OS结构设计(模块、分层、微内核的基本概念)
- 模块化结构——按照操作系统的管理功能进行划分,性能高,
- 分层式结构——从资源管理的观点出发划分层次,自顶向下的分层原则,每一层的设计都是建立在可靠的基础上的,每一层只能使用底层的操作及服务
- 微内核结构——两大部分:客户和多个服务器
11.理解中断、异常基本概念
- 异常:由CPU内部产生的意外事件被称为异常;是CPU执行一条命令时,由CPU在其内部检测到的、与正在执行指令相关的同步事件。
- 中断:由来自CPU外部的设备发出的中断请求被称为中断(常用于输入输出);典型的由外部设备触发的、与当前正在执行的指令无关的异步事件
中断的引入——为了支持CPU和设备之间的并行操作(中断模型实际上是一种C/S模型)
异常的引入——表示CPU执行指令本身出现的问题
系统调用的引入——用户在编程时可以滴哦用的操作系统功能
第九章接口
1.理解内核态和用户态的概念
系统态(核心态、特态、管态):执行全部指令。
用户态(常态、目态):执行非特权指令。
用户态和内核态的转换
用户态切换到内核态的3种方式:
a. 系统调用
b. 异常
c. 外围设备的中断
2.复习云班课发布的录课视频(2.1操作系统接口概述,2.2Linux系统调用机制):
深入理解用户态执行库函数(如fwrite)经过系统调用write再到内核执行对应服务例程sys_write的整个详细具体过程。
比如在程序中调用fwrite函数,图中①,而fwrite函数在glibc库中调用系统调用write()(图中②),然后从用户态陷入内核态(图中③),查找系统调用表syscalltable(图中④),在内中中对应的系统调用服务例程为sys_write,然后在内核执行该例程.
以一个进程中调用fork()系统调用和fabs()函数为例,分析执行过程中系统状态的转换过程:
进程调用fork()时处于用户态,然后通过陷入结构进入系统态,执行对应的系统调用服务程序,执行完返回到用户态
在进程中执行fabs()函数时,处于用户态
理解系统调用概念,理解操作系统处理系统调用的具体过程
Linux系统的系统调用是通过0x80中断实现的
系统调用就是操作系统提供给用户的服务即接口,把用户从硬件打交道的繁杂事务中解放出来,用户可方便的使用操作系统提供的各种服务。
- 执行陷入指令之后,cpu的操作权就会交给操作系统,由操作系统进行系统调用
- 首先传递系统调用参数
- 执行陷入指定(运行在用户态,当运行完陷入指令后,立即引发一个内中断,CPU会立即进入核心态)
- 此时操作系统获得CPU的控制权,开始执行系统调用相应服务程序(在核心态)
- 返回应用程序
理解系统调用和库函数的区别?
一般过程调用:调用程序和被调用程序都运行在相同状态(系统态或用户态), 调用时不涉及系统状态转换。
系统调用:调用程序在用户态,被调用程序在系统态,调用时涉及系统状态的转换,不允许由调用过程直接转向被调用过程, 先通过软中断机制由用户态转换为系统态,在OS 核心分析后,再转向相应的系统调用处理子程序。
理解本章发布的作业
第二章进程的描述与控制
-
进程概念及控制
1.理解进程概念
可以并发执行的程序在某个数据集合上的运行过程,是系统进行资源分配和调度的独立单位
进程的结构:
程序、数据、进程控制块(PCB)
2.理解进程并发执行的四大特征及含义
3.理解PCB概念,了解PCB存储的基本信息,知道一个进程对应一个PCB,PCB是进程的唯一标志,伴随着进程的生命期存在。
进程控制块(PCB):是一种数据结构,用于描述进程的当前情况,以及控制进程运行的全部信息
PCB中的信息:
- 进程标识信息——唯一的标识进程,比如PID
- 处理器现场信息——通用寄存器、指令计数器(下一条指令的地址)、状态寄存器(程序状态字寄存器PSW,如EFLAGS寄存器)、用户栈指针(过程和系统带哦用参数及地址)
- 进程调度信息——进程状态、进程优先级、该进程在等待的事件、调度所需其它的信息
- 进程控制信息——程序和数据的地址、进程间同步和通信机制、资源清单及使用情况、家族关系(可用pstree查看)
4.理解进程和程序的区别
程序 | 进程 |
静态的 | 动态的 |
可以长期保存的 | 有生命周期的 |
一个程序对应多个进程 | 一个进程可包含多个程序 |
代码+数据 | 代码+数据+进程控制块(PCB) |
5.理解进程的基本特征
- 结构性——程序+数据+PCB
- 动态性——创建,执行,调度,消亡
- 并发性——内存中有多个进程同时执行
- 独立性——是资源分配和调度的独立单位
- 异步性——各自独立运行,不知道谁先结束
6.理解进程的三种基本状态,及典型转换关系和时机
- 就绪态
- 运行态
- 阻塞态(等待态、睡眠态)
(浅度睡眠(收到信号就可唤醒)和深度睡眠(要用唤醒函数唤醒))
7.了解进程控制块的组织形式
线性表
链表方式
索引方式
树形结构
8.理解进程控制操作系统内核是系统硬件的首次延伸,通过执行各种原语操作来实现对进程的控制功能(创建、调度、通讯、撤销等)。
9.理解进程创建、撤销、唤醒、阻塞的基本过程和时机。
进程创建:
时机:
- 用户登录时——由OS为合法终端创建一个进程
- 调度到某个批处理作业时——由作业调度程序创建
- 运行程序请求提供服务——(如:打印文件),由OS创建
- 运行中进程因自己的需要——由它自己创建子进程
进程撤销:
时机:
过程:
进程唤醒:
当被阻塞进程所期待的事情发生,有关进程调用唤醒原语wakeup将等待该事件的进程唤醒。
执行过程:将阻塞进程从阻塞队列中移出,将其PCB的状态改为就绪状态,然后将PCB插入到就绪队列中。
进程阻塞:
10.理解进程上文切换的具体过程。理解切换过程中CPU现场需要保存哪些数据。
-
进程的同步与互斥
1.理解进程之间的两种相互制约关系
- 间接相互制约关系(进程-资源-进程关系)
- 直接相互制约关系(I->C功能合作关系,进程-进程关系)
2.理解临界资源、临界区、信号量、记录型信号量(重点),了解and信号量、了解记录集信号量
临界资源: 一次仅允许一个进程使用的共享资源。每次只准许一个进程进入临界区,进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。
临界区:一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。
- 整形信号量
(1)用一个整型型变量作为信号量,数值表示某种资源数;
(2)整型信号量与普通整型变量的区别:对信号量只能执行初始化、P、V三种操作;
(3)整型信号量存在的问题:不满足让权等待原则
- 记录型信号量
(1)P操作中,一定是先value--,之后可能执行block原语;
(2)V操作中,一定是先value++,之后可能执行wakeup原语;
(3)能够判断在什么条件下需要执行block或者wakeup。
信号量集:申请n类资源,每类资源最低ti个,每类申请di个资源
AND的进一步延伸,设置一个最低资源数目>=1,和进程需要的资源数目>=0
3.结合实验代码理解经典的同步问题(生产者-消费者、读写问题、哲学家问题)
4.理解分桔子苹果问题、get-copy-put问题。
5.了解进程通信概念、了解高级通信和低级通信概念、了解高级通信的基本形式和基本含义,理解消息缓冲区机制。
进程通信( InterProcess Communication,IPC)就是指进程之间的信息交换。
进程之间想要进行信息交换就必须通过内核
通信分为低级通信和高级通信。
- 低级通信:传送的信号量比较小
- 高级通信:传送的信号量比较大
高级通信
- 管道通信
- 共享内存
- 消息队列
- 套接字
消息缓冲区机制:
6.理解线程概念、特征、TCB
线程的概念:是OS调度的最小单位,被包含在进程之中,一条线程值得是进程内一个执行单元
线程的特征:
- 轻量实体
- 调度的基本单位
- 可并发执行
- 共享进程资源
TCB:操作系统中一个线程对应着一个TCB(Thread Control Block),叫做线程控制模块,控制着线程的运行和调度。
TCB组成
1、threadID:线程的唯一标识。
2、status:线程的运行状态
3、register:线程关于CPU中寄存器的情况
4、PC程序计数器:线程执行的下一条指令的地址
5、优先级:线程在操作系统调度的时候的优先级
6、线程的专属存储区:线程单独的存储区域
7、用户栈:线程执行的用户方法栈,用来保存线程当前执行的用户方法的信息
8、内核栈:线程执行的内核方法栈,用来保存线程当前执行的内核方法信息。
第三章进程调度和死锁
1.理解进程调度概念
低级调度又称为进程调度或短程调度,其调度的对象是进程(或内核级线程)。
主要功能是根据某种算法,决定就绪队列中的哪几个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。
2.理解处理机高级-中级-低级调度
- 高级调度
高级调度又称为长程调度或作业调度,它的调度对象是作业。
主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪队列。
主要用于多道批处理系统中,而在分时和实时系统中不设置高级调度。
- 中级调度
中级调度又称为内存调度。引入中级调度的目的是,提高内存利用率和系统吞吐量。
- 低级调度
低级调度又称为进程调度或短程调度,其调度的对象是进程(或内核级线程)。
主要功能是根据某种算法,决定就绪队列中的哪几个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。
3.理解常见处理机调度策略基本思想、特点、性能分析(时间片轮转RR--甘特图、FCFS、SJF、优先权、高响应比、抢占式、非抢占式),了解多级反馈算法,参考云班课发布的录课视频理解。
时间片轮转(RR,round-robin)——甘特图
1.思想:按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片(如100ms)。若进程未在一个时间片内执行完,则剥夺处理机,将进程重新放到就绪队列队尾重新排队。
2.是否可抢占
可抢占式。若进程在时间片内运行完,将被强行剥夺处理机使用权,因此时间片轮转调度算法属于抢占式的算法。由时钟装置发出时钟中断来通知CPU时间已到。
3.不会导致饥饿
eg、
先来先服务(FCFS,first come first serve)算法
1.思想:按照作业/进程到达的先后顺序进行服务。
用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列
2.非抢占式的算法
3.不会导致饥饿
4.性能分析:
优点:简单
缺点:
平均等待时间波动较大
I/O资源和CPU资源的利用率低
短作业优先(SJF)算法
1.思想:按照进程的执行时间长短,优先为执行时间较短的进程分配处理器资源,以减少平均等待时间。
2.SJF和SPF是非抢占式算法,但也有抢占式的版本——最短剩余时间优先算法(SRTN,shortest remaining time next)
3.. 是否会导致饥饿
会,如果源源不断地有短作业/进程到来,可能使长作业/进程长时间得不到服务,产生“饥饿”现象。如果一直得不到服务,则称为“饿死”。4.性能分析
优点:
降低了短进程的等待时间,平均周转时间和平均带权周转时间小
提高了系统的吞吐量
缺点:
对长进程非常不利,可能长时间得不到执行,导致极恶状态
优先级调度(注意 优先数 与 优先级 的关系,一般优先数越大,优先级越高)
1.思想
每个作业/进程有各自的优先级,调度时选择优先级最高的作业/进程2.是否可抢占
抢占/非抢占都有。区别在于非抢占式只需在进程主动放弃处理机时进行调度即可,而抢占式还需在就绪队列变化时,检查是否会发生抢占。
3..是否会导致饥饿
会4.性能分析:
优点:
算法可以体现进程的紧急程度,非常适合实时系统
缺点:
无穷阻塞问题
高响应比优先(HRRN)
1. 思想
在每次调度时先计算各个作业/进程的响应比,选择响应比最高的作业/进程为其服务。响应比 = (等待时间 + 要求服务时间) / 要求服务时间
= 1 + 等待时间 / 要求服务时间
2.是否可抢占
非抢占式算法,因此只有当前运行的作业/进程主动放弃处理机时,才需要调度,才需要计算响应比。
3.是否会导致饥饿
不会
多级反馈队列调度算法
多级反馈队列调度算法是时间片轮转调度算法和优先级调度算法的综合和发展;
通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。
例如,为提高系统吞吐量和缩短平均周转时间而照顾短进程;为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程;同时,也不必事先估计进程的执行时间。
【特点】
提高吞吐量和缩短平均周转时间而照顾短进程;
为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程;
不必事先估计进程的执行时间。
【如何工作】多个就绪队列,第一队列优先级最高;
赋予各个队列中进程执行时间片的大小不一样,优先级越高的队列中,多个进程的运行时间片越小;
新进程进入内存后,按FCFS原则排队等待调度。
4.熟练使用时间片轮转RR--甘特图、FCFS、SJF、优先权、高响应比算法计算作业/进程的周转时间和平均周转时间。
4.死锁理解
1)产生死锁的原因
竞争资源
2)产生死锁的4个必要条件
- 互斥条件:至少有一个资源每次只能给一个进程使用
- 请求和保持条件:在申请新的资源的同时保持对原有资源的占有
- 不可剥夺条件:资源申请者不能强行从资源占有者中夺取资源,资源只能由占有者自愿释放
- 循环等待条件:存在一个进程——资源的循环链
3)处理死锁的基本方法有哪几种,了解原理和特点
- 预防策略:至少破坏产生死锁的四个必要条件之一
- 避免策略:精心的分配资源,动态的回避死锁
- 检测和解除:发生死锁后及时能检测出,并采取措施接触
- 鸵鸟策略:采用不理睬策略
4)死锁的预防(具体策略)
- 破坏互斥条件——互斥虚拟为共享
使用软硬件结合改变资源本身的特性。如,采用SPOOLing技术可将“独享”打印机改变为“共享”打印机。
- 破坏不可剥夺条件——主动放弃
在允许进程动态申请资源前提下规定:一个进程在申请新的资源不能立刻满足而改变为阻塞状态之前,必须释放已占有的全部资源。
- 破坏请求和保持条件——一次性申请所有资源
- 破坏循环等待条件——资源有序使用
把系统中的全部资源分别分给一个特定的序号,并且要求每进程均应严格地按照序号递增的次序请求资源,否则操作系统不予分配。
特点:
1)动态申请,资源利用率高。
2)小心分配资源序号确保资源利用率。
5)死锁的避免(银行家算法)
安全状态
避免死锁的实质是防止系统进入不安全状态
银行家算法:
Work | Need | Allocation | Work + Allocation | Finish | |||||||||
资源1 | 资源2 | 资源3 | 资源1 | 资源2 | 资源3 | 资源1 | 资源2 | 资源3 | 资源1 | 资源2 | 资源3 | ||
进程 |
6)了解死锁的检测(基本策略)
根据死锁定理:S 为死锁的条件是当且仅当 S 状态的资源分配图是不可完全简化的,该条件称为死锁定理。
①如果资源分配图中没有环路,则系统没有死锁; ②如果资源分配图中出现了环路,则系统可能有死锁。
7)了解死锁的解除(基本策略)
1、资源剥夺:挂起某些死锁进程,并抢占它的资源,将这些资源分配给其他死锁进程。(但应该防止被挂起的进程长时间得不到资源,而处于资源匮乏的状态。);
2、撤销进程:强制撤销部分、甚至全部死锁进程并剥夺这些进程的资源。(撤销的原则可以按进程优先级和撤销进程代价的高低进行);
3、进程回退:让一个或多个进程回退到足以避免死锁的地步。【进程回退时自愿释放资源而不是被剥夺。要求系统保持进程的历史信息,设置还原点。】
第四章+第五章内存管理
1.理解虚拟存储器概念和特征
虚拟存储器是指具有请求调入功能和置换功能能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。
虚拟存储器特征:
- 离散性——是实现虚拟存储器的基础。
- 多次性——多次将部分调入内存,每当运行到不在内存那部分程序时,再将它调入。
- 交换性——暂时不执行允许换出,需要时再换入。
- 虚拟性——逻辑(虚)上扩充了内存物理(实)容量。
虚拟性以多次性和交换性为基础
多次性和交换性又必须建立在离散分配的基础之上。
虚拟存储器实现方法:
- 请求分页方式
- 请求分段方式
2.理解地址重定位,静态重定位、动态重定位概念
地址重定位:当程序装入内存时, 操作系统要为该程序分配一个合适的内存空间, 由于程序的逻辑地址与分配到内存物理地址不一致, 而CPU执行指令时, 是按物理地址进行的, 所以要进行地址变换地址映射即地址再定位 。
地址重定位(地址变换,地址映射):将逻辑地址变换为物理地址。
静态重定位
特点: 程序装入时,根据其在内存中的起始地址(基地址),将其中所有的逻辑地址转变为物理地址。
物理地址=逻辑地址+基地址
缺点:
当程序装入后不能再移动
程序在内存空间只能连续分配
多个用户很难共享同一程序
动态重定位
特点:程序运行时,根据其在内存中的起始地址(基地址),将其中所有的逻辑地址动态计算出物理地址。避免了修改程序,具有更大的灵活性。
物理地址=逻辑地址+基地址
3.了解静态链接基本含义,了解动态链接的基本含义
- 静态链接:装入前进行链接, 将所有模块的相对地址链接起来, 形成整个程序的连续的逻辑地址。
- 装入时的动态链接:对编译形成的一组模块边装入、边链接,各模块独立分开装入内存的不同位置, 便于修改, 便于共享。
- 运行时动态链接:边运行、边链接,有些模块往往不会运行到(如错误处理), 不必装入,效率高节省内存
4.理解早期动态分区内存管理原理,包括:内存分配策略(FFBFWF算法策略)、内存回收策略
- 首次适配算法(First Fit):空闲分区按地址递增的顺序排列
优点: 低地址被分配,高地址会有大容量空闲区,供大作业分配。
缺点: 扫描总是从低值分配开始,低地址存在大量外部碎片,增加了查找空闲分区的开销。
- 循环首次适配算法(Next Fit): 在首次适配的基础上,从上次内存分配之后的分区开始查找可用分区。
优点: 空闲分区分布的更均匀 减少了查找空闲分区时的开销。
缺点: 缺乏大的空闲分区
- 最佳适配算法(Best Fit):空闲分区按容量递增的顺序排列
优点: 平均查找一半的表格便能找到最佳空白区;较大的分区被保留下来,可供大进程使用。
缺点: 外部碎片多,因为最佳分配后剩余的分区一定是最小的。
- 最差适配算法(Worst Fit):空闲分区按容量递减的顺序排列
优点: 查找速度是最快的;分配后剩余的空间还比较大,仍能满足一般要求,可供以后使用。
缺点: 各空白区比较均匀的减小,工作一段时间后缺少大空闲区可供使用。
- 内存回收策略
上邻接:回收的分区与低地址的空闲区相邻,合并为一个分区
下邻接:回收的分区与高地址的空闲区相邻,合并为一个分区
上、下均邻接:回收的分区与高地址和低地址的空闲区相邻,合并为一个分区
5.理解内存管理中快表的作用
快表TLB(联想寄存器)是一种高速缓冲存储器,是用来存放页表项。
增加访问速度。
在没有快表的情况下,一个虚拟地址要转成一个物理地址至少需要两次访问物理内存,第一次是查询内存中的页表,第二次是访问物理页框。如果有暂存着目标页表项的快表,则通过快表访问页表会比在内存中访问页表快很多,有利于缩短从一个虚拟地址转换成一个物理地址的过程的时间。
6.深入理解请求分页管理原理、地址变换机构工作过程、地址变换过程(会计算虚拟地址转换为物理地址)
虚地址结构(程序字)
虚地址是用户程序中的逻辑地址,它包括页号和页内地址(页内位移)。
区分页号和页内地址的依椐是页的大小,页内地址占虚地址的低位部分,页号占虚地址的高位部分。
请求分页管理原理:
- 在执行过程中访问的页未装入内存时,产生缺页中断,进程阻塞,等待从磁盘动态装入页面;
- 缺页装入以后,进程转入就绪,可以参与调度继续执行;
- 内存无空闲可用帧时,暂时不用的页面可换出到交换区;
- 通过页面的换入换出,实现小内存运行大进程。
地址变换机构工作过程:
- 检索快表,找到了页。
- 修改页表项的访问位。
- 若是写操作,则修改“修改位置”为1,表示已被修改。
- 利用页表项中给出的物理块号和页内地址形成物理地址。
- 快表中无该页,在内存中检索,并找到了页。
- 从状态位P了解是否调入内存,若调入,则将其加入快表。
- 快表满时,根据算法调出部分页。
- 内存中未找到页,产生缺页中断,请求OS将该页从外存调入内存。
地址变换过程:
1. 虚地址(逻辑地址、程序地址)以十六进制、八进制、二进制的形式给出
- 将虚地址转换成二进制的数;
- 按页的大小分离出页号和位移量(低位部分是位移量,高位部分是页号);
- 根据题意产生页表;
- 将位移量直接复制到内存地址寄存器的低位部分;
- 以页号查页表,得到对应页装入内存的块号,并将块号转换成二进制数填入地址寄存器的高位部分,从而形成内存地址。
2.虚地址以十进制数给出
- 页 号(整除)=虚地址 / 页大小
- 位移量(取模)=虚地址 mod 页大小
- 根据题意产生页表;
- 以页号查页表,得到对应页装入内存的块号
- 内存地址=块号×页大小+位移量
7.深入理解缺页中断处理过程
<1> 首先硬件会陷入内核,在堆栈中保存程序计数器。大多数机器将当前指令的各种状态信息保存在CPU中特殊的寄存器中。
<2>启动一个汇编代码例程保存通用寄存器及其它易失性信息,以免被操作系统破坏。这个例程将操作系统作为一个函数来调用。
(在页面换入换出的过程中可能会发生上下文换行,导致破坏当前程序计数器及通用寄存器中本进程的信息)
<3>当操作系统发现是一个页面中断时,查找出来发生页面中断的虚拟页面(进程地址空间中的页面)。这个虚拟页面的信息通常会保存在一个硬件寄存器中,如果没有的话,操作系统必须检索程序计数器,取出这条指令,用软件分析该指令,通过分析找出发生页面中断的虚拟页面。
<4>检查虚拟地址的有效性及安全保护位。如果发生保护错误,则杀死该进程。
<5>操作系统查找一个空闲的页框(物理内存中的页面),如果没有空闲页框则需要通过页面置换算法找到一个需要换出的页框。
<6>如果找的页框中的内容被修改了,则需要将修改的内容保存到磁盘上,此时会引起一个写磁盘调用,发生上下文切换(在等待磁盘写的过程中让其它进程运行)。
(注:此时需要将页框置为忙状态,以防页框被其它进程抢占掉)
<7>页框干净后,操作系统根据虚拟地址对应磁盘上的位置,将保持在磁盘上的页面内容复制到“干净”的页框中,此时会引起一个读磁盘调用,发生上下文切换。
<8>当磁盘中的页面内容全部装入页框后,向操作系统发送一个中断。操作系统更新内存中的页表项,将虚拟页面映射的页框号更新为写入的页框,并将页框标记为正常状态。
<9>恢复缺页中断发生前的状态,将程序指令器重新指向引起缺页中断的指令。
<10>调度引起页面中断的进程,操作系统返回汇编代码例程。
<11>汇编代码例程恢复现场,将之前保存在通用寄存器中的信息恢复。
8.了解请求分页中的内存分配策略,包括固定分配局部置换、可变分配全局置换、可变分配局部置换的基本策略
在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。
在进行置换时,也可以采取两种策略,即全局置换和局部置换。
于是,可组合出以下三种适用的策咯。
1)固定分配局部置换(Fixed Allocation,Local Replacement)
采用该策略时,为每个进程分配多少物理块是根据进程类型(交互型或批处理型等)或者根据程序员、程序管理员的建议来确定的。
实现这种策略的困难在于:应为每个进程分配多少个物理块难以确定。若太少,会频繁地出现缺页中段,降低系统吞吐量。若太多,又必然会使内存中驻留的进程数目减少,进而可能造成CPU空闲或者其他资源空闲的情况,而且在实现进程对换时,会花费更多的时间。
2)可变分配全局置换(Variable Allocation,Global Replacement)
可变分配全局置换这可能是最易于实现的一种物理块分配和置换策略,已用于若干个OS中。在采用这种策略时,凡产生缺页(中断)的进程,都将获得新的物理块,仅当空闲物理块队列中的物理块用完时,OS才能从内存中选择一页调出。被选择调出的页可能是系统中任何一个进程中的页,因此这个被选中的进程拥有的物理块会减少,这将导致其缺页率增加。
3)可变分配局部置换(Variable Allocation,Local Replacement)
该策略同样是基于进程的类型或者是根据程序员的要求,为每个进程分配一定数目的物理块,但当某进程发现缺页时,只允许从该进程在内存的页面中选择一页换出,这样就不会影响其它进程的运行。如果进程在运行中频繁地发生缺页中断,则系统再为该进程分配若干附加物理块,直至该进程的缺页率减少到适当程度为止。反之,若一个进程在运行过程中缺页率特别低,则此时可适当减少分配给该进程的物理块数,但不应引起其缺页率的明显增加。
9.理解请求分段管理原理、地址变换机构、地址变换过程
分段存储管理
基本思想:
将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。
地址变换过程:
(1). 程序执行时,从PCB中取出段表始址和段表长度,装入段表寄存器。
(2). 由分段地址变换机构将逻辑地址自动分成段号和段内地址。
(3). 将段号与段表长度进行比较,若段号大于或等于段表长度,则表示本次访问的地址已超越进程的地址空间,产生越界中断。
(4). 将段表始址与段号和段表项长度的乘积相加,便得到该段表项在段表中的位置。
(5). 取出段描述子得到该段的起始物理地址。
(6). 检查段内位移量是否超出该段的段长若超过,产生越界中断。
(7). 对该段的存取控制进行检查。
(8). 将该段基址和段内地址相加,得到实际的物理地址。
10.了解请求段页式管理原理
段页式存储管理
基本思想:
分页系统能有效地提高内存的利用率,而分段系统能反映程序的逻辑结构,便于段的共享与保护,将分页与分段两种存储方式结合起来,就形成了段页式存储管理方式。
在段页式存储管理系统中,作业的地址空间首先被分成若干个逻辑分段,每段都有自己的段号,然后再将每段分成若干个大小相等的页。对于主存空间也分成大小相等的页,主存的分配以页为单位。
段页式系统中,作业的地址结构包含三部分的内容:段号 页号 页内位移量
程序员按照分段系统的地址结构将地址分为段号与段内位移量,地址变换机构将段内位移量分解为页号和页内位移量。
为实现段页式存储管理,系统应为每个进程设置一个段表,包括每段的段号,该段的页表始址和页表长度。每个段有自己的页表,记录段中的每一页的页号和存放在主存中的物理块号。
11.理解页面置换算法策略(FIFO,OPT,LRU,CLOCK(NRU))
- 先进先出(FIFO)页面置换算法
该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
- 2.最佳置换算法(OPT)——向后看
该算法选择淘汰的页面是:未来永远不会再使用的页面 or 未来最长时间不再被访问的页面。
该算法保证了可以获得最低缺页率,但无法预知未来页面的使用情况,因此目前无法实现,但通常用来评价其他算法。
- 最近最久未使用(LRU)算法——向前看
该算法以过去预测未来,选择之前最长时间未使用的页面置换。但是由于利用“过去”作为“未来”的近似这一做法并非完全可靠,因此有时会造成缺页率非常高,导致效率会非常低。
- CLCOK算法又称为最近未使用算法(NUR)
每页设置一个访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列;
当某个页面被访问时,其访问位置1。
淘汰时,检查其访问位,如果是0,就换出;
若为1,则重新将它置0;
再按FIFO算法检查下一个页面,到队列中的最后一个页面时,若其访问位仍为1,则再返回到队首再去检查第一个页面。
12.了解抖动概念、了解工作概念
如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很频繁地产生缺页中断,这种频率非常高的页面置换现象称为抖动。
在请求分页存储管理中,可能出现这种情况,即对刚被替换出去的页,立即又要被访问。需要将它调入,因无空闲内存又要替换另一页,而后者又是即将被访问的页,于是造成了系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,严重导致系统瘫痪,这种现象称为抖动现象。
13.理解程序局部性原理
程序局部班性原理:
- 时间局部部性:一条指令被执行了,则在不久的将来它可能再被执行,一个数据被访问过了,则在不久的将来它可能再被访问。
- 空间局部性:若某一存储单元被使用,则在一定时间内,与该存储单元临近的单元可能被使用。
14.了解二级页表
对大页表进行分页
解决大页表占用大的连续存储空间的问题
增加了访存时间
第六章设备管理
1.理解设备控制器功能和基本组成
设备控制器功能:
① 接收和识别CPU发出的命令:如CPU发来的read/write命令,I/O控制器中会有相应的控制寄存器来存放命令和参数。
② 向CPU报告设备的状态:I/O控制器中会有相应的状态寄存器,用于记录l/o设备的当前状态。如1表示空闲,0表示忙碌。
③ 数据交换:I/O控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备。输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。
④ 地址识别:类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的“地址”。I/o控制器通过CPU提供的“地址”来判断CPU要读/写的是哪个寄存器。
设备控制器基本组成:
- CPU与控制器的接口:数据寄存器、状态寄存器、控制寄存器
- I/O逻辑
- 控制器与设备的接口
2.理解三种I/O控制方式的基本原理和特征,重点掌握中断和DMA控制方式
-
程序直接控制方式
如下图所示,计算机从外部设备读取数据到存储器,每次读一个字的数据。对读入的每个字, CPU 需要对外设状态进行循环检查,直到确定该字已经在I/0 控制器的数据寄存器中。在程序直接控制方式中,由于CPU 的高速性和I/0设备的低速性,致使CPU 的绝大部分时间都处于等待I/0 设备完成数据I/0 的循环测试中,造成了CPU 资源的极大浪费。在该方式中, CPU 之所以要不断地测试I/0 设备的状态,就是因为在CPU 中未采用中断机构,使I/0 设备无法向CPU报告它已完成了一个字符的输入操作。
-
中断驱动方式
中断驱动方式的思想是,允许I/0 设备主动打断CPU 的运行并请求服务,从而“解放"CPU, 使得其向I/0 控制器发送读命令后可以继续做其他有用的工作。
从I/0 控制器和CPU 两个角度分别来看中断驱动方式的工作过程:
【1】从I/0 控制器的角度来看, I/0 控制器从CPU 接收一个读命令,然后从外围设备读数据。一且数据读入该I/0 控制器的数据寄存器,便通过控制线给CPU 发出一个中断信号,表示数据已准备好,然后等待CPU 请求该数据。I/0 控制器收到CPU 发出的取数据请求后,将数据放到数据总线上,传到CPU 的寄存器中。至此,本次I/0 操作完成, I/0 控制器又可开始下一次I/0操作。
【2】从CPU 的角度来看, CPU 发出读命令,然后保存当前运行程序的上下文(现场,包括程序计数器及处理机寄存器),转去执行其他程序。在每个指令周期的末尾, CPU 检查中断。当有来自I/0 控制器的中断时, CPU 保存当前正在运行程序的上下文,转去执行中断处理程序以处理该中断。这时, CPU 从I/0 控制器读一个字的数据传送到寄存器,并存入主存。接着, CPU 恢复发出I/0 命令的程序(或其他程序)的上下文,然后继续运行。
❞
【痛点】:中断驱动方式比程序直接控制方式有效,但由于数据中的每个字在存储器与I/0 控制器之间的传输都必须经过CPU, 这就导致了中断驱动方式仍然会消耗较多的CPU 时间。
-
DMA方式
为何引入DMA前面提到了,所有改进如下:
- 基本单位是数据块(前面是一个字)。
- 所传送的数据,是从设备直接送入内存的,或者相反。
- 仅在传送一个或多个数据块的开始和结束时,才需CPU 干预,整块数据的传送是在DMA控制器的控制下完成的。
- 命令/状态寄存器(CR) 。用于接收从CPU 发来的I/0 命令或有关控制信息,或设备的状态。
- 内存地址寄存器(MAR) 。在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址。
- 数据寄存器(DR) 。用于暂存从设备到内存或从内存到设备的数据。
- 数据计数器(DC) 。存放本次要传送的字(节)数。
如下图所示,DMA方式的工作过程是: CPU 接收到I/O 设备的DMA 请求时,它给I/0 控制器发出一条命令,启动DMA 控制器,然后继续其他工作。之后CPU 就把控制操作委托给DMA 控制器,由该控制器负责处理。DMA 控制器直接与存储器交互,传送整个数据块,每次传送一个字,这个过程不需要CPU 参与。传送完成后,DMA 控制器发送一个中断信号给处理器。因此只有在传送开始和结束时才需要CPU的参与(预处理【设置CR、MAR、DC等】和后处理【中断处理、唤醒因该I/O阻塞的进程程等】)。
DMA控制方式与中断驱动方式的主要区别是:中断驱动方式在每个数据需要传输时中断 CPU, 而DMA 控制方式则是 在所要求传送的一批数据全部传送结束时才中断CPU; 此外,中断驱动方式数据传送是在中断处理时由CPU 控制完成的,而DMA 控制方式则是在DMA 控制器的控制下完成的。
-
通道控制方式
I/0 通道是指专门负责输入/输出的处理机。I/O通道方式是DMA方式的发展,它可以进一步 减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关控制和管理为单位的干预。同时,又可以实现CPU、通道和I/0 设备三者的并行操作,从而更有效地提高整个系统的资源利用率。
I/O通道与一般处理机的区别是:通道指令的类型单一,没有自己的内存,通道所执行的通 道程序是放在主机的内存中的,也就是说通道与CPU 共享内存。
I/O 通道与DMA方式的区别是:DMA 方式需要CPU 来控制传输的数据块大小、传输的内 存位置,而通道方式中这些信息是由通道控制的。另外,每个DMA 控制器对应一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换(包工头;也是上面提到的三者能并行的原因)。
3.了解缓冲管理基本原理(单缓冲、双缓冲,缓冲池)
4.了解设备分配基本工作原理
5.理解I/O软件层次,每层功能和功能间的关系。
用户层软件:用于实现用户与I/O设备交互;
设备独立性软件:用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护,以及设备分配与释放等;
设备驱动程序:与硬件直接有关,用来具体实现系统对设备发出的操作指令,驱动I/O设备工作;
中断处理程序:用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完后恢复现场,并返回到被中断的进程;
硬件:I/O设备。
6.了解Spooling技术(假脱机技术)(基本原理和组成)。
spooling系统由三大组成部分:
输入井和输出井
输入缓冲和输出缓冲
输入进程SPI和输出进程SPO
SPI模拟脱机输入时外围机的功能, 把低速输入设备的数据进缓冲区送到输入井,当CPU需要输入数据时,直接从输入井读入内存。
SPO模拟脱机输出时外围机的功能,把用户进程输出的数据输出到输出井,待输出设备闲时,把输出井数据经缓冲区送到低速输出设备上。
7.理解驱动程序的基本功能。
设备驱动程序的功能
(1) 将接受到的抽象(逻辑)要求转化为具体(物理)要求。
(2) 检查用户I/O请求的合法性, 设置设备的工作方式。
(3) 发出I/O命令
(4) 及时响应由控制器或通道发来的中断请求
(5) 对有通道系统, 能根据I/O请求, 自动地构造通道程序
设备驱动程序的处理过程
(1) 将抽象的要求转化为具体的要求 (2) 检查I/O请求的合法性、 读出并检查设备的状态 (3) 传送必要的参数、设置工作方式 (4) 向控制器发送控制命令启动I/O设备, 将自己阻塞 (5) 完成I/O后, CPU响应中断唤醒相应的设备驱动进程
第七章文件管理
1.理解文件系统逻辑组织
文件的逻辑结构
是用户所观察到的文件组织形式,用户可以直接处理的数据及其结构。
文件从用户角度看是由一系列对象的组成,对象之间可以构建不同的逻辑结构,主要目的是提高文件的检索速度。
1)顺序文件--按照线性顺序组织记录间的关系
- 串结构:各记录的逻辑顺序按存入的时间排序
- 顺序结构:各记录的逻辑顺序按关键字排序。
- 优点: 批量存取效率高,缺点: 增修删低效不方便
2)
3) 索引顺序文件--建立短的索引表
将记录分为若干组,索引表为每组的第一个记录建立一个索引表项,检索时先根据索引表键值确定该记录在哪一组,再按该表项指针指向的该组在主文件中的位置顺序查找到所要的记录
4)直接文件
根据给定的记录键值,直接获得指定记录的物理地址,这种由给定的记录键值到记录地址的转换称为键值转换,关键是用什么函数进行转换。
哈希文件:使用最广泛的一种直接文件。
2.理解文件系统模型
- 文件程序接口
- 对对象操纵和管理的软件集合
- 对象及其属性
3.深入理解这些概念:FCB、Inode、内存inode、外存inode、目录文件、目录项(FCB即目录中的一项)、盘块、扇区
FCB:
Inode:
内存inode:
外存inode:
目录文件:
目录项(FCB即目录中的一项):一个FCB 就是一个目录项。
盘块:
磁盘地址(柱面、磁道、扇面)
扇区:
4.深入理解open()系统调用作用,操作系统做了什么?fd的作用。参考录课视频理解。
fd=fopen()是一个系统调用。用于依据文件名称打开一个文件。返回该文件的文件描写叙述符,文件打开后进程便能够依据文件描写叙述符fd进行其它操作,比方读,写,关闭等操作。
5.理解文件目录管理策略(重点树目录顺序查询过程)
目录管理的基本要求
(1)实现按名存取"
(2)提高对目录的检索速度
(3)允许文件共享
(4)允许文件重名
第八章磁盘存储器的管理
1.深入理解文件外存的组织方式(连续、链接、单级索引、增量式索引的原理),重点增量式索引的原理。
文件的外存分配方式:文件在外存物理块间的组织关系
文件经典的物理结构有连续结构、链接结构和索引结构。
1)连续结构
优点:
文件的顺序访问容易,支持文件的随机访问、磁盘存取速度快.寻道次数和寻道时间最少。
缺点:
易产生外部碎片.降低外存空间的利用率、不利于文件的插入和删除。
应用例子: Linux的磁盘swap区。
2)链接结构
3)索引结构
增量式索引的外存分配方式
2.理解文件存储空间管理策略(空闲表(链表)、位示图),重点位示图
文件存储空间管理的几种管理方法
- 空闲表法
- 空闲链表法
- 位示图法
- 成组链接法
1)空闲表法:适用于连续分配方式
空闲表记录每个空闲区的第一个盘块号和空闲块数。
存储空间的分配:与内存动态分区分配类似,采用首次适应算法循环首次适应算法等。
存储空间的回收:根据回收区前后是否有相邻空闲区要考虑空闲区合并问题。
2)空闲链表法:由操作系统保管链头、链尾指针。
- 空闲盘块链
- 空闲盘区链(每个空闲区由连续的空闲块组成)
空闲盘块链的分配:适用于离散分配方式
空闹盘区链的分配和回收:既适用于离散,也适用于连续分配方式
空闲盘区中的第一个空闲盘块记录本盘区的空闲块数和下一个盘区的指针。存储空间的分配和回收与空闲表法类似。
3)位示图法
位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况,磁盘上的所有盘块都有一个二进制位与之对应。
值为“0”值为“1”时,表示对应的盘块空闲;
值为“1”时,表示对应的盘块已分配。
优点
>从位示图中很容易找到一个或一组相邻接的空闲盘块
> 占用空间少,节省许多磁盘的启动操作。
4)
3.了解提高磁盘I/O速度的途径
4.了解文件的共享方式(基于索引结点和基于符号链接)
- 基于索引结点的共享方式(硬链接)
- 基于符号链的共享方式(软链接)
熟练掌握算法:
1.进程同步:
在理解wait(s)/P(S),signal(s)/V(s)公式基础上,灵活应用多进程并发时的wait(s)signal(s)信号量s的数据变化;
生产者-消费者(单和多缓冲区)、读写问题、哲学家问题、分桔子苹果问题、get-copy-put问题模型。生产者-消费者、读写问题、哲学家问题能够结合代码理解,参考录课视频复习。
2.死锁中银行家算法
Work | Need | Allocation | Work + Allocation | Finish | |||||||||
资源1 | 资源2 | 资源3 | 资源1 | 资源2 | 资源3 | 资源1 | 资源2 | 资源3 | 资源1 | 资源2 | 资源3 | ||
进程 |
Work——当前系统中剩余可分配的资源
Need——对应进程需要的资源
Allocation——改进程已被分配的资源
Work + Allocation——分配后系统剩余的可分配的资源 = 下一个进程的Work
3.进程调度算法(时间片轮转RR、FCFS、SJF、优先权、高响应比),计算进程周转时间和平均周转时间
列表:
进程名 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
周转时间 = 完成时间 - 到达时间
平均周转时间 = 所有进程的周转时间的和 / 进程数
带权周转时间 = 周转时间 / 服务时间
平均周转时间 = 所有进程的带权周转时间的和 / 进程数
时间片轮转(RR,round-robin)——————甘特图
1.思想:按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片(如100ms)。若进程未在一个时间片内执行完,则剥夺处理机,将进程重新放到就绪队列队尾重新排队。
2.是否可抢占
可抢占式。若进程在时间片内运行完,将被强行剥夺处理机使用权,因此时间片轮转调度算法属于抢占式的算法。由时钟装置发出时钟中断来通知CPU时间已到。
3.不会导致饥饿eg、
先来先服务(FCFS,first come first serve)算法
1.思想:按照作业/进程到达的先后顺序进行服务。
用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列
2.非抢占式的算法
3.不会导致饥饿
短作业优先(SJF)算法
1.思想:按照进程的执行时间长短,优先为执行时间较短的进程分配处理器资源,以减少平均等待时间。
2.SJF和SPF是非抢占式算法,但也有抢占式的版本——最短剩余时间优先算法(SRTN,shortest remaining time next)
3.. 是否会导致饥饿
会,如果源源不断地有短作业/进程到来,可能使长作业/进程长时间得不到服务,产生“饥饿”现象。如果一直得不到服务,则称为“饿死”。
优先级调度(注意 优先数 与 优先级 的关系,一般优先数越大,优先级越高)
1.思想
每个作业/进程有各自的优先级,调度时选择优先级最高的作业/进程2.是否可抢占
抢占/非抢占都有。区别在于非抢占式只需在进程主动放弃处理机时进行调度即可,而抢占式还需在就绪队列变化时,检查是否会发生抢占。
3..是否会导致饥饿
会
高响应比优先(HRRN)
1. 思想
在每次调度时先计算各个作业/进程的响应比,选择响应比最高的作业/进程为其服务。响应比 = (等待时间 + 要求服务时间) / 要求服务时间
= 1 + 等待时间 / 要求服务时间
2.是否可抢占
非抢占式算法,因此只有当前运行的作业/进程主动放弃处理机时,才需要调度,才需要计算响应比。
3.是否会导致饥饿
不会
4.请求分页、请求分段中虚拟地址到逻辑地址映射计算。
分页存储:
1. 虚地址(逻辑地址、程序地址)以十六进制、八进制、二进制的形式给出
- 将虚地址转换成二进制的数;
- 按页的大小分离出页号和位移量(低位部分是位移量,高位部分是页号);
- 根据题意产生页表;
- 将位移量直接复制到内存地址寄存器的低位部分;
- 以页号查页表,得到对应页装入内存的块号,并将块号转换成二进制数填入地址寄存器的高位部分,从而形成内存地址。
2.虚地址以十进制数给出
- 页 号(整除)=虚地址 / 页大小
- 位移量(取模)=虚地址 mod 页大小
- 根据题意产生页表;
- 以页号查页表,得到对应页装入内存的块号
- 内存地址=块号×页大小+位移量
分段步骤:
段号 段长 基址 状态位
- 段内地址与段长作比较——越界中段?
- 物理地址 = 段内地址 + 基址
状态位 0——在主存 ; 1——在辅存
5.存储管理中,动态分区管理FFBFWF算法。
(1)首次适应算法(FF, First Fit):优先分配低地址的空闲区。
(2)最佳适应算法(BF, Best Fit):优先分配大小最小的空闲区。
(3)最差适应算法(WF , Worst Fit):优先分配大小最大的空闲区。
6.页面置换算法(FIFO,OPT,LRU,CLOCK(NRU))
1.先进先出(FIFO)页面置换算法
该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
2.最佳置换算法(OPT)——向后看
该算法选择淘汰的页面是:未来永远不会再使用的页面 or 未来最长时间不再被访问的页面。
该算法保证了可以获得最低缺页率,但无法预知未来页面的使用情况,因此目前无法实现,但通常用来评价其他算法。
3.最近最久未使用(LRU)算法——向前看
该算法以过去预测未来,选择之前最长时间未使用的页面置换。但是由于利用“过去”作为“未来”的近似这一做法并非完全可靠,因此有时会造成缺页率非常高,导致效率会非常低。
4.CLCOK算法又称为最近未使用算法(NUR)
每页设置一个访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列;
当某个页面被访问时,其访问位置1。
淘汰时,检查其访问位,如果是0,就换出;
若为1,则重新将它置0;
再按FIFO算法检查下一个页面,到队列中的最后一个页面时,若其访问位仍为1,则再返回到队首再去检查第一个页面。
7.磁盘调度算法(FIFO,SSTF,SCAN)
先找起点
被访问下一个磁道号 | 移动距离 |
1.FIFO:先来先服务算法
2.SSTF: 最短寻道时间算法 ——先排序在计算
假设当前磁道在某一位置,接下来处理的是距离当前磁道最近的磁道号,处理完成之后再处理离这个磁道号最近的磁道号,直到所有的磁道号都服务完了程序结束。
3.SCAN:电梯调度算法——注意开始方向
先按照一个方向(比如从外向内扫描),扫描的过程中依次访问要求服务的序列。当
扫描到最里层的一个服务序列时反向扫描。
4.CSCAN: 循环扫描算法
也就是始终保持一个方向。故也称之为单向扫描调度算法
5.FSCAN:分步电梯调度算法(分两个队列)
在扫描的过程中所有新产生的序列放在另外的一个队列中,当访问完当前队列之后,再访问新产生的一个队列。这种算法可以有效防止磁壁粘着现象。