linux内核——14_Linux文件系统层概述

作者:GWD 时间:2019.8.2

一、课程内容
(一)、Linux中使用文件系统都分几个部分
1、有关于Linxu中高速缓冲区的管理程序。分页机制、缺页中断、 buffer.c;
2、文件系统的底层通用函数(对于硬盘的读写 分配 释放等 ,对于目录的节点管理 inode 内存与磁盘的映射);
3、对文件数据进行读写操作模块 (VFS:虚拟文件系统 硬件驱动 和 文件系统的关系 pipe 快设备(磁盘光驱等等)的读取);
4、文件系统与其他程序的接口实现(fopen 关闭 创建等使用文件的调用方式)。
(二)、文件系统的基本概念:
1、磁盘中要有目录的映射,我们把磁盘分成盘片;
2、每一个盘片都有一个文件系统的子系统(8192个I节点、章节目录)。
二、一个盘片的文件子系统结构
在这里插入图片描述
1、引导块:用来引导设备的,引导块可以为空,但是一定要空开,因为要保持格式的一致性;
2、超级块:是该文件子系统的描述符(记录后面文件系统的结构,记录该盘片的逻辑块位图的地址,i节点位图的地址,通过设备号可以获取);
3、逻辑块位图:有很多小节点,其每一位对应一个逻辑块的使用情况,对应逻辑块如果使用了则逻辑位图对应位置1;
4、i节点位图:其每一位对应一个I节点的使用情况,对应i节点如果使用了则i节点位图上的改byte位置1;
5、逻辑块:用来存储数据的数据存储单元;
6、i节点:目录与磁盘的桥接、文件的属性描述(文件的名片);

在这里插入代码片
INODE的结构体:
struct m_inode {
	unsigned short i_mode;			//文件的类型和属性
	unsigned short i_uid;			  //宿主用户ID
	unsigned long i_size;				//改文件的大小
	unsigned long i_mtime;			//该文件的修改时间
	unsigned char i_gid;				//宿主的组ID
	unsigned char i_nlinks;			//链接数,硬链接的个数,其他文件夹连接我的次数
	unsigned short i_zone[9];		//该文件映射在逻辑块号的数组,这个文件占用了几个逻辑块
	/* these are in memory also */
	struct task_struct * i_wait;
	unsigned long i_atime;
	unsigned long i_ctime;
	unsigned short i_dev;
	unsigned short i_num;
	unsigned short i_count;
	unsigned char i_lock;
	unsigned char i_dirt;
	unsigned char i_pipe;
	unsigned char i_mount;
	unsigned char i_seek;
	unsigned char i_update;
}

注:
1、unsigned short i_zone[9]分析:文件和磁盘的映射
1)、izone[7]直接块号:如果你的文件只占用7个逻辑块,那么这个数组中的每一个单元则存储了一个逻辑块的号;
2)、izone[8]一次间接块号:如果占用的逻辑快较多,大于7,小于512+7,则占用一次简介快号;
3)、izone[9]二次间接快号:如果占用的逻辑块太多,大于512+7小于512*512+7,则启动二次间接逻辑块。

三、crw-rw 文件的类型和属性 rwx chmod +777 /work/system.c
c就代表文件类型

  • 普通文件
    d 目录
    s 符号连接
    p pipe管道
    c 字符设备
    b 快设备
    l 链接文件

每个文件个三种属性r:读、w:写、x:执行
777代表全属性
每一个文件有3个属主的属性
777----rwxrwxrwx
第一个rwx是当前用户的属性
第二个rwx是用户组的权限
第三个rwx是他人的权限
chown book:book /work/ -R 更改属主

四、高速缓冲区管理要素
1)、用户操作磁盘时候是需要高速缓冲区做铺垫的,否则速度太慢了,磁盘与高速缓冲区的映射关系;
2)、应用程序与高速缓冲区的交互API;
3)、高速缓冲区与磁盘的交互API;
4)、应用程序不需要控制高速缓冲区什么时候读进、读出到磁盘否则太low了;
5)、高速缓冲区的管理系统(循环链表+哈希表+单链表)
例如:应用程序要写入到磁盘中、或者从磁盘中读取一些数据,我们要开辟一段高速缓冲区并映射到磁盘中,且还要判断高速缓冲区是否满了,要是满了就要释放掉一些内存。

五、在日后代码的讲解中,遵循一个写代码、读代码的高效方法——锁定OOP法:
1.找到目标关键结构体;
2.理清对目标关键结构体的设置 使用等诸多方法;
3.掌握对目标结构体的变量使用方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值