OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【文件系统】上

虚拟文件系统

基本概念

VFS(Virtual File System)是文件系统的虚拟层,它不是一个实际的文件系统,而是一个异构文件系统之上的软件粘合层,为用户提供统一的类Unix文件操作接口。由于不同类型的文件系统接口不统一,若系统中有多个文件系统类型,访问不同的文件系统就需要使用不同的非标准接口。而通过在系统中添加VFS层,提供统一的抽象接口,屏蔽了底层异构类型的文件系统的差异,使得访问文件系统的系统调用不用关心底层的存储介质和文件系统类型,提高开发效率。

OpenHarmony内核中,VFS框架是通过在内存中的树结构来实现的,树的每个结点都是一个Vnode结构体,父子结点的关系以PathCache结构体保存。VFS最主要的两个功能是:

  • 查找节点。

  • 统一调用(标准)。

运行机制

当前,VFS层主要通过函数指针,实现对不同文件系统类型调用不同接口实现标准接口功能;通过Vnode与PathCache机制,提升路径搜索以及文件访问的性能;通过挂载点管理进行分区管理;通过FD管理进行进程间FD隔离等。下面将对这些机制进行简要说明。

  1. 文件系统操作函数指针:VFS层通过函数指针的形式,将统一调用按照不同的文件系统类型,分发到不同文件系统中进行底层操作。各文件系统的各自实现一套Vnode操作、挂载点操作以及文件操作接口,并以函数指针结构体的形式存储于对应Vnode、挂载点、File结构体中,实现VFS层对下访问。

  2. Vnode:Vnode是具体文件或目录在VFS层的抽象封装,它屏蔽了不同文件系统的差异,实现资源的统一管理。Vnode节点主要有以下几种类型:

    • 挂载点:挂载具体文件系统,如/、/storage
    • 设备节点:/dev目录下的节点,对应于一个设备,如/dev/mmcblk0
    • 文件/目录节点:对应于具体文件系统中的文件/目录,如/bin/init

Vnode通过哈希以及LRU机制进行管理。当系统启动后,对文件或目录的访问会优先从哈希链表中查找Vnode缓存,若缓存没有命中,则并从对应文件系统中搜索目标文件或目录,创建并缓存对应的Vnode。当Vnode缓存数量达到上限时,将淘汰长时间未访问的Vnode,其中挂载点Vnode与设备节点Vnode不参与淘汰。当前系统中Vnode的规格默认为512,该规格可以通过LOSCFG_MAX_VNODE_SIZE进行配置。Vnode数量过大,会造成较大的内存占用;Vnode数量过少,则会造成搜索性能下降。下图展示了Vnode的创建流程。

图1 Vnode创建流程

  1. PathCache:PathCache是路径缓存,它通过哈希表存储,利用父节点Vnode的地址和子节点的文件名,可以从PathCache中快速查找到子节点对应的Vnode。下图展示了文件/目录的查找流程。

图2 文件查找流程

  1. PageCache:PageCache是内核中文件的缓存。当前PageCache仅支持缓存二进制文件,在初次访问文件时通过mmap映射到内存中,下次再访问时,直接从PageCache中读取,可以提升对同一个文件的读写速度。另外基于PageCache可实现以文件为基底的进程间通信。

  2. fd管理:Fd(File Descriptor)是描述一个打开的文件/目录的描述符。当前OpenHarmony内核中,fd总规格为896,分为三种类型:

    • 普通文件描述符,系统总规格为512。
    • Socket描述符,系统总规格为128。
    • 消息队列描述符,系统总规格为256。

当前OpenHarmony内核中,对不同进程中的fd进行隔离,即进程只能访问本进程的fd,所有进程的fd映射到全局fd表中进行统一分配管理。进程的文件描述符最多有256个。

  1. 挂载点管理:当前OpenHarmony内核中,对系统中所有挂载点通过链表进行统一管理。挂载点结构体中,记录了该挂载分区内的所有Vnode。当分区卸载时,会释放分区内的所有Vnode。

开发指导

接口说明

当前文件系统支持的接口如下表所示,表格中的“×”代表对应文件系统不支持该接口。

表1 文件操作

<
接口名称 功能 FAT JFFS2 NFS TMPFS PROCFS
open 打开文件
read/pread/readv/preadv 读取文件
write/pwrite/writev/pwritev 写入文件
lseek 设置文件偏移 ×
close 关闭文件
unlink 删除文件 ×
fstat 查询文件信息
fallocate 预分配大小 × × × ×
truncate 文件截断 × ×
link 创建硬链接 × × × ×
symlink 创建软链接 × × ×
readlink 读取软链接 × × ×
dup 复制文件句柄
fsync 文件内容刷入设备 × × × ×
ioctl 设备控制 × × × ×
fcntl 文件控制操作
mkdir 创建目录 ×
opendir 打开目录
readdir 读取目录
closedir 关闭目录
telldir 获取目录偏移
seekdir 设置目录偏移
rewinddir 重置目录偏移 ×
scandir 读取目录数据
rmdir
华为鸿蒙系统正式版PC下载是华为官方打造的操作系统,是建立在linux开源内核的基础上开发的,华为鸿蒙系统正式版PC下载不仅仅内置了火狐、谷歌、opera等主流浏览器的使用,还会为用户带来自带的办公软件使用,方便快捷,无需另外下载安装使用,可支持的游戏也是非常的多的,不会有广告、捆绑的软件,绿色安全可靠,是当前非常受欢迎的一款操作系统。 华为鸿蒙系统正式版PC下载介绍: 华为鸿蒙系统正式版PC下载基于微内核的全场景分布式的操作系统鸿蒙操作系统将基于四个框架为主题,分别是:分布架构、天生流畅、内核安全、生态共享,精简代码结构,将系统的代码全部都进行分布并细化处理,全面解决系统响应缓慢,操作简单,容易上手。 华为鸿蒙系统正式版PC下载亮点: 1、在智慧屏幕、穿戴设备、车机专有服务、音箱、手机等都会进行终端的无缝协同的体验。 2、还率先采用了高性能的IPC技术,将彻底解决系统性能不足、卡顿的问题。 3、Harmony鸿蒙OS采用全新的微内核的射击,保证系统流畅和信息安全这两块巨头。 4、是全世界第一个基于微内核的全场景OS,有分布式架构支撑,能带来天生流畅、内核级的安全和生态共享。 华为鸿蒙系统正式版PC下载四个框架说明: 1、分布架构 将每一个大的系统框架进行更为细致的细化,让应用对于软件的响应程度微乎其微,直接的提高了系统的使用效率。 2、天生流畅 精简大量底层的系统冗余程序代码,还原用户的系统体验流畅度。 3、内核安全 将在关键的用户交互方面下功夫,在用户与系统软件的交互方面,放置多层由安全中心响应的源生代码,从源头保证系统的整体安全。 4、生态共享 在每一个智能的终端设备上,都会就行在交互方面的自动适配,自动寻找最符合条件的那个设备。 华为鸿蒙系统正式版PC下载安装方法: 1.插入U盘,打开U盘制作软件rufus 3.1 2.入设备选项,选中下载的华为鸿蒙系统镜像文件,其他默认,点击开始。 3.链接下载点击是,勾选以ISO镜像模式写入。 4.点击OK,等待U盘启动制作并写入华为鸿蒙系统完成。 5.把制作好的U盘插入电脑,开机启动按F12,选择U盘启动,台式机一般为:Delete键笔记本一般为:F2键惠普笔记本一般为:F10键联想笔记本一般为:F12键苹果电脑为:C键。 6.从U盘启动后,选择“Start Newstart Dev”进入安装。 7.系统会进入到安装界面,我们点击“安装系统”开始安装。 8.选择将华为鸿蒙系统安装所在硬盘分区,再点击下一步。 9.设置完管理员密码后,在右下角点击“开始安装”进行安装系统。 10.进入安装,10多分钟就安装完成了,非常简单。安装过程中请保证电脑电量,而且不能拨插U盘,否则得重来。 11.安装成功后,点击“重启”,拨出U盘,系统重启后就进入登录界面,输入先前创建的用户名及密码,就可以体验华为鸿蒙系统。 华为鸿蒙系统正式版PC下载测评: 1、面向多终端设计,并且开源。可打通智慧屏、可穿戴设备、车机、音响、手机等。 2、能够实现每一个电子终端的资源互享,带来用户体验最佳的协同感。 3、系统软件轻量化、功能强大,将在大量的智能终端上进行率先应用。 4、通过对原生态的系统进行精简,删减掉那些用户在日常生活中用不到系统软件,还原系统的流畅度。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值