1.文件是什么:

文件是对磁盘的抽象

所谓文件 是指一组带标识(标识即文件名)的、在逻辑上有完整意义的信息项的序列

信息项:构成文件内容的基本单位(单个字节,或多个字节)各个信息项之间具有顺序关系

文件内容的意义:由文件建立者和使用者解释

2.文件系统:

操作系统中同意管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用

(1)统一管理磁盘空间,实施磁盘空间的分配和回收

(2)实现文件的按名存取

(3)实现文件信息的共享,并提供文件的保护、保密手段

(4)向用户提供一个方便实用、易于维护的接口,并向用户提供有关得到统计信息

(5)提高文件系统的性能

(6)提供与I/O系统的统一接口

3.文件的分类

unix按着文件性质 用途划分:

普通文件、目录文件、特殊文件(设备文件);管道文件;套接字

普通文件:包含用户信息、一般为ASCII或二进制文件

目录文件:管理文件系统的系统文件

特殊文件:字符设备文件:和输入输出有关,用于模仿串行I/O设备,例如终端,打印机,网卡等;块设备文件:磁盘

4.典型的文件的逻辑结构与文件存取:

流式文件:构成文件的基本单位是字符,文件是有逻辑意义、无结构的一串字符的集合

记录式文件:文件由若干个记录组成,可以按记录进行读、写、查找等操作  每条记录有其内部结构

操作:

顺序存取、访问

随机存取、访问:提供读写位置(当前位置)unix 的seek操作

5.文件的存储介质:

物理块:

信息存储、传输、分配的独立单位;存储设备划分为大小相等的物理块、统一编号

6。典型的磁盘结构:

任何时刻只有一个磁头处于活动状态:输入输出数据以位串形式出现

7.磁盘访问:

一次访盘请求:

读、写,磁盘地址(设备号、柱面号、磁头号、扇区号)。内存地址(源、目)

完成过程由三个动作组成:

寻道(时间):磁头移动定位到指定磁盘

旋转延迟(时间):等待指定扇区从磁头下旋经过

数据传输(时间):数据在磁盘与内存之间的实际传输

SSD固态硬盘没有前两种时间(所以快???)

8.磁盘存储数据结构

(1)位图:用一串二进制反映磁盘空间中的分配情况,每一个物理块对应一位;申请物理块时,可以在位图中查找1位

(2)空闲块表:将所有空闲块记录在一个表中   主要两项内容:起始块号;块数

(3)空闲块链表:把所有空闲块链成一个链;扩展:成组链接法(改进)

9.磁盘地址与块号的转换

已知块号,则磁盘地址:



 

10.文件属性

文件控制块(FCB):为管理文件而设置的数据结构,保存管理文件所需的所有有关信息(文件属性或元数据)

常用属性:文件名,文件号,文件大小,文件地址,创建时间,最后修改时间,最后访问时间,各种标志(只读、隐藏、系统、归档)

11.文件目录(重要):

统一管理每个文件的元数据,以支持文件名到文件物理地址的转换

将所有文件的管理信息组织在一起,即构成文件目录

12.目录文件(重要):

将文件目录以文件的形式存放在磁盘上

13.目录项:

构成文件目录的基本单位

目录项可以是FCB,目录是文件控制块的有序集合

14.文件的物理结构:

文件在存储介质上的存放方式

有三种结构:

(1)连续(顺序)结构:

文件的信息存放在若干连续的物理块中

FCB如何记录文件地址?给出文件第一块地址+长度

优点:简单;支持顺序存取和随机存取,所需的磁盘寻道次数和时间最少;可以同时读入多个块,检索一个快容易

缺点:文件不能动态增长。预留空间:浪费或重新分配和移动;不利于文件的插入和删除;外部碎片:紧缩技术

(2)链接结构:

一个文件的信息存放在若干个不连续的物理块中,个块之间通过指针连接,前一个物理块指向下一个物理块

FCB保存首地址即可

优点:提高了磁盘的空间利用率,不存在外部碎片问题;有利于文件插入和删除;有利于文件动态扩充

缺点:存取速度慢,不适于随机存取;可靠性问题,指针出错;更多的寻道次数和寻道时间;链接指针占用一定的空间

改造:链接结构的一个变形:文件分配表FAT(U盘)把所有的物理块指针集中存放在文件分配表中

(3)索引结构:

一个文件的信息存放在若干不连续的物理块中

系统为每个文件建立一个专用数据结构——索引表,并将这些物理块的块号存放在该索引表中

索引表就是磁盘块地址数组,其中第i条目指向文件的第i块

FCB如何记录文件地址:

索引表存放在何处:FCB派生中一个字段专门存放

优点:前两者的优点,解决缺点:既能顺序存取,又能随机存取;满足了文件动态增长、插入删除的要求;充分利用磁盘空间

缺点:寻道次数多,寻道时间长;索引表带来系统开销:内存、磁盘空间、存取时间

15.索引表的组织方式:

(1)链接方式:一个盘存一个索引表,多个索引表链接起来

(2)多级索引方式:将文件的索引表地址放在另一个索引表中

(3)综合模式:直接索引+间接索引 结合



16.UNIX的三级索引结构:


=


17.磁盘分区:

把一个屋里磁盘的存储空间划分为几个相互独立的部分

18.文件卷:

磁盘上的逻辑分区,由一个或多个物理块组成

一个文件卷可以是是整个磁盘或部分磁盘或跨盘

同一个文件卷中使用同一份管理数据进行文件分配和磁盘空闲空间管理,不同的文件卷中的管理数据是相互独立的

一个文件卷上:包含文件系统信息、一组文件(用户文件目录)、未分配空间

块或簇:一个或多个(2的幂)连续的扇区,可寻址数据块

19.格式化:

在一个文件卷上建立文件系统,即建立并初始化用于文件分配和磁盘空闲空间管理的管理数据(元数据)

20.磁盘上的内容

以文件卷为例:

引导区:包括了从该卷引导操作系统所需要的信息。每个卷(分区)一个,通常为第一个扇区

卷(分区)信息:包括该卷(分区)的块(簇)数,块大小,空闲块(簇)数量和指针。空闲FCB数量和指针

目录文件(根目录文件及其他目录文件)

用户文件

21.磁盘上文件系统的布局


文件分配表2是1的镜像

22.内存中所需的数据结构——以UNIX为例

(1)系统打开表:

整个系统一张

放在内存:用于保存已打开文件的FCB

FCB(i节点)信息;引用计数;修改标记

(2)用户打开文件表:

每个进程一个

进程的PCB中记录了用户打开文件表的位置

文件描述符;打开方式;读写指针;系统打开文件表索引(用来找到FCB对应信息)

23.文件系统 FAT(windows)

FAT16文件系统:

簇大小 1、2、4、8、16、32、64扇区

文件系统的数据记录在“引导扇区”中

文件分配表FAT的作用:描述簇的分配状态、标注下一簇的簇号等等

FAT表项:2字节

目录项:32字节

根目录大小固定

FAT12 FAT32(U盘常用)

24,FAT文件分配表

可以把文件分配表看成是一个整数数组,每个整数代表磁盘分区的一个簇号

状态:未使用,坏簇、系统保留、被文件占用(下一簇簇号)、最后一簇(0xffff)

簇号从0开始 01系统保留

文件属性:7-6保留 5归档 4目录 3卷标 2系统 1隐藏 0只读

25  FAT32文件系统

根目录区不是固定区域、固定大小,而是数据区的一部分,采用与子目录文件相同的管理方式

目录项仍占32字节,但分为各种类型

支持长文件名格式(目录项有指针指向堆)

文件名unicode

26.文件操作的实现

创建文件:建立系统与文件的联系,实质是建立文件的FCB

在目录中为新文件建立一个目录项,根据提供的参数及需要填写相关内容;费分配必要的存储空间

打开文件:根据文件名在文件目录中检索,并将改文件的目录项读入内存,建立相应的数据结构,为后续的文件操作做好准备

27.创建文件 create

(1)检查参数的合法性:字符;重名

(2)申请空闲目录项,并填入相关内容

(3)为文件申请磁盘块

(4)返回

28.打开文件

为文件读写做准备 fd=open(文件路径名,打开方式)

(1)根据文件路径名查目录,找到目录项

(2)根据文件号查系统打开文件表,看文件是否被打开

是->共享计数+1

否->将目录项等信息填入系统打开文件空表项

(3)根据打开方式、共享说明和用户身份检查访问合法性

(4)在用户打开文件表中获取一空表项,填写打开方式等,并指向系统打开文件表对应表项

返回信息:fd:文件描述符 是一个非负证书,用于以后读写文件

29指针定位

seek(fd,新指针位置)(都是似曾相识的函数啊QAQ)

系统为每个进程打开的每个文件维护一个读写指针,即相对于文件来头的偏移地址

(1)由fd查用户打开文件表,找到对应的表项

(2)将用户打开文件表中文件读写指针位置设为新指针的位置,供后续读写命令存取该指针处文件内容

30.读文件

read(文件描述符,读指针,要读的长度,内存目的地址)

(1)根据打开文件的文件描述符,找到相应的文件控制块(目录项)

确定读操作的合法性 读操作合法

若文件未打开 (不一定)

(2)将文件的逻辑块号转化成物理块号

根据参数中的读指针。长度与文件控制块中的信息确定块号、块数、快内位移

(3)申请缓冲区

(4)启动磁盘I/O操作,把磁盘块中的信息读入缓冲区,再传送到指定的内存区

(5)反复执行3,4直到独处所需数量的数据或读到文件结束

31.文件系统的可靠性:

低于和预防各种物理性破坏或人为性破坏的能力

坏块问题;备份:通过转储操作,形成文件或文件系统的多个副本

32.文件系统备份:

全量转储:定期将所有文件拷贝到后缓存储器

增量转储:只转储修改过的文件,即两次备份之间的修改,减少系统开销

物理转储:从磁盘第0块开始,将所有磁盘块按序输出到磁带

逻辑转储:从一个或几个指定目录开始,递归地转储到给定日期后所有更改的文件和目录

33.文件系统一致性

问题的产生:

磁盘块->内存->写回磁盘块

若写回之前,系统崩溃,则文件系统出现不一致

解决方案:

设计一个实用程序,当系统再次启动时,运行该程序,检查磁盘块和目录系统

34.磁盘块的一致性检查

UNIX一致性检查工作过程:

(1)记录每块在文件中出现的次数

(2)记录了每块在空闲块表中出现的次数

35.文件系统的写入策略

(考虑文件系统的一致性和速度)

(1)通写:内存的修改立即写回到磁盘  FAT系统

(2)延迟写:利用回写缓存的方法得到高速  可恢复性差

(3)可恢复写:利用事务日志实现文件系统写入  安全性+速度   windows的NTFS

36.文件保护机制:

用于提供安全性、特定的操作系统机制

对拥有权限的用户,应该让其进行相应操作,否则禁止

防止其他用户冒充对文件进行操作

37.文件的访问控制

(1)主动控制:访问控制表

每个文件一个

记录用户ID和访问权限

用户可以是一组用户

文件可以是一组文件

(2)能力表:权限表

每个用户一个

记录文件名和访问权

用户可以是一组用户

文件可以是一组文件

38.UNIX文件访问控制

采用文件的二级存取控制

审查用户身份、审查操作的合法性

第一级:对访问者的识别

对用户分类:

文件主(owner)

文件主的同族用户

其他用户

第二级:对操作权限的识别

对操作分类:

读操作(r)

写操作(w)

执行操作(x)

不能执行任何操作(-)

rwxrwxrwx  还记不记得后面还有一位权限识别~~~

39.文件系统性能问题

磁盘服务->速度成为系统性能的主要瓶颈

设计文件系统应尽可能减少磁盘访问次数

提高文件系统性能的方法:

FCB分解、磁盘碎片整理

40.块高速缓存

在内存中为磁盘块设置一个缓冲区,保存了磁盘中某些块的副本

检查所有的读请求,看所需块是否在块高速缓存中

如果在,则可直接进行读操作;否则先将数据读入块高速缓存,再拷贝到所需的地方

由于访问的局部性原理,当一数据块被读入块高速缓存以满足一个I/O请求时,很可能将来还会再次访问

(所以涉及到了页面置换的各种算法??

用散列表组织快高速缓存

块高速缓存的置换(修改LRU)

块高速缓存的写入策略(该块是否会影响文件系统的一致性)

41.提前读取

思路:每次访问磁盘,多读入一些磁盘块

依据:程序执行的空间局部性原理

开销:较小(只有数据传输时间)

具有针对性

42.windows文件访问方式

(1)不使用文件缓存:普通方式 通过windows提供的flushfilebuffer函数实现

(2)使用文件缓存

预读取。写回

(3)异步模式

不再等待磁盘操作的完成

使处理器和I/O同时操作

43.用户对磁盘访问通过访问文件缓存实现

由windows的cache manager实现对缓存的控制

读取数据的时候预取

在Cache满的时候,根据LRU原则清除缓存的内容

定期更新磁盘内容使其与Cache一致(一秒)

Write-back机制

在用户要对磁盘写数据时,只更改Cache中的内容,由Cahe Manager觉得何时更新

数据在磁盘、系统缓存和进程地址空间有3分拷贝,通常下用户对数据的修改并不直接反应到磁盘上,而是通过write-back机制由lazy-writer定期更新

44.合理分配磁盘空间

分配磁盘块时,把有可能顺序存取的块放在一起,尽量分配在同一个柱面上从而减少磁臂的移动次数和距离

45.磁盘调度

当有多个访盘请求等待时,采用一定的策略,对这些请求的服务顺序调整安排,降低平均磁盘服务时间,达到公平(一个i/o请求在有限时间内满足)、高效(减少设备机械运动带来的时间开销)

46.磁盘调度算法(我怎么记得之前讲过) 

操作系统(三) CPU调度

(1)先来先服务

(2)最短寻道时间优先(优先选择距当前磁头最近的访问请求进行服务)缺点:饥饿……

(3)扫描算法(折中)

当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,没有就换方向

(4)单向扫描算法

总是从0号柱面向里扫描

按柱面位置选择访问者

移动臂到达最后一个柱面后,立即带动读写磁头快速的返回到0号柱面

返回时不为任何的等待访问者服务

返回后可再次进行扫描

(5)N-step-SCAN

把磁盘请求队列分成长度为N的子队列,每一次用扫描出来一个子队列

在处理头一个队列时,新请求添加到其他子队列中

如果最后剩下的请求数小于N,则它们全都将在下一次扫描时处理

N大 性能接近SCAN  N小 即先进先出

(6)FSCAN策略

使用两个子队列

扫描开始时,所有请求都在一个队列中而另一个队列为空

扫描中,所有新加到的请求都放入另一个队列中

对新请求的服务延迟到处理完所有老请求之后

(7)旋转调度算法

根据延迟时间来决定执行次序的调度

47.信息的优化分布

记录在磁道上的排列方式也会影响输入输出操作的时间

48.记录的成组与分解

把若干逻辑记录合成一组存放一块

进行成组操作时必须使用内存缓冲区,缓冲区的长度等于逻辑记录长度乘以成组的块因子

成组目的:提高存储空间利用率,减少启动外设的次数,提高系统速度

49.RAID技术(又是好眼熟)(独立磁盘冗余阵列)

多块磁盘按照一定要求构成一个独立的存储设备

目标:提高可靠性和性能

考虑:磁盘存储系统的速度容量容错数据灾难发生后的数据恢复

数据是如何组织的?

基本思想:通过把多个磁盘组织在一起,作为一个逻辑卷提供磁盘跨越公告;通过把数据分成多个数据块,并行写入、独处多个磁盘,以提高数据传输率。通过镜像或校验操作,提供容错能力

最简单的~:镜像

最复杂的~:块容错校验

RAID0-条带化

数据分布在阵列的所有磁盘上

有数据请求时名同事多个磁盘并行操作

充分利用总线带宽,数据吞吐率高

RAID1-镜像

最大限度保证数据安全及可恢复性

所有数据存储在两个磁盘的相同位置

RAID4-交错块奇偶校验

带奇偶校验 以数据块为单位