文件系统:
长期存储信息:
能够存储大量信息
使用信息的进程终止时,信息仍旧存在。
必须能使多个进程并发存储有关信息
磁盘(magnetic disk)
读块k
写块k
进程(与线程)、地址空间、文件
文件是进程创建的信息逻辑单元。可以把文件看成一种地址空间
文件受操作系统管理。构造,命名,存取,使用,保护,实现,和管理方法都是操作系统设计的主要内容。
windows用户可以在操作系统中注册扩展名,并且规定该程序拥有该扩展名
windows,unix所见的就是字节,其任何含义只有在用户程序中解释。
文件类型:
普通文件,目录,字符文件(character special file),块特殊文件(block special file)。
普通文件:包含用户信息
目录:管理文件系统结构的系统文件。
普通文件一般分为ASCII和二进制。
只有文件的格式正确,操作系统才会执行这个文件。
unix文件实例:
头文件: 魔数
正文长度
数据长度
BSS长度
符号表长度
入口点
..
标志
正文
数据
重定位位
符号表
存档文件: 以编译好但没有链接的库过程(模块)集合而成。
模块头-->模块名称,日期,所有者,保护,大小
目标模块
模块头
目标模块
。。。。
文件读取:
顺序存取
随机文件存取
文件属性:
文件相关信息。
文件操作:
create
delete
open
close
read
write
append
seek
get attributes
set attributes
rename
目录:
一级目录系统
层次目录系统
路径名
绝对路径:首字母是分隔符
相对路径:
..父目录 .当前目录
目录操作:
create
delete
opendir
closedir
readdir
rename
link
unlink
文件系统布局:
分区
MBR,分区表,磁盘分区(引导块,超级块,空闲空间管理,i节点,根目录,文件和目录),磁盘分区,...
文件实现:
连续分配:把每个文件作为一连串数据块存储在磁盘上。:(简单)磁盘地址和文件数,(读操作性能好),空洞可能较多。cd dvd用。
链表分配:链表首尾相连,随机存取麻烦。4字节指针大小影响存储。
在内存中采用表的链表分配(file allocation table),磁盘大的话表占用空间大,FAT方案不适于大磁盘。
i节点:i节点,记录文件属性和文件块的地址。只有在对应文件打开时i节点才进入内存。保留所有磁盘块的链接表的表大小正比于
磁盘自身的大小。
目录系统:
目录系统的主要功能是把ASCII文件名映射成定位文件数据所需的信息。
文件属性直接存放在目录项中。
i节点系统,还可以把文件属性存放在i节点中而不是目标项中。(win,unix)
所有目录项大小一样。固定部分,其它属性。
散列表
指向目录的指针不能存储在i节点中,原因是可能有无数个目录。
共享文件-->链接文件(软,硬)
unix创建文件:写该文件目录的i节点、目录块、文件的i节点以及文件本身。
日志结构文件系统
LFS系统即使对于一个大部分由零碎的随机写操作组成的任务,同样能够充分的利用磁盘带宽。将整个磁盘结构化为一个日志。每个一段时间
,或是有特殊需要时,被缓冲在内存中的所有未决的写操作都被放到一个单独的段中。作为在日志末尾的一个临阶段写入磁盘。i节点
分散在整个日志中。
日志文件系统
移除文件:在目录中删除文件,释放i节点到空闲i节点池,将所有磁盘块归还空闲磁盘块。
只有当日志项被写入,不同的操作才可以进行。所有操作成功后,擦除日志项。
虚拟文件系统:
同一个操作系统,可以包含多个文件系统(windows:ntfs,fat32,fat16)。windows打开一个文件,盘符隐式或者显式存在。
unix将多个文件系统整合到一个统一的结构中。一个linux系统可以用ext2作为根文件系统,ext3分区装载在/home下,另一块采用
ReiserFS文件系统的硬盘装载在/home下,以及一个ISO 9660的CD-ROM临时装载在/mnt下。
VFS(virtual file system)尝试将多个文件系统统一成一个有序的框架。关键思想就在于抽象出所有文件系统共有部分
,并且将这部分代码放在单独的一层,该层调用底层的实际文件系统来具体管理数据。
用户进程----->posix posix(open,read,write,seek......)
虚拟文件系统----->VFS接口
文件系统:FS1,FS2,FS3
高速缓冲区
当创建一个新的文件系统和VFS一起工作时,新的文件系统的设计者就必须确定它提供VFS所需要的系统调用。明显例子就是从磁盘中
读某个特定的块,把它放到文件系统的高速缓冲中,并返回指向它的指针。
VFS两个不同的接口:上层给用户的接口,下层给实际文件系统的接口。
大多数VFS面向对象:超块(描述文件系统),v节点(描述文件),目录(描述文件系统目录)
VFS工作机理:系统启动时,根文件系统在VFS中注册。另外,当装载其它文件系统时,不管在启动时还是在操作过程中,它们也必须在VFS
中注册。当一个文件系统注册时,它做的最基本的工作就是提供一个包含VFS所需要的函数地址列表,可以是一个长的调用矢量表,或者
是许多这样的矢量,每个VFS一个。因此,只要一个文件系统在VFS注册,VFS就知道如何从它那里读一个块----它从文件系统提供的矢量
中直接调用第4个或者任何一个功能。同样的,VFS也知道如何执行实际文件系统提供的每一个其它功能,它只需要调用某个功能,该功
能所在的地址在文件系统注册时就提供了。
从调用进程号开始和文件描述符开始,进而是v节点(ram中),读取功能指针,然后是实际文件系统的入口函数位置。
open("/usr/include/unistd.h" , O_RDONLY);首先找到它所装载的文件的根目录,在那里查找,include/unistd.h。然后VFS创建一个
v节点并调用实际文件系统,以返回所有的文件在i节点的信息。这个信息被和其它信息一起复制到v节点中(RAM中),而这些信息中最
重要是指向包含调用v节点的操作的功能表的指针。
文件系统管理和优化
磁盘空间管理:
存储n个字节:分配n个字节的连续空间;把文件分成很多个连续的块。
块大小:扇区,磁道,柱面。块小寻道时间长,块大浪费空间(1-4k)
记录空闲块:采用磁盘块链表,1kB的磁盘块可以保存256个32位的磁盘块号。位图法。44
磁盘配额:
文件备份:从错误的灾难中恢复,从意外的操作中恢复。
物理存储:从磁盘的第0块开始,将全部的磁盘块按序输出到磁带上,直到最后一块复制完毕。简单、快速。不能跳过,也不能选定目录。
逻辑存储:从一个或几个选定的目录开始,递归的转储其自给定基准日期后所更改的全部文件和目录。
文件系统的一致性:块的一致性检查和文件的一致性检查。一个块或者文件对应一个计数器。硬链接计数符号链接不计数。
文件系统性能:高速缓存,块提前读,减少磁盘臂运动。
读取文件:访问i节点,访问块。
磁盘碎片整理:
移动文件使它们相邻,并把所有的空闲空间放在一个或者多个大的空间。
CD-ROM: ISO 9660 CD-ROM没有和磁盘一样的同心柱面,而是一个连续的螺旋线来顺序存储信息。螺旋上的位序列被划分成大小为2352字节
的逻辑块(逻辑扇区)。这些块有的用来引导,有的用来进行错误纠正或者其它用途。每个逻辑块有效部分是2048字节。
ISO 9660目录项:字节:描述
1:目录项长度,1:扩展属性记录长度,8:文件位置,8:文件大小,7:日期和时间,1:标志位,2:分隔,4:CD号,1:(L)基本名,4-15:文件名
,::填充,版本号,系统使用。
长期存储信息:
能够存储大量信息
使用信息的进程终止时,信息仍旧存在。
必须能使多个进程并发存储有关信息
磁盘(magnetic disk)
读块k
写块k
进程(与线程)、地址空间、文件
文件是进程创建的信息逻辑单元。可以把文件看成一种地址空间
文件受操作系统管理。构造,命名,存取,使用,保护,实现,和管理方法都是操作系统设计的主要内容。
windows用户可以在操作系统中注册扩展名,并且规定该程序拥有该扩展名
windows,unix所见的就是字节,其任何含义只有在用户程序中解释。
文件类型:
普通文件,目录,字符文件(character special file),块特殊文件(block special file)。
普通文件:包含用户信息
目录:管理文件系统结构的系统文件。
普通文件一般分为ASCII和二进制。
只有文件的格式正确,操作系统才会执行这个文件。
unix文件实例:
头文件: 魔数
正文长度
数据长度
BSS长度
符号表长度
入口点
..
标志
正文
数据
重定位位
符号表
存档文件: 以编译好但没有链接的库过程(模块)集合而成。
模块头-->模块名称,日期,所有者,保护,大小
目标模块
模块头
目标模块
。。。。
文件读取:
顺序存取
随机文件存取
文件属性:
文件相关信息。
文件操作:
create
delete
open
close
read
write
append
seek
get attributes
set attributes
rename
目录:
一级目录系统
层次目录系统
路径名
绝对路径:首字母是分隔符
相对路径:
..父目录 .当前目录
目录操作:
create
delete
opendir
closedir
readdir
rename
link
unlink
文件系统布局:
分区
MBR,分区表,磁盘分区(引导块,超级块,空闲空间管理,i节点,根目录,文件和目录),磁盘分区,...
文件实现:
连续分配:把每个文件作为一连串数据块存储在磁盘上。:(简单)磁盘地址和文件数,(读操作性能好),空洞可能较多。cd dvd用。
链表分配:链表首尾相连,随机存取麻烦。4字节指针大小影响存储。
在内存中采用表的链表分配(file allocation table),磁盘大的话表占用空间大,FAT方案不适于大磁盘。
i节点:i节点,记录文件属性和文件块的地址。只有在对应文件打开时i节点才进入内存。保留所有磁盘块的链接表的表大小正比于
磁盘自身的大小。
目录系统:
目录系统的主要功能是把ASCII文件名映射成定位文件数据所需的信息。
文件属性直接存放在目录项中。
i节点系统,还可以把文件属性存放在i节点中而不是目标项中。(win,unix)
所有目录项大小一样。固定部分,其它属性。
散列表
指向目录的指针不能存储在i节点中,原因是可能有无数个目录。
共享文件-->链接文件(软,硬)
unix创建文件:写该文件目录的i节点、目录块、文件的i节点以及文件本身。
日志结构文件系统
LFS系统即使对于一个大部分由零碎的随机写操作组成的任务,同样能够充分的利用磁盘带宽。将整个磁盘结构化为一个日志。每个一段时间
,或是有特殊需要时,被缓冲在内存中的所有未决的写操作都被放到一个单独的段中。作为在日志末尾的一个临阶段写入磁盘。i节点
分散在整个日志中。
日志文件系统
移除文件:在目录中删除文件,释放i节点到空闲i节点池,将所有磁盘块归还空闲磁盘块。
只有当日志项被写入,不同的操作才可以进行。所有操作成功后,擦除日志项。
虚拟文件系统:
同一个操作系统,可以包含多个文件系统(windows:ntfs,fat32,fat16)。windows打开一个文件,盘符隐式或者显式存在。
unix将多个文件系统整合到一个统一的结构中。一个linux系统可以用ext2作为根文件系统,ext3分区装载在/home下,另一块采用
ReiserFS文件系统的硬盘装载在/home下,以及一个ISO 9660的CD-ROM临时装载在/mnt下。
VFS(virtual file system)尝试将多个文件系统统一成一个有序的框架。关键思想就在于抽象出所有文件系统共有部分
,并且将这部分代码放在单独的一层,该层调用底层的实际文件系统来具体管理数据。
用户进程----->posix posix(open,read,write,seek......)
虚拟文件系统----->VFS接口
文件系统:FS1,FS2,FS3
高速缓冲区
当创建一个新的文件系统和VFS一起工作时,新的文件系统的设计者就必须确定它提供VFS所需要的系统调用。明显例子就是从磁盘中
读某个特定的块,把它放到文件系统的高速缓冲中,并返回指向它的指针。
VFS两个不同的接口:上层给用户的接口,下层给实际文件系统的接口。
大多数VFS面向对象:超块(描述文件系统),v节点(描述文件),目录(描述文件系统目录)
VFS工作机理:系统启动时,根文件系统在VFS中注册。另外,当装载其它文件系统时,不管在启动时还是在操作过程中,它们也必须在VFS
中注册。当一个文件系统注册时,它做的最基本的工作就是提供一个包含VFS所需要的函数地址列表,可以是一个长的调用矢量表,或者
是许多这样的矢量,每个VFS一个。因此,只要一个文件系统在VFS注册,VFS就知道如何从它那里读一个块----它从文件系统提供的矢量
中直接调用第4个或者任何一个功能。同样的,VFS也知道如何执行实际文件系统提供的每一个其它功能,它只需要调用某个功能,该功
能所在的地址在文件系统注册时就提供了。
从调用进程号开始和文件描述符开始,进而是v节点(ram中),读取功能指针,然后是实际文件系统的入口函数位置。
open("/usr/include/unistd.h" , O_RDONLY);首先找到它所装载的文件的根目录,在那里查找,include/unistd.h。然后VFS创建一个
v节点并调用实际文件系统,以返回所有的文件在i节点的信息。这个信息被和其它信息一起复制到v节点中(RAM中),而这些信息中最
重要是指向包含调用v节点的操作的功能表的指针。
文件系统管理和优化
磁盘空间管理:
存储n个字节:分配n个字节的连续空间;把文件分成很多个连续的块。
块大小:扇区,磁道,柱面。块小寻道时间长,块大浪费空间(1-4k)
记录空闲块:采用磁盘块链表,1kB的磁盘块可以保存256个32位的磁盘块号。位图法。44
磁盘配额:
文件备份:从错误的灾难中恢复,从意外的操作中恢复。
物理存储:从磁盘的第0块开始,将全部的磁盘块按序输出到磁带上,直到最后一块复制完毕。简单、快速。不能跳过,也不能选定目录。
逻辑存储:从一个或几个选定的目录开始,递归的转储其自给定基准日期后所更改的全部文件和目录。
文件系统的一致性:块的一致性检查和文件的一致性检查。一个块或者文件对应一个计数器。硬链接计数符号链接不计数。
文件系统性能:高速缓存,块提前读,减少磁盘臂运动。
读取文件:访问i节点,访问块。
磁盘碎片整理:
移动文件使它们相邻,并把所有的空闲空间放在一个或者多个大的空间。
CD-ROM: ISO 9660 CD-ROM没有和磁盘一样的同心柱面,而是一个连续的螺旋线来顺序存储信息。螺旋上的位序列被划分成大小为2352字节
的逻辑块(逻辑扇区)。这些块有的用来引导,有的用来进行错误纠正或者其它用途。每个逻辑块有效部分是2048字节。
ISO 9660目录项:字节:描述
1:目录项长度,1:扩展属性记录长度,8:文件位置,8:文件大小,7:日期和时间,1:标志位,2:分隔,4:CD号,1:(L)基本名,4-15:文件名
,::填充,版本号,系统使用。