Flash 内存面临的挑战
除了前面提到的一些限制以外,管理 flash 设备还面临很多挑战。三个最重大的挑战分别是垃圾收集、管理坏块和平均读写。
垃圾收集
垃圾收集 是一个回收无效块的过程(无效块中包含了一些无效数据)。回收过程包括将有效数据移动到新块,然后擦除无效块从而使它变为可用。如果文件系统的可用空间较少,那么通常将在后台执行这一过程(或者根据需要执行)。
管理坏块
用的时间长了,flash 设备就会出现坏块,甚至在出厂时就会因出现坏块而不能使用。如果 flash 操作(例如 Erase)失败,或者 Write 操作无效(通过无效的错误校正代码发现,Error Correction Code,ECC),那么说明出现了坏块。
识别出坏块后,将在 flash 内部将这些坏块标记到一个坏块表中。具体操作取决于设备,但是可以通过一组独立的预留块来(不同于普通数据块管理)实现。对坏块进行处理的过程 — 不管是出厂时就有还是在使用过程中出现 — 称为坏块管理。在某些情况下,可以通过一个内部微控制器在硬件中实现,因此对于上层文件系统是透明的。
平均读写
前面提到 flash 设备属于耗损品:在变成坏块以前,可以执行有限次数的反复的 Erase 操作(因此必须由坏块管理进行标记)。平均读写算法能够最大化 flash 的寿命。平均读写有两种形式:动态平均读写 和静态平均读写 。
动态平均读写解决了块的 Erase 周期的次数限制。动态平均读写算法并不是随机使用可用的块,而是平均使用块,因此,每个块都获得了相同的使用机会。静态平均读写算法解决了一个更有趣的问题。除了最大化 Erase 周期的次数外,某些 flash 设备在两个 Erase 周期之间还受到最大化 Read 周期的影响。这意味着如果数据在块中存储的时间太长并且被读了很多次,数据会逐渐消耗直至丢失。静态平均读写算法解决了这一问题,因为它可以定期将数据移动到新块。
相关专题
- 系统优化大全 (19029篇文章)
- 系统安全设置 (24757篇文章)
- 系统安装手册 (21854篇文章)
- 系统备份专题 (18430篇文章)
- Linux集群技术 (9282篇文章)
- 体验Linux的音影世界 (8947篇文章)
- Linux驱动大全 (9772篇文章)
- Linux下的路由的配置与应用 (12871篇文章)
- Linux命令简介 (10878篇文章)
- 系统维护手册 (17800篇文章)
- Ubuntu 8.04 中开启3D桌面特效与设置方法 (498次浏览)
- Ubuntu发烧友三部曲 进阶篇 (183次浏览)
- 经典文档:Linux网络安全配置基础详解 (149次浏览)
- 七大操作系统一季度漏洞比拼 (130次浏览)
- 用 Wubi 安装 Ubuntu 8.04 只需五步 (115次浏览)
- 实用技巧 从硬盘安装Fedora-9-i386-DVD (106次浏览)
- Ubuntu 8.04 使用感受及思考 (102次浏览)
- Linux IPv6环境下DNS服务器配置攻略 (87次浏览)
- 随身系统:Puppy Linux 4.00 初体验 (80次浏览)
- ubuntu8.04桌面边框的美化 (76次浏览)



