2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > MTD 文件系统 存储器分区的个人理解

MTD 文件系统 存储器分区的个人理解

时间:2021-10-18 04:18:11

相关推荐

MTD 文件系统 存储器分区的个人理解

MTD是 memory technology device的简称 (奇怪的中文译名内存技术设备)个人理解:MTD实际上是跟VFS差不多的东西,VFS是虚拟文件系统,在VFS中有对各种具体文件系统的接口,将虚拟文件系统向上能提供的接口完成,通过调用下层具体文件系统接口即可实现。 MTD即提供统一的上层接口,由下层具体设备分别实现即可形成虚拟的存储设备访问接口。关键在于只要上层存在对MTD实现接口的下层具体存储设备的实现(或说驱动程序)存在即可。

那么问题来了:存在分区与文件系统关系的问题 分区是对整块存储器而言,存储器分区意义在哪里?

存储器分区即可以实现对不同的分区使用不同的文件系统。这就是分区与文件系统的关系。 文件系统是建立于管理存储器的一种程序,分区是将存储器分别管理的一种做法。

补充:文件系统实际上是什么?

文件系统是一个程序,管理harddisk的程序。实际上文件系统应该包含两部分,一部分是软件逻辑,另一部分是记录文件归档所需要的数据结构。

软件逻辑实际上可以作为操作系统内核的一部分而存在。是提供操作系统访问存储器的软件接口。

在linux中,文件系统不是一种运行中的软件,而是一堆等待被调用的代码,有点像驱动,但又不纯粹是驱动,感觉它并没有直接操控硬件。再用户需要存储文件的时候,如使用touch命令

touch test.c ;

这个时候就会创建一个文件,这个文件有目录(path),文件名,等各种文件信息。对应不同的文件系统就会以不同的数据组织方式登记在存储器分区中了。而登记和文件信息的组织方式就是再调用文件系统的那一堆驻留内核的 代码来完成的。

而记录文件归档所需要的数据结构则是在实际的存储器空间之外的存在harddisk固定位置的一堆数据,每次存取文件或一切改变文件归档的操作都会对这里的数据结构产生修改。恩,大概文件系统就是这样子的东西了。这样应该还满清楚的。

嗯,大致就是这样子的。

在linux下的/dev/sda 表示的就是一块硬盘,sda表示的是sata接口的硬盘,还有什么hda或者mmcblk之类的嵌入式里面使用的各种存储器。然后通常可以看到会有sda1,sda2等等设备文件,这些文件则表示这个硬盘的分区,那它是怎么得到的呢,通过读取硬盘的前64字节(MBR分区信息)来获取分区信息。要使用分区,则需要格式化你要使用的分区。

mkfs.ext3 /dev/sda1 ,如果没记错,这样就可以了。linux下有VFS这种通用的虚拟接口,可以直接mount /dev/sda1 /mnt 下使用该分区。

而在windows下通常是无须挂载这一过程的,系统会自动“挂载”并分配盘符。但是分区信息跟文件系统都是一种标准是通用的。

另外还有一种分区的标准是gpt。

tiny6410的nandflash在linux中的分区情况如下:(此处可能需要自己定义,自己进行自定义的修改)而现在使用的tiny6410的nand flash为1g 实际分区情况大概为三个区 1 uboot(bootloader程序区域) 2 kernel(内核镜像zImage区域) { 这里的zImage是内核镜像vmImage压缩以后,再链接上解压缩程序与一般的初始化系统程序后的一段程序 } 3 file(文件存放区域) { 这里会装入文件系统,通过文件系统提供对此空间访问以及读写的接口,所以文件系统也跟驱动程序差不多。 } 此处的1与2之间存在着空隙,就是说在内核代码规定的这三个分区中bootloader程序与kernel区域之间存在没有使用的空间,这一块空间通常存放的是由bootloader程序提交的用于kernel启动的命令行参数(command_line)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。