linux内核开发

syy714363310 / 2023-07-26 / 原文

视频参考地址: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)权重计算/进程创建与调度