操作系统
操作系统引论
操作系统定义
操作系统是一组管理计算机硬件资源的软件集合,它向计算机程序提供共性的服务
设计目标
方便性
有效性(计算机系统的使用效率尽可能的高)
作用
用户与计算机硬件系统之间的接口
系统资源的管理者
实现对计算机资源的抽象
批处理(联机、脱机)
联机:作业的输入/输出由CPU来处理
优点:作业到作业自动转接,减少了作业建立时间和手工操作时间
缺点:作业输入和结果输出时,CPU处于空闲状态
脱机:输入/输出脱离主机控制
优点:主机与卫星机可并行工作。
缺点:主机内存中仅存放一道作业,运行期间发出I/O请求时,CPU空闲
多道批处理系统
优点:系统吞吐量大,资源利用率高;
缺点:平均周转时间长,不能提供交互作用能力
分时系统
特点:多路性;交互性;独立性;及时性
实时系统
特点:及时响应;高可靠性和安全性;系统的整体性强;交互会话活动较弱;专用系统
中断和异常
中断:异步异常,与处理器正在执行的内容无关。主要由I/O设备、处理器时钟或定时器产生,可以被启用或禁用
异常:同步异常,某一特定指令执行的结果。例如:内存访问错误、调试指令以及被零除系统调用也视作同步异常或trap
操作系统的特征
并发、共享、虚拟、异步性
操作系统的功能
处理及管理:
进程控制;进程同步;进程通信;进程调度
存储器管理:
内存分配;内存保护;地址映射;内存扩充
设备管理:
缓冲管理;设备分配;设备处理;虚拟设备功能
文件系统:
文件存储空间的管理;目录管理;文件读、写管理;文件保护;向用户提供接口
作业控制:
作业调度;作业控制
解决的基本问题
提供解决各种冲突的策略
协调并发活动的关系
保证数据的一致性
实现数据的存取控制
启动
Bootloader
是Booter和Loader的合写:前者要初始化系统硬件使之运行起来,至少是部分运行起来;后者将操作系统 映像加载到内存中,并跳 转到操作系统的代码运行
MIPS的基本地址空间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7NlJQMzz-1626401161822)(E:\军军考研\操作系统\images\MIPS的基本地址空间.png)]
kuseg:用户态可用地址。
kseg0:将他们的最高位清零,即可映射到物理地址段。这段地址的存取通常会通过cache。操作系统核心会存放在这个区域。
kseg1:这些地址的高三位清零可映射到物理地址段。kseg1是唯一在系统重启时能正常工作的地址空间。
kseg2:这块区域只能在核心态下使用并且要经过MMU的转换。
存储器管理
基本概念
地址空间:一个进程所能够用于访问内存的地址集合
逻辑地址:又称虚拟地址,程序所使用的地址
存储管理的基石
地址独立:程序发出的地址与物理地址无关
地址保护:一个程序不能访问另一个程序的地址空间
存储管理的功能
存储分配和回收;地址变换;存储共享和保护;存储器扩充
单道程序的内存管理
方法:静态地址翻译
优点:无需地址翻译,程序运行速度快
缺点:
比物理内存大的程序无法加载,因而无法运行
造成资源浪费
多道程序的内存管理
分区式分配:
把内存分为一些大小相等或不等的分区
适用于多道程序系统和分时系统,支持多个程序并发执行,但难以进行内存分区的共享
固定式分区
优点:易于实现,开销小
缺点:内碎片造成浪费,分区总数固定,限制了并发执行的程序数目
可变式分区
优点:没有内碎片
缺点:有外碎片
算法:
First Fit:从空闲区域链的始端开始查找,选择第一个足以满足请求的空白块
Next Fit:空闲区构成一个循环链表,总是从上次查找结束的地方,找到足够大的空闲区分配出去
Best Fit:大小最接近于作业所要求的存储区域
Worst Fit:寻找最大的空闲区
基于索引搜索的分配算法:链表 -> 索引表
快速适应算法:按大小索引 + 链表
伙伴系统
优点:利用计算机二进制数寻址的优点,加速了相邻空闲分区的合并(只有伙伴才会合并)
缺点:不能有效地利用内存,内碎片严重;不如基于分页和分段的虚拟内存技术有效
紧凑技术
目标:消除外部碎片,使本来分散的多个小空闲分区连成一个大的空闲区
紧凑时机:找不到足够大的空闲分区且总空闲分区容量可以满足作业要求时
多重分区分配
将一道作业分成若干片段。
分区的存储保护
界限存储器方法
上下界寄存器方法
基址、限长寄存器方法
存储保护键方法
给每个存储块分配一个单独的保护键
进入系统的每个作业也赋予一个保护键
作业运行时,检查是否匹配;如果不匹配,发出中断信号,停止运行
存储器扩充
覆盖:把一个程序划分为一系列功能相对独立的程序段,执行时不同时装入内存,共享主存同一区域
交换:把暂时不用的某个程序及其数据的部分移到辅存;接着把指定程序或数据读到相应主存中,让其运行
页式内存管理
页(页面):把每个作业的地址空间分成一些大小相等的片称之为页
页框:把物理内存的存储空间也分成与页面相同大小的片,称为页框
页表:每个进程配置一张页表,记录每个页面所对应的页框
纯分页系统:
优点:没有外碎片;程序不必连续存放;便于改变程序占用空间的大小
缺点:程序全部装入内存;有内碎片
页面较小:减少内碎片,页表内存增大,页面切换速率降低
页面较大:页表内存减小,页面切换速率提高,增加内碎片
一级页表:若逻辑地址空间很大,则页表占用的存储空间大
多级页表:内存访问效率下降
快表:如果不支持ASID则进程切换时需要刷新
哈希页表:超过32位地址空间
反置页表:通过进程号和页号在页表中的位置得出页框
页目录自映射
页 目 录 表 基 址 P D b a s e = P T b a s e ∣ ( P T b a s e ) > > 10 自 映 射 目 录 表 项 P D E s e l f − m a p p i n g = P T b a s e ∣ ( P T b a s e ) > > 10 ∣ ( P T b a s e ) > > 20 页目录表基址PD_{base} = PT_{base}\ |\ (PT_{base}) >> 10 \\ 自映射目录表项PDE_{self-mapping} = PT_{base}\ |\ (PT_{base})>>10\ |\ (PT_{base}) >> 20 页目录表基址PDbase=PTbase ∣ (PTbase)>>10自映射目录表项PDEself−mapping=PTbase ∣ (PTbase)>>10 ∣ (PTbase)>>20
理解:
第一个公式:PT_base相对于0有多少页的偏移量和PD_base相对于PT_base有多少个页表项有对应关系
第二个公式:PT_base相对于0有多少页表项的偏移量等于PDE_self-mapping相对于PD_base有多少个页目录项的偏移量
段式内存管理
页式内存管理的问题:
难以满足程序运行时对内存的动态需求
不便于数据共享与保护
段氏存储管理的主要动机:
信息保护;动态增长;动态链接
优点:
易于实现段的共享,对段的保护也十分简单
更好的支持动态的内存需求
缺点:
地址变换带来额外时间开销;段表带来额外的存储开销
为满足分段的动态增长和减少外碎片,要采用内存紧凑的技术手段
交换比较困难
分段的最大尺寸受到主存可用空间的限制
虚拟内存管理
虚拟内存的三个功能:
给所有进程提供一致的地址空间
保护每个进程的地址空间
把主存作为磁盘的高速缓存
虚拟存储技术的特征:
离散型;多次性;对换性;虚拟性
优点:
可在较小的可用内存中执行较大的用户程序
可在内存中容纳更多程序并发执行
不必影响编程时的程序结构
提供给用户可用的虚拟内存空间通常大于物理内存
代价:牺牲CPU处理时间和内存外交换时间为代价
限制:虚拟内存的最大容量主要由计算机的地址结构决定
页面置换策略:
最优置换:最长时间不需要访问的页面
先进先出:驻留时间最长的一页淘汰(Belady异常现象:分配的页框越多,缺页率越高)
最近最少使用:最近一段时间内最久不用的页面淘汰
Second Chance:增加一个访问标志位,如果为1且再次被访问将调到队列头,标志位清零
Clock:环形队列。缺页时,若标志位为1,清零指针向前移,直到有标志位为0的,进行淘汰。命中时,标志位置1。
进程与并发程序设计
程序的顺序执行与特征
顺序性;封闭性;可再现性
Bernstein条件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mTMiEGQ4-1626401161825)(E:\军军考研\操作系统\images\Bernstein条件.png)]
进程
特征:
动态性;并发性;独立性;异步性
结构特征:
程序段;数据段;进程控制块PCB
优点:提高效率
缺点:空间开销;时间开销
进程控制块
进程标识符;程序和数据的地址;当前状态;现场保护区;同步与同步机制;优先级;资源清单;链接字;其他信息
线程
进程的不足:
进程只能在一个时间干一件事
进程在执行的过程中如果阻塞,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也无法执行
引入线程的目的:
减小进程切换的开销
提高进程内的并发程度
共享资源
用户级线程
优点:
线程切换与内核无关
线程的调度由应用决定,容易进行优化
可运行在任何操作系统上,只需要线程库的支持
不足:
很多系统调用会引起阻塞,内核会因此而阻塞所有相关的线程
内核只能将处理器分配给进程,即使有多个处理器,也无法实现一个进程中的多个线程的并行执行
内核级线程
优点:
内核可以在多个处理器上调度一个进程的多个线程实现同步并行执行
阻塞发生在线程级别
内核中一些处理可以通过多线程实现
缺点:
一个进程中的线程切换需要内核参与,线程的切换设计到两个模式的切换
降低效率
线程安全
可重入不一定线程安全,形成安全不一定可重入
调度
高级调度:接纳多少个作业;接纳哪些作业
中级调度:内外村交换
低级调度:进程或线程调度
吞吐量=作业数/总执行时间
周转时间=完成时刻-提交时刻
带权周转时间=周转时间/服务时间
平均周转时间=作业周转时间之和/作业数
平均带权周转时间=作业带权周转之和/作业数
进程切换的步骤:
保存处理器的上下文,包括程序计数器和其他寄存器
用新状态和其他相关信息更新正在运行进程的PCB
把进程移至合适的队列
选择另一个要执行的进程
更新被选中进程的PCB
从被选中进程PCB中重新装入CPU上下文
进程的分类:
批处理进程:无需与用户交互,通常在后台运行,不需要很快的响应
交互式进程:与用户交互频繁,需要花很多时间等待用户输入,响应时间要快
实时进程:有实时要求,不能被低优先级进程阻塞,响应时间要短要稳定
批处理系统常用调度算法:
先来先服务:有利于长作业,不利于短作业;有利于CPU繁忙的作业,不利于I/O繁忙的作业
短作业优先:改善平均周转时间和平均带权周转时间,缩短作业的等待时间,提高系统的吞吐量。对长作业非常不利,未能依据作业 的紧迫程度来划分执行的优先级,难以准确估计作业的执行时间
最短剩余时间优先:短作业优先改进为抢占式。源源不断的短任务到来,可能导致“饥饿”现象
最高响应比优先:RP=1+已等待时间/要求运行时间。有利于短作业,不会有饥饿现象但有额外的时间开销
交互式系统的调度算法:
时间片轮转
优先级算法
多级反馈队列算法
问题:优先级倒置
解决方法:优先级置顶;优先级继承
实时系统的调度算法:
静态表调度:开销小但无灵活性
单调速率调度:任务周期越小,优先级越高。静态最优调度算法。
最早截止期优先
最低松弛度优先算法:进程截止时间-本身剩余运行时间-当前时间最低着优先
多处理机调度:
非对称式多处理系统:系统中各个处理器地位不同,主-从处理机系统。
对称式多处理系统:
静态分配:调度算法开销小,容易出现忙闲不均
动态分配:所有CPU采用一个公共就绪队列
自调度:一个公共就绪队列,每个处理机都可以从队列中选择适当进程来执行
成组调度:对一个进程中的一组线程同时执行,同时剥夺
专用处理机调度:每个线程固定一个CPU
进程同步
典型的并发错误
数据竞争;原子性违反;死锁
临界区
对临界资源进行访问的程序片段称为临界区
屏蔽中断
进入临界区关闭中断,离开临界区打开中断。时间中断关闭,进程切换停止
问题:
让用户进程可以关闭中断不安全
关闭中断仅仅能关闭一个CPU
临界区可能运行时间很长
共享锁变量
需要设置锁变量的读取和设置是一个原子操作
严格轮换法
两个进程交替执行
问题:
强制轮流进入临界区,没有考虑进程的实际需要。效率较低
一个进程可能被一个不在临界区的进程阻塞
Peterson算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ExCD15p3-1626401161827)(E:\军军考研\操作系统\images\Peterson算法.png)]
问题:只适合抢占式,不适合非抢占式
硬件指令机制
基于锁变量思路,使用Test and Set Lock指令使其成为原子操作
Bakery算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CtTgnfOv-1626401161830)(E:\军军考研\操作系统\images\Bakery算法.png)]
Peterson ,TSL XCHG算法的问题
如果不能满足进入临界区条件,都要进行忙等,不仅会浪费CPU时间,还会导致优先级反转
优先级反转
解决:通知的机制(sleep & wake up)
生产者-消费者问题
若干进程通过有限的共享缓冲区交换数据,"生产者"不断写入,"消费者"不断读出,共享缓冲区共有N个,任 何时刻只能有一个进程 可对共享缓冲区进行操作
解决:
Sleep & wake up算法
问题:
对count的读取和睡眠应该是不能中断的原子操作
发给未睡眠的线程的wake up信号丢失(解决:增加唤醒等待位)
信号量机制
S表示当前可用的资源的数目
P操作分配资源:检查信号量初值是否大于0,如果大于0则减一,继续执行;如果等于0,进程被直接阻塞,减一的操作暂时不做。
V操作释放资源:首先将S增加1。但是如果有一个或者多个进程在信号量的队列睡眠,就会随机唤醒一个进程,并使得其运行后能完成P操作的减一,所以这时S还是0。
使用信号量实现汇合(Rendezvous)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o9MmrZv1-1626401161831)(E:\军军考研\操作系统\images\汇合.png)]
使用信号量实现多路复用(Multiplex)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lWpIDz5-1626401161832)(E:\军军考研\操作系统\images\信号量多路复用.png)]
屏障Barriers
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lb91mHqc-1626401161833)(E:\军军考研\操作系统\images\屏障.png)]
AND型信号量集机制
基本思想:将进程需要的所有共享资源一次全部分配给它;待该进程使用完后再一起释放
一般"信号量集"机制
基本思想:进程对信号量Si的测试值为ti(用于信号量的判断,即Si>=ti,不予分配),资源的申请量di
管程
把分散的临界区集中起来,为每个临界资源设计一个专门机构来统一管理各进程对资源的访问,这个专门机构称为管程
问题:
依赖于编译器支持,和特定语言相关
不适用于分布式系统
进程通信
管道及命名管道;信号;消息队列;共享内存;信号量;套接字
经典进程同步与互斥问题
生产者-消费者问题:事件驱动的程序
读者-写者问题:对共享数据结构,数据库,文件的多线程并发访问
读者-写者-灯开关模式:第一个读线程加锁,最后一个读线程解锁
问题:读写不公平
解决:闸机(turnstile)
理发师问题:一个理发师,一把理发椅和n把供等待理发的顾客坐的椅子
生产者-消费者扩展问题1:n个服务柜台,每个顾客进店后取号,当一个柜台人员空闲时,就叫下一个号
生产者-消费者扩展问题2:-M<=A-B<=N,容量无限大,描述A,B入库过程
解决:sa=N,sb=M
死锁
四个必要条件
互斥条件;保持和请求条件;不剥夺条件;环路等待条件
处理死锁的基本方法
鸵鸟算法;死锁检测;死锁预防;死锁避免
死锁检测与恢复
死锁检测:资源分配图法;资源向量法
死锁恢复:资源抢占法;杀死进程法;回滚法;
死锁预防
允许进程同时访问某些资源
一次性分配所有资源,否则不分配任何资源
问题:
所需资源不可预测
资源利用率低
降低进程的并发性
允许进程强行从占有者那里夺取某些资源
资源分类编号,所有进程对资源的请求必须严格按资源序号递增的顺序提出
问题:
增加了系统开销
增加了进程对资源的占用时间
哲学家就餐问题
方案一:至多只允许四个哲学家同时尝试进餐
方案二:对筷子进行编号,奇数号先拿左,再拿右;偶数号相反
方案三:同时拿起两根筷子,否则不拿起
死锁避免
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v5ixdXXt-1626401161834)(E:\军军考研\操作系统\images\银行家算法.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rOUcNMW5-1626401161835)(E:\军军考研\操作系统\images\安全性算法.png)]
银行家算法
特点:
允许互斥、部分分配和不可抢占,可提高资源利用率
要求事先说明最大资源要求,在现实中无法实用
设备管理
目的:提高效率;方便使用;方便控制
功能:提供设备使用的用户接口;设备分配和释放;设备的访问和控制;I/O缓冲和调度
总线:接入I/O设备的主要方式
I/O管理具体功能
逻辑I/O:设备分配,设备回收,数据准备等。
设备驱动程序:负责对设备控制器进行控制
中断服务程序:设备工作结束后负责向CPU发中断信号
I/O设备的分类
独占设备;共享设备;虚设备
I/O管理的目标和任务
按照用户请求,控制设备操作,完成I/O设备与内存间的数据交换,最终完成用户的I.O请求
建立方便、统一的独立于设备的接口
充分利用各种技术提高并行工作能力,充分利用资源
保护,设备传送或管理的数据应该是安全的、不被破坏的、保密的
内存映射I/O的特点
优点:
不需要特殊的保护机制来组织用户进程进行相应的I/O操作。
可以引用内存的每一条指令都可以适用于引用控制寄存器
缺点:
不允许对一个控制寄存器的内容进行高速缓存
I/O独立编址的特点
优点:
外设不占用内存的地址空间
编程时,易于区分是对内存操作还是对I/O操纵
缺点:I/O端口操作的指令类型少,操作不灵活
I/O控制方式
程序控制I/O
中断驱动
DMA
优点:CPU只需干预I/O操作的开始和结束,而后续成批的数据读写则无需CPU控制,适合高速设备
缺点:占用CPU时间;每个设备占用一个DMA控制器
与中断方式的区别:
中断控制方式在每个数据传送完成后中断CPU;DMA为一批数据完成后
DMA只有开始和结束才需要CPU干预
程序中断方式具有对异常事件的处理能力,而DMA控制方式适用于数据块的传输
通道
基本思想:进一步减少CPU的干预
优点:执行一个通道程序可以完成几组I/O操作,与DMA相比,减少了CPU干预
缺点:费用较高
与DMA的区别:
具有更强的独立处理I/O的功能
DMA只能控制一台或者少数几台同类设备;而一个通道可同时控制多种设备
设备驱动程序
组成:
自动配置和初始化子程序
I/O操作子程序
中断服务子程序
共性:
核心代码;核心接口;核心机制与服务;动态可加载;动态性
接口:
驱动程序初始化函数;驱动程序卸载函数,申请设备函数,释放设备函数;I/O操作函数;中断处理函数
缓冲技术
原因:
匹配CPU与外设的不同处理速度
减少对CPU的中断次数
提高CPU和I/O设备之间的并行性
单缓冲:
系统对每一块数据的处理时间为Max(C,T) + M
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T5KzeMpr-1626401161836)(E:\军军考研\操作系统\images\单缓冲.png)]
双缓冲:
处理时间可以粗略地认为是Max(C,T),
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XLsaWpz2-1626401161837)(E:\军军考研\操作系统\images\双缓冲.png)]
环形缓冲:
多缓冲机制并将多个缓冲组织成循环缓冲形式
缓冲池:
提供多个可供若干进程共享的缓冲区
工作方式:收容输出;提取输出;收容输入;提取输入
缓冲的问题:多次复制一个数据包
I/O设备分配
方法:
进程间切换使用外设
通过一个虚拟设备把外设与应用进程隔开,只由虚拟设备来使用设备
设备控制表:
设备队列队首指针;设备状态;控制器表指针;重复执行次数
控制器控制表:描述I/O控制器的配置和状态
通道控制表:描述通道工作状态
系统设备表:反应系统中设备资源的状态,记录所有设备的状态及其设备控制表的入口。
SPOOLing系统
输入井和输出井
输入缓冲区和输出缓冲区
输入进程SPi和输出进程SPo
特点:
高速虚拟I/O操作
实现对独享设备的共享
阻塞I/O
调用结果返回之前,当前线程会被挂起,只有得到结果之后才会继续执行
I/O多路复用
原因:某个进程阻塞多个I/O上
非阻塞I/O
进程发起I/O调用,立即通知进程进行别的操作
事件驱动I/O
进程发起调用,通过回调函数,内核会记住哪个进程申请的,一旦第一段完成就可以向这个进程发起通知。
异步I/O
不再向系统调用提供任何反馈,只有数据完全复制到服务进程内存中,才向服务进程返回oj信息,其他时间进程可以随意做自己的事情,直到内核通知ok信息
磁盘存储管理
基本概念
扇区:盘片被分成许多扇形的区域
磁道:盘片上以盘片中心为圆心,不同半径的同心圆
柱面:硬盘中,不同盘片相同半径的磁道所组成的圆柱
磁盘访问时间
寻道时间:Ts=m*n+s(n条磁道,s为磁盘启动时间)
旋转延迟时间:Tr=1/(2r)
传输时间:Tt=b/(rN)(字节数b,旋转速度r,磁道上的字节数N)
磁盘调度算法
先来先服务算法(FCFS):
优点:简单,公平
缺点:效率不高
最短寻道时间优先算法(SSTF):
优点:效率高
缺点:可能产生饥饿现象
扫描算法(SCAN):
优点:克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向
缺点:两侧磁道被访问的频率仍低于中间磁道
循环扫描算法(C-SCAN)
消除了对两端磁道请求的不公平
其他改进算法:
N-Step-SCAN:分成长度为N的子队列,队列之间FCFS,队列内SCAN
FSCAN:分为两个子队列,在开始扫描时,冻结当前队列,此时刻之后到达的请求都归入新请求队列。扫描完当前队列后,交换两个队列没重复上述冻结-扫描过程
提高I/O速度的主要途径
选择性能好的磁盘;并行化;采用适当的调度算法;设置磁盘高速缓冲区
RAID
优点:成本低,功耗小,传输速率高,可提供容错功能
RAID0:并行交叉存取,提高磁盘I/O速度,但并无冗余检验功能
RAID1:重复存入镜像磁盘,以改善磁盘机的可靠性。有效容量下降了一半,成本较高
RAID2:采用海明码纠错的磁盘阵列,将数据位交叉写入几个磁盘中。并行存取,有错误检测和纠正,数据传输率高,冗余磁盘数量与数据磁盘数量的对数成正比,并未广泛应用。
RAID3:相比于RAID2只有一个校验盘。缺点:恢复时间较长,读写性能的水桶效应瓶颈。
RAID4:希望使用较少的磁盘参与操作。随机读快,随机写慢
RAID5:数据块交叉和分布的冗余校验,没有专门的奇偶校验驱动器
RAID6:双维校验独立存取盘阵列。写入数据要访问一个数据盘和两个冗余盘,可容忍双盘出错,存储开销是RAID5的两倍
文件系统
任务
统一管理磁盘空间,实现磁盘空间的分配与回收
实现文件按名存取
实现文件信息共享,并提供文件的保护、保密手段
提供一个方便使用、易于维护的接口,并向用户提供有关统计信息
提高文件系统的性能
提供与IO系统的统一接口
文件系统模型的三个层次
文件系统的接口:命令行和程序接口
对象操作管理的软件集合
对文件存储空间的管理
对文件目录的管理
用户将文件的逻辑地址转换为物理地址的机制
对文件读和写的管理
对文件的共享和保护的功能
对象及其属性:文件、目录、磁盘存储空间
目录
目的:效率,命名,分组功能
单级文件目录:结构简单;文件多时检索时间长,有命名冲突,不便于实现共享
两级目录:根目录下有个用户目录
多级目录:层次清楚,可解决文件重名问题,查找速度快,目录级别太多时会增改路径检索时间
文件物理结构
连续结构:
优点:
结构简单,实现容易,不需要额外的空间开销
顺序存取和随机存取的效率高
缺点:
文件长度一经固定便不易改变
不利于文件的动态增加和修改
串联文件:
优点:
空间利用率高,能较好的利用外存空间
文件动态扩充和修改容易
顺序存取效率高
缺点:
随机存取效率太低
可靠性问题
额外空间花销
索引结构:
优点:
既能顺序存取,又能随机存取
满足了文件动态增长、插入删除的要求
能充分利用外存空间
缺点:
索引表本身带来了系统开销
目录的实现
直接法:目录项=文件名+文件控制块
间接法:目录项=文件名+文件控制块的地址
长文件名
方法1:文件名固定为255个字符;缺点:浪费空间
方法2:目录项长度可变=目录项长度,文件的属性信息,文件名;缺点:删除后不好回收利用
方法2:目录项长度不变,把长度可变的文件名统一放在目录文件的末尾
共享文件
硬链接:两个文件的inode指向同一个文件
软连接:一个文件的inode指向另一个文件的目录项
保护文件
建立副本;定时转储
文件的一致性检验:
磁盘块的一致性:记录在文件中出现的次数,另一个记录在空闲块中出现的次数
文件的一致性:其i节点被引用的次数,另一个记录文件目录引用它的次数
存取控制方案:存取控制矩阵;存取控制表;用户权限表;口令
提高文件系统性能
块高速缓存:在内存中为磁盘块设置一个缓冲区,保存了磁盘中某些块的副本
基于日志结构的文件系统:新的数据块和元数据先以segment为单位放在缓存中,当segment填满之后写入硬盘
其属性:文件、目录、磁盘存储空间
目录
目的:效率,命名,分组功能
单级文件目录:结构简单;文件多时检索时间长,有命名冲突,不便于实现共享
两级目录:根目录下有个用户目录
多级目录:层次清楚,可解决文件重名问题,查找速度快,目录级别太多时会增改路径检索时间
文件物理结构
连续结构:
优点:
结构简单,实现容易,不需要额外的空间开销
顺序存取和随机存取的效率高
缺点:
文件长度一经固定便不易改变
不利于文件的动态增加和修改
串联文件:
优点:
空间利用率高,能较好的利用外存空间
文件动态扩充和修改容易
顺序存取效率高
缺点:
随机存取效率太低
可靠性问题
额外空间花销
索引结构:
优点:
既能顺序存取,又能随机存取
满足了文件动态增长、插入删除的要求
能充分利用外存空间
缺点:
索引表本身带来了系统开销
目录的实现
直接法:目录项=文件名+文件控制块
间接法:目录项=文件名+文件控制块的地址
长文件名
方法1:文件名固定为255个字符;缺点:浪费空间
方法2:目录项长度可变=目录项长度,文件的属性信息,文件名;缺点:删除后不好回收利用
方法2:目录项长度不变,把长度可变的文件名统一放在目录文件的末尾
共享文件
硬链接:两个文件的inode指向同一个文件
软连接:一个文件的inode指向另一个文件的目录项
保护文件
建立副本;定时转储
文件的一致性检验:
磁盘块的一致性:记录在文件中出现的次数,另一个记录在空闲块中出现的次数
文件的一致性:其i节点被引用的次数,另一个记录文件目录引用它的次数
存取控制方案:存取控制矩阵;存取控制表;用户权限表;口令
提高文件系统性能
块高速缓存:在内存中为磁盘块设置一个缓冲区,保存了磁盘中某些块的副本
基于日志结构的文件系统:新的数据块和元数据先以segment为单位放在缓存中,当segment填满之后写入硬盘