19 组织文件

Posted xuan01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19 组织文件相关的知识,希望对你有一定的参考价值。

文件系统:

把许多文件存储在某一种储存设备上;方便对各种文件执行打开关闭、读写等操作;FAT32、NTFS、Ext4、Btrfs、ZFS、HPFS 等,这些都是不同的文件系统建立的文件系统格式。

文件系统是一个设备:

文件系统的实现:写好了硬盘驱动程序,也可以让文件系统设备驱动程序处理好了数据,然后发送给硬盘设备驱动程序,让其写入到硬盘中去;

文件格式与储存块:

类Unix和Windows系统中,文件就是一个可以动态增加、减少的线性字节数组;

文件系统把文件数据定义为一个动态的线性字节数组,又分成一个个数据块,又因为不同的储存设备的物理存储块大小不一样,我们把数据块定义为文件系统逻辑块,大小为4096字节;

组织文件:

采用目录组织文件,树状结构;

文件系统的数据结构:

文件系统元数据:文件系统本身的一些数据结构;

设计超级块:

文件系统的超级块/文件系统描述块:文件系统标识、版本、状态、存储介质大小、文件系统逻辑存储块大小、位图所在存储块等包含这些数据结构;

rfssublk_t 结构,包含rfsdir_t 目录结构,超级块保存在储存设备的第一个4KB大小的逻辑存储块中;

位图:

利用一块储存空间中所有位的状态,达到映射储存块状态(是否已分配)的目的,

文件目录:

rfsdir_t 结构表示目录数据结构,包含一个文件数据管理头的块号,按块访问;

 文件管理头:

fimgrhd_t 结构表示一个文件管理头,包含文件的详细信息,其中filblks_t 结构类型的 fmd_fleblk数组表示 文件占用逻辑储存块的数组,每个元素保存一片连续的逻辑储存块;

同时,可以通过类似链表的形式动态增加fimgrhd_t 结构;

 

android Makefile 组织结构

参考技术A 通过前面的分析引入soong后编译流程变成,所有的Android.bp文件被扫描(具体的列表在out/.module_paths/Android.bp.list)生成build.ninja和Android-aosp_arm.mk文件,kati扫描main.mk组织所有的makefile文件生成out/build-aosp_arm.ninja文件,最后将两个ninja文件合成一个combined-aosp_arm.ninja

由于soong在运行扫描所有的module,最后建立module之间的依赖关系,因此android.bp之间的先后顺序不影响后续的ninja文件生成。各个makefile之间的引用顺序如下图

在我们日常配置的AndroidProduct.mk和Boardconfig.mk文件在build/core/envsetup.mk中顺序引用,还有所有的Andriod.mk文件扫描产生的Android.mk.list在out/.module_paths下,其中这个文件的列表中包含了AndroidBoard.mk

以上是关于19 组织文件的主要内容,如果未能解决你的问题,请参考以下文章

前端项目文件组织与组件命名

.知识战略组织级项目流程管理

19-classpathjar模块

如何在 Visual Studio 中组织大型项目(>300 个类)的 F# 源?

如何在 SQL 数据库中组织嵌套的 JSON 对象数据?

TypeScript(19): 模块