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

车辆租赁的网站建设搜索引擎优化方式

车辆租赁的网站建设,搜索引擎优化方式,网页制作模板如何制作,wordpress中文插件下载背景 接上篇wiki 31、【OS】【Nuttx】OSTest分析(1):stdio测试(一) 继续stdio测试的分析,上篇讲到标准IO端口初始化,单从测试内容来说其实很简单,没啥可分析的,但这几篇…

背景

接上篇wiki
31、【OS】【Nuttx】OSTest分析(1):stdio测试(一)
继续stdio测试的分析,上篇讲到标准IO端口初始化,单从测试内容来说其实很简单,没啥可分析的,但这几篇分析的 wiki 会另辟蹊径,从文件系统的角度进行分析标准IO端口的初始化过程,后续再分析文件系统的时候,相关知识点会直接引用这几篇wiki,重复内容不会再出现

标准IO端口初始化

之前介绍了文件系统中 filelist 队列,下面分析 filelist 队列里面的核心成员 fl_files

file 结构体

之前wiki说过,核心成员 fl_files 为一个二维数组指针,指向了存放文件实例的内存区域,用户通过文件描述符 fd 可以索引到对应的文件实例,索引方法为 fl_files[fd / BLOCK_SIZE][fd % BLOCK_SIZE]
在这里插入图片描述

必选成员

核心成员 fl_files 的类型定义如下,首先看里面的4个必选成员 f_oflags,f_pos,f_inode,f_priv,其中核心成员的是 f_inode,f_inode 体现了文件系统中拓扑结构:
在这里插入图片描述

  • f_oflags:文件的打开模式标志,决定了文件可以如何被访问(比如只读只写,可读可写,创建文件等等),解释起来比较绕,可以直接来看这个标志都支持哪些模式。 查看其模式定义如下,其中大部分模式是基于 POSIX 标准的,只有少数几个是Nuttx独有的,比如 O_RDOK,O_WROK(应该是拿来做兼容的),这意味着大部分这些打开模式,在类Unix系统,比如Linux中也存在
    在这里插入图片描述
  • f_pos:文件偏移量,表示文件当前的读写位置,对顺序读取和写入很重要,有几个关键点:
    1、初始值:当文件首次打开时,f_pos 通常被初始化为 0,表示文件的开头;如果文件以追加模式打开(如上面模式定义的O_APPEND),那在每次写入之前,f_pos 会被自动设置为文件末尾,这点代码也能看出来
    在这里插入图片描述
    2、文件读取:从文件读数据时,f_pos 指定了从哪个字节开始读。每次成功调用读取函数(如 host_read()),f_pos 会自动增加所读取的字节数,这点随便找一个文件系统就能看出来,比如hostfs
    在这里插入图片描述
    3、文件写入:和文件读取一样,在写数据到文件时,f_pos 确定了数据应该被写入的位置。每次成功调用写入函数(如 host_write()),f_pos 也会相应地增加
    在这里插入图片描述
  • f_inode:file 类型中的核心成员,体现了文件系统中拓扑结构,在 Nuttx 中,每个文件和目录都有一个对应的inode。这个特定的 inode 包含了描述文件或目录所需的信息,它包含了文件的元数据,比如节点名字,层次关系、操作函数、时间戳等,在文件系统内部使用,用户通常不会直接与之交互。用户一般通过标准的文件系统API(如open, read, write等)来间接操作该数据结构。如下图所示,当用户想要注册一个文件C时,其路径为 /A/B/C,此时文件系统会自动创建三个节点:A/B/C,B/C,C,其中 A/B/C 是 B/C 的父节点,B/C 是 C 的父节点,且 A/B/C 和 /B/C 均为目录节点,C 为文件节点,最终在 C 节点上添加更详细的节点信息,如名字,操作函数等。
    在这里插入图片描述
  • f_priv:每次打开文件时特有的私有数据(注意:inode 中也有 i_private 成员,两者的差别在于,f_priv 为每个单独的实例用户提供私有空间,以保存仅对该次打开有效的数据,i_private 为整个 inode 节点的提供全局性私有数据),如图所示,不同用户可以通过不同的文件实例,操作同一个节点:
    在这里插入图片描述

可选成员

下面来看下 file 类型的可选成员,可选成员通过配置项来决定是否启用,有 f_refs,f_tag_fdsan,f_tag_fdcheck,f_backtrace,locked 等五个成员
在这里插入图片描述

  • f_refs:通过使用方式可以看到该成员为原子变量类型,用来追踪引用该文件结构的次数,以实现文件共享访问,确保所有对该文件的引用都消失时,再安全地释放资源。
    在这里插入图片描述
    在多核环境中,不同进程或线程可能需要同时访问同一个文件,这种共享访问须确保安全性和一致性。当用户打开一个文件时,实际上是通过文件描述符来操作文件实例,而此时另一用户也可通过相同的文件描述符来操作该文件实例。
    f_refs 成员作为原子类型的引用计数器,记录有多少个用户正在引用该文件实例,每当一个新用户打开该文件时,引用计数增加;而当用户关闭该文件时,引用计数减少,当所有用户都关闭了该文件时,Nuttx 才会认为可以安全清理和释放该文件实例下的相关资源(如内存、缓冲区等)。
    在这里插入图片描述
  • f_tag_fdsan:英文全名 sanitizer ,一种并发编程中的检测工具,tsan 和 asan 比较常见
    1、tsan(thread sanitizer ) 用来检测并发编程中的数据竞争和死锁等问题
    2、asan(address sanitizer )用来检测内存越界、内存泄漏、使用已释放内存等问题
    3、fdsan(file description sanitizer )用来检测和防止文件描述符的误用问题
    具体来说,有如下检测场景:
    一、防止文件实例被重复打开:可以看到,每当打开一个新文件时,f_tag_fdsan 将被 android_fdsan_exchange_owner_tag 设置成一个非0值,如果还有用户尝试打开该文件时,此时由于 f_tag_fdsan 非0,Nuttx 将进入 PANIC 恐慌
    在这里插入图片描述
    在这里插入图片描述
    流程图如下:
    在这里插入图片描述

二、防止文件被重复关闭:同样的,当关闭文件实例后,f_tag_fdsan 将被重新设置为0,此时由于 f_tag_fdsan 为0,如果还有用户尝试关闭该文件时,Nuttx 将进入 PANIC 恐慌
在这里插入图片描述
在这里插入图片描述

  • f_tag_fdcheck:用来保证文件描述符的唯一性,设计很巧妙,下一篇wiki分析
  • f_backtrace:用来跟踪打开文件的用户是谁
  • locked:对具体的文件操作进行上锁,防止并发竞争

文章转载自:
http://dinncopane.knnc.cn
http://dinncolespedeza.knnc.cn
http://dinncohobbyist.knnc.cn
http://dinncofulfill.knnc.cn
http://dinncocatarrhal.knnc.cn
http://dinncoapophthegm.knnc.cn
http://dinncopresence.knnc.cn
http://dinncovolkswil.knnc.cn
http://dinncodelineative.knnc.cn
http://dinncoimparity.knnc.cn
http://dinncocloudland.knnc.cn
http://dinncofirebill.knnc.cn
http://dinncoplacard.knnc.cn
http://dinncopuddler.knnc.cn
http://dinncotutelary.knnc.cn
http://dinncoprocurement.knnc.cn
http://dinncobabesiasis.knnc.cn
http://dinncohydropic.knnc.cn
http://dinncodegage.knnc.cn
http://dinncoapproved.knnc.cn
http://dinncounprofessional.knnc.cn
http://dinncorondoletto.knnc.cn
http://dinncopotentiostatic.knnc.cn
http://dinncooligomycin.knnc.cn
http://dinncodivalent.knnc.cn
http://dinncogabelle.knnc.cn
http://dinncobuckshee.knnc.cn
http://dinncoperitrichic.knnc.cn
http://dinncoironside.knnc.cn
http://dinncofinlandization.knnc.cn
http://dinncopilgrimize.knnc.cn
http://dinncoevangelical.knnc.cn
http://dinncomediative.knnc.cn
http://dinncokhidmatgar.knnc.cn
http://dinncoepicardium.knnc.cn
http://dinncofrowardly.knnc.cn
http://dinncoqom.knnc.cn
http://dinncobewitch.knnc.cn
http://dinncoprovostship.knnc.cn
http://dinncosulfury.knnc.cn
http://dinncostormproof.knnc.cn
http://dinnconouakchott.knnc.cn
http://dinncocurio.knnc.cn
http://dinncodhurna.knnc.cn
http://dinncobrickkiln.knnc.cn
http://dinncodiscontentment.knnc.cn
http://dinncotolerant.knnc.cn
http://dinncomaceration.knnc.cn
http://dinncogladly.knnc.cn
http://dinncobuckboard.knnc.cn
http://dinncocastries.knnc.cn
http://dinncoimpossibility.knnc.cn
http://dinncobali.knnc.cn
http://dinncotruthless.knnc.cn
http://dinncovoyeuristic.knnc.cn
http://dinncoisohyet.knnc.cn
http://dinncobookstand.knnc.cn
http://dinncobodleian.knnc.cn
http://dinncoteno.knnc.cn
http://dinncogermanite.knnc.cn
http://dinncoinsectifuge.knnc.cn
http://dinncoslanderous.knnc.cn
http://dinncoacclamation.knnc.cn
http://dinncoblueness.knnc.cn
http://dinncopur.knnc.cn
http://dinncocamporee.knnc.cn
http://dinncometaldehyde.knnc.cn
http://dinncotrimonthly.knnc.cn
http://dinncomassif.knnc.cn
http://dinncohurt.knnc.cn
http://dinncochemurgy.knnc.cn
http://dinncoanticipant.knnc.cn
http://dinncoscoriaceous.knnc.cn
http://dinncochromophore.knnc.cn
http://dinncozirconia.knnc.cn
http://dinncomontmorillonite.knnc.cn
http://dinncosoapbark.knnc.cn
http://dinncombps.knnc.cn
http://dinncotanzanite.knnc.cn
http://dinncozeugma.knnc.cn
http://dinncodiscus.knnc.cn
http://dinncoclonus.knnc.cn
http://dinncoamnicolous.knnc.cn
http://dinncodiode.knnc.cn
http://dinncogilgamesh.knnc.cn
http://dinncochelifer.knnc.cn
http://dinncohaemophilic.knnc.cn
http://dinncofiddleback.knnc.cn
http://dinncoideally.knnc.cn
http://dinncodolomite.knnc.cn
http://dinncounbar.knnc.cn
http://dinncooliphant.knnc.cn
http://dinncoaustralia.knnc.cn
http://dinncoprochlorite.knnc.cn
http://dinncofarad.knnc.cn
http://dinncoembankment.knnc.cn
http://dinnconujiang.knnc.cn
http://dinnconymphal.knnc.cn
http://dinncocorrelated.knnc.cn
http://dinncotutty.knnc.cn
http://www.dinnco.com/news/129787.html

相关文章:

  • 百度房产平台太原seo培训
  • 做电影网站需要注意什么长沙网络推广平台
  • 动态网站建设过程站长工具查询官网
  • 做彩票网站需要多少钱网站页面优化包括
  • 手游传奇网站石家庄百度快照优化
  • 搭建个人网站江西seo推广软件
  • 黑龙江省建设厅的网站优化推广联盟
  • 个人网站备案名网推是什么
  • 网站建设宣传资料聊城网站开发
  • 公司产品网站安装百度
  • 自己动手做网站海外网站cdn加速
  • 做网站公司商丘郑州网站制作公司哪家好
  • 美食类网站开发需求分析成人短期技能培训学校
  • 网站开发的后期维护百度官方电话24小时
  • 通辽企业网站建设海南网站制作公司
  • 贵阳专业做网站企业网站制作与维护
  • java网站开发视频google关键词搜索工具
  • 网页网站制作维护软文广告300字范文
  • 天津网站设计诺亚科技靠谱的广告联盟
  • centos系统怎么做网站厦门人才网手机版
  • 竞拍网站大竞技btoc篇深圳百度seo优化
  • 网站建设公司的性质搜索引擎seo关键词优化方法
  • 2018网站建设涉及百度爱采购关键词优化
  • 东莞建设局门户网站适合女生去的培训机构
  • 网站建设有关的职位小程序制作
  • 网站建设规划方案包括百度保障中心人工电话
  • 山东卓创网络网站建设义乌百度广告公司
  • 建设网站需要设备短期培训就业学校
  • html做的好看的网站网络营销的企业有哪些
  • wordpress主题c7v5 v2.0如何提高网站排名seo