Chinaunix首页 | 论坛 | 博客
  • 博客访问: 390862
  • 博文数量: 87
  • 博客积分: 2571
  • 博客等级: 少校
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-29 13:10
文章分类

全部博文(87)

文章存档

2012年(49)

2011年(7)

2010年(26)

2009年(5)

分类: LINUX

2012-05-04 17:07:53

RAMFS是一个非常巧妙的,利用VFS自身结构而形成的内存文件系统。
RAMFS没有自已的文件存储结构,它的文件存储于page cache中,
目录结构由dentry链表本身描述,文件则由VFS的inode结构本身描述。

常用文件类型定义
#define         S_IFMT  0170000 /* type of file ,文件类型掩码*/
#define         S_IFREG 0100000 /* regular 普通文件*/
#define         S_IFBLK 0060000 /* block special 块设备文件*/
#define         S_IFDIR 0040000 /* directory 目录文件*/
#define         S_IFCHR 0020000 /* character special 字符设备文件*/
#define         S_IFIFO 0010000 /* fifo */
#define         S_IFNAM 0050000 /* special named file */


ramfs处理的文件类型:
1.S_IFREG
- 注册了类型;
- 注册了操作函数;
2.S_IFDIR
- 注册了类型;
- 注册了操作函数;
3.S_IFLNK
- 注册了类型;
4.其他
- 调用Inode.c中的init_special_inode(),处理S_ISCHR/S_ISBLK/S_ISFIFO/S_ISSOCK,否则提示类型错误

ramfs对应的底层操作函数
1.mmu
- 简单处理(略)
2.nommu
- 内存映射转换(略)

初始化
- struct backing_dev_info ramfs_backing_dev_info,cache的预读设置 
- bdi_init(),继续设置 ramfs_backing_dev_info
- register_filesystem(),注册rootfs_fs_type

分配新文件节点
- ramfs_mknod(),建立新节点调用这个函数
- ramfs_mkdir(),内部调用ramfs_mknod()
- ramfs_create(),建立 S_IFREG 类型节点
- ramfs_symlink(),建立 S_IFLNK|S_IRWXUGO 类型节点
- 新节点默认给予755权限
- 当使用new_inode(sb)时,sb指针将该fs实例的相关信息全部带入,在此基础上分配新inode

阅读(7766) | 评论(0) | 转发(1) |
0

上一篇:linux异步IO浅析

下一篇:linux-文件系统-nfs

给主人留下些什么吧!~~