操作系统学习笔记(全)
主要是北京交通大学操作系统课程视频每一章后面问题的解答,在学习过程中进行记录,希望可以帮到有需要的朋友。前面几个单元为一些总结,后面的单元为提问+回答。
https://www.icourse163.org/learn/NJTU-1003245001
文章目录
1.1 操作系统基础概念
操作系统是最基本的系统软件,因为是软件,所以是程序的集合,这个程序的基本功能是管控计算机的软件和硬件资源的,进一步说,是有效的管理,体现在资源、利用率和系统吞吐量上,同时通过对各种任务作业进行合理的调度,来组织和控制系统的工作流程,这也是操作系统的内部实现机制。通过操作系统,用户可以更加方便地使用计算机。操作系
1.5 操作系统的发展
1.脱机I/O:
外围机批处理从慢速的外围设备到另一个快速的输入设备,之后,主机直接从快速的输入设备中读取并进行计算,结果写写到该快速的输入设备,在外围机的控制下,将结果输出到输出设备。
2.联机I/O
联机I/O是指作业的输入、调入内存以及结果输出都在CPU直接控制下进行 。
-
单道批处理系统:系统对作业的处理是成批进行的,但内存中始终只运行一道作业。
-
多道批处理系统:多道程序设计技术允许多个程序同时进入内存并运行。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。它让系统的各个组成部分都尽量去“忙”,花费很少时间去切换任务,达到了系统各部件之间的并行工作,从而使各种资源得到充分利用,增大系统吞吐量大。
-
分时系统:所谓分时技术就是把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续运行。由于计算机速度很快,给每个用户的感觉好像是自己独占一台计算机。
-
实时系统:实时系统主要用于专用系统,有着非常严格的固定时间要求。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。多用于军事领域
1.6 操作系统功能与特征
操作系统的基本设计原则为:可维护性(纠错性/适应性/完善性/预防性防护)、可靠性(正确性/健壮性)可理解性、可用性、性能(系统资源利用率及用户请求响应)
操作系统发展过程中经历的结构变化:
1、整体式操作系统:内部缺少任何结构,只实现功能,集合中各种进程相互调用,系统容易出错,维护和调试比较麻烦,例如dos操作系统
2、模块化操作系统:将功能划分为模块,各模块之间相互独立,提高了系统的可理解性和可维护性,
3、分层式操作系统:将目标系统和主机之间设置若干层级,各层级之间单向依赖,
4、微内核操作系统:只将最基本的功能,例如消息传递、硬件相关底层功能放入内核,其他功能属于策略,但系统效率有一定程度的影响操作系
2.1 进程基本概念
顺序执行:是最本质的结构,程序与程序按一定次序执行,前面的程序完全执行完毕才开始执行后面的程序,程序与程序之间互不干扰。
并发执行:当一个程序不使用处理器资源时,如在输入输出时,允许另一个程序使用处理器资源,表现为多个程序交叉执行。
不同点:顺序执行有顺序性,并发没有;顺序执行程序中不间断,并发则有可能间断;顺序执行有封闭性,不受其他程序影响,并发没有;顺序执行可再现,重复执行结果相同,并发则不可再现,结果受外界因素影响,可能会不同。
计算机系统为保证程序正确运行需要确保并发时程序与程序之间的互不干扰,因此引入进程(PCB)作为资源分配和调度的基本单位。
一、进程有三种基本状态,他们之间的相互转换使进程可以构成一个完整的生命周期:
1、就绪状态:进程以处于准备好运行的状态,此时进程已分配好除CPU以外的所有必要资源。
2、运行状态:进程已获得CPU即程序正在执行执行的状态。
3、阻塞状态:正在执行的进程由于发生某事件而无法继续执行的状态。
为了应对系统调用过程中可能出现的各种情况和用户、父进程、操作系统的需要,又引入了三种新状态来实现进程运行中对各种情况的处理:
1、新状态:又称创建状态,当进程的进程控制模块被创建时,就标志着进程进入新状态。
2、终止状态:当进程运行结束,内存资源已经归还系统后,进程控制模块仍然保留着的状态。
3、挂起状态:进程处于静止(暂停)的状态。终端用户的请求,父进程的请求,操作系统的需要,负载调节的需要都会引起挂起。
二、进程状态转换:由于多个进程在并发执行时共享系统资源,致使它们在运行过程中呈现间断性的规律,因此进程在其生命周期中可能有多种状态并且进程在运行过程中经常会发生状态的转换。
就绪→运行:系统调度。
运行→阻塞:I/O请求或等待某件事发生
阻塞→就绪:I/O完成或进程所等待的事件发生
运行→就绪:发生超时,即:分配给进程的时间片用完则该进程状态转变为就绪状态,此时CPU调度就转到就绪队列中,重新选择合适的进程分配CPU 当引入新状态以及终止状态后,状态转化在原有基础上增加:
新状态→就绪:在经过接受,即:在当前系统性能和内存允许的情况下,完成对进程创建的必要操作后,就进入就绪队列。
运行→终止:当进程已完成任务,或出现了无法克隆的错误,或是被os或其他进程所终结,此时进程进入终止状态。
2.2 进程控制
谈谈你对进程的创建、撤消、阻塞和唤醒等控制操作的理解,并举例说明引发相应操作的主要事件类型。谈谈你对进程的创建、撤消、阻塞和唤醒等控
- 进程创建:进程的开始。进程的创建需要完成申请空白进程控制块,为新进程分配资源,初始化进程控制块,插入进程就绪队列等操作。
主要事件类型:用户登录、作业调度、提供服务、应用请求等
- 进程终止:将执行完毕的进程的停止。需要完成检索出被终止进程PCB,终止其执行状态,终止其子孙进程,将资源归还操作系统,移除被终止进程PCB等操作。
主要事件类型:正常结束、异常结束、外界干预等
- 进程阻塞:进程因某种情况无法继续执行,需要立即停止执行,并现行状态由执行改为阻塞状态,并插入对应阻塞队列。
主要事件类型:请求系统资源失败、等待某种操作完成 、新数据尚未到达、等待新工作到达等
- 进程的唤醒:进程恢复就绪状态。应将阻塞进程从相应阻塞队列中移除,将现行状态由阻塞改“就绪,并插入到相应就绪队列。
主要事件类型:资源需求被满足、操作完成、新数据到达、新任务到达等
谈谈你对进程控制块的理解,并着重举例说明其应包含的信息内容以及可采用的组织方式及管理机制。
1、进程控制块:是为了便于系统描述和管理进程的运行,在OS的核心为每个进程专门定义的一个数据结构,它常驻于内存。它是进程实体的一部分,拥有描述进程情况,控制进程所需的全部信息的记录性数据结构。1、进
2、作用:
进程控制块使一个在多道程序环境下不能独立运行的程序,成为一个独立运行的基本单位,一个能与其他进程并发执行的进程。
进程控制块是操作系统控制和管理并发执行进程的依据,是进程存在的唯一标志。
3、包含的信息:
进程标识符:内/外部、父/子进程、用户标识符
处理机的状态信息:通用寄存器、PC、PSW、用户栈指针寄存器
进程调度信息:进程状态、进程优先级、事件及其它
进程控制信息:程序和数据地址、进程同步通信机制 、资源清单、链接指针、进程图
(实际应用中,进程控制块包含的信息远远多于上述内容,其还应包括:与跟踪机制、审计机制相关的变量信息)
4、组织方式:
线性方式:把所有PCB组织在一张线性表中,将该表的首地址存放在内存的一个专用区域中
链接方式:把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列
索引方式:系统根据所有进程状态不同,建立几张索引表
3.1 处理机调度
处理机调度模型主要有三种:处理机
-
仅有进程调度的调度队列模型:这种模型只在内存中进行操作,主要用于交互式或终端型作业。
-
具有高级调度和低级调度的调度队列模型:这种模型在仅有进程调度的调度队列模型的基础上增加了一个外存上的后备队列,主要用于既有交互又有批处理的作业类型。
-
具有三级调度的调度队列模型:这种模型在具有高级调度和低级调度的调度队列模型的基础上,为提高内存利用率和系统吞吐量而设置。
低级:对在就绪队列上的进程操作,为其调度分配处理器
中级:在内存空间紧张时,将不能运行的进程调到外存中等待,内存资源充足时再唤醒
高级:为外存后备队列的程序创立进程并分配系统资源,插入到就绪队列中去
3.2 调度算法
选择调度方式和调度算法时,应遵循的准则:
1.面向用户的准则(与操作系统类型有关):
1)周转时间短(平均周转/带权周转时间)
2)响应时间快
3)截至时间的保证
4)优先权准则
2.面向系统的准则:
1)系统吞吐量高
2)处理机利用率好
3)各类资源的平衡利用
各种调度算法的基本思想、关键要领、优缺点及适用场合:
先来先服务调度算法FCFS:先来的优先级最高。包括先来先服务作业调度算法,先来先服务进程调度算法。有利于长作业(进程)而不利于短作业(进程);有利于CPU繁忙型作业(进程)而不利于I/O繁忙型作业(进程)
短作业(进程)优先调度算法:作业越短优先级越高。包括短作业优先调度算法、短进程优先调度算法。能有效降低作业(进程)平均等待时间和提高系统吞吐量;不利于长作业(进程;完全未考虑作业(进程)的紧迫程度 ;作业(进程)执行时间估计的不准确性;人机交互无法实现。
高优先权优先调度算法:Ø照顾紧迫型作业(进程),优先级高。包括非抢占式优先权算法、抢占式优先权调度算法。进程优先权确定依据:进程类型、资源需求及用户要求。优先级分为静态和动态优先级
高响应比优先调度算法:Ø短作业优先调度算法+动态优先权机制。优先权(响应比RP)=(等待时间+要求服务时间)/要求服务时间。短作业与先后次序的兼顾;且不会使长作业长期得不到服务 ;响应比计算增加系统开销。
时间片轮转调度算法:按先来先服务原则排队,时间片及时钟中断。时间片大小的确定根据系统对响应时间的要求 ,就绪队列中进程的数目 ,系统的处理能力。
多级队列调度算法:作业性质分类排列,不同队列不同调度算法。队列间设置不同优先级。适用于多处理机系统。
多级反馈队列调度算法:设置多个就绪队列并赋予各个队列不同优先权,不同队列中进程执行的时间片大小各不相同 ,先来先服务调度算法与时间片轮转调度算法相结合 ,队列间调度准则和抢占式优先权调度。能较好地满足各种类型用户(终端型作业用户、短批处理作业用户、长批处理作业用户)的要求。
最早截止时间优先调度算法:截止时间越早,优先级越高。包括非抢占式算法、抢占式算法。适用于实时系统。截止时间有开始截止时间和最后截止时间。
最低松弛度优先调度算法:任务越紧急,优先级越高。松弛度=必须完成时间-本生运行时间-当前时间。当松弛度为0的时候,采用抢占式调度方式。
3.3 死锁及处理方法
死锁概念:在多道程序系统中,并发执行的多个进程因争夺资源而造成的一种若无外力作用有关进程都将永远不能向前推进的僵持状态或僵局,产生原因:
- 竞争不可抢占性资源会产生死锁
- 竞争可消耗性资源
- 进程推进顺序不当
死锁的必要条件为:
- 互斥条件,是指在一段时间内,某一资源只能被一个进程使用。
- 请求和保持条件,是指进程申请一个资源后,若被阻塞,该进程所占有的资源不被解除。
- 不可剥夺条件,是指进程所占有的资源不可以被剥夺。
- 循环等待条件,是指在等待图中出现了循环链。
处理策略:
5. 预防死锁。即破坏造成死锁的必要条件,例如破坏请求和保持条件,破坏不可抢占条件等。
6. 避免死锁。每次进行资源分配时进行安全性检查,不让资源进入不安全状态 ,例如银行家算法 检测死锁和解除死锁。系统进行死锁检测,并在发现死锁现象后进行解除死锁。
4.1 内存管理
1、程序处理过程
源程序:使用汇编语言或者高级程序设计语言编写的程序,符号名空间中包含变量和跳转指令
目标模块:源程序编译后形成,存储于目标地址空间,使用相对地址空间
装入模块:又名可执行程序,由目标模块链接后形成,是统一的目标地址空间
内存:物理地址空间,存放被装入的装入模块
2、内存管理
包括实模式和保护模式,要求实现内存分配、地址映射、内存保护和内存扩充等功能,需要内存管理物理部件辅助完成。
3、程序链接方式
静态链接方式:形成可执行文件时链接,难以实现“内存”模块共享,维护困难
装入时动态链接方式:便于软件版本的修改和更新,便于实现目标模块为多个应用程序共享
装行时动态链接方式:将某些目标模块的链接推迟到执行时根据是否需要再完成
4、程序装入方式
绝对装入方式:适合单道程序环境,无法实行重定位
静态可重定位装入方式:适合多道程序环境,在装入模块装入内存时一次性完成重定位,需要连续的存储空间,装入后不能移动
动态运行时装入方式:在运行中移动模块位置,需要特殊硬件支持,以保证地址转换不会影响指令的执行速度,便于动态链接和代码共享
4.2 连续分配内存管理
从内存管理的各个方面比较单一连续分配、固定分区分配、动态分区分配以及动态可重定位分区等存储管理方式的异同从内存管理的各个方面比较单一连续分配
1)单一连续分配:最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。1)单
采用这种存储管理方式时,可把内存分为系统区和用户区两部分,系统区仅提供给OS使用,通常是放在内存的低址部分;用户区是指除系统区以外的全部内存空间,提供给用户使用。
2)固定分区分配 :
- 是最简单的一种可运行多道程序的存储管理方式。这是将内存用户空间划分为若干个固定大小(不是相等大小)的区域,在每个分区中只装入一道作业。用户空间划分为几个分区,便允许有几道作业并发运行。当有一空闲分区时,便可以再从外存的后备作业队列中选择一个适当大小的作业装入该分区,当该作业结束时,又可再从后备作业队列中找出另一作业调入该分区。
- 两种划分分区大小的方法:分区大小相等和分区大小不等
- 优点:可用于多道程序系统最简单的存储分配,无外部碎片。
- 缺点:不能实现多进程共享一个主存区,所以存储空间利用率低,有内部碎片。
3)动态分区分配:是根据进程的实际需要动态地为之分配内存空间,使分区的大小刚好与作业的大小相等。动态分区分配并不预先将内存划分成一块块的分区,而是在作业进入内存时,根据作业的大小动态地建立分区,并使分区的大小正好适应作业的需要,因此系统中分区的大小是可变的,分区的数目也是可变的。数据结构有空闲分区表:在系统中设置一张空闲分区表,用于记录每个空闲分区的情况。每个空闲分区占一个表目,表目中包括分区序号、分区始址及分区的大小等数据项。 空闲分区链:在每个分区的起始部分,设置一些用于控制分区分配的信息,以及用于链接各分区的前向指针;在分区尾部则设置一后向指针,通过前、后向链接指针,可将所有的空闲分区链接成一个双向链。为了检索方便,在分区尾部重复设置状态位和分区大小表目。当分区被分配出去以后,把状态位由0变为1,此时,前、后向指针已无意义。
(2)分区分配算法 首次适应算法;循环首次适应算法;最佳适应算法;最坏适应算法;快速适应算法
(3)分区分配操作 在动态分区存储管理方式中,主要的操作是分配内存和回收内存。
4)动态可重定位分区分配:与动态分区分配算法基本上相同,差别仅在于:在这种分配算法中,增加了紧凑功能。通常,在找不到足够大的空闲分区来满足用户需求时进行紧凑。通过将内存中的所有作业进行移动,使他们都相邻接。
5)伙伴系统其实是一个折中的过程,使得分配和合并都非常高效,但是因为只能分配2的幂的内存块,所以内存碎片一个很大的问题。
内存扩充(内存扩充:同样的空间装入更多的数据,即减少碎片和提高利用率)的几种技术:
紧凑技术:需要在程序装入的时候采用动态重定位,因为在一次碎片合并以后其实地址会变,我们需要修改重定位寄存器(基址寄存器)。
对换技术: 多道程序环境下的对换 对换的概念及意义 内存 <-> (进程、程序、数据) <-> 外存 提高内存利用率
对换实现机制 UNIX:对换进程(中级调度)将进程、程序、数据在内存和外存间对换。把内存中暂时不能运行的进程等换出到外存上,以便腾出足够的空间,再把已经具备运行条件的对换到内存。
覆盖技术: 基本思想及概念 让那些不会同时执行的程序段共享一块内存 可以互相覆盖的程序段称为覆盖段 被共用的内存空间称为覆盖区对换技术。
4.3 4.4 分段与分页
比较分页存储管理与分段存储管理的异同比较分页存储管理与分段存储管理的异同
相同点:
- 两者均为离散分配方式:允许将一个进程直接分散的装入到许多不相邻的内存分区中。
两者实现地址转换的地址映射机制相似,均需要软硬件协同完成,在软件方面,需要设置进程页表/进程段表等数据结构存储地址映射信息,同时需要多种寄存器予以支持。同时,这两种内存管理方式的逻辑地址结构相似,且均支持引入快表(TLB)以提高数据存取速度。
不同点:
- 分页内存管理是根据系统的需要划分地址空间,可提高内存空间的利用率。因此,其本质为物理单位
分段内存管理是根据用户程序的需要划分地址空间,可方便用户编程。因此,其本质为逻辑单位 - 分页大小固定,其大小根据系统硬件确定与物理块大小相同,且各个分页大小相同,而分段长度不固定,其大小根据信息性质确定,各个分段长度不相等。
- 分页管理方式的作业地址空间是一维的、线性的;而分段管理方式则是二维的、非线性的
4.5 段页式内存管理
段页式内存管理方式:是段页式内存管理方式各取所长、有机结合。
既具有分段系统便于实现,分段可共享、易于保护、可动态链接等一系列优点;又能像分页系统那样很好的解决内存的外部碎片的问题以及为各个分段离散的分配内存的问题。
其原理是:将分段与分页的原理相结合,先将用户程序按照信息性质分为若干段,再将每个分段划分为若干页。
一个进程对应一张段表,而一张段表则对应多张页表(一个分段对应一张分段页表)利用进程段表和分段页表实现地址映射。采用这种内存管理方式的逻辑地址结构为:段号 | 段内页号 | 页内地址。其中,后两者称为段内偏移地址。段内页号的范围由分页数目【ceil(分段长/页面大小)】决定;页内地址范围由物理块(页面)大小决定
4.6 虚拟内存
虚拟存储器的概念、特征及其软硬件技术支持的认识与理解如下:
1)虚拟存储器的概念 仅把作业的一部分装入内存便可运行作业的存储器系统,具体说,是具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之所决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。其实际是对内存分时复用的并发使用。
2)特征
离散性:离散分配的方式
多次性:一个作业被分成多次调入内存运行
对换性:允许在作业的运行过程中进行换进、换出(进程整体对换不算虚拟)
虚拟性:能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量 成本低、存取速度快:其运行速度接近于内存速度,而每位的成本却又接近于外存
3)软硬件技术支持 虚拟存储系统可基于请求分页/请求分段两者方式实现
硬件支持: 请求分页/段的页表/段表机制:请求分页存储管理是建立在分页存储管埋的基础上,并结合虚拟存储系统原理实现的,是目前常用的一种实现虚拟存储器的方式。
缺页/段中断机构: 当要访问的页不在主存,需要操作系统将其调入主存后再进行访问。在这个时候,被内存映射的文件实际上成了一个分页交换文件。
地址变换机构: 当进程要访问某个逻辑地址中的数据时,该机构会自动地将有效地度址(相对地址)分为:页号|页内地址 两部分,再以页号为索引去检索页表。
软件支持: 请求调页/调段 页面/分段置换(淘汰)算法
4.7 请求分页内存管理
试从内存分配、页表机制、地址变换、缺页中断以及调页过程等方面谈谈你对请求分页存储管理系统的认识与理解。
求分页虚拟存储技术核心概念
页表扩充(原先分页页表机制增加字段),处理访问页面不在内存(缺页中断,涵盖在地址变换过程中,也考虑到内存中页表的访问,所以地址变化过程中把页表扩充,缺页中断涵盖在一起)
页表机制
基本分页
数组下标=页号(不显示),物理块号
有的页面不在内存,需要状态位描述页面在内存还是外存,在内存是物理块号,外存物理盘块,所以也需外存地址
程序运行过程中可能遇到内存紧张,此时需把页面换出到外存,换谁?–淘汰算法(根据页面被访问情况),淘汰出去的时候要考虑页面是否需要写到外存(一般修改了,需写到外存,没有修改,不需写,直接抛弃
访问字段:选择淘汰页面的抉择(根据访问情况来决定是不是它被淘汰到外存)
修改位:在淘汰到外存的时候,考虑是不是需要重写外存(根据它修改过没有)
存在位(状态位):0缺页中断
缺页中断
肯定会发生在指令执行的过程中,因为执行指令发现我所访问的页面不在内存
执行过程中发现要用的代码段数据段不在内存
-
保护CPU现场
-
看是什么事,分析中断原因,一看由于页表项存在位=0,原来发生了缺页中断
-
转入缺页处理机制
-
恢复CPU现场
特殊性
在执行时期发生,导致可能会发生连锁性中断(一次指令执行期间,可能会产生多次缺页中断)
物理块分配
1.满足最小物理块数
-
考虑到进程之间对空间需求不平衡问题(有的需要的多有的需要的少)
-
平均下来彻底公平(吃的多的给的少)
为了正确评价抖动,引入缺页率,缺页率高,发生抖动,有关进程被分配的物理块少,需增加物理块数
缺页率低,需减少物理块数
什么是抖动?如何计算缺页率?阐述和比较各种页面置换算法的基本流程和实现要领。
1.抖动 由于置换算法不当而导致的情形:刚被换出的页面很快又要被访问,需要重新调入,为此,又需再选一页换出;而此刚被换出的页面,不久也被访问,又需将它调入,如此频繁地更换页面,以致一个进程在运行中把大部分的时间耗费在页面置换的工作上,称该进程发生了抖动。 缺页率 缺页率 = 缺页中断次数 / 页面访问总次数
各种页面置换算法:
(1)最佳淘汰算法
基本思想:选择永不使用或是在最长时间内不再被访问的页面淘汰 实现要领:最理想化算法,具有最好性能,对于固定分配页面方式,可保证获得最低的缺页率,但实际上却很难实现
(2)先进先出淘汰算法
基本思想:选择最先进入内存即在内存驻留时间最久的页面换出 实现要领:进程已调入内存的页面按进入先后次序链接成一个队列,并设置替换指针以指向最老页面
(3)最近最久未使用者淘汰算法
基本思想:以最近的过去作为最近的将来的近似,选择最近一段时间最长时间未被访问的页面淘汰 实现要领:适用于各种类型的程序,性能较好,但需要较多的硬件支持
(4)时钟式淘汰算法
基本思想:基于先进先出淘汰算法并结合页面访问情况实现 实现要领:将内存中的所有页面都通过链接指针链接成一个队列,并为每个页面设置页面访问位,记录页面被访问的情况,每访问页面一次,该页面的访问位置1,并以此为基础给予最近一段时间被访问过的页面留在内存多一次机会。同时,设置查询指针,时钟式的循环遍历查询队列中的每一元素,每次淘汰页面访问位为0的页面。
(5)改进型时钟淘汰算法
基本流程:在简单时钟式淘汰算法的基础上,为每个页面设置修改位,以此考虑由于页面修改造成的写回外存的开销。 实现要领:选择页面换出时,既要是未使用过的页面,也要是未修改过的页面;如果没有,则找未使用但被修改的页面;该算法与简单Clock算法相比,可减少磁盘的I/O操作次数,但算法本身的开销将增加
(6)最少使用者淘汰算法
基本思想:为内存各页设置一移位寄存器用于记录对应被访频率,并选择在最近时期使用次数最少的页面淘汰
(7)页面缓冲策略
基本流程:设置空闲页面链表,用于链接分配给进程的物理块以及已修改页面链表,用于链接发生过修改的页面所在物理块。采用可变分配和基于先进先出的额局部置换策略,并规定被淘汰 的页面先不做物理移动,而是根据是否修改过分别挂在上述两个链表的末尾。 实现要领:显著降低了页面换进、换出的频率;此算法设置了两个链表:空闲页面链表用于分配给频繁发生缺页的进程,修改页面链表用于将已修改页面挂在其上,降低将已修改页面写回磁盘的频率,降低将磁盘内容读入内存的频率
计算机系统的虚拟存储器,其最大容量和实际容量分别取决于哪些因素?可通过哪些途径来提高内存利用率?
一)计算机系统的虚拟存储器,其最大容量和实际容量分别取决于:CPU的寻址位数(例如:32位的系统,最大容量为2^32)min(内存容量和外存容量之和,CPU地址位数)
二)提高内存利用率
1、对于用户程序处理的过程在程序的链接时,采用运行时的动态链接方式在程序的装入时:采用动态运行时(动态可重定位)的装入方式
2、对于操作系统内存管理的过程在内存分配时:减少内存碎片,采用离散的内存分配方式,如:分页式、分段式、段页式应用:对换技术、覆盖技术、伙伴系统以及虚拟存储技术。
5.4 缓冲管理
- 引入缓冲的主要原因:缓和CPU与I/O设备间速度不匹配的矛盾;
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制;
- 提高CPU和I/O设备之间的并行性。
缓冲类型:单缓冲、双缓冲、循环缓冲以及缓冲池
比较分析: 单缓冲下系统对每一块数据的处理时间表示为max(C,T)+M,双缓冲下系统对每一块数据的处理时间表示为max(T,M+C);
循环缓冲的组成包括用于装输入数据的空缓冲区R,已装满数据的缓冲区G以及计算进程正在使用的现行工作缓冲区C,同时也包括多个指针;计算进程和输入进程主要利用Getbuf()过程和Putbuf()过程来使用环形缓冲区。
缓冲池管理着多个缓冲区,每个缓冲区由用于标识和管理的缓冲首部以及用于存放数据的缓冲体两部分组成。缓冲首部一般包括缓冲区号、设备号、数据块号、同步信号量以及队列链表指针等。缓冲池包括三种队列:空白缓冲队列、输入队列以及输出队列;除此之外,还包括四种工作缓冲区:用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区、用于收容输出数据的工作缓冲区以及用于提取输出数据的工作缓冲区。实现机制:设置了一个互斥信号量MS(type)和一个资源信号量RS(type)修改Getbuf和Putbuf过程,进而实现互斥同步操作。
5.7 磁盘存储器管理
谈谈你对磁盘设备管理的基本任务和磁盘访问及速度提高、磁盘调度算法、高速缓冲等关键问题与技术要领的的认识与理解谈谈你对磁盘设备管理的基本任务
(1)磁盘设备管理的基本任务
为文件分配必要的存储空间,使每个文件都能"各得其所"
采取合理的文件分配方式,以提高文件访问速度
改善存储空间的利用率
提高磁盘的I/O速度,进而改善文件系统的性能
采取必要的冗余措施和后备系统,来提高磁盘系统的可靠性
(2)磁盘访问及速度提高
磁盘可分为硬盘和软盘、单片盘和多片盘‘固定头磁盘和活动头磁盘
对磁盘的访问时间分为三部分:寻道时间、旋转延迟时间和传输时间.在访问时间中,寻道时间和旋转延迟时间基本上都与所读/写的数据多少无关,而且它通常占据了访问时间的大头,所以适当地集中数据传输(不要太零散)传输,将有利于提高传输效率。
(3)磁盘调度算法
先来先服务算法
:它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程都能依次地得到处理,但平均寻道时间会比较长,仅适用于请求磁盘I/O的进程数目较少的场合。最短寻道时间优先算法
:其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种算法不能保证平均寻道时间最短,而且可能导致优先级低的进程出现"饥饿"现象。扫描算法(电梯调度算法)
:不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。循环扫描算法
:在扫描算法的基础上,规定磁头必须单向移动,亦即将最小磁道号紧接着最大磁道号构成循环。NStepSCAN算法
:为了防止上述算法可能出现的磁臂粘连现象,我们将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法以此处理这些子队列,而处理每一个子队列时又按照SCAN算法,对一个队列处理完后,再处理下一个队列。FSCAN算法
:为NStepSCAN算法的简化,将磁盘请求队列分成两个子队列。
(4)高速缓冲
定义:是指在内存中为磁盘设置的一个缓冲区,在缓冲区中保存了某些盘块的副
关键环节:数据交付(分为数据交付和指针交付)、置换算法以及周期性写回磁盘
谈谈你对从一个用户进程提出磁盘输入输出请求到完成该请求的整个过程的认识与理解。
- /O请求者(用户)进程以系统调用方式提出I/O请求,陷入内核态 ;
- 对I/O请求参数进行处理,(确定I/O所在设备和一维物理盘块号,并分配缓冲区);
- 像设备驱动进程传递I/O请求块IORB;
- 唤醒磁盘设备驱动进程
- /O请求者(用户)进程自我阻塞
- 磁盘设备驱动进程调度执行,判断输入缓冲区是否有记录;
- 如果缓冲区已有所需数据,把所需记录从输入缓冲区中分离出来送请求进程数据区,唤醒请求者进程;反之,根据请求的一维物理盘块号确定三位维理地址,组织通道程序,将通道程序起始地址送至通道地址字寄存器CAW,启动通道 ;
- 磁盘设备驱动进程自我阻塞
- 通道程序执行,根据CAW值从内存提取一条通道指令,从通道命令字寄存器CCW,同时CAW内容++;
- 判断是否为最后一条通道指令,是则通道发中断请求,反之则执行第10步;
- 转到中断处理,正在执行某进程的CPU响应中断;
- 唤醒磁盘设备驱动进程,进行磁盘中断处理;
- 将I/O情况以IORB方式送交磁盘设备驱动进程 ;
- 磁盘设备驱动进程再次调度执行,判断记录是否正确;
- 正确则把所需记录从输入缓冲区中分离出来送请求者进程数据区;反之则反复启动通道若干次(启动通道后自行阻塞,等待中断处理唤醒后方再次调度执行),尝试修复I/O错误,若为永久性错误则将错误号传送给设备无关性软件模块;
- 唤醒请求者进程,磁盘设备驱动进程自我阻塞
- I/O请求者进程再次调度执行,判断记录是否正确;
- 正确则释放缓冲区,重新调度或返回用户态,并继续执行II/O请求者进程主调模块;反之则释放缓冲区并终止I/O请求者进程。
6.1 文件系统概念及模型
阐述文件管理的目标、功能及技术手段,并就文件系统层次结构模型进行讨论。
文件管理的目标是方便用户、保证安全,存取快速、资源利用。
文件管理功能:管理在外存上的文件;提供文件存取、共享和保护手段。
技术手段:目录、索引结点、“结构”优先;存取控制矩阵、容错技术。
文件系统层次结构模型: 最上层是文件系统接口,像命令/图形化用户接口、程序接口; 中间层是文件管理软件集合,从上到下依次是逻辑文件系统层,基本I/O管理程序层,基本文件系统层,I/O控制层; 底层是硬件对象如磁盘等。
分别就数据项、记录、关键字和文件的概念进行解释,并就文件的分类展开讨论。
(1)数据项
文件中最小的存储单位,可分为基本数据项和组合数据项。
(2)记录
包含若干个数据项,还存储关键字用来为索引提供支持。
(3)关键字
可唯一标识记录的一个或多个数据项
(4)文件
存储若干个记录,文件有文件名和其他属性。
(5)文件的分类
按文件性质与用途分类 :系统文件、用户文件、库文件
按文件中的数据形式分类 :源文件、目标文件、可执行文件
按存取控制属性分类:只执行文件、只读文件、读写文件
文件系统应提供哪些基本的文件操作类型?
①创建/删除文件
②读/写文件
③截断文件:将文件内容清空
④设置文件的读/写位置
⑤打开/关闭文件
⑥文件属性设置与获取
⑦目录操作、文件共享及其它操作
6.2 文件逻辑组织及存取方法
什么是文件的逻辑结构?其基本设计要求是什么?并就主要的文件逻辑结构类型特别是顺序文件、索引文件、索引顺序文件等从组织结构、检索方法、检索速度和存储费用等方面展开简明扼要的说明和讨论。
(1)文件的逻辑结构,是从用户观点出发所观察到的文件组织形式
按照文件是否有结构可分为有结构文件(记录式文件)和无结构文件(字符流式文件),其中有结构文件中的记录根据其长度又可分为定长记录和不定长记录;
按照文件的组织方式可分为顺序文件、索引文件和索引顺序文件。
(2)文件逻辑结构的基本设计要求
①提高检索效率 :文件记录或数据检索速度及效率
②方便修改 :文件记录或数据的增、删、修改
③降低文件存储成本 :减少文件占用存储空间:摒弃存储空间连续性要求
(3)顺序文件
①组织结构:定长顺序文件按顺序存储记录,不定长的顺序文件在每条记录的边界处存储本条记录的长度再存储记录本身。
②检索方法:支持直接存取和顺序存取,但不定长顺序文件的随机存取十分不方便。
③检索效率:假设N条数据,平均检索条数为(N+1)/2
④存储费用:数据文件本身的记录开销,若N条数据,则存储费用为N条数据的大小
(4)索引文件
①组织结构:为变长记录文件的建立索引表,存储相应记录的关键字字段、记录长度、记录的起始地址
②检索方法:在索引表中从前往后顺序检索记录关键字,然后根据记录指针检索到主存储文件中对应的记录
③检索速度:假设N条数据,则平均检索条数为(N+1)/2
④存储开销:数据文件本身的记录开销加上索引项的开销。若N条数据,存储开销为这N条数据的大小和N条索引项的大小。
(5)索引顺序文件
①组织结构:中将主数据文件分组,并为每个分组建立索引项,组内随机存储,记录组的关键字、长度和指针存储在索引表中
②检索方法:索引表中从前往后顺序检索记录关键字,然后根据记录指针检索到主存储文件中的记录组,在记录组中检索记录
检索速度:假设分组大小为sqrt(N),则平均检索条数为sqrt(N)+1
存储开销:数据文件本身的记录开销加上索引项的开销
6.3 文件物理组织及外存分配
什么是文件的物理结构?其基本设计要求是什么?并就主要的文件物理结构类型及外存分配方式展开简明扼要的说明和讨论。
(1)文件的物理结构
也就是文件存储结构,是指文件在外存上的存储组织形式。
(2)基本设计要求
外存空间利用率以及文件访问速度
(3)文件物理结构类型与外存分配方式
①连续文件结构
基本思想:为每一个文件分配一组相邻接的盘块;
主要优点:顺序访问容易、顺序访问速度快且支持直接存取;
缺点:要求为一个文件分配连续的存储空间,降低了外存空间的利用率;必须事先知道文件的长度。
②链接文件结构
基本思想:支持离散分配方式,通过每个盘块上的链接指针,将同属于一个文件的多个离散的盘块链接成一个链表;
主要优点:消除了磁盘的外部碎片,提高了外存的利用率;对插入、删除和修改记录都非常容易;能适应文件的动态增长,无需事先知道文件的大小;
分类:分为隐式链接和显式链接。
③索引文件结构
基本思想:将每个文件对应的盘块号集中地放在一起,在访问到某个文件时,将该文件所对应盘块号一起调入内存。
主要优点:支持直接访问;也不会产生外部碎片;
主要缺点:对于小文件采用索引分配方式时,其索引快的利用率及将是极低的。
分类:单级索引、多级索引以及混合索引。
④直接文件和散列文件
直接文件:利用给定的记录键值,先对线性表或链表进行检索,以找到指定记录的物理地址。
散列文件:利用Hash函数求得指向某一目录表相应表目的指针,进而找到相应记录的地址。
6.4 文件存储管理之数据结构
文件存储空间管理的基本目标是什么?关于空闲存储空间的管理通常可基于哪些数据结构及方法进行描述和管理?并逐一进行简要说明。
一、文件存储空间管理的基本目标
使得外存空间的利用率尽量高,同时使得文件访问速度尽量快。
二、关于空闲存储空间的管理通常可基于哪些数据结构及方法进行描述和管理
空闲表法:适用于连续分配或离散分配方式,基于数组实现一张表,用于记录所有空闲盘块/盘区的第一空闲盘块号以及空闲盘块数
空闲链表法:将所有空闲盘块/盘区拉成一条空闲链
位示图法:利用二进制位描述盘块
成组链接法:设置空闲盘块号栈,存放第一个空闲盘块分组的所有盘块号,而其余各个空闲盘块分组的空闲盘块号存于上一个分组的最后一个空闲盘块中。
6.5 文件目录结构及管理
文件目录管理的基本要求有哪些?从索引结点和目录结构等两方面阐述目录管理技术的演化发展,并就树形目录结构中文件的按名存取和目录检索技术举例展开详细说明。
文件目录管理的基本要求:
- 文件的有效管理与组织要求基于文件名便能快速、准确地找到指定文件。
- 实现“按名存取”;提高目录检索速度及文件存取速度;
- 文件共享(外存保留一份文件副本) ;
- 允许文件重名,以便于文件使用。
索引结点
:文件目录存放在磁盘上,且可能要占用大量盘块N ,检索开销很大(盘块调入次数 [N+1] /2 )。只有文件名对目录检索有用。文件描述控制信息单独形成一个索引节点。
磁盘索引结点
:主要内容(文件主标识、文件类型、文件存取权限、文件长度、文件存取时间、文件物理地址、文件连接计数)。引入文件名和对应盘片块
内存索引结点
:文件打开时对磁盘索引结点在内存的拷贝 。专有内容(索引结点编号、索引结点状态、索引结点访问计数、文件所述文件系统逻辑设备号、空闲链表/散列队列指针)。
目录结构:单级目录结构:查找速度慢、不允许重名、不便于文件共享。
两级目录结构:提高了目录检索速度,不同用户目录可使用相同的文件名,不同用户可用不同名称访问同一共享文件,用户隔离不便于文件共享和用户间协作。
树型目录结构:满足目录管理的所有要求。
目录查询技术:实现文件按名存取的基本步骤
- 系统根据用户提供的文件名,对文件目录进行查询,找出该文件的文件控制块或索引结点
- 按照对应文件控制块或索引结点中所记录的文件物理地址(盘块号),计算出文件在磁盘上的物理地址
- 启动磁盘驱动程序,将所存取的文件读入内存进行具体读写操作。方法:Ø线性检索法(顺序检索法)和散列方法。
6.6 文件共享及保护
阐述文件共享的概念及必要性,并从基本思想和优缺点评析等角度就绕弯路法、连访法以及基于基本目录、索引结点、符号链的文件共享方式展开讨论。
文件共享的概念及必要性:指系统应允许多个用户(进程)共享同一份文件,从而在系统中只需保存该共享文件的一个副本即可。如果系统不能提供文件共享功能,就意味着凡是需要该文件的用户,都须各自备有此文件的副本,因此必然会造成存储空间的极大浪费。
绕弯路法:绕到上一级目录中寻找目标文件
连访法:有连访属性及用户计数。FCB在不同目录文件中的拷贝 ,一旦文件发生改变,则一致性难以保证。
基于基本目录的文件共享方式:基本文件目录 、用户符号文件子目录、空闲文件目录、主文件目录、符号文件
索引结点的文件共享方式:不同文件目录与共享文件间关系的建立。符号目录与索引结点相结合,有指针悬空问题
符号链的文件共享方式:LINK类型文件 :仅包含被共享文件的路径名即符号链,文件操作由系统根据文件类型区别处理。只有文件主才拥有其索引结点的指针,从而避免了指针悬空问题 ;可用于链接网络中任何地方计算机中的文件 ;系统开销问题 :文件操作多次读盘与磁盘启动 ;符号链索引结点及文件空间开销 ;整个文件系统遍历操作的复杂度和工作量加大。
6.7 文件系统安全保护
响文件系统安全的主要因素有哪些?如何构建完备的文件系统安全管理体系?并着重就存取控制机制的实现及访问矩阵的优化、磁盘容错技术及所涉关键概念等展开讨论。
影响文件系统安全的主要因素:
人为因素 :存取控制机制 ;
系统因素 :系统容错技术 ;
自然因素: 后备系统。
文件系统安全管理体系:系统级安全管理 :注册与登陆(注册用户表) ;用户级安全管理 :用户分类及访问权设定 ;目录级安全管理 :目录的读/写/执行许可权;文件级安全管理 :文件属性及有效访问权。
存取控制机制的实现:保护域,访问矩阵及切换权、拷贝权、所有权、控制权。开销大,稀疏矩阵。
访问矩阵的优化:访问控制表 、访问权限表,兼有式实现机制
磁盘容错技术:设置冗余部件以提高系统可靠性。
低级磁盘容错技术SFT-I :双份目录与双份文件分配表 ,热修复重定向、写后读校验 ;
中级磁盘容错技术SFT-II :磁盘镜像与磁盘双工。
6.8 文件系统数据性能改善策略及一致性控制
谈谈你对数据的一致性问题以及事务、检查点等概念与恢复算法和并发控制技术的认识与理解,并着重就几种典型的重复数据一致性问题及其解决方案进行讨论。
数据的一致性问题:当一个数据被分别存储到多个文件中时,便会出现数据的一致性问题。
事务:用于访问和修改各种数据项的一个程序单位,可分散在多个文件中 ,“原子性”特征(提交操作/夭折操作)。
检查点:事务记录清理工作经常化,减少恢复开销 ,根据<检查点>记录来执行恢复操作。查找事务记录表,确定在最近检查点以前开始执行的最后事务Ti Ø针对Ti以后开始执行的事务集T中的事务Tk区别不同情况分别执行恢复操作Redo(Tk) /Undo(Tk)。
恢复算法:已完成事务Redo(Ti) /夭折事务Undo(Ti)
并发控制技术:用于实现事务顺序性的技术。利用互斥锁来实现顺序性:Ø简单易行,但效率不高。利用互斥锁和共享锁来实现顺序性:共享文件具有只允许一个事务去写但却允许多个事务同时读的特点。
几种典型的重复数据一致性问题:
重复文件的一致性:当一个文件拷贝发生修改时,其它的文件拷贝也应做同样的修改,以保证文件中数据的一致性。对策:1、直接根据索引结点找到拷贝位置和进行修改;2、为新修改的文件建立拷贝和替换原有文件拷贝。
盘块号一致性的检查:构建基于盘块号的两个计数器,分别就空闲盘块号和数据盘块号进行计数,正常情况下,对应每个盘块号的空闲盘块号计数值和数据盘块号计数值应当互补,否则出错。
链接数一致性的检查:共享文件索引结点号在目录中出现的次数应当与其索引结点中的共享用户(进程)计数值相同。通过目录遍历构造一张计数器表,为每个文件建立一个表项以记录其索引结点号的计数值。
综合分析可通过哪些途径改善文件系统的性能?
高速缓存:通过将数据存放在高速缓存中,以减少磁盘存取时间
提前读:通过提前将还没有读的磁盘块读入内存,增加命中率
减少磁头臂的移动:通过采用块簇技术,以及修改i节点的存放位置两种方式减少寻道时间。
索引机制:通过文件名索引数据盘块。
目录结构:树型目录结构不但可以使得多用户更为方便,也使得检索效率提升。