打印

嵌入式操作系统 文件系统

[复制链接]
1987|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cxsgo|  楼主 | 2013-10-9 20:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
gpjun2008| | 2013-10-10 09:10 | 只看该作者
看了下,学习下

使用特权

评论回复
板凳
wsadadws| | 2013-10-10 09:43 | 只看该作者
好好看看资料吧,

使用特权

评论回复
地板
xuwulian| | 2013-10-10 11:58 | 只看该作者
先看看znFAT,你会有直观的理解

使用特权

评论回复
5
wangflw| | 2013-10-10 14:09 | 只看该作者
要真说定义,那还挺难概括的。知道是什么就行了。

使用特权

评论回复
6
Harvard| | 2013-10-10 14:53 | 只看该作者
上振南的网站看看

使用特权

评论回复
7
江枫渔火| | 2013-10-10 14:59 | 只看该作者
当你的系统中,存储介质不使用文件系统进行数据的存取时,你通常是这样操作:按照数据在存储介质中的起始地址,数据字节数,进行读写操作。这样的操作会比较原始,针对的是数据块,而没有文件的概念。但这是最基本的,底层的必须功能。在底层,存储介质中的每一个存储单元都可以存储文件数据。

当你使用文件系统后,文件系统的所有操作最终都是调用前面提到的底层功能,但文件系统提供给你的是更容易理解的接口,它对整个存储介质的空间进行管理,记录,为了达到这些功能,势必要占用一部分存储空间用作文件系统的一些记录。举个例子,你在文件系统根目录下创建100个目录,目录并非数据,没有任何数据一堆目录也没有意义,但它是文件系统用于管理文件类目的分支标识。它一样会占用存储介质的存储空间。

文件系统就是让你可以通过它提供的接口进行文件操作,现在你可以通过类似 open("\abc\a.txt") 的函数来打开文件系统根目录下的abc目录下a.txt文件,进行读取或改写数据。文件系统知道如何找到a.txt这个数据块在存储介质的位置,而不需要你操心。它的方便之处是显而易见的。

文件系统 听起来 很复杂,所谓系统,只不过是一套特定功能的代码,而且代码量可以很小(fatfs总共才几个文件),它有高内聚低耦合的特性,它的本质作用是承上启下,作为一个中间层,它是对底层存储操作的封装,使上层能使用统一的文件操作接口进行数据存储和管理。

文件系统 对存储介质的管理,是一套规范的数据结构,如何为分区,如何为目录,如何为文件?每个分区,每个目录,每个文件,他们的节点地址在哪?数据长度又是多少?文件的创建时间,权限等等都属于文件系统记录管理的范畴,不同的文件系统使用不同的数据结构来包含这些信息。不同的文件系统程序,是无法解释其他文件系统所写入的数据的。一块崭新的存储卡,上面是没有任何文件系统结构,需要进行格式化,第一次格式化就把存储空间按照规范的数据结构给布置好了。

被文件系统操作的存储介质,如果你再使用底层的接口进行任何地址写入或擦除数据,或者出现某个数据块坏掉,都极有可能使整个存储介质上的数据无法被文件系统正确解释,但这并不代表所有数据丢失,你可能只是无意间破坏了文件系统所布置的数据结构,文件系统就不能正常识别里面的节点,文件内容,或整个存储空间,会要求你重新格式化。

每当出现这样的惨剧时,可以通过一些工具,使用底层读取接口将数据读取,然后根据数据中的一些常见文件数据的特定结构(比如可执行文件的头尾结构,bmp图片的头尾结构),来拆分数据块,还原出丢失的文件。

每当写到这么多的时候,总是忘情的来一句:阿弥陀佛~老衲不行了

使用特权

评论回复
评分
参与人数 2威望 +2 收起 理由
MCU2me + 1
jianjunzaixian + 1
8
liang5319| | 2013-10-10 18:05 | 只看该作者
FATFS///

使用特权

评论回复
9
linfeng24| | 2013-10-10 18:14 | 只看该作者
是操作系统用于明确磁盘或分区上的文件的方法和数据结构,说得通俗些就是操作系统中管理文件的管家,进来了什么东西,按照规定应该往哪里放置,就是由文件系统说了算。

使用特权

评论回复
10
meyong08| | 2013-10-10 18:45 | 只看该作者
学习

使用特权

评论回复
11
cxsgo|  楼主 | 2013-10-13 18:40 | 只看该作者
江枫渔火 发表于 2013-10-10 14:59
当你的系统中,存储介质不使用文件系统进行数据的存取时,你通常是这样操作:按照数据在存储介质中的起始地 ...

那其实也是操作系统的一部分了?

使用特权

评论回复
12
江枫渔火| | 2013-10-13 21:56 | 只看该作者
cxsgo 发表于 2013-10-13 18:40
那其实也是操作系统的一部分了?

你知道操作系统是什么吧?
嵌入式中的实时操作系统大部分是不必须文件系统的,拿ucos来说,最核心的无非是解决任务问题,核心功能是解决多任务的调度切换,至于任务,如果不涉及到用文件系统方式存储文件的功能要求,就不需要加入文件系统代码。因为这个操作系统本身的运行是不需要文件系统的。
但如果是linux这样的系统,本身的运行是需要文件系统的,从系统运行开始就确定了根文件系统的根,之后加载的各种模块都是文件的调用,都是在文件系统下寻径,所以没有文件系统,是不能运行的。这类系统也可以通过文件方式加载应用程序,而嵌入式中的系统,大多是和系统一起烧录的。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
cxsgo + 1 很给力!
13
jianjunzaixian| | 2013-10-14 09:17 | 只看该作者
学习了   

使用特权

评论回复
14
youluo235| | 2013-10-14 15:20 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

58

帖子

1

粉丝