ウェブアプリケーション,インジェクション,コマンドインジェクション

androidのNAND flashの特徴 つづき

androidのNAND flashメモリ その2

NAND flashのつづき

chunkは一度しか書込みができず、再書込みの必要があるときには、
まずブロック前代を削除しなければなりません。
NAND flashは様々な制限や限度を課し、そのため開発者や、
ファイルシステムはflashが拘束の中でも効果的に働くものだと
気づかなければなりません。
従来のハードドライブではドライブの管理のために、
ファームウェアが搭載されています。
NAND flashが遣われているandroidデバイスではコントローラで
搭載されていません。
すべてのメモリ管理はNAND flashとやり取りしているソフトウェアで
実施されなければなりません。
その中で二つの重要な技術は、
error-correcting(ECC エラー検出訂正)と
wear-leveling(媒体の延命技術)です。
この二つの技術は、
フォレンジックとデータリカバリに重要な影響を持ちます。
まず、ECC(error-correcting)はアルゴリズムにある技術で、
読み書き操作でのデータエラーを検査するのに使われ、
いくつかのエラーを大急ぎで集めます。
NAND flashが使用法によっては、
時間オーバーになると評判を落としてから、
ページやブロックの調子がおかしくなったり、
データのリカバリが保存されたときに、
検査できるようにしなければなりません。
いくつかのエラーの後や、失敗した操作は限界を超えます。
(大抵、3回くらいの失敗で)
そのページやブロックはbadのマークをされ、
badのブロックテーブルに加えられます。
二つ目の重要なアルゴリズムは、
AndroidのNAND flashの効率的な管理に使われる
wear-levelingコードで、
データの書込みをNAND flash全体に行き渡らせ、
ひとつのエリアを過剰に使用することを避けます。
それで消耗しているブロックをすばやくはずします。
NAND flashを使用するハードウェアデバイス、removableUSB thumbや
solid state drive(SSD)のようなものは、
デバイスでまとめられたコントローラロジックがあります。
このロジックはbadとマークされたブロックの管理をする、
error-correcting(ECC)とwear-levelingを含む機能を持ちます。
しかし、AndroidデバイスはNAND flashの内部構成を直接、統合するように
設計されていて、ソフトウェアを管理する部分は
それらの重要な機能を提供することが必要とされてます。
このソフトウェアを管理する部分は、
Memory Technology Devicer(MTD)システムだった
NAND flashを管理するために選択されました。
MTDはNAND flashと同じようなデバイスに必要なアドレスに開発され、
それら独特の特性のためです。
MTD以前は、Linuxが主要な文字デバイス、
ブロックデバイスをサポートしてました。
どちらのデバイスも新しく開発されたメモリデバイスの独特な
プロパティに取り組むことはありませんでした。
さらに、NAND flashでは従来のハードドライブのように
厳密なブロックデバイスではなく、ブロックデバイスをさらす特性は、
開発者に開発とサポートすることを手助けします。
MTDが影響していることで、
Androidは今、Flash Transition Layer(FTL)の必要性がでてきて、
NAND flashと効率的にやり取りすることが必要とされます。
このアプローチを取ることで、
AndroidはNAND flashプロバイダーの小さなサブセットと
関連させたコントローラを使っている中に
製品がロックされていませんでした。
代わりに、それらはすべてのNAND flashをフリーで使うことができ、
その時、MTDと”単純に”統合され、
NAND flashの広い範囲をサポートします。
Androidでは、NAND flashにブロックインターフェイスを
提供するだけでなく、ECCもさることながら、
wear-levelingや、他の非常に重要な機能を提供します。
ECC(erorr-correcting code)と他のchunkメタデータは、
out of band(OOB)や補助エリアと呼ばれる逆にされたエリアに
保存されています。
OOBはNAND flashにあるそれぞれのchunkのあとに
直接配置されています。
一方、chunk、ブロック、OOBのレイアウトは、設定可能です。
現在のところ、
ほとんどAndroidデバイスは64から成る128KBのブロックを持ち、
2048バイトのchunkはそれぞれ64バイトのOOBとくっついています。
OOBはMTDで管理される情報を保存するだけでなく、
ファイルシステムにおいて重要なメタデータの保存もでき、
提供されたファイルシステムは、NAND flashの認知です。
一方、システムブロックを128KBで示します。
64OOBを追加したときに、それぞれ64バイトのサイズにされ、
4096バイトが追加されてトー立つバイトにもたらされていて、
NAND flashを132KBするのに使われます。
Androidデバイスで、/proc/mtdファイルを見ていくことで、
MTDパーテーションを決定できます。

7つのMTDパーテーションがあり、続くセクションはそれらが
マウントされた部分を試行します。
そして、ファイルの発見とディレクトリの
ハイレベルな概観を提供します。
サイズと削除サイズは双方16進数の値で、
重要なMTD/NAND flashプロパティを提供します。
削除サイズが指定するそれぞれのブロックサイズは、
0x20000や131,072バイトや10進数では128KB(128×1024)です。
これはブロック形式で一貫していて、特に64ページ、
それぞれ2048(2KB)のサイズです。
そのサイズ列はそのパーテーションの全体のサイズを指定します。
この例は下記の表にあります。

サイズ(16進数)名前サイズ(10進数、バイト単位) サイズ(KB)サイズ(MB)
0xa0000misc355,3606400.6
0x480000recovery4,718,59246084.5
0x300000boot3,145,72830723.0
0x800000system260,046,848253952248.0
0xa0000local655,3606400.6
0x2800000cache41,943,0404096040.0
0x9500000datadata156,237,824152576149.0

この表の値は、舞うとされたファイルのリスト化と
それらの合計、使用状態と利用可能なスペースを提供するdf
disk freeコマンドを使って確認することもできます。
コマンドの打ち方は、
$ asb shell df /system
このようにそのサイズは/proc/mtdの中にみられ、
両方の変換の中で、dfコマンドで表示されるように一貫しています。
これで、Android用のMTDとNAND flashの体系的に確立し、
Androidを使って様々なファイルシステムを試せます。

ホーム
便利堂ロゴ
inserted by FC2 system