第一章 操作系统引论
1.操作系统的特征
-并发、共享、虚拟、异步
2.操作系统的作用
- OS作为用户与计算机硬件系统之间的接口
- OS作为计算机系统资源的管理者
- OS实现了对计算机资源的抽象
第二章 进程的描述和控制
1.进程的相关概念
1.进程控制
进程控制是进程管理中最基本的功能,主要包括创建进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能
2.进程创建
1.进程的创建
在系统中每当出现了创建新进程的请求后,OS便调用进程创建原语Creat按下述步骤创建一个新进程:
(1)申请空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。
(2)为新进程分配其运行所需的资源,包括各种物理和逻辑资源,如内存、文件、I/O设备和CPU时间等。
(3)初始化进程控制块(PCB)。
(4)如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。
2.进程创建的引发事件
(1)用户登录。
(2)作业调度。
(3)提供服务。
(4)应用请求。
3.进程就绪
1.进程的就绪
指进程已处于准备好运行的状态,即进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行。
4.进程运行
1.进程运行
指进程以获得CPU,其程序正在执行的状态。
5.进程阻塞
1.进程阻塞
指正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行的状态。
2.进程阻塞的引发事件
(1)向系统请求共享资源失败。
(2)等待某种操作的完成。
(3)新数据尚未到达。
(4)等待新任务的到达。
6.进程挂起
1.进程挂起
当该操作作用于某个进程时,该进程将被挂起,意味着此时该进程处于静止状态。
2.进程挂起的引发事件
(1)终端用户的需要。
(2)父进程请求。
(3)负荷调节的需要。
(4)操作系统的需要。
7.进程终止
1.进程终止
2.进程终止的引发事件
(1)正常结束。
(2)异常结束。
(3)外界干预。
2.进程的特征
(1)动态性。
(2)并发性。
(3)独立性。
(4)异步性。
3.进程两种形式的制约关系
(1)间接相互制约关系
(2)直接相互制约关系
4.进程同步、互斥
1.进程同步
进程同步机制的主要任务,是对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则共享系统资源,并能很好地相互合作从而使程序的执行具有可再现性。
2.进程互斥
是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,其它进程必须等待。只有当使用临界资源的进程退出临界区后,其它进程才会解除阻塞状态。
3.为什么要实现进程的同步与互斥?
预防死锁
第三章 处理机调度和死锁
1.三个层次调度的概念
1.高级调度
高级调度又称长程调度或作业调度,它的调度对象是作业。其主要功能是根据某种算法,决定将外存上处于后备队列中那几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪队列。
2.中级调度
中级调度又称中程调度(Medium-Term Scheduling)。引入中级调度的主要目的,是为了提高内存利用率和系统吞吐量。为此,应使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。
3.低级调度
低级调度又称为进程调度或短程调度,其所调度的对象是进程。其主要功能是,根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。
2.作业运行的三个阶段和三个状态
1.作业运行的三个阶段
(1)收容阶段。
(2)运行阶段。
(3)完成阶段。
2.作业运行的三个状态
(1)后备状态。
(2)运行状态。
(3)完成状态。
3.处理机调度算法
1.先来先服务(FCFS)调度算法
FCFS是最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从后备作业队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程。然后把它放入就绪队列。
2.短作业优先(SJF)调度算法
SJF算法是以作业的长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的运行时间来衡量的。SJF算法可以分别用于作业调度和进程调度。在把短作业优先调度算法用于作业调度时,它将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存运行。
3.优先级调度算法
我们可以这样来看作业的优先级,对于先来先服务调度算法,作业的等待时间就是作业的优先级,等待时间越长,其优先级越高。对于短作业优先调度算法,作业的长短就是作业的优先级,作业所需运行的时间越短,其优先级越高。但上述两种优先级都不能反映作业的紧迫程度。
4.抢占式与非抢占式调度
1.抢占式调度
这种调度方式允许调度程序根据某种原则,去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。
2.非抢占式调度
在采用这种调度方式时,一旦把处理机分配给某进程后,就一直让它运行下去,决不会因为时钟中断或任何其它原因去抢占当前正在运行进程的处理机,直至该进程完成,或发生某事件而被阻塞时,才把处理机分配给其它进程。
5.处理机调度的共同目标
(1)资源利用率
(2)公平性
(3)平衡性
(4)策略强制执行
6.死锁的概念
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
7.产生死锁的原因、必要条件及处理方法
1.产生死锁的原因
(1)竞争不可抢占性资源引起死锁
(2)竞争可消耗资源引起死锁
(3)进程推进顺序不当引起死锁
2.产生死锁的必要条件
(1)互斥条件。
(2)请求和保持条件。
(3)不可抢占条件。
(4)循环等待条件。
3.处理死锁的方法
(1)预防死锁
(2)避免死锁。
(3)检测死锁。
(4)解除死锁。
8.预防死锁
1.破坏“请求和保持条件”
(1)**第一种协议:**该协议规定,所有进程在开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源。
(2)**第二种协议:**该协议是对第一种协议的改进,它允许一个进程只获得运行初期所需的资源后,便开始运行。
2.破坏“不可抢占”条件
3.破坏“循环等待”条件
第四章 存储器管理
1.多级存储器结构及存储器各层访问方式
2.单一连续分配、动态分区分配、可重定位分区分配的分配方式及分配算法
1.单一连续分配
在用户区内存中,仅装有一道用户程序,即整个内存的用户空间由该程序独占。
2.动态分区分配
又称为可变分区分配,它是根据进程的实际需要,动态地为之分配内存空间。
3.动态分区分配算法
(1)基于顺序搜索的动态分区分配算法
- 首次适应(first fit,FF)算法
在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存空间,分配给请求者,余下的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则表明系统中己没有足够大的内存分配给该进程,内存分配失败,返回。
- 循环首次适应(next fit,NF)算法
在为进程分配内存空间时,不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业。
- 最佳适应(best fit,BF)算法
所谓“最佳”是指,每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。为了加速寻找,该算法要求将所有的空闲分区按其容量以从小到大的顺序形成一空闲分区链。
- 最坏适应(worst fit,WF)算法
由于最坏适应分配算法选择空闲分区的策略正好与最佳适应算法相反:它在扫描整个空闲分区表或链表时,总是挑选一个最大的空闲区,从中分割一部分存储空间给作业使用,以至于存储器中缺乏大的空闲分区,故把它称为是最坏适应算法。
(2)基于索引搜索的动态分区分配算法
- 快速适应(quick fit)算法
- 伙伴系统(buddy system)
- 哈希算法
4.可重定位分区分配算法
动态重定位分区分配算法与动态分区分配算法基本上相同,差别仅在于:在这种分配算法中,增加了紧凑的功能。通常,当该算法不能找到一个足够大的空闲分区以满足用户需求时,如果所有的小的空闲分区的容量总和大于用户的要求,这时便须对内存进行“紧凑”,将经“紧凑”后所得到的大空闲分区分配给用户。如果所有的小的空闲分区的容量总和仍小于用户的要求,则返回分配失败信息。
3.对换及对换的类型
对换:
所谓“对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利用率的有效措施。
对换的类型:
- (1)整体对换。
- (2)页面(分段)对换。
4.分页存储管理的概念及分页地址变换方法
**分页存储管理方式:**在该方式中,将用户程序的地址空间分为若干个固定大小的区域,称为“页”或“页面”。典型的页面大小为1KB。相应地,也将内存空间分为若干个物理块或页框(frame),页和块的大小相同。这样可将用户程序的任一页放入任一物理块中,实现了离散分配。
5.分段存储管理概念及地址变换方法
**分段存储管理方式:**这是为了满足用户要求而形成的一种存储管理方式。它把用户程序的地址空间分为若干个大小不同的段,每段可定义一组相对完整的信息。在存储器分配时,以段为单位,这些段在内存中可以不相邻接,所以也同样实现了离散分配。
6.段页式存储管理概念及地址变换方法
**(3)段页式存储管理方式:**这是分页和分段两种存储管理方式相结合的产物。它同时具有两者的优点,是目前应用较广泛的一种存储管理方式。
7.分页分段存储管理各有什么优缺点,如何选择使用
第五章 虚拟存储器
1.局部性原理
指计算机在执行某个程序时,倾向于使用最近使用的数据。
局部性原理有两种表现形式:
时间局部性(Temporal Locality):如果程序中的某条指令一旦被执行,则不久的将来该指令可能再次被执行。
空间局部性(Spatial Locality):一旦程序访问了某个存储单元,则在不久的将来,其附近的存储单元也最有可能被访问。
顺序局部性(Order Locality):在典型程序中,除转移类指令外,大部分指令是顺序进行的。顺序执行和非顺序执行的比例大致是5:1。此外,对大型数组访问也是顺序的。指令的顺序执行、数组的连续存放等是产生顺序局部性的原因。
2.页面缓冲算法中影响页面换进换出效率的因素
(1)页面置换算法。
(2)写回磁盘的频率。
(3)读入内存的频率。
3.请求分页的内存分配策略
在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。在进行置换时,也可采取两种策略,即全局置换和局部置换。于是可组合出以下三种适用的策略。
1)固定分配局部置换(Fixed Allocation,LocalReplacement)
2)可变分配全局置换(Variable Allocation,GlobalReplacement)
3)可变分配局部置换(Variable Allocation,LocalReplacement)
4.抖动的概念及预防措施
1.抖动的概念
2.预防措施
(1)采取局部置换策略
(2)把工作集算法融入到处理机调度中
(3)利用“L=S"准则调节缺页率
(4)选择暂停的进程
5.工作集的概念
所谓工作集,是指在某段时间间隔△里,进程实际所要访问页面的集合。
6.虚拟存储器的特征
(1)多次性
(2)对换性
(3)虚拟性
7.虚拟存储器的定义,虚拟存储器的实现方法
1.虚拟存储器的定义
当用户看到自己的程序能在系统中正常运行时,他会认为,该系统所具有的内存容量一定比自己的程序大,或者说,用户所感觉到的内存容量会比实际内存容量大得多。但用户所看到的大容量只是一种错觉,是虚的,故人们把这样的存储器称为虚拟存储器。
2.虚拟存储器的实现方法
1.分页请求系统
1)硬件支持
主要的硬件支持有:
(1)请求分页的页表机制。
(2)缺页中断机构。
(3)地址变换机构。2)实现请求分页的软件
2.请求分段系统
1)硬件支持
主要的硬件支持有:
(1)请求分段的段表机制。
(2)缺页中断机构。
(3)地址变换机构。2)软件支持
8.页面置换算法
1.最佳(Optimal)置换算法
最佳置换算法是由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法通常可保证获得最低的缺页率。但由于人们目前还无法预知,一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,但可以利用该算法去评价其它算法。
2.先进先出(FIFO)页面置换算法
FIFO算法是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO算法并不能保证这些页面不被淘汰。
3.最近最久未使用(LRU)置换算法
最近最久未使用(LRU)的页面置换算法是根据页面调入内存后的使用情况做出决策的。
第六章 输入输出系统设备
1.设备、设备控制器、DMA、通道、总线是怎么样连接起来构成系统的,相互之间的控制关系。
2.I/O系统的层次结构
3.了解设备分配的数据结构:设备控制表、通道控制表、系统设备表。掌握设备分配的过程
4.I/O设备控制方式的种类
(1)使用轮询的可编程l/0方式
(2)使用中断的可编程I/0方式
(3)直接存储器访问方式1)接存储器访问方式的引入
2)DMA控制器的组成
3)DMA工作过程(4)I/O通道控制方式
1)I/O通道控制方式的引入
2)通道程序
5.中断与陷入
1.中断
是指CPU对I/O设备发来的中断信号的一种响应。CPU暂停正在执行的程序,保留CPU环境后,自动地转去执行该I/O设备的中断处理程序。
2.陷入
是一种由CPU内部事件所引起的中断
6.磁道访问的相关算法(FIFO、SSTF)
1.先来先服务(FCFS)
它根据进程请求访问磁盘的先后次序进行调度。
2.最短寻道时间优先(SSTF)
该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种算法不能保证平均寻道时间最短。
7.Spooling系统及假脱机的概念
1.Spooling系统
SPOOLing系统主要由以下四部分构成:
(1)输入井和输出井。
(2)输入缓冲区和输出缓冲区。
(3)输入进程和输出进程。
(4)井管理程序。
SPOOLing系统的特点:
(1)提高了I/O的速度。
(2)将独占设备改造为共享设备。
(3)实现了虚拟设备功能。
8.引入缓冲区的原因
(1)缓和CPU与IO设备间速度不匹配的矛盾。
(2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
(3)提高CPU和I/O设备之间的并行性。
第七章 文件管理
1.文件系统的三层模型及执行原理
2.按照文件的组织方式文件可以分为哪些类型?
根据文件的组织方式,可把有结构文件分为三类:(1)顺序文件。
(2)索引文件。
(3)索引顺序文件。
3.文件记录的寻址方式有哪几种?
(1)隐式寻址方式
对于定长记录的顺序文件,如果已知当前记录的逻辑地址,便很容易确定下一个记录的逻辑地址。
(2)显示寻址方式
该方式可用于对定长记录的文件实现直接或随机访问。因为任何记录的位置都很容易通过记录长度计算出来。而对于可变长度记录的文件则不能利用显式寻址方式实现直接或随机访问,必须增加适当的支持机构方能实现。下面我们通过两种方式对定长记录实现随机访问:
- (1)通过文件中记录的位置。
- (2)利用关键字。
4.索引顺序文件的概念
索引顺序文件是对顺序文件的一种改进,它基本上克服了变长记录的顺序文件不能随机访问,以及不便于记录的删除和插入的缺点。但它仍保留了顺序文件的关键特征,即记录是按关键字的顺序组织起来的。它又增加了两个新特征:一个是引入了文件索引表,通过该表可以实现对索引顺序文件的随机访问;另一个是增加了溢出(overflow)文件,用它来记录新增加的、删除的和修改的记录。
5.文件控制块的概念及构成
为了能对系统中的大量文件施以有效的管理,在文件控制块中,通常应含有三类信息,即基本信息、存取控制信息及使用信息。
6.文件目录管理的相关要求
对目录管理的要求如下:
(1)实现“按名存取”。
(2)提高对目录的检索速度。
(3)文件共享。
(4)允许文件重名。
7.访问矩阵相关概念
1.基本的访问矩阵
我们可以利用一个矩阵来描述系统的访问控制,并把该矩阵称为访问矩阵(Access Matrix)。访问矩阵中的行代表域,列代表对象,矩阵中的每一项是由一组访问权组成的。因为对象已由列显式地定义,故可以只写出访问权而不必写出是对哪个对象的访问权,每一项访问权access(i, j)定义了在域D;中执行的进程能对对象Q,所施加的操作集。
2.具有域切换权的访问矩阵
为了实现在进程和域之间的动态联系,应能够将进程从一个保护域切换到另一个保护域。为了能对进程进行控制,同样应将切换作为一种权力,仅当进程有切换权时,才能进行这种切换。为此,在访问矩阵中又增加了几个对象,分别把它们作为访问矩阵中的几个域;当且仅当switchEaccess(i,j)时,才允许进程从域i切换到域j。
3.访问矩阵的修改
1.拷贝权(Copy Right)
我们可利用拷贝权将在某个域中所拥有的访问权
(access(i,j))扩展到同一列的其它域中,亦即,为进程在其它的域中也赋予对同一对象的访问权(access(k, j)),如图7-20所示。
2.所有权(Owner Right)
人们不仅要求能将已有的访问权进行有控制的扩散,而且同样需要能增加某种访问权,或者能删除某种访问权。此时,可利用所有权(O)来实现这些操作。
3.控制权(Control Right)
拷贝权和所有权都是用于改变矩阵内同一列的各项访问权的,或者说,是用于改变在不同域中运行的进程对同一对象的访问权的。控制权则可用于改变矩阵内同一行中(域中)的各项访问权,亦即,用于改变在某个域中运行的进程对不同对象的访问权的。如果在access(i,j)中包含了控制权,则在域Di中运行的进程可以删除在域Dj中运行的进程对各对象的任何访问权。
4.访问矩阵的实现
- 1.访问控制表(Access Control List)
这是指对访问矩阵按列(对象)划分,为每一列建立一张访问控制表ACL。在该表中,已把矩阵中属于该列的所有空项删除,此时的访问控制表是由一有序对(域,权集)所组成的。由于在大多数情况下,矩阵中的空项远多于非空项,因而使用访问控制表可以显著地减少所占用的存储空间,并能提高查找速度。- 2.访问权限(Capabilities)表
如果把访问矩阵按行(即域)划分,便可由每一行构成一张访问权限表。换言之,这是由一个域对每一个对象可以执行的一组操作所构成的表。表中的每一项即为该域对某对象的访问权限。当域为用户(进程)、对象为文件时,访问权限表便可用来描述一个用户(进程)对每一个文件所能执行的一组操作。