Linux之day4 Linux文件系统

时间:2022-07-24
本文章向大家介绍Linux之day4 Linux文件系统,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、Linux文件系统目录结构

1./bin

包含基本命令,如ls、cp、mkdir,这个目录中的文件都是可执行的

2./sbin

包括系统命令,如modprobe、hwclock、ifconfig,大多涉及系统管理命令

3./dev

设备存储目录,应用程序通过对这些文件的读写和控制就可以访问实际的设备。

4./etc

系统配置文件的所在地,一些服务器的配置文件也在这里,如用户账号及密码配置文件。busy的启动脚本也存放在该目录。

5./lib

系统库文件存放目录

6./mnt

/mnt这个目录一般是存放挂载储备的挂载目录的

7./opt

opt是可选的意思

8./proc

操作系统运行时,进程及内核信息存放在这里

9./tmp

有时用户运行程序的时候,会产生临时文件,/tmp用来存放临时文件的

10./usr

11./var

var表示变化的意思,这个目录的内容经常变动

12./sys

Linux2.6内核所支持的sysfs文件系统被映射在此目录

二、Linux文件系统与设备驱动

由于字符设备的上层没有磁盘文件系统,说以字符设备的file_operations成员函数直接由设备驱动提供。

而对于块存储设备而言,ext2、fat、jffs2等文件系统中会实现针对VFS的file_operations成员函数,设备驱动层看不到file_operations的存在,磁盘文件系统和设备驱动将会对磁盘上的文件的访问最终转换成对磁盘上柱面和扇区的访问。

1.file结构题

struct file
{
	union{
	struct list_head fu_list;
	struct rcu_head fu_rcuhead;
	}f_u;
	struct dentry *f_dentry;/*与文件关联的目录入口结构体*/
	struct vfsmount *f_vfamnt;
	struct file_operations *f_op;
	atomic f_count;
	unsigned int f_flags;/*文件标志*/
	mode_t f_mode;/*文件读写模式*/
	loff_t f_pos;
	struct fown_struct f_owner;
	unsigned int f_uid,f_gid;
	struct file_ra_state f_ra;
	unsigned long f_version;
	void *f_security;
	void *private_data;
	...
	struct address_space *f_mapping;

};

文件读写模式mode、标志f_flags都是设备驱动关心的内容,而私有数据结构在设备驱动中被广泛应用,大多被指向设备驱动自定义用于描述设备的结构体

2.inode 结构体

VFS inode 包含文件系统访问权限、属主、组、大小、生成时间、访问时间、最后修改时间等信息。它是Linux管理文件系统的最基本单位,也是文件系统连接任何子目录、文件的桥梁。

struct inode{
	...
	umode_t i_mode;/*inode的权限*/
	uid_t i_uid;/*inode拥有者的id*/
	gid_t i_gid;/*inode所属的群组的id*/
        dev_t i_rdev;/*若是设备文件,此字段将记录*/
	loff_t i_size;/*inode所代表的文件大小*/

	struct timespec i_atime;/*inode最近一次的存取时间*/
	struct timespec i_mtime;/*inode最近一次的修改时间*/
	struct timespec i_ctime;/*inode产生时间*/

	unsigned long i_blksize;/*inode在做I/O时的区块大小*/
	unsigned long i_blocks;/*inode所使用的block数,一个block为512 byte*/

	struct block_device *i_bdev;/*若是块设备,为其对应的block_device结构体指针*/
	struct cdev *i_dcev;/*若是字节设备,为其对应的cdev结构体指针*/
	...
}