2014年11月1日
摘要: 1,fat32中一个文件至少要占用整数个cluster,一个cluster要占用2的整数次幂个数的sector,fat32中要使用cluster的原因是:因为如果要写入一个大档案,如果用sector的配置方式,那么sector数量就很大,并且分配在零散的空间,不便于管理,又由于cluster是连续的... 阅读全文
posted @ 2014-11-01 22:21 知了112 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 1,将一个块设备格式化为fat32的工具有mkfs.fat32(linux自带该工具)newfs_msdos(android平台上可以使用该工具) newfs_msdos -F 32 /dev/block/ram0 -s 8192 -O android -L zhiliao(-F 32的含义是将其格... 阅读全文
posted @ 2014-11-01 22:21 知了112 阅读(1001) 评论(0) 推荐(0) 编辑
摘要: 1,短目录和长目录:短目录和长目录都是放在Data region里的,一个directory entry占用32byte,具体参考下表:Short directory entryNameOffset (byte)Size (bytes)DescriptionDIR_Name011Short name... 阅读全文
posted @ 2014-11-01 22:20 知了112 阅读(1006) 评论(0) 推荐(0) 编辑
摘要: 1,FSInfo region一般是紧跟着boot sector,以下是FSInfo的详细信息:NameOffsetSizeDescriptionFSI_LeadSig04固定值0x41615252FSI_Reservedl4480保留使用FSI_StructSig4844固定值0x61417272... 阅读全文
posted @ 2014-11-01 22:19 知了112 阅读(930) 评论(0) 推荐(0) 编辑
摘要: 1,如何区别FAT12 FAT16和FAT32区分FAT12,FAT16,FAT32的主要依据是该分区上cluster的个数(注意:第一个cluster是以cluster2开始计数的)。FAT32的RootDirSectors大小始终为0TotSec=BPB_TotSec32DataSec = To... 阅读全文
posted @ 2014-11-01 22:18 知了112 阅读(742) 评论(0) 推荐(0) 编辑
摘要: 1,基本概念fat32 specFAT的全称是File Allocation Table,FAT是在1980s年代初由微软开发的,主要有FAT12,FAT16,FAT32三种,分为这三种的主要原因是FAT12的FAT entry有12bits,FAT16的FAT entry有16bits,FAT32... 阅读全文
posted @ 2014-11-01 22:17 知了112 阅读(1785) 评论(0) 推荐(0) 编辑
摘要: 1,mount exampleMount (/dev/hdb1 to /home/xpl)a.要mount一个新的设备必须先创造一个superblock。利用要mount的文件系统的file_system_type,调用其get_sb()來创造新的super blockb.创建vfsmountfor... 阅读全文
posted @ 2014-11-01 22:15 知了112 阅读(2698) 评论(0) 推荐(1) 编辑
摘要: 1,在一个系统上,比如smartphone平台,有很多分区,比如/data和/system分区都是ext4文件系统,但是系统中还是只有一个file_system_type的成员,不过每个分区对应的ext4文件系统对应不同的super_block,fs_supers就是将这些相同文件系统不同的supe... 阅读全文
posted @ 2014-11-01 22:14 知了112 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 一:根文件系统(rootfs)1,rootfs文件系统的注册在linux kernel初始化阶段会调用int __init init_rootfs(void)向内核注册rootfs文件系统,init_rootfs()的核心的函数为register_filesystem();这个函数将结构file_s... 阅读全文
posted @ 2014-11-01 22:13 知了112 阅读(1034) 评论(0) 推荐(0) 编辑
摘要: 一,mount系统调用--相关代码源码位置:kernel/fs/Namespace.c文件的do_mount()函数,[cpp]view plaincopylongdo_mount(char*dev_name,char*dir_name,char*type_page,unsignedlongflag... 阅读全文
posted @ 2014-11-01 22:12 知了112 阅读(2557) 评论(0) 推荐(0) 编辑
摘要: 三:代码流程1,path_lookupat()函数首先调用path_init()函数,path_init()函数主要是初始化查询,将nd实例的mnt和dentry成员设置为根目录或者工作目录的对应项 a,绝对路径(以/开始),获得根目录的dentry。它存储在task_struct中fs指向的fs... 阅读全文
posted @ 2014-11-01 22:11 知了112 阅读(1648) 评论(0) 推荐(0) 编辑
摘要: path_lookup函数path_walk函数一:基本概念:path_lookup函数的适用场景:open() stat() 等函数传进去的字符串的路径在内核里面都要转换成相应的inode节点和dentry结构体,执行这一任务的标准过程就是分析路径名并把它拆分成一个文件名序列。除了最后一个文件名以... 阅读全文
posted @ 2014-11-01 22:10 知了112 阅读(1697) 评论(0) 推荐(0) 编辑
摘要: 1,mount命令各个参数的含义mount命令各个参数含义2,mount系统调用中flag参数的含义#define MS_RDONLY 1 /* Mount read-only */#define MS_NOSUID 2 /* Ignore suid and sgid bits */#define ... 阅读全文
posted @ 2014-11-01 22:09 知了112 阅读(1994) 评论(0) 推荐(0) 编辑
摘要: 1,基本数据结构:file_system_type每种文件系统对应一个文件系统类型结构,注册之后形成单链表,链表表头为file_systems(全局变量).Superblock反应文件系统整体的控制信息,超级块以多种方式存在。(磁盘超级快、内存超级块、VFS超级块)Inode反应了某个文件系统对象的... 阅读全文
posted @ 2014-11-01 22:08 知了112 阅读(1049) 评论(0) 推荐(0) 编辑
摘要: 目录项缓存---dentrylinux使用目录项缓存(dentry缓存)来快速访问此前的查找操作的结果,[cpp]view plaincopystructdentry{atomic_td_count;//目录项对象引用计数器unsignedintd_flags;/*protectedbyd_lock... 阅读全文
posted @ 2014-11-01 22:07 知了112 阅读(2283) 评论(0) 推荐(0) 编辑
摘要: 一,task_struct和文件系统相关的一些信息[cpp]view plaincopystructtask_struct{.../*filesysteminfo*/intlink_count,total_link_count;.../*filesysteminformation*/structfs... 阅读全文
posted @ 2014-11-01 22:06 知了112 阅读(638) 评论(0) 推荐(0) 编辑
摘要: 1,文件系统基本概念文件系统是一种用来存储和组织计算机文件、目录及其包含的数据的方法,它使文件、目录以及数据的查找和访问得到简化。2,硬链接和软链接的区别硬链接和软链接的区别–符号链接–ln –s file1 file2•目录项,内容为指向文件名的指针,并不存在其他数据。目标文件删除时,符号链接仍然... 阅读全文
posted @ 2014-11-01 22:05 知了112 阅读(682) 评论(0) 推荐(0) 编辑