linux内核开发
视频参考地址:https://www.bilibili.com/video/BV1eY411v7Yb?p=1
一、虚拟文件系统NFS
1、虚拟文件系统NFS

具体视图如下:
LINUX文件系统的逻辑关系图

内核子系统(虚拟内存系统VFS-进程通信子系统,进程管理子系统,内存管理子系统,网络管理子系统)
->具体文件系统层(MINIX,EXT2,VFAT)-》设备缓存-设备驱动程序
linux专用文件系统 exz:默认2GB磁盘分析 文件名称支持255字符 ,EXT2: 安全文件系统标准,容易扩展 EXT3:日志文件系统 VFAT :文件系统扩展
操作系统:systemv 相当于MINIX操作系统 ,NFS网络文件系统(用网络远程访问主机)
2、vfs常用系统调用如下:

amout() 安装 ,.umout()卸载
sysfs()获取文件系统 chroot()更改根目录
chdir() fchdir(),getcwd()更改当前目录
mkdir() 创建目录 ,rmdir() 删除目录,
readlink,symlink软连接目录
chown ()属性 chmod() 给权限 读取文件状态 fstat
open()/close(),打开/关闭文件
select()/poll(): 异步io通信
文件操作: read()/write() sendfile()
文件内存映射 :mmap()/munmap()
文件锁 : flock()
3、对象的种类
1)超级快(super_block)对象
存放系统中已安装文件系统的有关信息。每个文件系统都有一个超级快对象

s_dev:包含该具体文件系统的块设备标识符
s_blocksize_bits:块大小值的占用的位数
s_blocksize:改具体文件系统中数据库的大小
s_flags:安装标志
s_maginc:尾数,该具体文件系统区别其他文件系统的一个标志
*s_root指向该具体文件系统安装目录的目录项
s_unount:对超级块的使用计数
2)、索引节点(inode) 对象
存放关于具体文件的一般信息。每个文件都有一个索引节点对象。每个索引节点对象都有一个索引节点号。索引节点号是唯一的
struct_inode{} 描述索引节点高速缓存管理的域
i_uid 文件拥有者标识号
i_gid文件拥有者所在组的标识号
i_ino 索引节点号
*i_op索引节点的操作
*i_sb 执行此文件系统超级块的指针
i_rdev:实际设备标识号
i_size 文件的大小
3)、目录项(dentry)对象
存放目录项与对应文件进行链接的信息,
4)文件(file)对象
存放打开文件与进程之间进行交流的有关信息。
5)、索引节点高速缓存
6)、文件系统安装与卸载
4.CFS调度器

1)权重计算/进程创建与调度


















