当前位置: 首页 > news >正文

网站建设的频道是什么意思公司网站建设空间

网站建设的频道是什么意思,公司网站建设空间,做一个网站怎么做的吗,上海到北京高铁最快2个小时通用文件接口 VFS 使得可以直接使用 open()、read()、write() 这样的系统调用而无需考虑具体文件系统和实际物理介质。 好处#xff1a;新的文件系统和新类型的存储介质需要挂载时#xff0c;程序无需重写#xff0c;甚至无需重新编译。 VFS 将各种不同的文件系统抽象后采…通用文件接口 VFS 使得可以直接使用 open()、read()、write() 这样的系统调用而无需考虑具体文件系统和实际物理介质。 好处新的文件系统和新类型的存储介质需要挂载时程序无需重写甚至无需重新编译。 VFS 将各种不同的文件系统抽象后采用统一的方式进行操作。 文件系统抽象层 可以使用这种通用接口对所有类型的文件系统进行操作是因为内核在它的底层文件系统接口上建立了一个抽象层。 为了支持多文件系统VFS 提供了一个通用文件系统模型该模型囊括了任何文件系统的常用功能集和行为。 VFS 抽象层之所以能衔接各种各样的文件系统是因为它定义了所有文件系统都支持的、基本的、概念上的接口和数据结构。 文件系统需要和 VFS 所定义的概念保持一致其实就是规则、约束。文件系统提供 VFS 所期望的抽象接口和数据结构这样内核就可以和任何文件系统协同工作。 在内核中在文件系统之外的其它部分并不需要了解其文件系统内部细节 ret write(fd, buf, len); // 系统调用 // 其具体实现sys_write系统调用是通用 VFS 接口提供给用户使用。系统调用的具体实现由文件系统中的具体文件实现实现的是 VFS 所需要的 sys_write() 方法。 Unix 文件系统 目录是特殊的文件即目录文件。根目录/文件相关的信息乘作为文件的元数据这些元数据被存储到 inode 结构体中。文件系统的相关信息即文件系统的元数据被存储在超级块中。 VFS 对象及其数据结构 VFS 采用面向对象思想来设计的。其对象使用结构体表示。 VFS 四个主要的对象类型 超级块对象代表一个具体的已安装文件系统。索引节点对象代表一个具体文件。目录项对象代表一个目录项是路径的一个组成部分。文件对象代表由进程打开的文件。 每个对象中都包含一个操作对象这些操作对象描述了内核针对主要对象可以使用的方法 super_operations 对象包含内核针对特定文件系统所能调用的方法比如 write_inode() 和 sync_fs() 等。inode_operations 对象包含内核针对特定文件所能调用的方法比如 create() 和 link() 等。dentry_operations 对象包含内核针对特定目录所能调用的方法比如 d_compare() 和 d_delete() 等。file_operations 对象包含进程针对已打开文件所能调用的方法比如 read() 和 write() 等。 并不止这些对象… 超级块对象 各种文件系统都必须实现超级块对象该对象用于存储特定文件系统的信息通常对应于存放在磁盘特定扇区中的文件系统超级块或文件系统控制块。其它并非基于磁盘的文件系统如基于内存的文件系统 sysfs它们会在使用现场创建超级块并将其保存到内存中。 超级块的结构体为 super_block位于 include/linux/fs.h 对超级块的操作位于fs/super.c 超级块对象通过 alloc_super() 函数创建并初始化。在文件系统安装时文件系统会调用该函数以便从磁盘读取文件系统超级块并且将其信息填充到内存中的超级块对象中。 超级块操作 超级块对象 super_block 中的 s_op 域指向超级块的操作函数表。 超级块的操作函数表用 super_operations 结构体表示位于 include/linux/fs.h struct super_operations {struct inode *(*alloc_inode)(struct super_block *sb);void (*destroy_inode)(struct inode *);void (*dirty_inode) (struct inode *);int (*write_inode) (struct inode *, struct writeback_control *wbc);void (*drop_inode) (struct inode *);void (*delete_inode) (struct inode *);void (*put_super) (struct super_block *);void (*write_super) (struct super_block *);int (*sync_fs)(struct super_block *sb, int wait);int (*freeze_fs) (struct super_block *);int (*unfreeze_fs) (struct super_block *);int (*statfs) (struct dentry *, struct kstatfs *);int (*remount_fs) (struct super_block *, int *, char *);void (*clear_inode) (struct inode *);void (*umount_begin) (struct super_block *);int (*show_options)(struct seq_file *, struct vfsmount *);int (*show_stats)(struct seq_file *, struct vfsmount *); #ifdef CONFIG_QUOTAssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); #endifint (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t); };Tips sb-s_op-write_super(sb); // 因为这不是对象只是将其看成对象 // 结构体无 this 指向 // 因此只能手动传入 sb 对象间接实现 this 指向 sb索引节点对象 索引节点对象包含了内核在操作文件或目录时需要的全部信息。 一个索引节点代表文件系统中的一个文件它也可以是设备或管道这样的特殊文件。但索引节点只有当文件被访问时才能在内存中创建。 索引节点操作 struct inode_operations {int (*create) (struct inode *,struct dentry *,int, struct nameidata *);struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *);int (*link) (struct dentry *,struct inode *,struct dentry *);int (*unlink) (struct inode *,struct dentry *);int (*symlink) (struct inode *,struct dentry *,const char *);int (*mkdir) (struct inode *,struct dentry *,int);int (*rmdir) (struct inode *,struct dentry *);int (*mknod) (struct inode *,struct dentry *,int,dev_t);int (*rename) (struct inode *, struct dentry *,struct inode *, struct dentry *);int (*readlink) (struct dentry *, char __user *,int);void * (*follow_link) (struct dentry *, struct nameidata *);void (*put_link) (struct dentry *, struct nameidata *, void *);void (*truncate) (struct inode *);int (*permission) (struct inode *, int);int (*check_acl)(struct inode *, int);int (*setattr) (struct dentry *, struct iattr *);int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);int (*setxattr) (struct dentry *, const char *,const void *,size_t,int);ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);ssize_t (*listxattr) (struct dentry *, char *, size_t);int (*removexattr) (struct dentry *, const char *);void (*truncate_range)(struct inode *, loff_t, loff_t);long (*fallocate)(struct inode *inode, int mode, loff_t offset,loff_t len);int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,u64 len); };目录项对象 目录项对象没有对应的磁盘数据结构VFS 根据字符串形式的路径在内存中创建它因此目录项对象并非真正保存在磁盘上。可以看到该结构体也没有磁盘相关的域。 目录项状态 状态有三被使用、未被使用、负状态。 **被使用**一个被使用的目录项对应一个有效的索引节点即 d_inode 指向相应的索引节点并且表面该对象存在一个或多个使用者d_count 为正。一个目录项处于被使用状态意味着它正被 VFS 使用并且指向有效的数据因此不能被丢弃。 未被使用 一个未被使用的目录项对应一个有效的索引节点d_inode 指向一个索引节点但是应指明 VFS 当前并未使用它d_count 为 0。该目录项对象仍然指向一个有效对象而且被保留在缓存中以便需要时再使用它。以后若再需要它就不必重新创建。若要回收内存也可以撤销未使用的目录项。 负状态 其实就是无效目录项一个负状态的目录项没有对应的有效索引节点d_inode 为 NULL因为索引节点已被删除或路径不在正确但目录项仍然可以保留以便快速解析以后的路径查询。 目录项对象释放后也可以保存到 slab 对象缓存中。此时任何 VFS 或文件系统代码都没有指向该目录项对象的有效引用。 目录项缓存 内核将目录项对象缓存在目录项缓存中。 目录项缓存包括三个主要部分 目录项操作 include\linux\dcache.h struct dentry_operations {int (*d_revalidate)(struct dentry *, struct nameidata *);int (*d_hash) (struct dentry *, struct qstr *);int (*d_compare) (struct dentry *, struct qstr *, struct qstr *);int (*d_delete)(struct dentry *);void (*d_release)(struct dentry *);void (*d_iput)(struct dentry *, struct inode *);char *(*d_dname)(struct dentry *, char *, int); };文件对象 VFS 的文件对象表示进程已打开的文件。文件对象是已打开的文件在内存中的表示。该对象切记不是具体的文件即不是物理的而只是存在于内存中的因此 VFS 的文件对象没有对应的磁盘数据由相应的 open() 系统调用创建由 close() 系统调用撤销。 文件操作 /** NOTE:* read, write, poll, fsync, readv, writev, unlocked_ioctl and compat_ioctl* can be called without the big kernel lock held in all filesystems.*/ struct file_operations {struct module *owner;loff_t (*llseek) (struct file *, loff_t, int);ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);int (*readdir) (struct file *, void *, filldir_t);unsigned int (*poll) (struct file *, struct poll_table_struct *);int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);long (*compat_ioctl) (struct file *, unsigned int, unsigned long);int (*mmap) (struct file *, struct vm_area_struct *);int (*open) (struct inode *, struct file *);int (*flush) (struct file *, fl_owner_t id);int (*release) (struct inode *, struct file *);int (*fsync) (struct file *, struct dentry *, int datasync);int (*aio_fsync) (struct kiocb *, int datasync);int (*fasync) (int, struct file *, int);int (*lock) (struct file *, int, struct file_lock *);ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);int (*check_flags)(int);int (*flock) (struct file *, int, struct file_lock *);ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);int (*setlease)(struct file *, long, struct file_lock **); };和文件系统相关的数据结构 内核定义了用来管理文件系统的数据结构。 file_system_type 用来描述各种特定文件系统类型 缺图 每种文件系统不管有多少个实例安装到系统中还是根本就没有安装到系统中都只有一个 file_system_type 结构。 当文件系统被安装时将有一个 vfsmount 结构体在安装点被创建。该结构体用来代表文件系统的实例即代表一个安装点。 缺图 vfsmount 结构体中维护的各种链表用于理清文件系统和所有其它安装点间的关系。 vfsmount 结构保存了在安装时指定的标志信息该信息存储在 mnt_flags 域中。 缺图 和进程相关的数据结构 系统中每个进程都有自己的一组打开的文件。file_struct、fs_strruct、namespace 结构体将 VFS和系统的进程紧密联系在一起。 file_struct 结构体该结构体由进程描述符中的 files 目录项指向。所有与单个进程相关的信息都保护在其中 include\linux\fdtable.h 缺图 fs_struct 结构体该结构由进程描述符的 fs 域指向。它包含了文件系统和进程相关的信息。 include\linux\fs_struct.h 缺图 namespace 结构体由进场描述符中的 mmt_namespace 域指向。它使得每个进程在系统中都看到唯一的安装文件系统不仅是唯一的根目录而且是唯一的文件系统层次结构。 缺图
http://www.w-s-a.com/news/899287/

相关文章:

  • 手机网站建设书籍工商咨询服务
  • 麻花星空影视传媒制作公司网站美食网站网站建设定位
  • 网站的切图是谁来做学会网站 建设
  • 交通局网站建设方案答辩ppt模板免费下载 素材
  • 个人摄影网站推介网手机版
  • 有哪些免费的视频网站网站开发和竞价
  • 学校网站如何做广州商城型网站建设
  • 微网站建设哪家便宜易优建站系统
  • 推荐做木工的视频网站毕业设计做的网站抄袭
  • 网站导航页面制作wordpress调用文章阅读量
  • app小程序网站开发品牌购物网站十大排名
  • 用wordpress做购物网站龙岩品牌设计
  • 网站开发是指wordpress系统在线升级
  • 网站建设运营的灵魂是什么意思页面跳转中
  • 家政服务网站源码重庆建网站企业有哪些
  • 怎样分析一个网站做的好坏重庆长寿网站设计公司哪家专业
  • 百度助手app下载苏州seo关键词优化排名
  • 17网站一起做 佛山诸城网站建设多少钱
  • 郑州网站建设培训学校泉州做网站设计公司
  • 西峡做网站深圳建筑工务署官网
  • 单县网站惠州seo计费
  • 万网网站建设 优帮云怎样用记事本做网站
  • 注册域名后网站建设百度指数的功能
  • 怎么做伪静态网站山西网站建设设计
  • 做小型企业网站多少钱衡阳市建设局网站
  • 金华专业网站建设公司网站建设空间和服务器方式
  • 自己做的网站在浏览器上显示不安全吗wordpress revolution slider
  • 西安网站建设推广优化搜索引擎营销
  • 互联网站备案管理工作方案 工信部注册深圳公司需要什么条件
  • 网站网站服务器网站建设 物流