文章目录
计算机系统概述
概念 功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sXET72eq-1664806425958)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901202921212.png)]
系统资源的管理者
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rb3axOIQ-1664806425959)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901203000242.png)]
向上层提供服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FXAmjFVd-1664806425960)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903155619051.png)]
**对普通用户**
1 GUI用户图像界面 用户可以使用形象的图形界面进行操作,而不是需要记忆复杂的命令 参数
2 命令接口
联机命令接口:交互式命令 用户说一句 系统做一句
脱机命令接口:批处理命令 用户说一堆 系统做一堆
**给软件或者程序员的**
程序接口(系统调用):可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
一种系统软件
需要实现对硬件机器的拓展没有任何软件支持的计算机成为裸机。
在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。
通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机。
习题
操作系统是对计算机资源进行管理的软件。
操作系统主要向用户提供命令接口和程序接口(系统调用),此外还提供图形接口;当然, 图形接口其实是调用了系统调用而实现的功能。
操作系统不允许用户直接操作各种硬件资源,因此用户程序只能通过系统调用的方式来请求内核为其服务,间接地使用各种资源
广义指令就是系统调用命令,而命令解释器属于命令接口,shell是命令解析器,它也属于命令接口。系统中的缓存全部由操作系统管理,对用户是透明的,操作系统不提供管理系统缓存的系统调用。
引入多道程序设计后,程序的执行就失去了封闭性和顺序性。程序执行因为共享资源及相互协同的原因产生了竞争,相互制约。考虑到竞争的公平性,程序的执行是断续的。顺序性是单道程序设计的基本特征。
在单处理机中 进程与线程不可以并行
库函数是语言或应用程序的一部分,可以运行在用户空间中。而系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中,而且许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时, 需要上下文的切换及状态的转换(由用户态转向核心态)。
特征
并发
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PpiQq9d0-1664806425961)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901210115450.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7KK0suzK-1664806425962)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901210133507.png)]
共享
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5fkBEh7v-1664806425963)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901210217485.png)]
并发 共享的联系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vhUnyNkD-1664806425963)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901210310594.png)]
虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
异步
异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6KaZ6MZb-1664806425964)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901205706136.png)]
发展 分类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J1kGFyxs-1664806425964)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901213554390.png)]
习题
脱机技术用于解决独占设备问题。虚拟技术与交换技术以多道程序设计技术为前提。多道程序设计技术由于同时在主存中运行多个程序,在一个程序等待时,可以去执行其他程序,因此提高了系统资源的利用率.
批处理系统中,作业执行时用户无法干预其运行,只能通过事先编制作业控制说明书来间接干预,缺少交互能力,也因此才有了分时操作系统的岀现。
操作系统的基本类型主要有批处理操作系统、分时操作系统和实时操作系统
实时系统要求能实时处理外部事件,即在规定的时间内完成对外部事件的处理
要求快速响应用户是导致分时系统出现的重要原因。
分时系统中,当时间片固定时,用户数越多,每个用户分到的时间片就越少,响应时间自然就变长,
注意,分时系统的响应时间t的比例关系可表达为t=QN,其中Q是时间片,而N是用户数。
中断技术使得多道批处理系统的I/O设备可与CPU并行工作.
现代操作系统都是多任务的(主要特点是并发和并行),并不一定需要运行在多CPU的硬件上,单个CPU也可满足要求
体系结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qpts3Kj2-1664806425965)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901230250240.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JbpbfV69-1664806425966)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901233045150.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QBTsfIH3-1664806425966)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901233402918.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kb3AQNlw-1664806425967)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901233840305.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HBBdVeUS-1664806425967)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901234201751.png)]
习题
用分层式设计的操作系统结构清晰且便于调试。
大内核的缺点 占用内存大 缺乏可扩展性 不方便移植 可靠性太低
微内核OS:①内核足够小 2 基于客户/服务器模式 (c/s);③应用“机制与策略分离”原理;④采用面向对象技术
微内核中 文件管理 设备管理不宜放在内核中 而 进程通信 中断 原语 低级i/o等核心放在内核中
微内核结构的特点 使系统更可靠 添加系统服务 不必修改内核
window xp操作系统 采用的 宏内核操作系统
层次化架构 每一层都仅仅使用其底层提供的功能和服务 使系统的调试 验证变得很容易
处理器管理
进程与线程
进程的概念
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5BvrHqo-1664806425968)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220901235411994.png)]
进程的状态 转换
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fW32tOdE-1664806425968)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902081802473.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ecKAE0Fd-1664806425969)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902081829222.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QjBzfM0b-1664806425970)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902082026990.png)]
进程的组织
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ZZroh3S-1664806425971)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902081924101.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oAPQVAMz-1664806425971)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902081954746.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pYv435Qu-1664806425972)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902082002791.png)]
进程控制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dRKSgmgb-1664806425973)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902085055118.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T2FI01mG-1664806425973)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902085206868.png)]
进程同步
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UVUut0RM-1664806425973)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902085553837.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TG4b4n3A-1664806425974)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902085709768.png)]
进程通信
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDDGOSTR-1664806425975)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902093546026.png)]
线程概念
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VC1nR6qz-1664806425975)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902142906043.png)]
线程属性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vu8Y4ttz-1664806425976)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902143108486.png)]
线程实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2QBb2cBm-1664806425976)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902144150047.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KwnED6Cp-1664806425976)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902144259197.png)]
多对一 : 类似于用户级线程的优缺点
一对一: 类似于内核级线程的优缺点
多对多: 集二者之长
习题
用户级线程可以在任何的操作系统下运行
系统中只有用户级线程 则处理机的调度对象是进程
使用轮转调度算法 进程中设置内核级线程和用户级线程的效果完全不同
线程转换
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xd4ON6zH-1664806425977)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902144754629.png)]
线程组织 控制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajFl3guc-1664806425977)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902144829128.png)]
习题
线程包含cpu现场 可以独立执行程序
线程没有独立的地址空间 它共享所属进程的地址空间
进程可以包含多个线程
同一个进程中的线程可以直接通过共享的存储空间通信。
每一个进程包含独立的地址空间,进程各自的地址空间是私有的,只能执行自己地址空间中的程序,且只能访问自己地址空间中的数据,相互访问会导致指针的越界错误。
进程与程序最大的区别是动态与静态之间的区别。 进程不是程序
进程的优先级有动态与静态之分 动态优先级可以根据情况调整
阻塞态是进程主动进入的。进程申请处理器而得不到满足时就处于就绪态,等待处理器的调度
操作系统是根据进程控制块来对并发执行的进程进行控制和管理的
对于一个单处理器系统来说:不可能出现这样一种情况,单处理器系统的10个进程都处于就绪态,但9个处于就绪态、1个正在运行是可能存在的。还要想到,可能10个进程都处于阻塞态。
I/O操作完成之前进程在等待结果,状态为阻塞态;完成后进程等待事件就绪,变为就绪态
封闭性指的是程序一但开始执行,其计算结果就取决于程序本身,不受外界因素影响.
而失去了封闭性,程序的执行速度就与速度有关。
进程可在完成时撤销, 或在出现内存错误等时撤销。
进程之间可以是无关的 也可能是有交互性的
不管系统中是否有线程 进程都是用于资源分配的单位
运行的进程由于时间片用完、运行结束、需要等待事件的发生(如等待键盘响应)、出错、自我阻塞等,均可以激活调度程序进行重新调度,选择一个新的就绪进程投入运行。新进程加入就绪队列不是引起调度的直接原因,当CPU正在运行其他进程时, 该进程仍然需要等待。即使是在采用高优先级调度算法的系统中,一个最高优先级的进程进入就绪队列,也需要考虑是否允许抢占,当不允许抢占时,仍然需要等待。
进程在等待某种事件的发生时,从运行态进入阻塞态 申请临界资源
一次io结束 或者某进程退出临界区 某个进程会从阻塞态到就绪态
进程需要做一次io操作 从运行态进入阻塞态 从磁盘中读取数据
时间片用完 发生了抢占(可能是出现了比他优先级更高的进程) 从运行态进入就绪态
出错 运行结束 进程进入终止态
C语言编写的程序在使用内存时一般分为三个段,它们一般是正文段(即代码和赋值数据段)、 数据堆段和数据栈段。二进制代码和常量存放在正文段,动态分配的存储区在数据堆段,临时使用的变量在数据栈段。
全局赋值变量在正文段赋值数据段,未赋值的局部变量和实参传递在栈段,动态内存分配在堆段,常量在正文段,进程的优先级只能在PCB内。
同一程序经过多次创建,运行在不同的数据集上,形成了不同的进程。
系统动态DLL库中的系统线程,被不同的进程所调用,它们是相同的线程
进程实体主要是代码、数据和PCB组成。因此,要清楚了解PCB内所含的数据结构内容,主要有四大类:进程标志信息、进程控制信息、进程资源信息、CPU现场信息。由上述可知,全局变量与PCB无关,它只与用户代码有关。
进程的最大数量局限于内存大小。
对进程的管理控制 使用原语
在引入线程后 处理器既可以在线程间切换 也可以在进程间切换。
在同一进程中,线程的切换不会引起进程的切换。当从一个进程中的线程切换到另一个进程中的线程时,才会引起进程的切换
线程是进程内一个相对独立的执行单元,但不能脱离进程单独运行,只能在进程中运行。引入线程是为了减少程序执行时的时空开销。一个进程可包含一个或多个线程
同一进程或不同进程内的线程都可以并发执行
整个系统只有一个键盘,而且键盘输入是人的操作,速度比较慢,完全可以使用一个线程来处理整个系统的键盘输入
当一个进程被唤醒时,这个进程就进入了就绪态 该进程就可以重新竞争cpu
进程创建原语完成的工作是:向系统申请一个空闲PCB,为被创建进程分配必要的资源,然后将其PCB初始化,并将此PCB插入就绪队列,最后返回一个进程标志号。
当调度程序为进程分配CPU后,进程开始运行。这是调度程序的工作
进程间的通信主要有管道、消息传递、共享内存、文件映射和套接字等。数据库不能用于进程间通信
进程可以创建进程或线程,线程也可以创建线程,但线程不能创建进程
进程时间片用完,可降低其优先级以让其他进程被调度进入执行状态。
进程中的线程共享进程内的全部资源,但进程中某线程的栈指针对其他线程是透明的,不能与其他线程共享。
管道是一种特殊的文件 只存在于内存中 和磁盘关系不大 管道的容量并不会受到磁盘容量的限制
进程对管道进行读操作和写操作都可能被阻塞
父进程与子进程当然可以并发执行,A正确。父进程可与子进程共享一部分资源,但不能共享虚拟地址空间,在创建子进程时,会为子进程分配资源,如虚拟地址空间等,B错误。临界资源一次只能为一个进程所用,D正确。进程控制块(PCB)是进程存在的唯一标志,每个进程都有自己的PCB, C正确。
处理机调度
调度的层次和概念
进程调度的时机 方式
调度器 闲逛进程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VUQ1zY2k-1664806425978)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902154033735.png)]
进程遇到IO中断会进入阻塞态;
大概工作过程:进程开始处于运行态时调用IO设备(IO中断),IO设备速度慢,为不浪费CPU,进程会让出CPU使用权,主动进入阻塞态等待IO设备,IO设备工作完成后,进程会从阻塞态唤醒加入就绪队列(就绪态),在系统调度后可运行。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZ0hjaRj-1664806425979)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902153956752.png)]
调度的基本原则
调度算法
批处理系统 算法
先来先调度
短作业优先
非抢占
抢占
注意
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PESDi1jQ-1664806425980)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220902165113746.png)]
高响应比优先
总结
交互式系统算法
时间片轮转
优先级调度算法
多级反馈队列调度算法
习题
在单处理器的多进程系统中,进程什么时候占用处理器及决定占用时间的长短是由进程的特点以及进程调度策略决定的
先来先服务对长进程有利 即有利于cpu繁忙型的作业
响应比=响应时间/进程所需要的时间
响应时间=等待时间+进程所需要的时间
时间片轮转调度算法绝对是可抢占的算法
作业是用户提交的,进程是由系统自动生成的。前者以用户任务为单位,后者以操作系统控制为单位
分时系统需要同时满足多个用户的需要,因此把处理器时间轮流分配给多个用户作业使用, 即采用时间片轮转调度算法
UNIX是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统分类,属于分时操作系统
满足短作业优先且不会发生饥饿现象的是高响应比优先调度算法
当进程处于临界区时, 说明进程正在占用处理机,只要不破坏临界资源的使用规则,就不会影响处理机的调度。
时钟中断发生后,系统会修改当前进程在时间片内的剩余时间
影响时间片大小的主要因素包括响应时间、系统开销和进程数量等
同步 互斥
进程同步 进程互斥
进程互斥的软件实现方法
单标志法
双标志先检查法
双标志后检查法
Peterson算法
可以将等待区的步骤进行穿插,试试会不会有问题。
总计
进程互斥的硬件实现方法
中断屏蔽算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQlNWkoF-1664806425981)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903103927782.png)]
TestAndSet指令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkfGNSvg-1664806425981)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903104043257.png)]
Swap指令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mgX51Hqz-1664806425982)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903104140148.png)]
总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFGOz5Al-1664806425982)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903104200241.png)]
信号量机制
信号量实现互斥 同步 同步前驱
互斥
同步
前驱
总结
经典同步问题
生产者消费者模型
多种生产者 多种消费者
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2qkJegmt-1664806425983)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903141615307.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ATCPvDXI-1664806425983)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903141700012.png)]
读者写者问题
哲学家进餐
睡眠理发师
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yw2DkDJu-1664806425984)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903150208263.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FbwmgvzT-1664806425984)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903150227727.png)]
吸烟者问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4OVWFTpS-1664806425984)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903152428097.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dlKWMHEK-1664806425985)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903152452354.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHQAUu2y-1664806425985)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220903152413595.png)]
管程
习题
多个进程可以共享系统中的资源,一次仅允许一个进程使用的资源称为临界资源。访问临界资源的那段代码称为临界区。
临界区,并不是指临界资源,如共享的数据、代码或硬件设备等,而是指访问临界资源的那段代码程序
在操作系统中,要对并发进程进行同步的原因是 并发进程具有异步性
P、V操作是一种低级的进程通信原语,它是不能被中断的
若代码可被多个进程在任意时刻共享,则要求任一个进程在调用此段代码时都以同样的方式运行;而且进程在运行过程中被中断后再继续执行,其执行结果不受影响。这必然要求代码不能被任何进程修改,否则无法满足共享的要求。这样的代码就是可重入代码,也称纯代码,即允许多个进程同时访问的代码
管程的signal操作与信号量机制中的V操作不同,信号量机制中的V操作一定会改变信号量的值S = S+1。而管程中的signal操作是针对某个条件变量的,若不存在因该条件而阻塞的进程,则signal不会产生任何影响
执行结果不同的两个并发进程,则两个并发进程不能正确运行
死锁
死锁的概念
预防死锁
避免死锁
死锁的检测
死锁的解除
习题
在操作系统中,死锁出现是指若干进程因竞争资源而无限等待其他进程释放已占有的资源
一次分配所有资源的方法可以预防死锁的发生, 资源剥夺法, 撤销进程 占有并请求/请求和保持
资源有序分配策略 循环等待
解除死锁通常不采用的方法是从非死锁进程处抢夺资源
死锁的预防方法能确保系统不发生死锁
死锁的四个必要条件中,无法破坏的是资源互斥使用
系统产生死锁的可能原因独占资源分配不当
产生死锁的根本原因是系统资源分配不足和进程推进顺序非法
死锁的避免是根据防止系统进入不安全状态采取措施实现的
引入多道程序技术的前提条件之一是系统具有中断功能
有向边包括进程指向资源类的申请边和资源类指向进程的分配边两类
矩形框表示资源类,其中圆点表示该类资源的数量
圆圈结点表示进程类
资源分配图是一个有向图,用于表示某时刻系统资源与进程之间的状态
回退是指从此时此刻的状态退回到一分钟之前的状态
每种资源只有一个,并出现环路 出现死锁的充要条件 可以判断死锁是否出现
没有环路 则一定不会有死锁
死锁状态一定是不安全状态
资源的有序分配策略可以破坏死锁的循环等待条件
死锁定理是用于处理死锁的检测死锁方法
死锁定理,某个时刻 系统的资源分配图不可以完全简化 则出现死锁
顺序资源分配法/资源有序分配,
首先给系统的资源编号,规定每个进程必须按编号递增的顺序请求资源,即限制了用户申请资源的顺序。
银行家算法是最著名的死锁避免算法,其中的最大需求矩阵Max定义了每个进程对m类资源的最大需求量,系统在执行安全性算法中都会检查此次资源试分配后,系统是否处于安全状态,若不安全则将本次的试探分配作废。
需要各进程运行所需的资源总量信息,不会给可能导致死锁的进程分配资源
在死锁的检测和解除中,系统为进程分配资源时不采取任何措施,但提供死锁的检测和解除手段。
死锁检测方法可以获得最大的并发性。并发性排序:死锁检测方法、银行家算法、资源预分配法
并发性,即允许更多的进程无等待地向前推进
根据银行家算法得到此时系统不安全,系统并未立即进入死锁状态,因为这时所有的进程未提出新的资源申请,全部进程均未因资源请求没有得到满足而进入阻塞态。只有当进程提出资源申请且全部进程都进入阻塞态时,系统才处于死锁状态
存储器管理
存储器
概述
存储器是计算机系统的重要组成部分之一。 对存储器加以有效管理,不仅直接影响存储器的利用率,而且对系统性能有重大影响。存储器管理的主要对象是内存,对外存的管理在文件管理中。
存储器的层次结构
按照距离CPU的远近及由快到慢的存取速度,可以将存储器分为:CPU寄存器(寄存器)、主存(高速缓存cache、主存储器、磁盘缓存)、辅存(磁盘、可移动存储介质)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H4uzwexd-1664806425985)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905120134615.png)]
存储器的层次结构
1、寄存器
访问速度最快,但价格昂贵。
2、高速缓存
容量远大于寄存器,但比主存小两三个数量级。
3、主存储器
CPU只能从主存储器中取得指令和数据。
但运行速度远低于CPU执行指令的速度。
4、磁盘缓存
利用主存中的存储空间。
程序的装入和链接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8lZ5D0El-1664806425986)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908201042241.png)]
编译
链接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eyExogXD-1664806425986)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905155113610.png)]
静态链接方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MPa9VHOt-1664806425986)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905155137410.png)]
装入
绝对装入方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1hPap9r3-1664806425987)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905154950501.png)]
静态重定位[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-10U3DHGx-1664806425987)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905155013879.png)]
动态重定位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eVB7zizU-1664806425988)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905155045602.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9o8D4IVa-1664806425988)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905154411693.png)]
交换技术
交换
交换(对换)的基本思想是,把处于等待状态(或在CPU调度原则下被剥夺运行权利)的 程序从内存移到辅存,把内存空间腾出来,这一过程又称换出;把准备好竞争CPU运行的程序从 辅存移到内存,这一过程又称换入。
第2章介绍的中级调度采用的就是交换技术。 例如,有一个CPU采用时间片轮转调度算法的多道程序环境。时间片到,内存管理器将刚 刚执行过的进程换出,将另一进程换入刚刚释放的内存空间。同时,CPU调度器可以将时间片分 配给其他已在内存中的进程。每个进程用完时间片都与另一进程交换。在理想情况下,内存管理 器的交换过程速度足够快,总有进程在内存中可以执行。
有关交换,需要注意以下几个问题:
交换需要备份存储,通常是磁盘。它必须足够大,并提供对这些内存映像的直接访问。
为了有效使用CPU,需要使每个进程的执行时间比交换时间长。 若换出进程,则必须确保该进程完全处于空闲状态。
交换空间通常作为磁盘的一整块,且独立于文件系统,因此使用起来可能很快。
交换通常在有许多进程运行且内存空间吃紧时开始启动,而在系统负荷降低时就暂停。 •
普通的交换使用不多,但交换策略的某些变体在许多系统(如UNIX)中仍发挥作用。
交换技术主要在不同进程(或作业)之间进行,而覆盖则用于同一个程序或进程中。
对于主存无法存放用户程序的矛盾,现代操作系统是通过虚拟内存技术来解决的,覆盖技术则已成为历 史;而交换技术在现代操作系统中仍具有较强的生命力。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7bAr4Sd4-1664806425989)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905160137721.png)]
连续分配管理方式
单一连续分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QTpiguMS-1664806425989)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905161635372.png)]
固定分区分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L9Zz3y98-1664806425990)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905161724005.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-URu7MWpD-1664806425990)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905161802547.png)]
动态分区分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YJtCpTEP-1664806425991)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905161951112.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cIAqiDs9-1664806425992)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905162012962.png)]
内存碎片分为内部碎片和外部碎片。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qj5Ieko4-1664806425994)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905161908337.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XrvQlpfy-1664806425994)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905161529183.png)]
动态可重定位分区分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OrwdUMhK-1664806425995)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905164520096.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AoF0aFfC-1664806425995)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905164645162.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mF82RYb2-1664806425995)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905165044831.png)]
动态分区分配算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xhWu33JW-1664806426002)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905164118628.png)]
非连续分配管理方式
分页管理方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVfqVSeQ-1664806426003)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905175423245.png)]
基本地址变换机构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vmRB2aqG-1664806426003)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905184509250.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ztpAEkXW-1664806426003)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905184557979.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gICb7E6z-1664806426003)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905184531729.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0eK8K9Ym-1664806426004)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905184417656.png)]
快表地址变换机构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FuR7wGqN-1664806426004)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905194114555.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xdc3OBDE-1664806426005)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905194319345.png)]
局部性原理 使得效率变高
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6KvolcwT-1664806426005)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905194438988.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ku44Blqc-1664806426006)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905194517379.png)]
两级页表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8q8mBs0h-1664806426006)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905195743084.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0M9KIrSQ-1664806426007)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905195810971.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k86T8bGA-1664806426008)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905195701441.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nDRTQqBD-1664806426009)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220905195622743.png)]
分段管理方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a486mAQ8-1664806426009)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906144811203.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UQ2flLDW-1664806426010)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906144751231.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lRohmL4n-1664806426011)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906144637899.png)]
段页式管理方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y5PQAzo8-1664806426012)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906150255010.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FRep0SNK-1664806426012)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906145850790.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qgoakwVg-1664806426013)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906145909161.png)]
习题
存储器概述
存储保护的作用是防止文件被改动 保护计算机安全
内存保护是内存管理的一部分,是操作系统的任务,但是出于安全性和效率考虑,必须由硬件实现,所以需要操作系统和硬件机构的合作来完成。
多进程的执行通过内存保护实现互不干扰,如页式管理中有页地址越界保护,段式管理中有段地址越界保护。
程序的装入和链接
绝对装入 在编译时将物理地址计算好
静态重定位 在装入时将逻辑地址转换成物理地址
动态重定位 在程序运行时 将链接地址转换成物理地址
编译后一个目标程序所限定的地址范围称为该作业的逻辑地址空间。换句话说,地址空间仅指程序用来访问信息所用的一系列地址单元的集合。这些单元的编号称为逻辑地址。
编译后形成的逻辑地址,链接后形成完整逻辑地址,装入后形成物理地址。
形成逻辑地址的阶段是链接,完成逻辑地址到物理地址转变的阶段是装入
将作业的逻辑地址变为物理地址的过程称为地址重定位
交换技术
进程正在进行I/O操作时不能换出主存,否则其I/O数据区将被新换入的进程占用,导致错误。不过可以在操作系统中开辟I/O缓冲区,将数据从外设输入或将数据输出到外设的I/O活动在系统缓冲区中进行,这时系统缓冲区与外设I/O时,进程交换不受限制
采用交换技术的目的是为了节省主存空间
分配管理方式
固定分区存储方式 可以使用静态重定位的方式装入
可变分区管理中 采用拼接技术的原因是合并空闲区
因为系统处理器在同一时刻只能执行一条指令或访问数据,所以为每道程序(数据)设置一个寄存器没有必要(同时也不现实,因为寄存器是很昂贵的硬件,而且程序的道数是无法预估的),而只需在切换程序执行时重置寄存器内容。即在重定位存储管理方式中 需要在整个系统中设置一个重定位寄存器既可。
每个进程都拥有自己独立的进程空间,若一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界,因此需要进行界地址保护,即当程序要访问某个内存单元时,由硬件检查是否允许,若允许则执行,否则产生地址越界中断。
实现分页、分段和段页式存储管理需要特定的数据结构支持,如页表、段表等。为了提高性能,还需要硬件提供快存和地址加法器等,代价高。分区存储管理是满足多道程序设计的最简单的存储管理方案
分页式要求每个进程拥有一个页表,进程的页表驻留在内存中。
静态重定位是在程序运行之前由装配程序完成的,必须分配其要求的全部连续内存空间。而页式存储管理方案是将程序离散地分成若干页(块),从而可以将程序装入不连续的内存空间,显然静态重定位不能满足其要求
比较段号S和段表长度若S>=M,则产生越界异常
确定页面大小有很多因素,如进程的平均大小、页表占用的长度等。而一旦确定,所有的页面就是等长的(一般取2的整数幕倍),以便易于系统管理。
不会产出内部碎片的分配管理方式是分段管理方式
引入段式存储管理方式,主要是为了满足用户的下列要求:方便编程、分段共享、分段保护、 动态链接和动态增长
分段式,以段为单位,每段是一个连续的存储区,段与段之间无位置关系
页表和段表同样存储在内存中,系统提供给用户的物理地址空间为总空间大小减去页表或段表的长度。由于页表和段表的长度不能确定,所以提供给用户的物理地址空间大小也不能确定。
内存分页管理是在硬件和操作系统层面实现的,对用户、编译系统、连接装配程序等上层是不可见的。
一个程序的如何分段是在用户编程时就决定的。
程序的动态链接与程序的逻辑结构相关,分段存储管理将程序按照逻辑段进行划分,因此有利于其动态链接。
多级页表中,页表基址寄存器存放的是顶级页表的起始物理地址,故存放的是一级页表的起始物理地址。
段页式存储管理
地址映射表是毎个进程一张段表,每个段一张页表。
采用分段方法来分配和管理用户地址空间,采用分页方法来管理物理存储空间。但它的开销要比段式和页式管理的开销大。
可重入程序主要是通过共享来使用同一块存储空间的,或通过动态链接的方式将所需的程序段映射到相关进程中去,其最大的优点是减少了对程序段的调入/调出,因此减少了对换数量。
对外存对换区的管理应以提高接入,接出速度为主要目标
对主存的访问,以字或者字节为单位
虚拟存储器
基本概念
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MD31RaV7-1664806426013)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906155719491.png)]
请求分页管理方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gfhVdW63-1664806426014)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906160510208.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z4ABzf7O-1664806426014)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906160730690.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XHVtsQZh-1664806426015)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906160809461.png)]
页面置换算法
最佳置换算法 OPT
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S84t0HAV-1664806426015)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906162330082.png)]
先进先出置换算法 FIFO
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wpxhn3vt-1664806426015)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906162422339.png)]
最近最久未使用置换算法 LRU
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9EVMJtT-1664806426016)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906162449497.png)]
最少使用置换算法 LFU
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QlvMxgOh-1664806426016)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906170229341.png)]
时钟置换算法 CLOCK
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rz5ytmaf-1664806426017)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906162524470.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UYuMisfv-1664806426017)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906162545502.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oPBd8vOM-1664806426017)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906171317182.png)]
页面缓冲算法 PBA
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YGjJnuWF-1664806426018)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906170437862.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NyK0x0RD-1664806426018)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906162606248.png)]
页面分配策略
抖动 工作集
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Hs2GhRr-1664806426018)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906174647970.png)]
请求分段存储管理方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NcxmFlHu-1664806426019)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906175217973.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1FvzjgyM-1664806426020)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906175650489.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LmD6gmYW-1664806426021)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906175628347.png)]
共享段表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2coLRAVu-1664806426021)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906180044462.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PXYQdOSe-1664806426021)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220906180308182.png)]
习题
虚存的实际容量<=内存容量和外存容量之和,硬件的硬性条件规定的。
虚存的最大容量<=计算机的地址位数能容纳的最大容量。如计算机的地址是32位的 按字节编址,虚存的最大容量<=2的32次方。
虚拟内存的管理需要由相关的硬件和软件支持,有请求分页页表机制、缺页中断机构、地址变换机构等
在虚拟存储器中,作业不必全部装入内存且在运行过程中也不用一直驻留内存。
虚拟存储技术并未实际扩充内存、外存,是采用相关技术相对地扩充主存,是一种补充内存的逻辑空间的技术。虚拟存储器技术主要解决电脑内存不够的问题。
多次性、对换性和离散性是虚拟内存的特征。
虚拟存储技术基于程序的局部性原理。局部性越好,虚拟存储系统越能更好地发挥作用
虚拟存储器系统中的页表项中的合法位信息显示本页面是否在内存中,即决定了是否会发生页面故障。
虚拟存储管理系统的基础是程序的局部性理论。
虚拟存储扩充内存的基本方法是将一些页或段从内存中调入、调出,而调入、调出的基本手段是覆盖与交换
相联存储器
不根据地址而是根据存储内容来进行存取的存储器,可以实现快速地查找快表。可以近似看成快表??
进程在执行中发生了缺页中断,经过操作系统处理 后 应让其执行被中断的那一条指令。
请求分页存储管理
把页面的尺寸增大一倍而且可容纳的最大页数不变,则程序顺序执行时缺页次数会减少。
请求分页存储管理就是为了解决内存容量不足而使用的方法,它基于局部性原理实现了以时间换取空间的目的。它的主要特点自然是间接扩充了内存。
整个流程可归纳为缺页中断一决定淘汰页一页面调出一页面调入
发生缺页中断时,系统执行的操作可能是置换页面或分配内存。系统内没有越界错误,不会进行越界出错处理。
页面置换算法
LRU算法需要对所有页最近一次被访问的时间进行记录,查找时间最久的进行替换,这涉及排序,对置换算法而言,开销太大。为此需要在页表项中增加LRU位,需要硬件的特殊支持可看作是“耗费高”这一结果,需要对所有页进程排序才是造成需要硬件支持的原因。
所有的算法都可能造成抖动
快表是用来地址变换的,加快。
若工作集都在内存中,则不会产生缺页中断,即不会出现页面的调入/调出,而不是虚拟存储器(包括作为虚拟内存那部分硬盘)。
出现抖动的解决办法
1. 采取局部置换策略: 如果页面采用可变分配方式,则进制某进程从其他进程获取物理块,把抖动限制在该进程内。
2. 把工作集算法融入处理机调度中:从外存调入作业之前,先检查每个进程在内存中的驻留页面是否足够多的,是则调入新作业,否则先为这些进程增加物理块。
3. 利用L=S准则调节缺页率:即使缺页时间和平均缺页服务时间相等,以最大化处理机的利用率。
4. 选择性暂停进程: 当多道程序度偏高时,可基于特定准则停止当前活动的某些进程。
增大快表容量能把更多的表项装入快表,会加快虚实地址转换的平均速率;让页表常驻内存可以省去一些不在内存中的页表从磁盘上调入的过程,也能加快虚实地址转换;增大交换区对虚实地址转换速度无影响。
系统调用是由用户进程发起的,请求操作系统的服务。对于页置换,当内存中的空闲页框不够时,操作系统会将某些页面调岀,并将要访问的页面调入,这个过程完全由操作系统完成,不涉及系统调用。对于进程调度,进程调度完全由操作系统完成,无法通过系统调用完成。对于创建新进程,创建新进程可以通过系统调用来完成,如Linux中通过fork系统调用来创建子进程。对于生成随机数,只需要普通的函数调用,不涉及请求操作系统的服务,如C语言中random()函数。
交换技术就是把暂时不用的某个程序及数据从内存移到外存中,以便腾出必要的内存空间,或把指定的程序或数据从外存读到内存中的一种内存扩充技术。交换技术与虚存中使用的调入/调出技术的主要相同点是,都要在内存与外存之间交换信息。交换技术与虚存中使用的调入/调出技术的主要区别是:交换技术调入/调出整个进程,因此一个进程的大小要受内存容量大小的限制;而虚存中使用的调入/调出技术在内存和外存之间来回传递的是页面或分段,而不是整个进程,从而使得进程的地址映射具有更大的灵活性,且允许进程的大小比可用的内存空间大
缺页的次数与内存中数据存放的方式及程序执行的顺序有很大关系;同时说明,当缺页中断次数不多时,减小页面大小影响并不大,但缺页中断次数很多时,减小页面大小会带来很严重的影响.
设备管理
I/O管理概述
I/O设备基本概念和分类
I/O 系统的功能
1 隐藏物理设备的细节
·I/O设备通常有很多种类型,每一种又有传输方向、数据粒度、传输速度等不同特性,将这些复杂的细节隐藏,仅向上层暴露简单的接口。
2 与设备的无关性
·用户不仅可以使用抽象的I/O命令,还可以使用抽象的逻辑设备名称来控制选择I/O设备,并且添加新的设备驱动程序。
·可以有效的提高OS的可移植性和易适应性,对于OS本身而言,应允许在不需要将整个操作系统进行重新编译的情况下 增添新的设备驱动程序,以方便新的I/O设备的安装。 从而做到即插即用。
3 提高处理机和I/O设备的利用率
·尽可能让CPU和I/O设备并行执行
4 对I/O设备进行控制
·轮询I/O设备的可编程I/O方式
·中断可编程I/O
·DMA直接存储器访问
·I/O通道
5 确保对设备的正确共享
·独占设备:进程间互斥访问该类资源。临界资源
·共享设备:如磁盘,多个进程可交叉读写磁盘。在一段时间内允许多个进程同时访问的设备。
·虚拟设备:利用虚拟技术将独占设备变换成若干个逻辑设备 供若干进程或者用户使用。
6 错误处理
·临时性错误:重试操作
·持久性操作:向上层汇报
I/O 软件层次结构
1.用户层I/O软件
实现与用户的交互,用户可以直接调用此层提供的接口、函数等;
2.设备独立性软件
用于实现用户程序和设备驱动器的统一接口、设备命名、设备保护以及设备分配和释放等,同时为数据的传输提供必要的空间
3.设备驱动程序
与硬件直接相关,用于具体实现系统施加给硬件设备的指令
4.中断处理程序
保护被中断的CPU环境,转入中断处理程序,处理,返回恢复现场
I/O 系统接口
块设备接口
块设备接口是块设备管理器和高层之间的接口。该接口反应了大部分磁盘存储器和光盘存储器的本质特征,用于控制该类设备的输入或者输出。
a.块设备
块设备是指,数据的存取和传输都是以数据块为单位的设备,典型的块设备如磁盘。该设备的基本特征就是传输速率较高,另一特征就是可寻址,即能指定数据的输入源地址和输出的目标地址,可随机的读写磁盘中任一块;磁盘中的I/O常采用DMA方式
b.隐藏了磁盘的二维结构
块设备接口将磁盘上所有扇区从0到n-1依次编号。这样编号以后,就把磁盘的二维结构改变成一种一维线性序列。
c.将抽象命令映射所为低层操作
块设备接口支持上层发来的对文件或设备的打开,读写,关闭等抽象命令,该接口将上述命令映射为设备可以识别的教低层的具体命令。
流/字符设备接口
流设备接口是流设备管理程序与高层之间的接口。该接口又称为字符设备接口,用来控制字符设备的输入或者输出。
a.字符设备
字符设备是指,数据的存取和传输是以字符为单位的设备,如光盘和打印机。该设备的基本特征是传输速率低。另一特征是不可寻址,即不确定数据的输入源和输出地址。字符设备在输入输出时,常采用中断驱动方式。
b.get和put操作
由于字符设备是不可寻址的,因此对它只能采取顺序存取的方式,通常是为其建立一个字符缓冲区(队列)。用户程序获取或者输出字符的通常方式就是采取get和put操作,get操作用从字符缓冲区取得一个字符(到内存),他返回给调用者。而put操作用于把一个新字符(从内存)输送到字符缓存区中。以待送到设备。
c.in-control指令
字符设备类型非常多,且差异较大,为了可以能够统一的处理他们,通常在流设备中提供一种通用的in-control指令,在该指令中包含许多的参数,每一个参数表示一个与设备相关的特定功能。
由于大部分流设备都是独占设备,必须采取互斥的方式实现共享,为此,流设备接口了打开和关闭操作。使用这类设备时,必须先用打开操作来打开该设备,如果设备已经被打开,则表示它正在被其他进程使用。
网络设备接口
在现代OS中,都提供了面向网络的功能。但首先还需要通过某种方式把计算机连接到网络上。同时操作系统也必须提供相应的网络软件和网络通信接口,使计算机能通过网络与网络上的其它计算机进行通信或上网浏览。
阻塞IO 非阻塞IO
I/O 控制方式
程序直接控制方式
中断驱动方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4RxACAWx-1664806426026)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images!在这里插入图片描述
DMA方式
又叫直接存储器方式
通道控制方式
一个通道可以控制多个I/O控制器 ,一个I/O控制器可以控制多个I/O设备
总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MyxT6cf9-1664806426029)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images!在这里插入图片描述
)]
设备控制器
设备控制器的主要功能是:控制一个或者多个I/O设备,以实现I/O设备和计算器之间的数据交换,它是CPU和I/O设备之间的接口。设备控制器是一个可编址的设备,当它控制一个设备时具有唯一的设备地址。如果控制多个,则应该含有多个设备地址,每一个设备地址对应一个设备。
设备控制器的基本功能
·接收和识别命令: 在控制器中应具有控制寄存器,用来存放接收的命令和参数,并进行译码
·数据交换:寄存器.实现CPU与控制器,控制器与设备间的数据交换
·标识和报告设备的状态:控制器中的状态寄存器记录设备的状态供CPU了解
·地址识别:地址译码器.每个设备都有一个地址,控制器必须能识别。
·数据缓冲区: 缓冲器.解决I/O设备与CPU、内存速度不匹配的矛盾
·差错控制:控制器兼管对由I/O设备传送来的数据进行差错检测
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KRhwxYFA-1664806426030)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images!在这里插入图片描述
)]
设备驱动程序
设备处理程序通常又称设备驱动程序,它是I/O系统的高层与设备控制器之间的通信程序,主要任务是接受上层软件发来的抽象io要求,如读写命令,再把它转化成具体要求,发送给设备控制器,启动设备去执行;反之,它也将由设备控制器发来的信号传送到上层软件。每一类设备配置一种驱动程序。
功能
·接受由设备无关的软件发来是命令和参数,并将命令中的抽象要求转化为与设备相关的低层操作序列;
·检测用户io请求的合法性 了解io设备的状态 传递与io设备操作有关的参数 设置设备的工作方式
·发出io命令 如果设备空闲 便立即启动io设备 完成指定的io操作
·及时响应由设备控制器传来的中断请求 根据中断的类型 调用相应的中断处理程序来处理
特点
·实现再与设备无关的软件和设备控制器之间通信和转换的程序。
·对于不同的设备 应配置不同的设备驱动程序。因为驱动程序与设备控制器以及io设备的硬件特性紧密相关。
·驱动程序与io设备应采用的io控制方式紧密相关。常用的控制方式 如 中断驱动和DMA方式
·驱动程序的一部分必须使用汇编语言书写。
·驱动程序应允许可重入。一个驱动程序在完成一次调用之前被再次调用。
设备处理方式
根据设备处理时是否设置进程以及设置怎么样的进程 将设备处理方式分为三种
·为每一类设备设置一个进程 专门执行这类设备的io操作。如为同一类型的打印机设置一个打印进程;为所有的交互式终端设置一个交互式终端进程。适合比较大的系统。
·在整个系统设置一个io进程 专门用于执行各类设备的io操作,也可以设置一个输入进程和一个输出进程 分别处理系统中的输入或者输出操作。
·不设置专门的设备处理进程 而只为各类设备设置相应的设备驱动程序 共用户或者系统调用。这种目前使用较多。
处理过程
启动指定设备 完成上层指定的I/O工作。启动之前,需要完成必要的准备工作,如检测设备状态是否为忙等。在完成所有的准备工作之后,才向设备控制器发生一条启动命令。
·将抽象要求转换成具体要求;
·对服务请求进行校验;
·检测设备的状态;
·传送必要的参数;
·启动I/O设备。
设备无关性
设备无关性是指应用程序独立于具体使用的物理设备
优点
-
用户可以抽象使用I/O命令,还可以使用抽象的逻辑设备名来使用设备
-
提高操作系统的可移植性和容易适应性,对操作系统而言,新增或者减少新的设备驱动程序,不需要将整个操作系统进行重新编译,就能很方便I/O设备安装。I/O重定向指用于I/O操作的设备可以更换(重定向),而不必改变应用程序。
-
设备分配时的灵活性
应用程序(进程)不必拘泥于某个物理设备,而可以用任意一台空闲设备。
与设备无关的软件
又叫设备独立性软件
·设备驱动程序的统一接口
向上层提供统一的调用接口 如 read、write接口。
·对设备的保护
禁止用户直接访问设备 以防止无权访问的用户使用。
·差错控制
·对设备的分配和回收
·缓冲管理
·独立于设备的逻辑数据块
·建立逻辑设备名到物理设备名的映射关系
根据设备类型选择调用相应的驱动程序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RKDGseaH-1664806426031)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907111854605.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2dJVdLd0-1664806426031)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907111933102.png)]
习题
设备属性
字符设备 不可寻址 以字符传输 中断驱动
块设备 可以寻址 以块传输 且效率较高
共享设备,在一段时间内允许多个进程同时访问。它必须是可以寻址的还可以随机访问
独享设备,在分配独享设备时,可能会发生死锁。
虚拟设备,将一个物理设备变成多个对应的逻辑设备。
磁盘设备 主要采取DMA的io控制方式。
为了便于上层软件的编制,设备控制器通常需要提供控制寄存器 状态寄存器和控制命令
设备控制器, 接口用来传输信息,io逻辑用于实现设备控制
设备映射表 建立逻辑设备与物理设备之间的对应关系
io控制方式
DMA控制器 命令/状态寄存器 内存地址寄存器 数据寄存器 数据计数器
DMA方式是在io设备与主存之间建立一条直接数据通路。
通道也是用于io设备与主存之间的信息交换,与DMA方式不同的是 该方式的cpu干预更少。cpu只需要发出启动命令,指出通道相应的操作和io设备,该指令就可以启动通道并执行。‘
字节多路通道用于连接大量的低速或者中速io设备。
设备分配考虑的问题 设备的固有属性 设备独立性 安全性
区分硬件和识别设备的代号,叫做绝对好
通道控制设备控制器,设备控制器控制设备工作
所有设备的启动都由系统统一来做。
编制好的通道程序是存放在主存中的。
每一种设备对应一个驱动程序。系统只要按设备类型配置设备驱动程序即可,即每类设备只需一个设备驱动程序。
将系统调用参数翻译成设备操作命令的工作由设备无关的操作系统软件完成的。系统调用不会因为设备的不同而改变。
而设备驱动程序负责执行操作系统发来的io命令,他因设备的不同而不同。
用户程序 系统调用处理程序 设备驱动程序 中断处理程序
I/O核心子系统
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3voqKPwE-1664806426032)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907114918317.png)]
缓冲区管理
缓冲区
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r2VaPI7d-1664806426032)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907160924502.png)]
单缓冲
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yCzXw1nC-1664806426032)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907161202062.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UA9sydXN-1664806426032)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907161417141.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCnt53uX-1664806426033)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907161439902.png)]
双缓冲
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RtmQNq7I-1664806426033)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907161528517.png)]
循环缓冲区
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0BrY92fV-1664806426033)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907161635196.png)]
缓冲池
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HAQdPfY1-1664806426034)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907161651442.png)]
总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2F5woIbE-1664806426034)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907160853413.png)]
设备分配和回收
分配考虑的因素
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRlhl5WC-1664806426034)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907122328681.png)]
分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T6z3HLk2-1664806426034)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907122357289.png)]
分配管理中的数据结构
设备控制表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MWK2JvgQ-1664806426035)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907122518120.png)]
控制器控制表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kFrRmHsM-1664806426035)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907122554880.png)]
通道控制表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ht1yJ800-1664806426035)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907122613283.png)]
系统设备表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J0lBEpX2-1664806426036)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907122632390.png)]
分配步骤
根据设备名(物理或者逻辑)查找设备 然后依次查找控制器 通道。其中有在忙碌的就将进程放入其数据结构的等待队列,不忙碌则分配给进程。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sFEMc9Bh-1664806426036)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907122729117.png)]
设备分配步骤的改进
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KIH3mVXA-1664806426036)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907123129761.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kxBzbhid-1664806426036)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907123142061.png)]
总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EFFkqPBH-1664806426037)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907122221704.png)]
假脱机技术
脱机技术
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-czxHS5w2-1664806426037)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907115643688.png)]
假脱机技术
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PNWxXpRj-1664806426038)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907115744014.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ju7RQ8zH-1664806426039)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907115816061.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Mf1OsAm-1664806426041)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907115908967.png)]
共享打印机原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tKxd2VBs-1664806426042)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907115946069.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uInnOnL9-1664806426043)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907115958752.png)]
总结[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gxoeYlBe-1664806426044)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220907115616687.png)]
习题
用户程序对I/O设备的请求采用逻辑设备名,而程序实际执行时使用物理设备名,它们之间的转换是由设备无关软件层完成的。主设备和从设备是总线仲裁中的概念。
设备独立性 用户编程时使用的设备与实际使用的设备无关
缓冲区的作用 改善cpu与io设备速度不匹配的问题。缓冲区是在内存中开辟的
缓冲池,并行进程有效的输入输出。
缓冲机制中,无论是单缓冲、多缓冲还是缓冲池,由于缓冲区是一种临界资源,所以在使用缓冲区时都有一个申请和释放(即互斥)的问题需要考虑。所以着重考虑的问题是实现进程访问缓冲区的同步问题。
共享设备是指在一个时间间隔内可被多个进程同时访问的设备,磁盘满足。
独占设备采用静态分配方式,而共享设备采用动态分配方式。
提高单机资源利用率的关键技术是多道程序设计技术。单机系统中,最关键的资源是处理器资源,最大化地提高处理器利用率,就是最大化地提高系统效率。多道程序设计技术是提高处理器利用率的关键技术,其他均为设备和内存的相关技术。
SPOOLing系统
SPOOLing系统主要包含三部分,即输入井和输出井、输入缓冲区和输出缓冲区以及输入进程和输出进程。这三部分由预输入程序、井管理程序和缓输出程序管理,以保证系统正常运行。
SPOOLing技术可将一台物理I/O设备虚拟为I/O设备,同样允许多个用户共享一台物理I/O设备,所以SPOOLing并不是将物理设备真的分配给用户进程。用户进程实际上分配到的是外存区,即虚拟设备
SPOOLing技术 用户的打印 数据是从计算机到外设的 所以打印结果是从磁盘的输出井到内存的输出缓冲区再到外设的。
构成SPOOLing系统的基本条件是不仅要有大容量、高速度的外存作为输入井和输出井,而且还要有SPOOLing软件。利用SPOOLing技术提高了系统和I/O设备的利用率,进程不必等待I/O操作的完成。程序可以随时将数据传输到输出井中,待输出设备空闲时再有spooling系统完成数据的输出操作。
SPOOLing技术需有高速大容量且可随机存取的外存支持,通过预输入及缓输出来减少CPU等待慢速设备的时间,将独享设备改造成共享设备。是一种以空间换时间的技术。
磁盘存储器的性能和调度
磁盘性能与结构
结构和格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LlIfbCjj-1664806426044)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909121630537.png)]
磁盘的分类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FsWxMa66-1664806426045)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909121721018.png)]
磁盘调度算法
先来先服务算法FCFS
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WcUWjwYb-1664806426045)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909120156211.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MmfTiBXF-1664806426046)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909120214010.png)]
最短寻道时间优先SSTF
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-toqZY0w1-1664806426046)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909120258487.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ncCFw8cJ-1664806426047)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909120432194.png)]
扫描算法 SCAN 电梯调度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MwGyYoJS-1664806426048)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909120614309.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v0wD95cU-1664806426048)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909120559770.png)]
循环扫描算法CSCAN
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oy3AJW9i-1664806426049)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909121019568.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rq5Rmkkw-1664806426049)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909121104449.png)]
NStepSCAN 和 FSCAN 调度算法
在SSTF SCAN CSCAN调度算法中 都可能出现磁臂停留在某处不动的情况。例如,有一个或者几个进程对某个磁道有着较高的访问频率,反复请求对这个磁道的io操作,从而垄断了 整个磁盘设备。这个就是磁臂粘着。高密度磁盘上容易出现这个情况。
NStepSCAN调度算法 N步SCAN算法 将磁盘请求队列分成若干个长度的N 的子队列,磁盘调度将按FCFS调度这些子队列,而处理每一个子队列中的请求按照SCAN算法,对一个子队列处理完后,再处理其他子队列。当N足够大 会使得N步扫描法接近SCAN算法的性能,当N=1时,N步扫描法会退化成FCFS算法。
FSCAN算法 实质是N步扫描法的简化,即FSCAN只将磁盘请求队列分成两个子队列。一个是当前所有请求磁盘io的进程形成的队列,磁盘调度按照SCAN算法。另一个是在扫描期间,将新出现的请求磁盘io的进程放入等待处理的队列中。这样 新请求都将被推迟到下一次处理中 。
习题
顺序访问按从前到后的顺序对数据进行读写操作,如磁带。随机访问,即直接访问,可以按任意的次序对数据进行读写操作,如光盘、磁盘、U盘等。
硬盘操作系统的引导程序位于磁盘活动分区的引导扇区,因此必然产生在分区之后。分区是将磁盘分为由一个或多个柱面组成的分区(即C盘、D盘等形式),每个分区的起始扇区和大小都记录在磁盘主引导记录的分区表中。而对于高级格式化(创建文件系统),操作系统将初始的文件系统数据结构存储到磁盘上。操作系统引导扇区产生在对硬盘进行高级格式化时。
旋转延迟时间 磁头定位到某一磁道的扇区所需要的时间。
磁盘调度算法是为了减少寻找时间。扇区数据的处理时间主要影响传输时间。文件的物理结构磁盘空闲空间的分配程序均与旋转延迟有关,文件的物理结构与磁盘空间的分配方式相对应,包括连续分配、链接分配和索引分配。连续分配的磁盘中,文件的物理地址连续;而链接分配方式的磁盘中,文件的物理地址不连续,因此与旋转延迟都有关。
先来先服务算法根据磁盘请求的时间先后进行调度,因而可能随时改变磁头方向。
某磁盘的平均转速为尸秒/转,平均寻找时间为T秒,每个磁道可以存储的字节数为N,现向该磁盘读写b字节的数据,采用随机寻道的方法,每道的所有扇区组成一个簇,其平均访问时间是
将每道的所有扇区组成一个簇,意味着可以将一个磁道的所有存储空间组织成一个数据块组,这样有利于提高存储速度。读写磁盘时,磁头首先找到磁道,称为寻道,然后才可以将信息从磁道里读出或写入。读写完一个磁道后,磁头会继续寻找下一个磁道,完成剩余的工作,所以在随机寻道的情况下,读写一个磁道的时间要包括寻道时间和读写磁道时间,即T+ r秒。由于总的数据量是b字节,它要占用的磁道数为b/N个,所以总平均读写时间为(r+T)b/N秒
文件管理
文件系统基础
文件概念
文件 一组由意义的信息的集合
文件的逻辑结构
无结构文件
有结构文件
顺序文件
索引文件
索引顺序文件
总结
文件目录
文件控制块
索引节点
目录结构
单级目录结构
两级目录结构
树形目录结构
无环图目录结构
总结
文件的基本操作
文件共享
硬链接
软链接
文件保护
口令保护
加密保护
访问控制
总结
习题
UNIX操作系统中,所有设备都被视为特殊的文件,因为UNIX操作系统控制和访问外部设备的方式和访问一个文件的方式是相同的
文件操作是将该文件的FCB存入内存的活跃文件目录表,而不是将文件内容复制到主存,找到指定文件目录是打开文件之前的操作。
一个文件被用户进程首次打开即被执行了 open操作,会把文件的FCB调入内存,而不会把文件内容读到内存中,只有进程希望获取文件内容时才会读入文件内容。
FCB
在创建一个文件时,为它建立一个FCB。一个文件对应一个FCB,而一个文件目录项就是一个FCB。
目录文件是FCB的集合,一个目录中既可能有子目录,又可能有数据文件,因此目录文件中存放的是子目录和数据文件的信息。
文件目录项即FCB,通常由文件基本信息、存取控制信息和使用信息组成。基本信息包括文件物理位置。文件目录项显然不包括FCB的物理位置信息。
文件的逻辑结构
流式文件 顺序文件 索引文件 索引顺序文件
文件结构包括逻辑结构和物理结构。逻辑结构是用户组织数据的结构形式,数据组织形式来自需求,而物理结构是操作系统组织物理存储块的结构形式。 因此说,逻辑文件的组织形式取决于用户,物理结构的选择取决于文件系统设计者针对硬件结构(如磁带介质很难实现链接结构和索引结构)所采取的策略
对索引文件存取时,必须先查找索引表。索引项只包含每条记录的长度和在逻辑文件中的起始位置。为每条记录都要有一个索引项,因此提高了存储代价。
索引表的表项中含有相应记录的关键字和存放该记录的逻辑地址;三级索引需要访问4次磁盘;随机存取时索引文件速度快,顺序存取时顺序文件速度快。
文件的物理结构
直接存取即随机存取,采用连续分配和索引分配的文件都适合于直接存取方式,只有采用链接分配的文件不具有随机存取特性。
不利于文件动态增长的是 顺序结构。
最容易造成存储碎片发生的是顺序结构。
文件的物理组织方式是由操作系统确定的。
索引结构适合随机访问且易于文件扩展。
为了实现快速随机播放,要保证最短的查询时间,即不能选取链表和索引结构,因此连续结构最优。
文件保护
用户访问权限是指用户有没有权限访问该文件,而用户优先级是指在多个用户同时请求该文件时应该先满足谁。比如,图书馆的用户排队借一本书,某用户可能有更高的优先级,即他排在队伍的前面,但 有可能轮到他时被告知他没有借阅那本书的权限。 文件的属性包括保存在FCB中对文件访问的控制信息。
相对于加密保护机制,访问控制机制的安全性较差。因为访问控制的级别和保护力度较小, 因此它的灵活性相对较高。若访问控制不由系统实现,则系统本身的安全性就无法保证。加密机制若由系统实现,则加密方法将无法扩展
可以把用户访问权限抽象为一个矩阵,行代表用户,列代表访问权限。这个矩阵有4行5列,1代表true, 0代表false,所以需要20位
当所读文件的数据不在内存时,产生中断(缺页中断),原进程进入阻塞态,直到所需数据从外存调入内存后,才将该进程唤醒。对于IL read系统调用通过陷入将CPU从用户态切换到核心态,从而获取操作系统提供的服务。对于HL要读一个文件,首先要用open系统调用
打开该文件。open中的参数包含文件的路径名与文件名,而read只需使用open返回的文件描述符,并不使用文件名作为参数。read要求用户提供三个输入参数:①文件描述符fd;②buf缓冲区首址;③传送的字节数no read的功能是试图从fd所指示的文件中读入n个字节的数据,并将它们送至由指针buf所指示的缓冲区中
文件目录
实现用户对文件的按名存取,系统先利用用户提供的文件名形成检索路径,对目录进行检索。 在顺序检索中,路径名的一个分量未找到,说明路径名中的某个目录或文件不存在,不需要继续检索。
目录的查询方式有两种:顺序检索法和Hash法,通常采用顺序检索法。
在树形目录中,为了加快文件检索速度,可设置当前目录,于是文件路径可以从当前目录开始查找。
在顺序检索法查找完成后,得到的是文件的逻辑地址。
文件在磁带上通常采用连续存放方法,在硬盘上通常不采用连续存放方法,在内存上采用随机存放方法
对文件的访问控制,常由用户访问权限和文件属性共同限制。
在 树形目录结构中,对于不同用户的文件,文件名可以不同也可以相同。
防止文件受损常采用备份的方法,而存取控制矩阵方法用于多用户之间的存取权限保护,
磁盘存储器的管理
外存组织方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TB879w22-1664806426063)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909081850831.png)]
连续组织方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7zriALFl-1664806426063)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909081915409.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9FznEoii-1664806426064)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909082114547.png)]
链接组织方式(FAT 技术、NTFS 技术)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HS990ddV-1664806426064)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909082216870.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbPSN31O-1664806426064)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909082636408.png)]
题3. 在链接式文件中常用哪种链接方式? 为什么?
在链接式文件中常用常用的是显示链接方式,显示链接方式把用于链接文件各物理块的指针显式存放在一张链接表中。由于查找记录的过程是在内存中进行的,因而不仅显著地提高了检索速度,而且大大减少了访问磁盘的次数。由于分配给文件的所有盘块号都放在该表中,故把该表称为文件分配表FAT(File Allocation Table)
FAT技术
FAT中引入“卷”概念,支持讲一个物理磁盘分成四个逻辑磁盘,每个磁盘一个卷,每个卷都是能够单独被格式化和使用的逻辑单元,供文件系统分配空间使用
早期的FAT12文件系统
FAT12是以盘块为基本分配单位的。由于FAT是文件系统中最重要的数据结构,为了安全起见,在每个分区中都配有两张相同的文件分配表FAT1和FAT2。在FAT的每个表项中存放下一个盘块号,它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的FCB中。
题4. 在文件分配表中为什么要引入“簇”的概念? 以“簇”为基本的分配单位有什么好处?
- 如果把每个盘块(扇区)的容量增大n倍,则磁盘的最大容量便可增加n倍。但要增加盘块的容量是不方便和不灵活的。为此,引入了簇(cluster)的概念。
- 以“簇”为基本的分配单位的好处是,能适应磁盘容量不断增大的情况,还可以减少FAT表中的项数,使FAT表占用更少的存储空间,并减少访问FAT表的存取开销
题5. 简要说明为什么要从FAT12发展为FAT16? 又进一步要发展为FAT32?
- FAT12对磁盘容量限制的原因在于, FAT12表中的表项有限制,亦即最多只允许4096个。这样,随着磁盘容量的增加,必定会引起簇的大小和簇内碎片也随之增加。
- 由于FAT16表的长度只有65 35项,随着磁盘容量的增加,簇的大小也必然会随之增加,为了减少簇内零,也就应当增加FAT表的长度,为此需要再增加FAT表的宽度,这样也就由FAT16演变为FAT32。
FAT32 是FAT系列文件系统最后产物,FAT32每个簇固定4KB,每簇8个盘块,FAT32可以管理最大磁盘空间大到2TB。
FAT32缺点:随着文件分配表扩大,运行速度比FAT16格式慢,FAT有最小管理空间限制,FAT32卷必须至少有65537个簇,FAT32不支持小于512MB的分区,因此对于小分区,仍然需要使用FAT16或者FAT12。FAT32单文件长度不能大于4GB,最大问题,FAT32不向下兼容
优点:
⑴、FAT占空间小,可以调入内存
⑵、查找速度快,适合随机存取
(3)、同样不存在“碎片”,不需要连续外存空间
(4)、不需要事先知道文件长度
缺点:
⑴、FAT需要占用外存空间
对于1GB的硬盘,若每个盘块为512B,则有2M个盘块,每个盘块需要用21位(约3B)指示,共需要6MB外存空间
为了减少FAT占用外存的空间,分配单位可采用簇(1簇=8KB),此时,1GB硬盘需要0.26MB
⑵、FAT需要占用较大内存空间,对于大的硬盘,每次只调取部分FAT进入内存
⑶、不能高效直接存取
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8F6hVyjk-1664806426065)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909082902193.png)]
NTFS技术
NTFS(New Technology File System)是一个专门为Windows NT开发的、全新的文件系统,并适用于Windows 2000/XP及后续的Windows OS。
1.磁盘组织
NTFS是以簇作为磁盘空间分配和回收的基本单位的。一个文件占用若干个簇,一个簇只属于一个文件。这样,在为文件分配磁盘空间时,就无须知道盘块的大小,只要根据不同的磁盘容量,选择相应大小的簇,即使NTFS具有了与磁盘物理块大小无关的独立性。
2.文件的组织
在NTFS中,以卷为单位,将一个卷中的所有文件信息、目录信息以及可用的未分配空间信息,都以文件记录的方式记录在一张主控文件表MFT(Master File Table)中,该表是NTFS卷结构的中心,从逻辑上讲,卷中的每个文件作为一条记录,在MFT表中占有一行,其中还包括MFT自己的这一行。每行大小固定为1 B,每行称为该行所对应文件的元数据(metadata),也称为文件控制字。
索引组织方式
链接组织方式虽然解决了连续组织方式所存在的问题(即不便于随机访问),但又出现了另外两个问题,即:
- 不能支持高效的直接存取,要对一个较大的文件进行存取,须在FAT中顺序地查找许多盘块号;
- FAT需占用较大的内存空间,由于一个文件所占用盘块的盘块号是随机地分布在FAT中的,因而只有将整个FAT调入内存,才能保证在FAT中找到一个文件的所有盘块号。
索引组织方式的优点 支持直接访问。此外该方法也不会产生外部碎片。当文件较大时 索引分配方式无疑更好。
缺点 因为每当建立一个索引文件时,应为该文件分配一个索引块,将分配到该文件的所有盘块号记录其中。每个索引块可以存放数百个索引号。但对于中小型文件,其本身就只有数个到数十几个盘块,但仍需为此分配索引块。这无疑对索引块的利用率是极低的。
-
单级索引组织方式
索引分配图
- 多级索引组织方式
在为一个大文件分配磁盘空间时,如果所分配出去的盘块的盘块号已经装满一个索引块时,OS须再为该文件分配另一个索引块,用于将以后继续为之分配的盘块号记录于其中。依此类推,再通过链指针将各索引块按序链接起来。
大大加快的对大型文件的查找速度。缺点,在访问一个盘块时,所需要启动的磁盘的次数随着索引级数的增加而增多,即使是对于小文件,也是如此。
- 增量式索引组织方式
题13. 试说明增量式索引组织方式。
- 为了能较全面地照顾到小、中、大及特大型作业,可以采取多种组织方式来构成文件的物理结构。
- 如果盘块的大小为1 B或4 B,对于小文件(如1 B~10 B或4 B~40 B)而言,最多只会占用10个盘块,为了能提高对数量众多的小型作业的访问速度,最好能将它们的每一个盘块地址都直接放入文件控制块FCB(或索引结点)中,这样就可以直接从FCB中获得该文件的盘块地址。
- 对于大、中型文件,则可利用索引结点中的地址项i.addr(10)来提供一次间接地址。文件长度达到了4MB
- 而对于文件长度很大时,地址项i.addr(11)提供二次间接地址 文件长度达到了4GB。同理,三级间接地址 可以达到4TB
总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yL4NTFpQ-1664806426067)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909175446759.png)]
文件存储空间的管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fiGExIGs-1664806426067)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908220800659.png)]
空闲表法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XcGW8vTP-1664806426067)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908221239605.png)]
空闲链表法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cAJdGwQZ-1664806426067)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908221333413.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v0KCH1Cv-1664806426068)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908221436847.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-exaCHXQe-1664806426068)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908221555866.png)]
位示图法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qbgeKzYM-1664806426069)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908221823992.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UnMZELyn-1664806426069)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908221918147.png)]
成组链接法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Us7s3DyE-1664806426070)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908222653893.png)]
超级块
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-InCN4J3G-1664806426071)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908222118950.png)]
分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ReYRpXEJ-1664806426071)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908222253389.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hO0BwBzs-1664806426072)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908222315670.png)]
回收
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QvVSCRnI-1664806426072)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908222434075.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xr0wUrOK-1664806426072)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908222458039.png)]
总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J6exIn8C-1664806426073)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220908222555014.png)]
习题
UNIX采用树形目录结构,文件信息存放在索引结点中。超级块是用来描述文件系统的
位示图方法是空闲块管理方法,用于管理磁盘空间.
为了实现虚拟文件系统(VFS), Linux主要抽象了四种对象类型:超级块对象、索引结点对象、目录项对象和文件对象.
可用于文件系统管理空闲磁盘块的数据结构是 I.位图 III.空闲磁盘块链 IV.文件分配表(FAT)
提高磁盘 I/O 速度的方法
题17. 可从哪几方面来提高对文件的访问速度?
改进文件的目录结构以及检索目录的方法减少对目录的查找时间。
选取好的文件存储结构 提高对文件的访问速度。
提高磁盘的io速度 能将文件中的数据块快速地从磁盘传送到内存中。
提高磁盘 I/O 速度的方法
- 磁盘高速缓存(Disk Cache)
- 提前读
- 延迟写
- 优化物理块的分布
- 虚拟盘
- 廉价磁盘冗余阵列(RAID)
磁盘高速缓存
在内存中为磁盘盘块设置的一个缓冲区 其中保存了某些盘块的副本
题18. 在设计磁盘高速缓存时需要考虑哪些问题?
- (1) 如何将磁盘高速缓存中的数据传送给请求进程;
- (2) 采用什么样的置换策略; 置换策略
- (3) 已修改的盘块数据在何时被写回磁盘。周期性地写回磁盘
题19. 可以采取哪几种方式将磁盘高速缓存中的数据传送给请求者进程?
数据交付 直接将高速缓冲区中的数据传送给请求者进程。
指针交付 只将指向高速缓冲区中某区域的指针交付给请求者进程。
其他方法
- 提前读:如果是顺序方式访问,便可预知下一次要读的盘块。在读取当前块时候,把下一块也读入
- 延迟写:缓冲区的数据本该立即写回磁盘,但是考虑到可能被访问,改成不立即写会磁盘,而是挂在空闲缓冲区队列的末尾。直到这个缓冲区被使用,才写入磁盘
- 优化物理块的分布
- 虚拟盘
廉价磁盘冗余阵列(RAID)
- 并行交叉存取
- RAID分级
简而言之,就是空间换时间
题21. 试说明廉价磁盘冗余阵列RAID的主要优点。
- (1) 可靠性高,除了RAID 0级外,其余各级都采用了容错技术。当阵列中某一磁盘损坏时,并不会造成数据的丢失。此时可根据其它未损坏磁盘中的信息来恢复已损坏的盘中的信息。其可靠性比单台磁盘机高出一个数量级。
- (2) 磁盘I/O速度高,由于采取了并行交叉存取方式,可使磁盘I/O速度提高N-1倍。
- (3) 性能/价格比高,RAID的体积与具有相同容量和速度的大型磁盘系统相比,只是后者的1/3,价格也只是后者的1/3,且可靠性高。换言之,它仅以牺牲1/N的容量为代价,换取了高可靠性。
提高磁盘可靠性的技术
磁盘容错技术(系统容错技术SFT):
- 低级磁盘容错技术
- 中级磁盘容错技术
- 系统容错技术
第一级容错技术SFT-Ⅰ
第一级容错技术(SFT-Ⅰ)是最基本的一种磁盘容错技术,主要用于防止因磁盘表面缺陷所造成的数据丢失。它包含双份目录、双份文件分配表及写后读校验等措施。
1. 双份目录和双份文件分配表
在磁盘上存放的文件目录和文件分配表FAT,是文件管理所用的重要数据结构。为了防止这些表格被破坏,可在不同的磁盘上或在磁盘的不同区域中分别建立(双份)目录表和FAT。其中一份为主目录及主FAT,另一份为备份目录及备份FAT。一旦由于磁盘表面缺陷而造成主文件目录或主FAT的损坏时,系统便自动启用备份文件目录及备份FAT,从而可以保证磁盘上的数据仍是可访问的。
2. 热修复重定向和写后读校验
由于磁盘价格昂贵,在磁盘表面有少量缺陷的情况下,则可采取某种补救措施后继续使用。一般主要采取以下两个补救措施:
(1) 热修复重定向。
(2) 写后读校验方式。
第二级容错技术SFT-Ⅱ
1. 磁盘镜像(Disk Mirroring)
为了避免磁盘驱动器发生故障而丢失数据,便增设了磁盘镜像功能。为实现该功能,须在同一磁盘控制器下,再增设一个完全相同的磁盘驱动器,如图8-13所示。
2. 磁盘双工(Disk Duplexing)
如果控制这两台磁盘驱动器的磁盘控制器发生故障,或主机到磁盘控制器之间的通道发生故障,磁盘镜像功能便起不到数据保护的作用。因此,在第二级容错技术中,又增加了磁盘双工功能,即将两台磁盘驱动器分别接到两个磁盘控制器上,同样使这两台磁盘机镜像成对,如图8-14所示。
基于集群技术的容错功能
1、双机热备份模式
2、双机互为备份模式
3、公用磁盘模式
后备系统
-
磁带盘
-
硬盘
-
光盘驱动器
-
- 只读光盘驱动器CD-ROM 和 DVD-ROM
- 可读写光盘驱动器(刻录机):CD-RW、COMBO刻录机、DVD刻录机
数据一致性控制
事务
1. 事务的定义
事务是用于访问和修改各种数据项的一个程序单位。事务也可以被看做是一系列相关读和写操作。
2. 事务记录(Transaction Record)
为了实现上述的原子修改,通常须借助于称为事务记录的数据结构来实现。这些数据结构被放在一个非常可靠的存储器(又称稳定存储器)中,用来记录在事务运行时数据项修改的全部信息,故又称为运行记录(Log)。
3. 恢复算法
由于一组被事务Ti修改的数据以及它们被修改前和修改后的值都能在事务记录表中找到,因此,利用事务记录表系统能处理任何故障而不致使故障造成非易失性存储器中信息的丢失。恢复算法可利用以下两个过程:
- (1) undo〈Ti〉。该过程把所有被事务Ti修改过的数据恢复为修改前的值。
- (2) redo〈Ti〉。该过程能把所有被事务Ti修改过的数据设置为新值。
检查点
1. 检查点(Check Points)的作用
- 如前所述,当系统发生故障时,必须去检查整个Log表,以确定哪些事务需要利用redo〈Ti〉过程去设置新值,而哪些事务又需要利用undo〈Ti〉过程去恢复数据的旧值。
- 由于在系统中可能存在着许多并发执行的事务,因而在事务记录表中就会有许多事务执行操作的记录。随着时间的推移,记录的数据也会愈来愈多。因此,一旦系统发生故障,在事务记录表中的记录清理起来就非常费时。
2. 新的恢复算法
- 在引入检查点后,可以大大减少恢复处理的开销。
- 因为在发生故障后,并不需要对事务记录表中的所有事务记录进行处理,而只需对最后一个检查点之后的事务记录进行处理。
- 因此,恢复例程首先查找事务记录表,确定在最近检查点以前开始执行的最后的事务Ti。
- 在找到这样的事务后,再返回去搜索事务记录表,便可找到第一个检查点记录,恢复例程便从该检查点开始返回搜索各个事务的记录,并利用redo和undo过程对它们进行处理。
并发控制
1. 利用互斥锁实现“顺序性”
- 实现顺序性的一种最简单的方法,是设置一种用于实现互斥的锁,简称为互斥锁(Exclusive Lock)。
- 在利用互斥锁实现顺序性时,应为每一个共享对象设置一把互斥锁。
- 当某一事务Ti要去访问某对象时,应先获得该对象的互斥锁。若成功,便用该锁将该对象锁住,于是事务T便可对该对象执行读或写操作;而其它事务由于未能获得该锁,因而不能访问该对象。
- 如果Ti需要对一批对象进行访问,则为了保证事务操作的原子性,Ti应先获得这一批对象的互斥锁,以将这些对象全部锁住。
2. 利用互斥锁和共享锁实现顺序性
- 利用互斥锁实现顺序性的方法简单易行。目前有不少系统都是采用这种方法来保证事务操作的顺序性,但这却存在着效率不高的问题。
- 因为一个共享文件虽然只允许一个事务去写,但却允许多个事务同时去读;而在利用互斥锁来锁住文件后,则只允许一个事务去读。为了提高运行效率而又引入了另一种形式的锁——共享锁(Shared Lock)。
- 共享锁与互斥锁的区别在于:互斥锁仅允许一个事务对相应对象执行读或写操作,而共享锁则允许多个事务对相应对象执行读操作,但不允许其中任何一个事务对对象执行写操作。
重复数据的数据一致性问题
1. 重复文件的一致性
我们以UNIX类型的文件系统为例来说明如何保证重复文件的一致性问题。对于通常的UNIX文件目录,其每个目录项中含有一个ASCII码的文件名和一个索引结点号,后者指向一个索引结点。
当有重复文件时,一个目录项可由一个文件名和若干个索引结点号组成,每个索引结点号都是指向各自的索引结点。图8-18示出了UNIX类型的目录和具有重复文件的目录。
2. 链接数一致性检查
在UNIX类型的文件目录中,其每个目录项内都含有一个索引结点号,用于指向该文件的索引结点。对于一个共享文件,其索引结点号会在目录中出现多次。
靠性。
提高磁盘可靠性的技术
磁盘容错技术(系统容错技术SFT):
- 低级磁盘容错技术
- 中级磁盘容错技术
- 系统容错技术
第一级容错技术SFT-Ⅰ
第一级容错技术(SFT-Ⅰ)是最基本的一种磁盘容错技术,主要用于防止因磁盘表面缺陷所造成的数据丢失。它包含双份目录、双份文件分配表及写后读校验等措施。
1. 双份目录和双份文件分配表
在磁盘上存放的文件目录和文件分配表FAT,是文件管理所用的重要数据结构。为了防止这些表格被破坏,可在不同的磁盘上或在磁盘的不同区域中分别建立(双份)目录表和FAT。其中一份为主目录及主FAT,另一份为备份目录及备份FAT。一旦由于磁盘表面缺陷而造成主文件目录或主FAT的损坏时,系统便自动启用备份文件目录及备份FAT,从而可以保证磁盘上的数据仍是可访问的。
2. 热修复重定向和写后读校验
由于磁盘价格昂贵,在磁盘表面有少量缺陷的情况下,则可采取某种补救措施后继续使用。一般主要采取以下两个补救措施:
(1) 热修复重定向。
(2) 写后读校验方式。
第二级容错技术SFT-Ⅱ
1. 磁盘镜像(Disk Mirroring)
为了避免磁盘驱动器发生故障而丢失数据,便增设了磁盘镜像功能。为实现该功能,须在同一磁盘控制器下,再增设一个完全相同的磁盘驱动器,如图8-13所示。
2. 磁盘双工(Disk Duplexing)
如果控制这两台磁盘驱动器的磁盘控制器发生故障,或主机到磁盘控制器之间的通道发生故障,磁盘镜像功能便起不到数据保护的作用。因此,在第二级容错技术中,又增加了磁盘双工功能,即将两台磁盘驱动器分别接到两个磁盘控制器上,同样使这两台磁盘机镜像成对,如图8-14所示。
[外链图片转存中…(img-5xjv8RuB-1664806426073)]
基于集群技术的容错功能
1、双机热备份模式
2、双机互为备份模式
3、公用磁盘模式
后备系统
-
磁带盘
-
硬盘
-
光盘驱动器
-
- 只读光盘驱动器CD-ROM 和 DVD-ROM
- 可读写光盘驱动器(刻录机):CD-RW、COMBO刻录机、DVD刻录机
数据一致性控制
事务
1. 事务的定义
事务是用于访问和修改各种数据项的一个程序单位。事务也可以被看做是一系列相关读和写操作。
2. 事务记录(Transaction Record)
为了实现上述的原子修改,通常须借助于称为事务记录的数据结构来实现。这些数据结构被放在一个非常可靠的存储器(又称稳定存储器)中,用来记录在事务运行时数据项修改的全部信息,故又称为运行记录(Log)。
3. 恢复算法
由于一组被事务Ti修改的数据以及它们被修改前和修改后的值都能在事务记录表中找到,因此,利用事务记录表系统能处理任何故障而不致使故障造成非易失性存储器中信息的丢失。恢复算法可利用以下两个过程:
- (1) undo〈Ti〉。该过程把所有被事务Ti修改过的数据恢复为修改前的值。
- (2) redo〈Ti〉。该过程能把所有被事务Ti修改过的数据设置为新值。
检查点
1. 检查点(Check Points)的作用
- 如前所述,当系统发生故障时,必须去检查整个Log表,以确定哪些事务需要利用redo〈Ti〉过程去设置新值,而哪些事务又需要利用undo〈Ti〉过程去恢复数据的旧值。
- 由于在系统中可能存在着许多并发执行的事务,因而在事务记录表中就会有许多事务执行操作的记录。随着时间的推移,记录的数据也会愈来愈多。因此,一旦系统发生故障,在事务记录表中的记录清理起来就非常费时。
2. 新的恢复算法
- 在引入检查点后,可以大大减少恢复处理的开销。
- 因为在发生故障后,并不需要对事务记录表中的所有事务记录进行处理,而只需对最后一个检查点之后的事务记录进行处理。
- 因此,恢复例程首先查找事务记录表,确定在最近检查点以前开始执行的最后的事务Ti。
- 在找到这样的事务后,再返回去搜索事务记录表,便可找到第一个检查点记录,恢复例程便从该检查点开始返回搜索各个事务的记录,并利用redo和undo过程对它们进行处理。
并发控制
1. 利用互斥锁实现“顺序性”
- 实现顺序性的一种最简单的方法,是设置一种用于实现互斥的锁,简称为互斥锁(Exclusive Lock)。
- 在利用互斥锁实现顺序性时,应为每一个共享对象设置一把互斥锁。
- 当某一事务Ti要去访问某对象时,应先获得该对象的互斥锁。若成功,便用该锁将该对象锁住,于是事务T便可对该对象执行读或写操作;而其它事务由于未能获得该锁,因而不能访问该对象。
- 如果Ti需要对一批对象进行访问,则为了保证事务操作的原子性,Ti应先获得这一批对象的互斥锁,以将这些对象全部锁住。
2. 利用互斥锁和共享锁实现顺序性
- 利用互斥锁实现顺序性的方法简单易行。目前有不少系统都是采用这种方法来保证事务操作的顺序性,但这却存在着效率不高的问题。
- 因为一个共享文件虽然只允许一个事务去写,但却允许多个事务同时去读;而在利用互斥锁来锁住文件后,则只允许一个事务去读。为了提高运行效率而又引入了另一种形式的锁——共享锁(Shared Lock)。
- 共享锁与互斥锁的区别在于:互斥锁仅允许一个事务对相应对象执行读或写操作,而共享锁则允许多个事务对相应对象执行读操作,但不允许其中任何一个事务对对象执行写操作。
重复数据的数据一致性问题
1. 重复文件的一致性
我们以UNIX类型的文件系统为例来说明如何保证重复文件的一致性问题。对于通常的UNIX文件目录,其每个目录项中含有一个ASCII码的文件名和一个索引结点号,后者指向一个索引结点。
当有重复文件时,一个目录项可由一个文件名和若干个索引结点号组成,每个索引结点号都是指向各自的索引结点。图8-18示出了UNIX类型的目录和具有重复文件的目录。
[外链图片转存中…(img-TWeuKIXM-1664806426073)]
2. 链接数一致性检查
在UNIX类型的文件目录中,其每个目录项内都含有一个索引结点号,用于指向该文件的索引结点。对于一个共享文件,其索引结点号会在目录中出现多次。