操作系统期末总复习

第一章 计算机系统概述

一、理解中断的概念

中断是指CPU对系统发生某事件时作出的这样一种响应:CPU暂停正在执行的程序,在保留现场后自动地转去执行该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行。中断服务程序与中断时CPU正在运行的程序是相互独立的,相互不传递数据。
中断处理过程(P8):
1、 设备给处理器发出一个中断信号。
2、 处理器在响应中断前结束当前指令的执行。
3、 处理器对中断进行测试,确定存在未响应的中断,并给提交中断的设备发送确认信号,确认信号允许该设备取消它的中断信号。
4、 处理器需要准备把控制权转交给中断程序。首先,需要保存从中断点恢复当前程序所需的信息,要求的最少信息包括程序状态字(PSW)和保存在程序计数器(PC)中的下一条要执行的指令地址,它们被压入系统控制栈。
5、 处理器把响应此中断的中断处理程序入口地址装入程序计数器。一旦装入程序计数器,处理器就继续下一个指令周期,该指令周期也从取指开始。由于取指是由程序计数器的内容决定,因此控制权被转交到中断处理程序。
6、 在典型情况下,中断处理程序一开始就在栈中保存所有的寄存器内容,系统栈中还保存了与被中断程序相关的程序计数器和PSW(程序状态寄存器)。
7、 中断处理程序开始处理中断。(包括检查与I/O操作相关的状态信息或其他引起中断的事件,可能包括给I/O设备发送附加命令或应答)。
8、 中断处理结束后,被保存的寄存器值从栈中释放并恢复到寄存器中。
9、 从栈中恢复PSW(程序状态寄存器)和程序计数器的值,因此下一条要执行的指令来自前面被中断的程序。
在这里插入图片描述
多中断处理(P10):
(1) 正在处理一个中断时,禁止再发生中断。禁止中断的意思是处理器将对任何新的中断请求信号不予理睬。若在此期间发生了中断,则通常中断保持挂起,当处理器再次允许中断时,再由处理器检查。因此,当用户程序正在执行时有一个中断发生,则立即禁止中断;当中断处理程序完成后,在恢复用户程序之前再允许中断,并且由处理器检查是否还有中断发生。
(2) 定义中断优先级,允许高优先级中断打断低优先级中断的执行。有关例子如图:
在这里插入图片描述
第一种方法的缺点:未考虑相对优先级和时间限制的要求。例如,当来自通信线路的输入到达时,可能需要快速接收,以便为更多的输入让出空间。若在第二批输入到达时第一批输入还未处理完,则有可能由于I/O设备的缓冲区装满或溢出而丢失数据。

二、理解存储器的层次结构

存储器的三个重要特性:容量、速度、价格。①存取时间越快,价格越高;②容量越大,价格越低;③容量越大,存取速度越慢。
在这里插入图片描述
理论基础:程序执行的局部性原理(P12)
处理器的指令访存和数据访存呈现“簇“状,程序中包含许多循环和子程序,对表和数组的操作涉及存取”“一簇数据。一旦程序进入一个循环或子程序执行,就会重复访问一个小范围内的指令集,在较短的时间内,处理器主要访问存储器中的固定”簇“。即在一段时间内,整个程序的执行仅限于程序中的某一部分,相应地,执行所访问的存储空间也局限于某个内存区域。也就是说,程序倾向于引用邻近于其他最近引用过得数据项,或者最近引用过的数据项本身。
因此,可以通过层次组织数据,使得随着组织层次的递减,对各层次的访问比例也依次递减。此原理适用于多级存储器组织结构。

时间局部性:被引用过一次的存储器位置在未来会被多次引用
空间局部性:如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。也就是说靠近当前正在被访问内存的内存内容很快也会被访问。

高速缓存
对操作系统是不可见的。
动机:处理器在每个指令周期内至少要访问一次内存。处理器执行指令的速度快于内存的访问速度。
解决办法:利用局部性原理,即在处理器和内存之间提供一个容量小而速度块的存储器——高速缓存。
高速缓存原理:Cache包含一部分内存数据的副本,处理器首先检查cache,如果不再,则由固定数目的字组成的一块主存储器被读入cache,由于存在访问局部性现象,当一块数据被读入Cache中后,未来要访问的数据很可能也在该数据块中。

三、直接内存存取

执行I/O操作的技术由三种:可编程I/O、中断驱动I/O和直接内存存取(DMA)。
DMA技术的工作方式是在处理器读或写一块数据时,给DMA模块产生一条命令,发送以下信息:①是否请求一次读或写;②所涉及I/O设备的地址;③开始读或写的存储器单元;④需要读或写的字数。之后处理器继续其他工作。处理器把这个操作委托给DMA模块负责处理。DMA模块直接与存储器交互,传送整个数据块,每次传送一个字。这个过程不需要处理器参与。传送完成后,DMA模块向处理器发一个中断信号。因此,只有在开始传送和传送结束时处理器才会参与。
DMA模块需要控制总线来与存储器进行数据传送。由于在总线使用中存在竞争,当处理器需要使用总线时,都要等待DMA模块。注意,这并不是一个中断,处理器没有保存上下文环境去做其他事情,而只是暂停一个总线周期。

第二章 操作系统概述

一、操作系统的定义

操作系统(简称OS):是管理计算机系统的软硬件资源、控制程序执行、改善人机界面和为应用软件提供支持的一种系统软件。

二、理解存储器的层次结构

操作系统是控制应用程序执行的程序,是应用程序和计算机硬件间的接口,它有三个目标:
(1) 方便:操作系统使计算机更易于使用。(OS产生的根本原因)
(2) 有效:操作系统允许以更有效的方式使用计算机系统资源。(以优化算法合理分配、调度资源和提高效率)。
(3) 扩展能力:在构造操作系统时,应允许在不妨碍服务的前提下,有效地开发、测试和引入新的系统功能。

三、直接内存存取

串行处理简单批处理系统多道批处理系统分时系统
简单批处理系统
简单批处理的中心思想是使用一个称为监控程序的软件。通过使用这类操作系统,用户不再直接访问机器,相反,用户把卡片或磁带中的作业提交给计算机操作员,由操作员把这些作业按顺序组织成批,并将整个批作业放到输入设备上,供监控程序使用,监控程序每次从输入设备中读取一个作业,读入后,当前作业背放置到用户程序区域,并且把控制权交给这个作业,作业完成后,它将控制权返回给监控程序,监控程序立即读取下一个作业,每个作业的结果被发送到输出设备(例如打印机),交付给用户。常驻监控程序总处于主存储器中并且可以执行。
用户程序以用户模式执行,监控程序以系统态或内核模式执行。
简单批处理的缺点:一部分内存交付给监控程序;监控程序消耗了一部分机器时间,所有这些都构成了系统开销。处理器常处于空闲状态,因为I/O对于处理器而言速度太慢。
多道批处理系统
内存空间可以保存操作系统和一个用户程序。假设内存空间容得下操作系统和两个用户程序,则当一个作业需要等待I/O时,处理器可以切换到另一个可能并不在等待I/O的作业,这种处理称为多道程序设计。
多道程序设计操作系统要比单个程序或单道程序设计系统复杂。待运行的多个作业须保留在内存中,因此需要内存管理,此外,准备运行多个作业时,处理器必须决定运行哪个作业,因此需要某种调度算法。
好处:①提高CPU利用率;②可提高内存和I/O的利用率;③增加系统吞吐量。
分时系统
处理多个交互作业,由于多个用户分享处理器时间,因而该技术称为分时。在分时系统中,多个用户可以通过终端同时访问系统,由操作系统控制每个用户程序在很短的时间内交替执行。
在固定的时间间隔内,当前用户被抢占,另一个用户被载入,这项技术被称为时间片技术。为了便于以后恢复,它会保留老用户程序状态,在新用户程序和数据读入前,老用户程序和数据被写出到磁盘。随后在获得下一次机会时,老用户程序代码和数据被恢复到内存中。
分时系统的特征:①多路性:多个用户同时使用;②独立性:对每个用户而言好像独占主机;③及时性;④人机交互性好:在调试和运行程序时由用户自己操作。
实时操作系统
概念:系统能及时响应外部事件的请求,在规定时间内完成对该事件的处理。
理解用户模式与内核模式
内核空间存放的是操作系统内核代码和数据,是被所有程序所共享的,在程序中修改内核空间中的数据不仅会影响操作系统本身的稳定性,还会影响其他程序,这事非常危险的行为,所以操作系统禁止用户程序直接访问内核空间。要想访问内核空间,必须借助操作系统提供的API函数,执行内核提供的代码,让内核自己来访问,这样才能保证内核空间的数据不会被随意修改,才能保证操作系统本身和其他程序的稳定性。用户程序调用系统API函数称为系统调用;发生系统调用时会暂停用户程序,转而执行内核代码(内核也是程序),访问内核空间,这称为内核模式。用户空间保存的是应用程序的代码和数据,是程序私有的,其他程序一般无法访问。当执行应用程序自己的代码时,称为用户模式。

四、理解主要成就

进程
进程由三部分组成:①一段可执行的程序;②程序所需要的相关数据(变量、工作空间、缓冲区等);③程序执行的上下文(包含操作系统管理进程以及处理器执行进程所需要的所有信息)。
进程控制块PCB:每个进程相关的信息。
上下文切换:当CPU切换到另外一个进程时,系统必须保存旧进程的状态,并且装入新进程曾保存的状态。
虚存
虚存机制允许程序以逻辑的方式访问存储器,而不考虑物理内存上可用的空间数量,满足多个用户作业同时驻留主存,采用分页技术和页面调度策略。
存储器由内存和低速辅存组成,内存可直接访问,外存可通过把块载入内存间接访问。
内存管理单元
地址转换硬件位于处理器和内存之间。程序使用虚地址访问,虚地址将映射成真实的内存地址。若访问的虚地址不在实际内存中,实际内存中的一部分内容将换到外存中,然后换入所需的数据块。
调度与资源管理
在这一活动过程中,操作系统设计者的任务是开发开销很少的地址转换机制,以及减小各级存储器间通信量的存储分配策略。
时间片轮转技术:依次给队列中的每个进程分配一定的时间,时间片轮转技术使用了一个环形队列。
另一种策略是:给不同的进程分配不同的优先级,然后根据优先级进行调度。

第三章 操作系统概述

一、进程的概念

为了使程序能够正确地并发执行,并且可以对并发执行的程序加以描述和控制,操作系统中引入了进程的概念,用进程来表示一个并发执行的程序。PCB、程序段和相关的数据段三个部分构成一个进程实体(又称进程映像),简称进程。
进程的特征:
动态性:有一定的生命期
并发性:多个进程实体,同存于内存中,能在一段时间内同时运行。
独立性:进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。
异步性:进程按各自独立的、不可预知的速度向前推进,进程按异步方式运行。
结构特征:进程实体是由程序段、数据段以及进程控制块等部分组成—进程映像

二、进程控制块

进程控制块是操作系统为支持多进程并提供多重处理技术的关键工具。进程中断时,操作系统会把程序计数器和处理器寄存器(上下文数据)保存到进程控制块中的相应位置,进程状态相应地改为其他值。进程控制块包含了充分的信息,因此可以中断一个进程的执行,并在后来恢复进程的执行,就好像进程从未中断过那样。
在这里插入图片描述
进程控制块的作用
进程控制块的作用是使一个在多道环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。操作系统利用PCB来描述进程 的基本情况以及进程的运行变化过程。PCB是进程存在的唯一标志,当系统创建一个进程时,为进程设置一个PCB,再利用PCB对进程进行控制和管理。撤销进程时,系统收回它的PCB,进程也随之消亡。
进程映像的构成
进程的内存映像可以很好地说明进程的组成。简单的说,一个进程映像包括:
① 进程程序块,即被执行的程序,规定了进程一次运行应完成的功能。通常它是纯代码,作为一种系统资源可被多个进程共享。
② 进程数据块,即程序运行时加工处理对象,包括全局变量、局部变量和常量等的存放区以及开辟的工作区,常常为一个进程专用。
③ 系统/用户堆栈,每一个进程都将捆绑一个系统/用户堆栈。用来解决过程调用或系统调用时的信息存储和参数传递。
④ 进程控制块,每一个进程都将捆绑一个进程控制块,用来存储进程的标志信息、现场信息和控制信息。进程创建时,建立进程控制块;进程撤销时,回收进程控制块,它与进程一一对应。

三、进程五状态模型

在这里插入图片描述
运行态:占用CPU运行,运行态进程数目不大于CPU数目。
就绪态:已占有除CPU之外的所有请求资源,只等待分配CPU即可运行。
阻塞态:进程需要等待I/O操作或其它相关事件无法继续运行。
新建态:PCB已经创建,但还没有加载到主存中的新进程。
退出态:进程完成或致命错误而结束。
引起进程状态转换的原因:
空新建:创建执行一个程序的新进程。
新建就绪:OS准备好再接纳一个进程时,为其分配资源。
就绪运行:从就绪进程表中选择一个进程进入运行态,这是调度器或分派器的工作。
运行退出:进程完成或取消。
运行就绪:运行的进程到达了“允许不中断执行”的最大时间(时间片)或高优先级进程从阻塞状态变为就绪。(抢占)
运行阻塞:进程请求其须等待的事件,如I/O未完成。
阻塞就绪:当所等待的事件发生时,如I/O完成,申请资源成功等。
就绪/阻塞退出:父进程终止一个子进程,或者父进程终止导致相关的所有子进程终止。

四、七状态进程模型

在这里插入图片描述
就绪态:进程已在内存中并可以执行。
阻塞态:进程已在内存中并等待一个事件。
阻塞/挂起态:进程已在外存中并等待一个事件。
就绪/挂起态:进程已在外存中,但只要载入内存就可以执行。
阻塞阻塞/挂起:若没有就绪进程,OS会至少换出一个阻塞进程,腾出空间让一未阻塞进程进入内存。
阻塞/挂起就绪/挂起:当等待的事件发生时(OS必须得到挂起进程的状态信息)。
就绪/挂起就绪:当内存中没有就绪进程时。
就绪就绪/挂起(较少见):当没有被阻塞的进程,而为了性能上的考虑必须释放一些内存时。
新建就绪/挂起和新建就绪:创建一个新进程时,该进程要么加入就绪队列,要么加入就绪/挂起队列。
阻塞/挂起阻塞:可用内存增多,阻塞/挂起进程的优先级比就绪/挂起进程高,且等待事件即将发生时。
运行就绪/挂起:阻塞/挂起队列中具有较高优先级的进程不再阻塞时,抢占运行的进程使之转变为就绪/挂起。
各种状态退出:一个进程的运行终止,要么是它已完成运行,要么是出现了一些错误条件。
交换:将内存中暂时不能运行的进程,或暂时不用的数据和程序,换出Swapping-out到外存,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的数据和程序,换入Swapping-in内存。

五、进程控制

操作系统为了管理进程和资源,必须掌握每个进程和资源的当前状态。普遍采用的方法是:操作系统构造并维护其管理的每个实体的信息表。操作系统维护的4种不同类型的表:内存、I/O、文件和进程。
进程控制的主要任务:进程控制是对系统中所有进程从产生、存在到消亡的全过程和实行有效的管理和控制。进程控制一般是由操作系统的内核来实现。
执行模式:
用户模式:较少特权模式,用户程序通常在该模式下运行。
系统模式、控制模式或内核模式:较多特权模式、操作系统的内核
当发生中断或系统调用时,用户模式切换到系统模式。

六、模式切换

从用户态到和心态或者从和心态到用户态的转换

七、进程切换与模式切换的区别

模式切换可在不改变运行态进程状态(有一些中断/异常不会引起进程状态转换,不会引起进程切换,只是在处理完成后把控制权交还给被中断进程)的情况下发生,此时保存上下文并在以后恢复上下文需要的开销很少。但是若当前正运行进程将转换为另一种状态(就绪(如时钟中断)、阻塞(如系统调用)等),则操作系统必须让环境产生实质性的变化。

第五章 并发:互斥和同步

一、并发相关的术语

死锁:两个或两个以上的进程因每个进程都在等待其他进程做完某些事情而不能继续执行的情形。
互斥:当一个进程在临界区访问共享资源时,其他进程不能进入临界区访问任何共享资源的情形。
饥饿:一个可运行进程尽管能继续执行,但被调度程序无限期地忽视,而不能被调度执行的情形。
临界区:一段代码,在这段代码中进程将访问共享资源,当另外一个进程已在这段代码中运行时,这个进程就不能在这段代码中执行。
临界资源:假设两个或更多的进程需要访问一个不可共享的资源,如打印机。在执行过程中,每个进程都给该I/O设备发命令,接收状态信息,发送数据和接收数据。我们把这类资源称为临界资源。
互斥机制:进程自身需要能够以某种方式表达互斥的需求,如在使用前对资源加锁,为实施互斥,需要两个函数entercritical和exitcritical,每个函数的参数都是竞争使用 的资源名,若另外一个进程在其临界区中,则任何试图进入临界区的进程都必须等待。

二、理解一般信号量定义及其操作

信号量:用于进程间传递信号的一个整数值。在信号量上只可进行三种操作,即初始化、递减和增加,这三种操作都是原子操作。递减操作用于阻塞一个进程,递增操作用于解除一个进程的阻塞。信号量也称为技术信号量或一般信号量。
原子操作:一个函数或动作由一个或多个指令的序列实现,对外是不可见的;没有其他进程可以看到其中间状态或中断此操作。
在这里插入图片描述
为达到预期效果,可把信号量视为一个值为整数的变量,整数值上定义了三个操作:
(1) 一个信号量可以初始化成非负数
(2) semWait操作使信号量减一。若值变为负数,则阻塞执行semWait的进程,否则进程继续执行。(P操作)
(3) semSignal操作使信号量加1。若值小于等于0,则被semWait操作阻塞的进程解除阻塞,除这三个操作外,没有任何其他方法可以检查或操作信号量。(V操作)
互斥的要求:
① 强制实施互斥:在多个想要同时访问临界资源的进程中,一次只允许一个进程进入临界区(忙则等待)。
② 一个在非临界区停止的进程必须不干涉其它进程。
③ 有限等待:不会死锁或饥饿(不允许出现需要访问临界区的进程或被无限延迟的情况)。
④ 空闲让进:当没有进程在临界区中时,任何需要进入临界区的进程必须能够立即进入。
⑤ 对相关进程的速度和处理器的数目没有任何要求和限制。
⑥ 一个进程驻留在临界区中的时间必须是有限的,从而才能让其它进程有限等待。
⑦ 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免陷入“忙等”。
在这里插入图片描述
信号量值变化范围
在这里插入图片描述

三、互斥的实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用信号量的互斥:设有n个进程,用数组P(i)表示,所有进程都需要访问共享资源。每个进程进入临界区前执行semWait(s),若s的值为负,则进程被阻塞;若值为1,则s被减为0,进程立即进入临界区;由于s不再为正,因而其他任何进程不能进入临界区。
在这里插入图片描述
使用消息的互斥:假设使用阻塞receive原语和无阻塞send原语,且一组并发进程共享一个信箱box,该信箱可供所有进程在发送和接收消息时使用,并初始化为一个无内容的消息。希望进入临界区的进程首先试图接收一条消息,若信箱为空,则阻塞该进程;一旦进程获得消息,它就执行其临界区,然后把该消息放回信箱。因此,消息函数可视为在进程之间传递的一个令牌。
① 若有一条消息,则它仅传递给一个进程,而其他进程被阻塞。
② 若消息队列为空,则所有进程被阻塞;一条消息可用时,仅激活一个则色进程,并得到这条消息。
在这里插入图片描述

四、掌握使用一般信号量机制解决有限缓冲区的生产者/消费者问题

在这里插入图片描述
在生产者消费者问题中应注意:
(1) 在每个程序中用于实现互斥的semWait(s)和semSignal(s)必须成对地出现。
(2) 对资源信号量e和n的semWait和semSignal操作,同样需要成对出现,但它们分别处于不同的程序中。
(3) 在每个程序中的多个semWait操作顺序不能颠倒。应先执行对资源信号量的semWait操作,然后再执行对互斥信号量的semWait操作,否则可能引起进程死锁。
(4) semSignal操作的次序倒是无关紧要。

第六章 并发:死锁和饥饿

一、死锁的定义

死锁定义为一组相互竞争系统资源或进行通信的进程间的“永久”阻塞。当一组进程中的每个进程都在等待某个事件(典型情况下是等待释放所请求的资源),而仅有这组进程中被阻塞的其他进程才可触发该事件,就称这组进程发生了死锁。死锁是永久性的,与并发进程管理中的其他问题不同,死锁问题并无有效的通用解决方案。

二、死锁的四个条件

(1)互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。
(2)占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。
(3)不可抢占:别人已经占有了某项资源,不能因为自己也需要该资源,就把别人的资源抢过来。
(4)循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。

三、死锁预防:破坏死锁后三个条件

死锁预防方法分为两类。一类是间接死锁预防方法,即防止前面列出的三个必要条件中的任何一个条件的发生;另一类是直接死锁预防方法,即防止循环等待的发生。
互斥:一般来说,互斥条件不可能禁止。
占有且等待:可以要求进程一次性地请求所有需要的资源,并阻塞这个进程直到所有请求都同时满足。(存在2个方面的低效性)
不可抢占:首先,占有某些资源的一个进程进一步申请资源时若被拒绝,则该进程必须释放其最初占有的资源,必要时可再次申请这些资源和其他资源。其次,一个进程请求当前被另一个进程占有的一个资源时,操作系统可以抢占另一个进程,要求它释放资源。只有在任意两个进程的优先级不同的条件下,后一种方案才能预防死锁。
循环等待:循环等待条件可通过定义资源类型的线性顺序来预防。若一个进程已分配了R类型的资源,则其接下来请求的资源只能是那些排在R类型之后的资源。

四、处理死锁的方法:死锁预防、死锁避免、死锁检测与解除

死锁避免允许三个必要条件,但通过明智地选择,可确保永远不会到达死锁点,因此死锁避免与死锁预防相比,可允许更多的并发。在死锁避免中,是否允许当前的资源分配请求是通过判断该请求是否可能导致死锁来决定的。因此,死锁避免需要知道未来进程资源请求的情况。
两种死锁避免的方法:
① 若一个进程的请求会导致死锁,则不启动该进程。
② 若一个进程增加的资源请求会导致死锁,则不允许这一资源分配。
资源分配拒绝(又称银行家算法):
安全状态:至少有一个资源分配序列不会导致死锁(即所有进程都能运行直到结束)。
不安全状态:非安全的一个状态。
死锁避免的优点是,无须死锁预防中的抢占和回滚进程,且与死锁预防相比限制较少。但是它在使用中也有许多限制:
① 必须事先声明每个进程请求的最大资源
② 所讨论的进程必须是无关的,即它们的执行顺序必须没有任何同步要求的限制。
③ 分配的资源数量必须是固定的。
④ 在占有资源时,进程不能退出。
死锁检测
死锁检测不限制资源访问或约束进程行为。对于死锁检测来说,只要有可能,就会给进程分配其所请求的资源。操作系统周期性地执行一个算法来检测循环等待条件。
死锁检测算法
在每次请求资源时检查死锁有两个优点:可以尽早地检测死锁情况;算法相对比较简单。然而这种频繁的检测会耗费相当多的处理器时间。
死锁解除
(1) 取消所有的死锁进程。这是操作系统中最常采用的方法。
(2) 把每个死锁进程回滚到前面定义的某些检查点,并重新启动所有进程。此时,要求在系统中构建回滚和重启机制。这种方法的风险是原来的死锁可能再次发生。但是并发进程的不确定性通常能保证不会发生这种情况。
(3) 连续取消死锁进程直到不再存在死锁。所选取消进程的顺序应基于某种最小代价原则。在每次取消后,必须重新调用检测算法,以测试是否仍存在死锁。
(4) 连续抢占资源直到不再存在死锁。和(3)一样,需要使用一种基于代价的选择方法,且需要在每次抢占后重新调用检测算法。一个资源被抢占的进程必须回滚到获得这个资源之前的某一状态。
对于(3)和(4),选择原则如采用如下之一:
① 目前为止消耗的处理器时间最少
② 目前为止产生的输出最少
③ 预计剩下的时间最长
④ 目前为止分配的资源总量最少
⑤ 优先级最低

五、熟练掌握银行家算法来避免死锁(用到的矩阵与向量、这些数据结构之间的关系,四个步骤,寻找安全序列,判别安全/不安全状态)。

六、了解哲学家进餐问题

第八章 虚拟内存

一、理解虚拟内存的术语

虚拟内存:在存储分配机制中,尽管备用内存是主存的一部分,但它也可被寻址。程序引用内存使用的地址与内存系统用于识别物理存储站点的地址是不同的,程序生成的地址会自动转换为机器地址。虚拟存储的大小受计算机系统寻址机制和可用的备用内存量的限制,而不受主存储位置实际数量的限制。
虚拟地址:在虚拟内存中分配给某一位置的地址,它使得该位置可被访问,就好像是主存的一部分那样。
虚拟地址空间:分配给进程的虚拟存储。
地址空间:用于某进程的内存地址范围。
实地址:内存中存储位置的地址。
虚拟内存实现
在这里插入图片描述

二、理解虚拟内存的理论基础:局部性原理

时间局部性:被引用过一次的存储器位置在未来会被多次引用
空间局部性:如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。也就是说靠近当前正在被访问内存的内存内容很快也会被访问。

三、虚拟分页内存管理系统的基本原理

了解常驻集
常驻集(进程执行任何时候都在内存中的部分)是指在当前时刻,进程实际驻留在内存当中的页面集合。当进程执行时,只要所有的内存访问都是访问常驻集中的单元,执行就可以顺利进行。
工作集是进程在运行过程中固有的性质,而常驻集取决于系统分配的进程的物理页面数目,以及采用的页面置换算法,如果一个进程的整个工作集都在内存当中,即工作集是常驻集的一个子集,那么程序将很顺利地进行,而不会造成太多的页中断。
页表机制
进程的页式存储方式是分散存储的。
每一个进程,只要在内存里面就会拥有一张页表,页表也保存在内存里面。
进程内部,把程序和数据按照页框大小进行划分,分别保存,起始页码为0。在页表中,包含与进程分页数相同数量的页表项,每一个页表项由两部分组成,即页号和其对应的物理地址(即物理块号,也是页框号),物理地址对应的页号=页表始址+页号*页表项长度
在进程没有处于运行状态,但是存在于内存当中时,进程控制块PCB中会保存页表在内存中的存储位置,即始址+长度。
当进程转为运行状态,操作系统会根据PCB,把PCB中的页表信息调进页表寄存器PTR,地址变换机构根据页表、地址(页号、偏移量)找到相应程序和数据进行运行。
在这里插入图片描述
页表项:除了页号对应的页框外,增加存在位、修改位、控制位等。
存在位(P):每个页表项需要有一位来表示它所对应的页当前是否在内存中,
修改位(M):该页是否被修改过。
页表结构、地址变换过程
页表结构:从内存中读取一个字的基本机制包括使用页表从虚拟地址到物理地址的转换。虚拟地址又称逻辑地址,它由页号和偏移量组成,而物理地址由页框号和偏移量组成。
在这里插入图片描述
了解转换检测缓冲区(TLB,快表)的作用
为克服每个虚存访问可能引起两次物理内存访问的问题,大多数虚拟存储器方案为页表项使用一个特俗的高速缓存,通常称作转换检测缓冲区。有快表,命中率高,速度提高。功能与cache类似。
转换检测缓冲区的用法:给定一个虚地址,处理器首先检查TLB,如果想要的页表项在其中(TLB命中),则检索页框号并形成实地址;如果没有找到想要的页表项(TLB失误),处理器用页号检索进程页表,并检查相应的页表项。
分页和TLB的操作,缺页中断处理
如果“存在位”已置位,则该页在主存中,处理器从页表项中检索页框号以形成实地址。处理器同时更新TLB,使其包含这个新的页表项。如果“存在位”没有置位,则想要的页不在主存中,因而产生一次内存访问故障(缺页中断),调用操作系统,由操作系统装入所需要的页,并更新页表。
在这里插入图片描述
熟练掌握OPT,LRU,FIFO等页面置换算法,计算缺页次数
置换策略:需要调入新页面时,选择内存中哪个物理页面被置换,称为置换策略。目标:把未来不再使用或短期内较少使用的页面调出,通常应在局部性原理指导下依据过去的统计数据进行预测,减少缺页次数。
基本的置换算法:最佳算法(OPT),最近最少使用算法(LRU),先进先出算法(FIFO),时钟算法(Clock)
最佳置换算法(OPT):置换时淘汰“未来不再使用的”或“在离当前最远位置上出现的”页面。
在这里插入图片描述
最近最少使用算法(LRU):置换时淘汰最近一段时间最久没有使用的页面,即选择上次使用距当前最远的页面淘汰。
在这里插入图片描述
LRU性能接近最佳算法
先进先出算法(FIFO):置换时淘汰最先进入内存的页面,即选择驻留子啊内存时间最长的页面被置换。
在这里插入图片描述
时钟算法(Clock):置换时淘汰使用位为0的页面
在这里插入图片描述

第九章 单处理器调度

一、长程调度、中程调度、短程调度,它们的区别

长程调度:决定调度磁盘后备队列中的哪个作业进入系统,为之创建进程,并加入内存中待执行的就绪队列中。核心思想:将已进入系统并处于后备状态的作业按某种算法选择一个或一批,为其建立进程,并进入主机。
中程调度:是交换功能的一部分,按一定的算法将外存中已具备运行条件的进程的部分或全部换入内存,使之等待被执行。核心思想是能将进程从内存或从CPU竞争中移出,从而降低多道程序设计的程度。
短程调度:决定从就绪队列中哪一个进程应先获得处理器,并将处理机分配给选定的进程。核心思想是按照某种策略和算法将处理机分配给一个处于就绪状态的进程,分为抢占式和非抢占式。
在这里插入图片描述

二、短程调度准则:周转时间、响应时间

周转时间:指一个进程从提交到完成之间的时间间隔,包括实际执行时间和等待资源(包括处理器资源)的时间。对批处理作业而言,这是一种很合适的测度。
响应时间:对一个交互进程来说,这指从提交一个请求到开始接收响应之间的时间间隔。通常情况下,进程在处理该请求的同时,会开始给用户产生一些输出。因此从用户的角度来看,相对于周转时间,这是一种更好的测度。该调度原则会试图实现较低的响应时间,并在可接受的响应时间范围内,使可交互的用户数量最大。

三、各种进程调度算法的特点

选择函数:决定选择哪个就绪进程下次执行。这个函数可以根据优先级、资源需求或进程的执行特性来进行选择。
决策模式:说明选择函数在被执行的瞬间的处理方式,通常分为两类:非抢占、抢占。
在这里插入图片描述

四、掌握各种进程调度算法,画出调度的时序图并计算它们平均周转时间与归一化周转时间

周转时间就是驻留时间,或这一项在系统中花费的总时间(等待时间+服务时间)
归一化周转时间:周转时间与服务时间的比值,它表示一个进程的相对延迟情况。
典型情况下,进程的执行时间越长,可以容忍的延迟时间就越长。这个比值的最小值为1.0,比值越大,服务级别越低。
先来先服务算法(FCFS):每个进程就绪后,加入就绪队列,当前正在运行的进程停止执行时,选择就绪队列中存在时间最长的进程运行。
FCFS的缺点:FCFS更适用于长进程,不利于短进程,一个短进程在它能够执行之前,可能必须等待很长时间,有利于处理器密集型的进程,而不利于I/O密集型的进程。
最短进程优先算法(SPN):是一个非抢占的策略,其原则是下一次选择所需处理时间最短的进程,短进程将会越过长作业,跳到队列头。
缺点:对长进程非常不利,长进程可能被饿死;难以准确估计进程的执行时间,从而影响调度性能;如果估计进程所需处理的时间不正确,操作系统可能终止这个作业。
最短剩余时间算法(SRT):对SPN增加了抢占机制的版本,调度程序总是选择预期剩余时间最短的进程,执行选择函数时必须估计处理时间,周转时间方面,性能优于SPN。
最高响应比算法(HRRN):选择相应比最大的进程,非抢占。
R=(等待处理器的时间+预计的服务时间)/预计的服务时间
时间片轮转算法(RR):使用基于时钟的抢占策略,这种算法周期性地产生时钟中断,出现中断时,当前正运行的进程会放置到就绪队列中,然后基于FCFS策略选择下一个就绪作业运行。这种技术也称为时间片,因为每个进程在被抢占前都会给定一片时间。
时间片长度变化的影响:
过长退化为FCFS算法,进程在一个时间片内都执行完,无法满足交互用户需求。
多短有利于短进程,但是,用户的一次请求需要多个时间片才能处理完,进程切换次数增加,增加系统开销。
最好:略大于一次典型的交互所需时间。

第十一章 I/O管理和磁盘调度

一、四种I/O技术

程序控制I/O:处理器代表一个进程给I/O模块发送一个I/O命令;该进程进入忙等待,直到操作完成才能继续执行。
中断驱动I/O:处理器代表进程向I/O模块发出一个I/O命令。有两种可能性:若来自进程的I/O指令是非阻塞的,则处理器继续执行发出I/O命令的进程的后续指令。若I/O指令是阻塞的,则处理器执行的下一条指令来自操作系统,它将当前的进程设置为阻塞态并调度其他进程。
直接内存访问(DMA):一个DMA模块控制内存和I/O模块之间的数据交换。为传送一块数据,处理器给DMA模块发请求,且只有在整个数据块传送结束后,它才被中断。(从主存中移出或往主存移入一块数据,不需要处理器参与,仅仅在传送开始和结束时需要用到处理器)。
I/O通道:I/O模块被增强成一个单独的处理器,又专门为I/O设计的指令集,I/O模块有自己的局部存储器,I/O模块本身是一个计算机,也称作I/O处理器,进一步减少CPU的干预。实现CPU、通道和I/O设备三者的并行工作,从而更有效的提高了整个系统的资源利用率。

二、I/O缓冲技术

单缓冲:操作系统提供的最简单的缓冲类型是单缓冲。当一个用户进程发出I/O请求时,操作系统给该操作分配一个位于内存中系统部分的缓冲区。
双缓冲:给I/O操作分配两个系统缓冲区,对单缓冲方案进行改进。当一个进程往一个缓冲区中传送数据(从这个缓冲区中取数据)时,操作系统正在清空(填充)另一个缓冲区,并行操作。
循环缓冲:使用多于两个的缓冲区,其中的每一个缓冲区是这个循环缓冲区的一个单元,使相关I/O操作能够跟得上这个进程。

三、理解磁盘性能参数及其计算

信息记录在磁道上,多个盘面,正反两面都用来记录信息,每面一个磁头。所有盘面中处于同一磁道号上的所有磁道组成一个柱面,每个扇区大小为512字节。
磁盘的访问过程:
寻道:磁头移动定位到指定磁道
旋转延迟:等待指定的扇区旋转到磁头处
数据传输:数据在磁盘与内存之间的实际传输
为了读和写,磁头必须定位于期望的磁道和磁道中期望的扇区的开始处。
寻道时间:磁头定位磁道所需要的时间;典型的硬盘的平均寻道时间小于10ms
访问时间:寻道时间和旋转延迟的总和,达到读或写位置所需要的时间。
传输时间:T=b/rN;

四、熟练掌握磁盘调度算法

先进先出FIFO:按访问请求到达的先后次序服务。优点:对于所有的进程都很公平。缺点:如果有多个进程竞争一个磁盘,这种技术在性能上往往接近于随机调度。
最短服务时间优先SSTF:选择使磁头臂从当前位置开始移动最少的磁盘I/O请求。贪心的策略,总是选择最小寻道时间的请求,不能保证平均寻道时间最短,可能存在饥饿现象。
电梯算法SCAN:SCAN要求磁头臂仅沿一个方向移动,并在途中满足所有未完成的请求,直到它到达这个方向上的最后一个磁道,或者在这个方向上没有其他请求位置。接着反转服务方向,沿相反方向扫描,同样按顺序完成所有请求。
循环扫描算法(C-SCAN):把扫描限定在一个方向,当沿某个方向访问到最后一个磁道时,磁头臂返回到磁盘的另一端,并再次开始扫描。

第十二章 文件管理

一、文件与文件系统的概念

文件:由用户创建的一种数据集合,文件系统是操作系统一个重要部分。文件拥有的理想属性:长期存在、进程间可共享、结构(层次结构或更复杂的结构)
文件系统:提供一种存储数据的手段,提供一系列对文件进行操作的功能接口。

二、文件结构

文件的逻辑结构:指从用户观点出发所观察的文件组成
有结构文件(也称为记录式文件):域(数据项)、记录、文件
无结构文件:无结构文件是指由字符流构成的文件,又称为流式文件。流式文件的基本单位是字节,也可以看作记录式文件的一个特例。

三、文件的逻辑组织方式

文件组织指文件中记录的逻辑结构,它由用户访问记录的方式确定。
选择文件组织的重要原则:访问快速,易于修改。
主要记录5种文件组织:
堆(最简单的文件组织形式):数据按它们到达的顺序被采集,每个记录由一串数据组成,目的是积累大量的数据并保存数据。
顺序文件(常用的):每个记录都使用一种固定的格式。
索引顺序文件:保留了顺序文件的关键字特征,增加了两个特征:文件索引和溢出文件,索引提供了快速接近目标记录的查找能力。
直接文件或散列文件:直接访问磁盘中任何一个地址已知的块,使用基于关键字的散列,常在要求快速访问时使用,且记录的长度是固定的,通常一次只访问一条记录。

四、文件目录

先进先出FIFO:按访问请求到达的先后次序服务。优点:对于所有的进程都很公平。缺点:如果有多个进程竞争一个磁盘,这种技术在性能上往往接近于随机调度。
最短服务时间优先SSTF:选择使磁头臂从当前位置开始移动最少的磁盘I/O请求。贪心的策略,总是选择最小寻道时间的请求,不能保证平均寻道时间最短,可能存在饥饿现象。
电梯算法SCAN:SCAN要求磁头臂仅沿一个方向移动,并在途中满足所有未完成的请求,直到它到达这个方向上的最后一个磁道,或者在这个方向上没有其他请求位置。接着反转服务方向,沿相反方向扫描,同样按顺序完成所有请求。
循环扫描算法(C-SCAN):把扫描限定在一个方向,当沿某个方向访问到最后一个磁道时,磁头臂返回到磁盘的另一端,并再次开始扫描。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

近景_

打赏拉满,动力满满

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值