文件管理

转自:https://blog.csdn.net/Xiongchao99/article/details/74910794

1、Unix/Linux系统的目录结构

答:Unix/Linux系统的目录是带链接树形目录结构,带链接树形目录结构又称非循环图目录结构,它是指访问一文件(或目录)可以有多条路径。一般常说UNIX的文件系统是树形结构,其实是指带链接的树形结构,而不是纯树形目录结构。

2、Linux下对文件的操作

答:Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思,面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api。

简明的回答是:函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。

3、在FAT文件系统中,基本的文件分配单位是什么?

答:FAT文件系统基本的文件分配单位是

 :系统文件分配的基本单位,一般为2的n次方个扇区(由文件系统决定);

扇区: 硬盘不是一次读写一个字节,而是一次读写一个扇区(512个字节),扇区就是硬盘读取单元块 ;

簇的大小选择,例如U盘的FAT32模式下,分配单元——簇的大小选择:
簇是分配给U盘的最小单元,大了不适合存储小文件,比如你分配了16K的,你只存一个1K的TXT的话,这个16K就被占用了,所以又点浪费空间。但是如果你存的是5M左右的歌曲,那么存的文件就比较快,而且整体性好点。


4、文件索引结

答:为了提高文件的检索效率,可以采用索引方法组织文件。采用索引这种结构,逻辑上连续的文件可以存放在若干不连续的物理块中,但对于每个文件,在存储介质中除存储文件本身外,还要求系统另外建立一张索引表,索引表记录了文件信息所在的逻辑块号和与之对应的物理块号。索引表也以文件的形式存储在存储介质中,索引表的物理地址则由文件说明信息项给出。

在很多情况下,有的文件很大,文件索引表也就较大。如果索引表的大小超过了一个物理块,可以采用间接索引(多重索引),也就是在索引表所指的物理块中存放的不是文件地址映射信息本身,而是装有这些信息的物理块地址。

索引结构既适用于顺序存取,也适用于随机存取,并且访问速度快,文件长度可以动态变化。索引结构的缺点是由于使用了索引表而增加了存储空间的开销。


5、文件逻辑结构

答:文件分为两大类:有结构文件(即记录式文件),无结构文件(即流式文件)。

大量的数据结构和数据库采用有结构文件;大量的源程序,可执行程序,库函数等采用无结构文件,其长度以字节为单位,对流式文件的访问是利用读

写指针来指出下一个要访问的字符。

有结构的文件分为:定长和不定长两类;

定长又分为:定长记录,变长记录;

变长记录文件根据文件组织方式的不同又分为:顺序文件,索引文件,索引顺序文件。


6、数据项、记录和文件在文件系统中的关系

答:文件系统按层次有个底到高为:数据项—>记录—>文件,后者是由前者的集合组成;


7、顺序文件

答:顺序文件有两种结构:串结构和顺序结构;

串结构:按存入时间顺序决定;

顺序结构:按关键字如文件名的字母顺序决定。


8、Linux系统的i节点介绍

答:i节点也叫索引节点,是对文件进行控制和管理的一种数据结构,每一个文件都有自己的i节点,每个i节点都有一个唯一的i节点号。i节点结构如下:

struct dinode

{
ushort di_mode; /*文件类型+用户权限*/
short di_nlink; /*文件链接数*/
ushort di_uid; /*属主用户id*/
ushort di_gid; /*属主用户组id*/
off_t di_size; /*文件大小*/
char di_addr[40]; /*文件数据区起点地址*/
time_t di_atime; /*最后访问时间*/
time_t di_mtime; /*最后修改时间*/
time_t di_ctime; /*创建时间*/
};
从上面这个结构可以看出以下一些信息:
1、i节点保存了文件的属性和类型、存放文件内容的物理块地址、最近一次的存取时间、最近一次的修改时间、创建此文件的时间。
2、i节点中没有记录文件名字;

linux下,i节点其实就是可以这么认为,把i节点看作是一个指向磁盘上该文件存储区的地址。只不过这个地址我们一般是没办法直接使用的,而是

通过文件名来间接使用的。事实上,i节点不仅包含了文件数据存储区的地址,还包含了很多信息,比如数据大小,等等文件信息。但是i节点是不保存

文件名的。文件名是保存在一个目录项中。每一个目录项中都包含了文件名和i节点。

我们可以通过一个图来看看目录项,i节点,文件数据四者之间的关系:



下面是关于i节点、硬链接、软链接的总结:

1)i节点

1、inode是一个数值,通过ls -i 命令可以查看某文件的inode值;

2、本质上inode是一个索引号,也可以理解为一个指针,指向唯一的一个文件,准确的是说是指向一个文件的存储区,该存储区是属于该文件的一部分,不一定是全部;

3、因此,有两个或多个inode指向同一个文件的情况。即inode和文件不是一一对应的关系,是n对1的关系(n>=1)

4、当文件拷贝时,理所当然的会创建新的inode,而且也复制了数据区。尽管两个文件完全一样。即:复制文件时,产生两个完全独立的文件。


2)硬链接:为原文件创建一个新的文件名,但本质中只增加了一个目录项,并使用与原来相等的inode,指向原文件的区域。数据

区为两个名字共享。

使用限制:源文件和链接文件必须在同一个文件系统内,且目录文件不能创建硬链接。

命令:ln a b // 给a创建链接文件b

可以使用ls -i查看两个inode是完全一样的。

同时注意连接计数count。count的意义对于文件来说是硬链接的个数,对于目录,一般(count-2)为目录包含的子文件个数。

注意:两者的权限也是完全一样的。对其中一个进行读写操作,另外一个也会更新。但删除其中一个,只会删除目录项,不会删除

存储区数据。另外一个文件的使用和操作完全不受影响。除非count-1结果0,才将数据区删除。

作用:节省空间,两个文件能同步更新,防止重要文件被“误删”。

注意:软驱 光驱等都是独立的文件系统。不同文件系统的inode没有任何联系。系统通过设备号和inode号确定一个文件。

inode是文件系统内的一个概念。但Linux可以支持多种不同的文件系统。其实Linux提供了一个虚拟文件系统VFS,是实际系统上层

的一个接口软件。因此inode是只存在于内存的数据结构中。只有linux量身定制的ext2文件系统是具有实际意义的inode和目录项结

构。

3)软链接:也叫符号链接。本质是创建一个新的文件,保存源文件的路径名。因此inode和源文件的inode是不一样的。使用没有文

件系统的限制,也没有文件和目录的限制。

命令:ln -s a b

注意:产生的文件权限和源文件是不一样的。由于软链接使用比较灵活,可能断链,也可以自循环,往往需要多次查找增加文件操

作的步骤而降低效率。尽量少用,并避免出现循环。

注意:删除文件时,如果源文件被删除,即便只是硬链接被删除,存储区没有被删,本文件也会失效。因为它是对文件名而言的。


9、Linux中的makefile文件

答:makefile文件保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件,可执行文件要求包含的目标文件模块及库等)。创建程序(make程序)首先读取makefile文件,然后再激活编译器,汇编器,资源编译器和连接器以便产生最后的输出,最后输出并生成的通常是可执行文件。makefile文件实现了编译流程的规定,即实现了编译自动化,只需要调用make命令就可根据该文件实现编译。Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值