Linux操作系统:文件系统

来源:互联网 发布:网络点播系统 编辑:程序博客网 时间:2024/06/09 23:41
文件系统在操作系统中是一个非常重要的概念。简单地说,是操作系统中用于明确磁盘或者分区上的文件的方法和数据结构,即磁盘上组织文件的方法。文件系统的存在,使得数据可以被有效而透明地进行存储访问。
Linux根文件系统应该包括支持Linux系统正常运行的基本内容:
1、基本的文件系统结构,包含必要的目录:dev、bin、etc、lib等
2、基本库:如glibc库
3、基本的系统配置文件:如rinittab等脚本文件
4、必要的设备文件支持:如dev/fd0
5、基本应用程序,如ls、cp、mv


1、VFS
而虚拟文件系统(VFS)作为内核的子系统,为用户空间程序提供了文件系统接口,系统中的所有文件系统依靠VFS系统协调工作。通过虚拟文件系统,我们可以利用标准的UNIX系统调用对不同介质的不同文件进行读写操作。
 
VFS使得用户可以直接使用open、read、write这样的系统调用而不需要考虑具体的文件系统和实际物理介质。所以在内核中,一个用户空间的程序执行:write(fd&buf,len);

 


VFS有四个主要对象类型,分别是:
1、超级块对象,代表一个已经安装的文件系统。
2、索引节点对象,代表一个文件。
3、目录项对象,代表一个目录。
4、文件对象,代表由进程打开的文件。
2、Linux正统文件
在ubuntu下,执行一个文件,例如./test。那么进程通过文件名直接访问文件本身。在Linux正统的文件系统(如ext2、ext3)中,一个文件由目录项、inode和数据块组成。

1、目录项:包括文件名和inode节点号。

 

2、Inode:又称文件索引节点,是文件基本信息的存放地和数据块指针存放地。


 

3、数据块:文件的具体内容存放地。


Linux正统的文件系统下,将硬盘分区时会划分出目录块、inode Table区块和data block数据区域。Inode包含文件的属性(如读写属性、owner等,以及指向数据块的指针),数据区域块则是文件内容。当查看某个文件时,会先从inode table中查出文件属性及数据存放点,再从数据块中读取数据。



 





0 0