文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ROMFS几周学习总结

ROMFS几周学习总结

时间:2010-10-23  来源:wykitty

  和小组同学一起学习,讨论romfs文件系统已经有2个多月了。虽然还没有具体的实践出什么,但是在此期间,学习到了很多东西。特此做一个小总结。

首先,是一些文件系统的基础。比如目录和目录项的区别。每次讨论都会提到这个问题,由于大家的基础理论知识都比较薄弱,所以这个问题就很困扰。现在就小小说一下目录和目录项的区别:

在linux中其实是没有目录这么一说的,因为所有的目录,设备等等都是文件。所以我们这样说:目录文件的内容是该目录的目录项,目录项是该目录下的文件和目录的相关信息。目录可以包含子目录,即目录可以层层嵌套,形成文件路径,而路径中的每一部分被称为目录项。eg:/home/wuyuun/Linux (目录home,wuyun,以及文件Linux均为目录项)。现在大概清楚了吧?(由于比较菜,所以描述的不一定准确··欢迎指正。谢过啦··)

还有一些简单的名词解释比如:

文件——存放一切数据或信息的仓库。

VFS(Virtual Filesystem Switch)----是用户的应用程序与具体文件系之间的抽象层。

硬链接的2个限制:

1)不允许给目录创建硬链接;

2)只有在同一文件系统中的文件之间才可以创建硬链接。

大概了解了一下VFS:

VFS只管理挂载到系统中的实际FS,它的管理对象有:文件(file),目录项(dentry),索引节点(inode),安装点(vsfmount)。

vfs_superblock只存在与内存中,当内核对一个FS进行初始化,注册时,内存为其分配一个sb,在FS卸载时被自动删除。

由于我们学习是边学习理论基础,边开始看romfs的源码,当然由于理论基础知识的欠缺,在看源码时还是会遇到很多很多问题,因此我们的进展也比较慢,我主要负责看romfs中的super.c不过也只看了一点,因为每看一点都会遇到很多问题。然后就需要不停的去看书,查资料。第一次真正的接触到内核源码,是有点不知从何下手的,所以就先了解了一下大体的框架,然后再一步一步的深入到代码内部去。在此期间,我遇到的第一个问题就是,不懂内核的数据类型。这里我稍稍说一些,我看到的romfs源码中的数据类型,总结之后我会给大家附上我找的一些资料。详细的东西,请大家自己去学习。

内核使用的基本数据类型主要有:

int就不赘述了,u32—32位整数类型,pid_t –特定内核对象pid类型

在romfs super.c中首先遇到的是__u32,对此系列先总结一下:

s8 和 __s8→ signed char u8 和 __u8→ unsigned char

s16 和 __s16→ signed short u16 和 __u16→ unsigned short

s32 和 __s32→ signed int u32 和 __u32-> unsigned int

s64 和 __s64 → signed loong long u64 和 __u64 → unsigned long long

可能还会遇到的··这是直接从types.h中Copy的

typedef __u32 __bitwise __le32;
typedef __u32 __bitwise __be32;

为了容易辨认区分,就给他们的数据类型起了别名,以一些特殊形式定义一些数据类型后,就不再需要考虑因系统而异的程序实现细节。所以也就是说,本质的数据类型就主要是上面说到的三种。至于为什有些数据类型前面有两个下划线,这两个表示的数据类型相同,但是用有前缀的类型是用于将变量显露给用户空间的。例如:一个驱动程序通过ioctl函数与运行在用户空间的程序交换数据,应该用_ _u32来声明32位的数据类型。

在《UNIX高级环境编程》P45简单的说到一些基本系统数据类型。建议大家可以看一下,具体的类型说明可以进入内部学习。


下一章张中将会说到,我具体看的super.c的源码。只有一点点哈···但是会一点一点去学习,然后连载··嘿嘿



相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载