100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【北航操作系统笔记(完整版)】

【北航操作系统笔记(完整版)】

时间:2022-08-02 06:05:13

相关推荐

【北航操作系统笔记(完整版)】

文章目录

0. 简介1. 启动过程boot2. 存储管理1-23. 储存管理3-54. 进程与线程5. 同步和互斥2-46. IO系统7. 磁盘系统8. 文件系统

0. 简介

操作系统是一组管理计算机硬件资源的软件集合,它向计算机程序提供共性的服务。即是使用者,也是资源管理者。

冯·诺依曼体系结构:输入、输出、存储器、控制器、运算器

哈佛结构:指令存储与数据储存分离,防止互相干扰。

流水线结构:加快速度。

计算机储存结构:

寄存器

L1高速缓存(SRAM)

L2高速缓存(SRAM)

L3高速缓存(SRAM)

=================以上为处理器芯片内部,以下为处理器芯片外部

主存(DRAM)(内存)

本地二级存储(本地磁盘)(外存)

远程二级存储(分布式文件系统、web服务器)(外存)

1946年,电子管 第一台计算机ENIAC

1955年,晶体管 & 监控系统

1965年,集成电路 & 多道程序设计

1980年,PC机 & 微机操作系统

1990年,分布式与嵌入式系统

1954年,第一个高级语言FORTRAN诞生,实现软件和硬件的分离。

批处理技术:同时输入多个作业,作业调度程序自动选择作业运行。

联机批处理系统:作业的输入输出和运行都由CPU完成

脱机批处理系统:作业的输入输出由输入机、输出机完成,运行由CPU完成,加入磁带做中间传递物

多道程序系统:同一时间内存中可以有多个程序,同一时间(交替)CPU可以处理多个程序。一道程序因I/O请求而暂停运行时,CPU遍立即转去运行另一道程序。

多道批处理系统:结合批处理技术和多道程序系统

分时系统:多个用户分时。

分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理及分配给各联机作业使用。

嵌入式系统和实时系统:及时响应,高可靠性和安全性,整体性强

操作系统的特征:

并发:指两个或多个事件在同一时间间隔内发生。通过分时得以实现。

并行:多个CPU同时运行,处理多个程序。

共享:系统中的资源(硬件资源和信息资源)可被多个并发执行的程序共同 使用。两种方式:互斥访问和同步访问。

虚拟:虚拟性是一种管理技术,把物理上的一个实体变成逻辑上的多个对应 物,或把物理上的多个实体变成逻辑上的一个对应物。

虚拟处理机技术:利用多道程序技术,为每道程序建立一个进程。

虚拟设备技术:将一台物理I/O设备虚拟为逻辑上多台I/O设备。

不确定(异步):由于执行不是一贯到底,所以速度和完成时间不确定。

1. 启动过程boot

x86启动过程:

跳转到BIOS(固件)地址

运行POST(BIOS自检)

读取启动顺序

读取、装入MBR

MBR限制只能有4个主分区

硬盘分区三种:主磁盘分区、扩展磁盘分区、逻辑分区。

一个硬盘主分区1-4个,扩展分区0-1个。主分区+扩展分区1-4个。逻辑分区若干个。

主分区只有一个是激活的(active),其余是inactive

X86下Linux系统引导过程:

Boot Loader:初始化硬件设备、建立内存空间映射图(LILO、GRUB)

加载内核:读取内存映像(压缩文件),将解压后的内核放在内存中,运行初始化函数(bootsect.S setup.S video.S)

用户层init依据initatb文件设定运行等级

执行rc.sysinit

启动内核模块

执行不同运行级别的脚本程序

执行rc.local

执行login程序,进入登录状态

2. 存储管理1-2

基石(目的):地址独立,地址保护

解决的问题:分配和回收

​ 编译(.c -> .o):由编译程序将用户源程序编译成若干个目标模块

​ 链接(.o -> .exe / .sh等):由链接程序将目标模块和相应的库函数链接成可转载模块(可执行文件)

​ 装入:由装载程序将可转载模块装入内存

静态链接:将共享库的函数代码直接链接入程序代码中。

动态链接:当程序运行中需要某些目标模块时,才将共享库的函数代码链接入程序代码中。高效且节省内存空间,但运行时慢。

-c 编译不链接

-o 编译+链接(默认)

​ 装入一般采用动态运行时装入:程序在内存中的位置经常会变,所以在装入内存时,保留程序内的所有相对地址,运行时改为绝对地址。这种方式需要一个重定位寄存器,进行地址转换。

ELF(可执行文件格式)(.o / .obj)

e-_ident: 头部为魔数,头四个字节:‘0x7f‘,‘E’,’L‘,’F‘

ELF3_Rel: 内含Pelocation entry(重定位节)

PS:内含Type为Load的segment,是需要被加载到内存中的部分,如果文件中的大小小于在内存中的大小,那么在内存中补零

objdump 指令可以反汇编ELF文件,readelf可以查看ELF文件

shell调用fork()系统调用,创建出一个子进程,子进程调用execve()加载program

跟踪内存的使用:位图表示法(空间开销固定,时间开销低、容错性差)、链表表示法(空间开销随程序数量变化、时间开销大、容错性高)

单道程序存储管理:可以用静态地址翻译(用户程序的地址在运行之前就可以计算)多道程序的存储管理:固定(静态)式分区分配(分 单一队列的分配方式 和 多队列的分配方式 )、可变(动态)式分区分配

分配内存:当剩余分区大小《size时,不再进一步分割。即:当申请空间加上size后大于分区大小,则整个分区分配出去。

算法:

First Fit(首次适应算法)、Next Fit(下次适应算法)、Best Fit(最佳适应算法)、Worst Fit(最坏适应算法)、快速适应算法(把空闲分区按大小分类、建立多个空闲链表)

回收分区要合并(linux系统在用)伙伴系统:所有分区大小均为2的整数次幂。系统初启时,只有一个最大的内存块。分配时,总是分配出去最小的内存块,若大内存块则分成两份(一对伙伴),直到不能再分。

回收时,伙伴能合并则合并。

消除外部碎片:紧凑技术(可重定位分区分配)

多重分区分配:将程序分为子程序、主程序、数据组,不需要连续片段了。

保护方法:界限寄存器方法、储存保护键方法。

解决大作业在小内存中运行的问题:覆盖技术和交换技术

3. 储存管理3-5

​ 程序是静止的,进程是动态的(系统进程和用户进程)。一个程序可以有多个进程,一个进程也可以运行多个程序。

​ 一个作业包括程序、数据和操作说明书,一个进程由进程控制块(PCB)、程序和数据集合组成。

分页式储存管理:

页(页面):大小相等的作业(虚拟)地址空间

储存块(页框):大小相等的主存(物理)地址空间

页表:每个进程有一个页表,每一个页表项存储了每个页面及其对应的储存块。

地址转换机构

一级页表、二级页表、多级页表、哈希页表、反置页表

快表(TLB)

有效内存访问时间(EAT):

TLB查询时间 = s

单次内存访问时间 = t

TLB命中率:a

EAT =(t + s)* a + (2 * t + s)*(1 - a)

= 2 t + s - t * a

段式储存管理:

按逻辑将作业分段(每段大小由用户程序决定),方便编程和管理,动态链接,动态增长,信息保护方便。

段表寄存器:段表始址、段表长度

段页式存储管理(x86):

用分段方法来分配和管理虚拟存储器;用分页方法来分配和管理实(物理)存储器。

虚拟存储:

程序装入时,只要将当前需要执行的部分页或段读入到内存中,就可以开始执行程序。

程序执行时,如果需要的指令或数据不在内存中(缺页或缺段),则将相应的页或段从辅存中调入内存(请求调入功能),若内存已满则替换某个页或段(置换功能)。

交换分区:大小与物理内存大小保持线性比例关系(交换分区更大)

请求式分页管理的页表:驻留位(是否在内存中)、保护为、修改位、访问(统计)位。

预调页(提前调入小文件的所有页)、按需调入。

缺页错误处理机制:详见(part5-19)

页面置换策略:(局部置换策略:对于一个进程内的页面而言)

最优置换(Optimal):最长时间不需要访问的页面(前提:提前知道将来的页面使用时间)

先进先出算法(FIFO):(Belady现象:随着物理页面增多,缺页率提高) 改进1(Second chance):如果页面被再次访问过,则给该页面第二 次保留的机会。

改进2(Clock和前一个几乎一样,除了环形队列):

若没有缺页错误,当前页置1,指针不动。

若有缺页错误,若当前页为1,则置0,指针前移,重复直至当前 页为0

若当前页为0,替换,置1,指针前移。

最近最少使用算法(LRU)

更新:

file backed 类型,且未被修改,则直接丢弃。

file backed 类型,但已被修改,直接写回。

anonymous 类型,若是第一次换出且未被修改,则写入swap区,若非第一次则丢弃。

anonymous 类型,且已被修改,则写入swap区。

可变分配策略:

缺页率高则增加进程的驻留集,缺页率低则减少进程的驻留集。

内存初始分配方法:

等分法、比例法、优先权法

(全局置换策略:对于多个进程内的页面而言):工作集算法、缺页率算法

工作集、驻留集

抖动问题:驻留集不断减小,突然缺页率急剧上升。

解决:工作集算法、预留部分页面。

负载控制:进程太多或太少都会效率低

L= S 准则,发生两次缺页之间的平均时间L,处理一次缺页需要的平均时间S。此时效率最大。

50% 准则,当分页单元的利用率保持在50%左右时,处理机的利用率最大。

页面清除策略:何时把被置换的页面写回外存。

页缓冲:先保存在缓冲区,当时机合适再写回外存。(类FIFO的页面缓冲算法)

写时复制技术:

两个进程共享一块物理内存,每个页面都被标记成写时复制。写入时,会在内存中复制一个页面,进行写操作,其他进程不可见。

内存映射文件:

可以实现多个线程共享一个文件。

对换系统:

双指针轮转置换算法:

内核存储分配器:

惰性动态分区算法(凑够一定大小才合并)

页目录自映射机制

4. 进程与线程

并行和并发

并发性的确定——Bernstein条件:

含有写的操作

​ 原语(不可分割的指令序列,必须在内核态执行,(与系统调用的区别)不可中断)

​ 子进程中fork()返回0,父进程中fork()返回新创建的子进程ID,出现错误返回负值。getid()返回当前进程的id。

进程三种基本状态:就绪状态、执行状态、阻塞状态(挂起状态、挂起阻塞状态)

linux 中的 task_struct 就是一个PCB

PCB组织方式:线性表、链接方式、索引方式。

​ 上下文切换(Process Context Switch)的开销大于陷入内核(mode switch)(只用保存一些寄存器)

资源拥有者是进程(Proess),可执行单元是线程(Thread)。

每个进程都有PCB,每个线程都有自己的栈。

创建一个线程比进程快10-100倍,在多核CPU/多CPU系统更有优势

UNIX多进程,但单线程;JAVA单进程,但多线程;

用户级线程(创建、撤销、调度不需要内核支持)、内核级线程(内核感知)、混合式线程

在只有用户级线程的系统内,CPU调度以进程为单位;但在有内核级线程的系统内,CPU调度以线程为单位。

在现代操作系统中,资源的分配单位是进程,而处理机的调度单位是线程。

基于前两种线程,有不同的混合式线程模型:

多对一模型,多个用户级线程对应一个内核级线程

一对一模型,一个用户级线程对应一个内核级线程

多对多模型,多个用户级线程对应多个内核级线程

fork() 创建普通进程,clone创建线程,kernel_thread创建新的内核进程

调度算法的评价准则:

周转时间:进程从提交到完成所经历的时间

平均周转时间 = All(周转时间) / 进程数

带权周转时间 = 周转时间/CPU执行时间

平均带权周转时间 = All(带权周转时间) / 进程数

响应时间:从进程提交到首次被响应的时间

等待时间:进程在就绪队列中等待的时间总和

吞吐量:单位时间内所完成的进程数

CPU利用率

5. 同步和互斥2-4

竞争:多个进程对同一共享对象同时访问。

竞争条件:多个进程并发访问同一数据的执行结果与访问的特定顺序有关。

临界资源:一次仅允许一个进程访问的资源。

临界区:每个进程中访问临界资源的代码。

进程互斥(间接制约关系):

多个进程不能同时进入同一个共享资源的临界区。

进程同步(直接制约关系):

多个进程有效地共享资源和相互合作(有序访问)。

空闲让进

忙则等待

有限等待

让权等待(长时间不能进入临界区,则应释放处理机)

实现互斥的软件方案:

Dekker算法:不需要严格轮换的互斥算法。

Peterson算法:不需要轮换的互斥算法。

Bakery算法:支持任意数量进程。

实现互斥的硬件方案:

中断屏蔽(危险)

TestAndSet 指令(只能一个进程执行)(不会被中断的原子指令)

自旋锁Spinlocks(利用TestAndSet 指令)

swap指令(不会被中断的原子指令)(换个)

上述方案共性问题:

忙等待:浪费CPU时间

优先级反转:先拿到锁的进程优先级低。

实现同步的方案:

忙等–>阻塞(sleep,wakeup)

信号量:

一个二元组(s,q),s是一个非负初值的整型变量,q是初始状态为空的队列。

s为正,则s值等于发出P操作后可立即执行的进程数量;s为0,则发出P操作后,该进程被继续执行完;s为负,则发出P操作后,该进程被阻塞,-s是被阻塞的进程数。

q是队列,当有进程被阻塞时,进入此队列。

二元信号量(0或1)、一般信号量

强信号量(进程从p释放时用FIFO)、弱信号量(没规定顺序)

P(S)、V(S)操作(也叫semWait、semSignal操作)S是信号变量

P(S) : while (S <= 0) do skip

S = S - 1

v(S) : S = S + 1

互斥应用:

通常使用二元信号量实现互斥

先P进临界区,后V出临界区。应靠近临界区,且临界区内不能有死循环。

互斥信号量(s)的初值一般为1

有限并发应用:

n(n < c)个进程并发执行一个资源。

互斥信号量(s)的初值一般为c。

进程同步应用:

进程Pi想执行ai操作时,只在Pj执行完aj后,才会执行aj。

互斥信号量(s)的初值一般为0。

Pi执行ai操作前,P(s),Pj执行aj操作后,V(s)

​ 先P进临界区,后V出临界区。应靠近临界区,且临界区内不能有死循环。

​ 互斥信号量(s)的初值一般为1

前驱关系

一种低级通信原语:屏障Barries

用于进程组的同步

用PV操作实现

维护一个count

那些是并发的其中那些是互斥的、同步的按互斥、同步规则设置信号量,说明含义和初值用P、V操作写出程序

AND型信号量集:多个共享资源

管程:

条件变量(不变)

一个进入管程的进程执行等待操作时,释放管理的使用权。

当进入管程的进程执行唤醒操作时:

Hoare管程:

入口等待队列,紧急等待队列(唤醒进程的进程)

多个条件变量,即多个队列x.wait():x是条件变量

MESA管程:

被唤醒的进程等待

进程间通信(IPC):

管道:无名管道(父子进程或兄弟进程)、有名管道(无限制)

消息队列

安全状态:系统存在一个进程执行序列<P1, P2, …, Pn>可顺利完成。

不安全状态:系统不存在上述的序列。(满足任意个发生死锁的必要条件(共四个),但不一定死锁)

死锁状态:包含在不安全状态内。

银行家算法:

Max,Allocation,Need,Available

试图找出一个上述序列

死锁的四个必要条件:

互斥条件:资源排它性使用

请求和保持条件:进程保持已有的资源,请求更多的资源

不可剥夺条件:已有的资源使用完前,不得释放

环路等待条件:进程-资源的环形链(资源分配图 / 进程-资源图)

活锁:任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试—失败—尝试—失败的过程。处于活锁的实体是在不断的改变状态,活锁有可能自行解开。

饥饿:进程由于资源分配的不公平导致长时间的等待。

死锁解除:剥夺资源 / 撤销进程

6. IO系统

接入IO设备的主要方式:主线(Bus)(Control、Data、Address)

将硬件设备抽象为控制器,其中包含控制寄存器、状态寄存器,以及一些数据寄存器。

块设备:以数据块为单位储存、传输信息。速率高,可寻址(随机寻址)

字符设备:以字符为单位储存、传输信息。速率低,不可寻址

网络设备

独占设备:一段时间内只能由一个进程使用的设备。打印机、磁带机

共享设备:在一段时间内允许多个进程共同使用的设备。硬盘

虚设备:在一类设备上模拟另一类设备。(用共享设备模拟独占设备,用高速设备模拟低速设备)

I/O端口地址:接口电路中每个寄存器有唯一的地址。共同组成I/O端口的地址空间(受OS保护)。I/O指令形式与I/O地址是互相关联的,主要形式如下:

内存映像模式(内存映像I/O模式):控制器内存作为内存空间的一部分

I/O独立编址(I/O专用指令):Intel体系架构in/out指令

I/O控制方式:

程序控制I/O(轮询或查询方式I/O):轮询忙等。

中断驱动:有一个设备状态表,CPU向设备发出请求并记录在设备状态表后,执行其他工作,设备完成一个数据传输后向CPU发出中断信号

直接储存访问方式(DMA):程序设置DMA控制器中的寄存器(CR,MAR,DR,DC)值,发起I/O操作,DMA完成一批数据交换后发出中断。可同时控制若干个同类设备。

I/O通道控制方式:I/O通道时专门处理输入输出的处理器,独立于CPU,有自己的指令体系,一般放在内存里。可同时控制若干个不同类设备。

一步步减少CPU的占用率

​ 设备独立性:程序中使用逻辑设备,系统实际执行时用物理设备,通过设备映射表(LUT)映射(每个表目包含逻辑 设备名、物理设备名、设备驱动入口)(在整个系统设立一个LUT / 每个用户设立一个LUT)。

​ 每个设备驱动程序处理一种设备类型。组成:自动配置和初始化子程序、I/O操作子程序、中断服务子程序。共性:核心代码、核心接口、核心机制与服务、动态可加载、动态性

​ 驱动程序和应用程序的不同:没有main,不能用标准C库,完成初始化不再运行,等待系统调用。

I/O缓冲管理:

专用缓冲:单缓冲、双缓冲、环形缓冲。

缓冲池,其中有多个可供若干个进程共享的缓冲区

收容输入:在输入进程输入时,调用Getbuf(emp),从空缓冲队列的队首取出一个空缓冲区,作为收容输入工作缓冲hin,输入数据,装满后调用 Putbuf(inq,hin),将该缓冲区挂在输入队列末尾。

提取输入:在计算进程输入时,调用Getbuf(inq),从输入队列的队首 出一个缓冲区,作为提取输入工作缓冲sin,提取数据,取空后调用 Putbuf(emp,sin),将该缓冲区挂在空缓冲队列末尾。

收容输出:在计算进程输出时,调用Getbuf(emp),从空缓冲队列的队首取出一个空缓冲区,作为收容输入工作缓冲hout,输出数据,装满后调用 Putbuf(outq,hout),将该缓冲区挂在输出队列末尾。

提取输出:在输出进程输出时,调用Getbuf(outq),从输出队列的队首 出一个缓冲区,作为提取输出工作缓冲sout,提取数据,取空后调用 Putbuf(emp,sout),将该缓冲区挂在空缓冲队列末尾。

I/O缓冲管理:

设备控制表(DCT):每个设备一张,描述设备特性和状态。

设备队列队首指针:指向设备请求队列的队首PCB(进程控制块)

设备状态:使用状态,置1

控制器表指针:指向COCT

重复执行次数:发生错误时应重复执行的次数

控制器控制表(COCT)每个设备控制器一张,记录I/O控制器的状态,如DMA占用的终端号、CHCT等

通道控制表(CHCT)每个通道一张,描述通道工作状态

系统设备表(SDT),记录所有设备的状态及其DCT入口。表项含有DCT指针,设备使用进程标识,DCT信息。

​ 单(多)通路I/O系统的设备分配:一个设备对若干个控制器,一个控制器对若干个通道。

​ 分配设备:

​ 在SDT中找到物理设备名对应的DCT,如果忙,进入等待队列, 否则,计算是否产生死锁,进行分配

​ 分配设备控制器:

​ 在DCT中找到COCT,如果忙,等待队列,否则分配

​ 分配通道:

​ 在COCT中找到CHCT,如果忙,等待队列,否则分配

SPOOLing技术(假脱机技术):

独享设备转共享设备(虚设备),提高设备利用率。

应用程序I/O操作,与SPOOLing程序(虚拟I/O)交换数据。

组成:

输入井和输出井:分别暂存I/O设备输入数据 & 用户程序和输出数据

输入缓冲区和输出缓冲区

输入进程SPi和输出进程SPo:模拟脱机I/O时的外围控制机。

同步阻塞I/O,调用结果返回前,当前进程挂起。

同步非阻塞I/O,调用结果返回前,当前进程进行其他操作。

I/O复用,可以接受并管理多个I/O请求,阻塞在多个I/O上,效率较高

事件驱动I/O,内核记住那个进程调用的,完成后通知改进程。

异步I/O,只有数据全部复制完成时,才通知进程OK。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yCaroo9N-1593673174022)(C:\Users\dreamer\AppData\Roaming\Typora\typora-user-images\1559901876084.png)]

7. 磁盘系统

1956年第一个磁盘

磁盘分软盘、硬盘,以前用软盘,现在都用硬盘。

扇区、磁道、柱面,每个磁盘有两个面,每面有一个磁头

磁盘分固件区、工作区(硬盘标定容量的扇区)、保留区

P表:永久缺陷列表

G表:增长缺陷列表(磁介质性能变弱)

Flash Disk(比硬盘快)的两种技术:NOR、NAND(读写以页为单位,写时先擦除整个块,写入特定页)

主引导扇区MBR、分区表DPT、分区引导扇区DBR

CHS模式:

磁头数NH(Heads / H):也就是盘片数,最多256个(8位储存)

柱面数NC(Cylinders / C):也就是磁道数,最多1024个(10位储存)

扇区数NS(Sectors / S):由于0扇区放固件以及一些专用文件,所以最多63个(6位储存),用户可见扇区从1开始。

最大8.46 / 7.88 GB

LBA模式:(计算时,NH最大255)

LBA = (NH * NS * C) + (NS * H) + (S - 1)

C = LBA / (NS * NH)

H = (LBA / NS) mod NH

S = (LBA mod NS) + 1

寻道时间:启动磁盘时间s,磁头移动n条磁道, Ts = m * n + s

旋转延迟时间:旋转速度r,Tr = 1 / (2 * r)

传输时间:读/写的字节数b,磁道字节数N,旋转速度r,Tt = b / (r * N)

访问时间:Ta = Ts + Tr + Tt

磁盘调度算法:

先来先服务(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)(到达最后一个柱面,立即返回0号柱面,返回时不服务)

磁盘空间的管理:位图、空闲表法(表项:起始块号、块数)、空闲链表法、成组链接法

RAID:廉价冗余磁盘阵列

RAID0:条带化存储,有N个磁盘组成的RAID0是单个磁盘读写速度的N倍,但没 有数据冗余。连续以位或字节为单位分割数据。

RAID1:镜像存储,实现数据冗余,单位成本最高,但数据安全性和可用性很 高。

RAID2:海明码(多磁盘储存)校验+条带存储,条块单位为位或字节,使用海明 编码进行错误检测和纠正,是多磁盘易出错环境下的有效选择。

RAID3:奇偶校验(XOR)(单磁盘储存)校验+条带存储,条块单位为字节,在 大量连续数据环境下的可提供很好的传输率。随机数据时,写操作有瓶颈。

独写要访问组中所有的盘,每一组中有一个校验盘。

将一组磁盘中的数据加起来,放入冗余盘,若某盘出错,则,将冗余盘 数据减去其他盘数据,得到的是该盘的正确数据。

RAID4:奇偶校验(XOR)(单磁盘储存)校验+条带存储,条块单位为块,每次 写操作都要访问奇偶盘。写操作有瓶颈。

RAID5:奇偶校验(XOR)(单磁盘储存)校验+条带存储,条块单位为块,奇偶 盘与数据盘交叉放置。写操作有损失。适合小数据块和随机读写的数据。

双盘出错,则该RAID不能再使用。

RAID6:奇偶校验(XOR)(单磁盘储存)校验+条带存储,条块单位为块,奇偶 盘与数据盘交叉放置,有两个独立的奇偶校验盘。写操作有很大损失。适合 小数据块和随机读写的数据。

可容忍双盘出错。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iuLSyq48-1593673174028)(C:\Users\dreamer\AppData\Roaming\Typora\typora-user-images\1559922691897.png)]

缓存:LRU置换算法

8. 文件系统

文件作为数据储存和访问的单位,看作是对待用户数据的逻辑抽象。

文件可视为一个单独的连续的逻辑地址空间。

保存在磁盘、光盘等外部储存设备上。

实际上是一组字节序列。

包括两部分:文件体(内容)和文件说明(文件名、内部标识、储存地址、访问权限、访问时间)。

用户视角:逻辑文件;操作系统视角:物理文件。用户视角:逻辑文件;操作系统视角:物理文件。

文件系统模型的三个层次:

文件系统的接口:

命令行接口、程序接口

对象操作管理的软件集合:

核心部分,文件各类管理。

对象及其属性:

文件、目录、磁盘储存空间

文件名.扩展名

文件类型:有无结构、内容、用途、属性、文件组织(顺序、索引)

文件逻辑结构:以字节为单位流式结构、记录式文件、树形结构

目录:迅速定位文件、防止重名、允许别名、分组功能

单级文件目录(命名冲突、不利于实现共享)、二级文件目录(解决)、多级文件目录(更好、级别过多会增加路径检索时间)

数据项:

基本数据项:字段

组合数据项:由若干个数据项组成

磁盘:

主引导区、分区表、分区(引导区、超级数据块、空闲区管理、根目录区)

文件元信息:

基本信息:

文件名、物理位置、文件逻辑结构(无结构、记录、流式文件)、文件 物理结构(顺序、索引等)

访问控制信息:

文件所有者

使用信息:

创建时间、上一次修改时间、当前使用信息

文件物理结构:

连续(顺序)结构:

易出现磁盘碎片、适用于变化不大的顺序访问的文件

串联(链接)结构:

随机存取效率低、可靠性差(一个指针出错,后面文件都丢失)

索引结构:

每个文件有一个索引表、大小固定 / 不固定、在文件目录 / 开头,索引表占用更多的空间

链接模式、多级模式、综合模式

目录:

直接法:

目录项=文件名+文件元信息

间接法:

目录项=文件名+文件元信息的地址(索引号)

长文件名:

固定255字节(浪费)、目录项长度可变、目录项本身定长,长度可变的文件名放在末尾

查询技术:

顺序查询法、Hash方法

文件的共享:

硬链接:复制”指针“,源文件修改,该文件也修改,反之亦然。

软链接:复制内容,源文件修改,该文件不修改。可以对不存在的文件创建。

保护文件:

建立副本、定时转储、规定文件权限

文件性能:

块高速缓存(Block Cache)(文件缓存、磁盘高速缓存)

双向链表

基于日志结构的文件系统

LFS:新的数据块和元数据(inode、目录)先以segment为单位放在缓存中,填满后写入到硬盘。文件逻辑结构

文件逻辑结构

目录:迅速定位文件、防止重名、允许别名、分组功能

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。