亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? yaffs2.htm

?? armer9 s3c2410開發平臺的文件系統。linux2.4.18 源代碼??梢灾苯邮褂?
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0041)http://www.aleph1.co.uk/yaffs/yaffs2.html -->
<HTML><HEAD><TITLE></TITLE>
<META content="text/html; charset=iso-8859-1" http-equiv=CONTENT-TYPE>
<META content="MSHTML 5.00.3700.6699" name=GENERATOR>
<META content=" " name=AUTHOR>
<META content=20021004;15061000 name=CREATED>
<META content=" " name=CHANGEDBY>
<META content=20021104;13435900 name=CHANGED></HEAD>
<BODY>
<H1>YAFFS2</H1>
<H4>Summary</H4>
<P>The original motivation for YAFFS 2 was to add support for the new NAND with 
2kB pages instead of 512-byte pages and strictly sequential page writing order. 
</P>
<P>To achieve this, a new design is used which also realises the following 
benefits:</P>
<UL>
  <LI>
  <P>zero page rewrites means faster operation. (YAFFS1 uses a single rewrite in 
  the spare area to delete a page).</P>
  <LI>
  <P>ability to exploit simultaneous page programming on some chips.</P>
  <LI>
  <P>improves performance relative to YAFFS1 speed(write:1.5x to 5x, delete: 4x, 
  garbage collection: 2x)</P>
  <LI>
  <P>lower RAM footprint (approx. 25% to 50% of YAFFS1).</P>
  <LI>
  <P>Can support Toshiba/Sandisk MLC parts.</P></LI></UL>
<P>Most of YAFFS and YAFFS2 code is common, therefore the code will likely be 
kept common with YAFFS vs YAFFS2 being run-time selected.</P>
<H4>Method</H4>
<P>The main philosophical difference between YAFFS and YAFFS2 is how discarded 
status is tracked. Since we can't do any re-writing, we can't use the 
"discarded" flags in YAFFS2.</P>
<P><BR><BR></P>
<P>Instead YAFFS2 uses two mechanisms to resolve data state.</P>
<UL>
  <LI>
  <P>YAFFS2 chunks have more tag information, including a block sequence Id. 
  From that we can determine the chunk sequence Id since the chunks are 
  allocated sequentially in a block. Thus we always know the patch order for all 
  chunks in the system.</P>
  <LI>
  <P>The above helps us track stale -vs- fresh data, but does not help determine 
  when a file/object is deleted. Deletion is achieved by moving the object to 
  the "unlinked" directory. We also keep track of the number of chunks (both 
  stale and current) in the system for each object. While this number indicates 
  that there are still chunks associated with this object we keep the deletion 
  record. When the last trace of the object has been really erased from NAND, we 
  can forget about the deletion record too. </P>
  <LI>
  <P>Since there is no deletion, a resize (shrinking) of a file will still have 
  valid data chunks past the end of file on the NAND. However, we write a new 
  ObjectHeader at the time of the resize, therefore this shows the shrunken file 
  size.</P></LI></UL>
<P>This changes erasure slightly:</P>
<UL>
  <LI>
  <P>During garbage collection we can't just look at chunk state flags, instead 
  we must read the tags of each chunk to determine which object's chunk count we 
  must decrement. This step must also be performed when a block is erased (as 
  part of deletion).</P></LI></UL>
<P>This makes erasure &amp; garbage collection more expensive (by adding reads), 
but remember that ion YAFFS2 we don't need to do page deletions which are much 
more expensive operations. Thus, all-up YAFFS2 wins.</P>
<H4>Tag structure</H4>
<P>Each chunk in YAFFS2 has the following information:</P>
<TABLE border=1 cellPadding=4 cellSpacing=3 width="100%">
  <COLGROUP>
  <COL width=45>
  <COL width=83>
  <COL width=64>
  <COL width=64>
  <THEAD>
  <TR vAlign=top>
    <TH width="18%">
      <P>Field</P></TH>
    <TH width="32%">
      <P>Comment</P></TH>
    <TH width="25%">
      <P>Size for 1kb chunks</P></TH>
    <TH width="25%">
      <P>Size for 2kB chunks</P></TH></TR></THEAD>
  <TBODY>
  <TR vAlign=top>
    <TD width="18%">
      <P>blockState</P></TD>
    <TD width="32%">
      <P>Block state. non-0xFF for bad block</P></TD>
    <TD width="25%">
      <P>1 byte</P></TD>
    <TD width="25%">
      <P>1 byte</P></TD></TR>
  <TR vAlign=top>
    <TD width="18%">
      <P>chunkId</P></TD>
    <TD width="32%">
      <P>32-bit chunk Id</P></TD>
    <TD width="25%">
      <P>4 bytes</P></TD>
    <TD width="25%">
      <P>4 bytes</P></TD></TR>
  <TR vAlign=top>
    <TD width="18%">
      <P>objectId</P></TD>
    <TD width="32%">
      <P>32-bit object Id</P></TD>
    <TD width="25%">
      <P>4 bytes</P></TD>
    <TD width="25%">
      <P>4 bytes</P></TD></TR>
  <TR vAlign=top>
    <TD width="18%">
      <P>nBytes</P></TD>
    <TD width="32%">
      <P>Number of data bytes in this chunk</P></TD>
    <TD width="25%">
      <P>2 bytes</P></TD>
    <TD width="25%">
      <P>2 bytes</P></TD></TR>
  <TR vAlign=top>
    <TD width="18%">
      <P>blockSequence</P></TD>
    <TD width="32%">
      <P>sequence number for this block</P></TD>
    <TD width="25%">
      <P>4 bytes</P></TD>
    <TD width="25%">
      <P>4 bytes</P></TD></TR>
  <TR vAlign=top>
    <TD width="18%">
      <P>tagsEcc</P></TD>
    <TD width="32%">
      <P>ECC on tags area</P></TD>
    <TD width="25%">
      <P>3 bytes</P></TD>
    <TD width="25%">
      <P>3 bytes</P></TD></TR>
  <TR vAlign=top>
    <TD width="18%">
      <P>ecc</P></TD>
    <TD width="32%">
      <P>ECC, 3 bytes/256 bytes of data</P></TD>
    <TD width="25%">
      <P>12 bytes</P></TD>
    <TD width="25%">
      <P>24 bytes</P></TD></TR>
  <TR vAlign=top>
    <TD width="18%">
      <P><B>Total</B></P></TD>
    <TD width="32%">
      <P><BR></P></TD>
    <TD width="25%">
      <P align=left><B>30 bytes</B></P></TD>
    <TD width="25%">
      <P><B>42 bytes</B></P></TD></TR></TBODY></TABLE>
<P><BR><BR></P>
<P>To get enough spare bytes for this tagging structure requires a chunk-size of 
at least 1kB.</P>
<P>The blockSequence increments each time a block is allocated. (ie. the first 
block allocated is block 1, and so on).</P>
<H4>Scanning</H4>
<P>The only reason we need to keep track of data status on NAND is to be able to 
recreate the file system state during scanning. Since we no longer have chunk 
deletion status flags we use a slightly different process for scanning a YAFFS2 
system.</P>
<P>In effect, YAFFS2 recreates its state by "replaying the tape". ie. it scans 
the chunks in their allocation order (block sequence Id order) rather than in 
their order on the media. This implies that at start up, the blocks must be read 
and their block sequence determined.</P>
<H4>Performance</H4>
<P>Times for 2kB read(units of 1uS).</P>
<TABLE border=1 cellPadding=4 cellSpacing=3 width=937>
  <COLGROUP>
  <COL width=175>
  <COL width=176>
  <COL width=177>
  <COL width=176>
  <COL width=173>
  <THEAD>
  <TR vAlign=top>
    <TH width=175>
      <P>Operation</P></TH>
    <TH width=176>
      <P>YAFFS1</P></TH>
    <TH width=177>
      <P>YAFFS2 (512b pages)</P></TH>
    <TH width=176>
      <P>YAFFS2 (2kB pages)</P></TH>
    <TH width=173>
      <P>YAFFS2(2kB pages, x16)</P></TH></TR></THEAD>
  <TBODY>
  <TR>
    <TD vAlign=top width=175>
      <P>Seek </P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="40">
      <P align=right>40</P></TD>
    <TD vAlign=bottom width=177 SDNUM="5129;" SDVAL="40">
      <P align=right>40</P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="10">
      <P align=right>10</P></TD>
    <TD vAlign=bottom width=173 SDNUM="5129;" SDVAL="10">
      <P align=right>10</P></TD></TR>
  <TR>
    <TD vAlign=top width=175>
      <P>Read</P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="220">
      <P align=right>220</P></TD>
    <TD vAlign=bottom width=177 SDNUM="5129;" SDVAL="220">
      <P align=right>220</P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="220">
      <P align=right>220</P></TD>
    <TD vAlign=bottom width=173 SDNUM="5129;" SDVAL="110">
      <P align=right>110</P></TD></TR>
  <TR>
    <TD vAlign=top width=175>
      <P>Total</P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="260">
      <P align=right>260</P></TD>
    <TD vAlign=bottom width=177 SDNUM="5129;" SDVAL="260">
      <P align=right>260</P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="230">
      <P align=right>230</P></TD>
    <TD vAlign=bottom width=173 SDNUM="5129;" SDVAL="120">
      <P align=right>120</P></TD></TR>
  <TR>
    <TD vAlign=top width=175>
      <P>MB/s</P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="7.6">
      <P align=right>7.6</P></TD>
    <TD vAlign=bottom width=177 SDNUM="5129;" SDVAL="7.6">
      <P align=right>7.6</P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="8.7">
      <P align=right>8.7</P></TD>
    <TD vAlign=bottom width=173 SDNUM="5129;" SDVAL="16.7">
      <P align=right>16.7</P></TD></TR>
  <TR>
    <TD vAlign=top width=175>
      <P>Relative speed</P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="1">
      <P align=right>1</P></TD>
    <TD vAlign=bottom width=177 SDNUM="5129;" SDVAL="1">
      <P align=right>1</P></TD>
    <TD vAlign=bottom width=176 SDNUM="5129;" SDVAL="1.1">
      <P align=right>1.1</P></TD>
    <TD vAlign=bottom width=173 SDNUM="5129;" SDVAL="2.2">
      <P align=right>2.2</P></TD></TR></TBODY></TABLE>
<P><BR><BR></P>
<P>Times for 2kB writes(units of 1uS).</P>
<TABLE border=1 cellPadding=4 cellSpacing=3 width="100%">
  <COLGROUP>
  <COL width=51>
  <COL width=51>
  <COL width=51>
  <COL width=51>
  <COL width=51>
  <THEAD>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲sss视频在线视频| 91精品国产手机| 国产精品77777竹菊影视小说| 日韩精品一区第一页| 亚洲少妇中出一区| |精品福利一区二区三区| 亚洲国产精品黑人久久久| 中文字幕免费观看一区| 国产精品高潮久久久久无| 日韩美女视频一区| 亚洲免费资源在线播放| 亚洲自拍与偷拍| 日韩中文字幕av电影| 精品亚洲国产成人av制服丝袜 | 欧美日韩一级二级| 欧美精品亚洲一区二区在线播放| 欧美群妇大交群中文字幕| 欧美一区二区三区男人的天堂| 欧美mv日韩mv亚洲| 日本一区二区三区久久久久久久久不 | 日本视频在线一区| 激情深爱一区二区| 成人午夜激情影院| 国产一区二区三区日韩 | 91免费在线看| 欧美日韩免费一区二区三区 | 91精品国产综合久久久久久漫画| 欧美一区二区二区| 精品国产百合女同互慰| 最近日韩中文字幕| 亚洲h动漫在线| 国产福利不卡视频| 欧美日韩大陆在线| 中文字幕 久热精品 视频在线| 亚洲国产精品v| 亚洲自拍偷拍av| 国产一区高清在线| 99热99精品| 日韩欧美精品在线视频| 国产精品久久久久一区| 五月激情综合网| 高清久久久久久| 91黄色激情网站| 精品精品欲导航| 亚洲女子a中天字幕| 日本aⅴ亚洲精品中文乱码| 成人黄色免费短视频| 精品国产污污免费网站入口 | 91年精品国产| 久久久久久久久久久99999| 亚洲午夜久久久久中文字幕久| 国产精品中文欧美| 日韩一卡二卡三卡四卡| 亚洲欧美日韩中文播放| 国产乱对白刺激视频不卡| 欧美精品乱码久久久久久| 中文字幕在线观看一区| 国产精品1区二区.| 日韩欧美一区二区不卡| 午夜精品视频一区| 欧洲亚洲国产日韩| 亚洲裸体在线观看| 成人黄色电影在线| 国产色91在线| 国产激情一区二区三区四区| 欧美不卡123| 免费成人性网站| 日韩一区二区在线观看视频| 亚洲第一精品在线| 欧美网站一区二区| 亚洲青青青在线视频| 99精品桃花视频在线观看| 国产精品欧美极品| 国产成人无遮挡在线视频| 国产亚洲欧美色| 成人网男人的天堂| 国产精品不卡视频| 97se亚洲国产综合自在线 | 亚洲蜜臀av乱码久久精品| 成人激情小说网站| 国产精品国产三级国产有无不卡 | 国产日韩精品一区二区浪潮av| 男人的天堂久久精品| 欧美一级生活片| 久久99这里只有精品| 久久久99久久| 成人毛片在线观看| 亚洲激情在线播放| 欧美日韩国产大片| 蜜臀av一区二区在线免费观看| 欧美一区二区三区四区视频| 久久国产尿小便嘘嘘| www激情久久| 成人一区二区三区在线观看| 亚洲欧美日韩中文字幕一区二区三区| 91毛片在线观看| 婷婷综合五月天| 国产亚洲综合在线| caoporen国产精品视频| 亚洲电影视频在线| 欧美大白屁股肥臀xxxxxx| 国产.欧美.日韩| 亚洲成人手机在线| 精品国产免费视频| 91小视频在线观看| 另类的小说在线视频另类成人小视频在线 | 欧美性大战久久久久久久蜜臀| 天堂蜜桃91精品| 国产欧美精品一区| 欧美日韩亚洲综合| 国产不卡一区视频| 天天色综合成人网| 中文子幕无线码一区tr| 日韩视频123| av在线综合网| 伦理电影国产精品| 亚洲自拍与偷拍| 久久精品日韩一区二区三区| 欧美日韩黄色一区二区| 成人精品鲁一区一区二区| 日韩在线卡一卡二| 亚洲婷婷国产精品电影人久久| 日韩一级完整毛片| 色综合天天在线| 国产一区二区三区四区五区入口 | 老司机午夜精品99久久| 亚洲欧美日韩国产综合| 26uuu精品一区二区三区四区在线| 91视视频在线观看入口直接观看www| 免费高清成人在线| 亚洲成人中文在线| 专区另类欧美日韩| 久久综合国产精品| 日韩精品一区二区三区中文精品| 在线观看亚洲精品视频| 成人综合在线网站| 国产精品一线二线三线| 美女视频一区二区三区| 午夜伦欧美伦电影理论片| 亚洲激情五月婷婷| 亚洲精品免费在线观看| 一区二区中文字幕在线| 国产精品不卡一区二区三区| 国产日韩欧美一区二区三区乱码 | 国产精品久久久久影院| 久久影视一区二区| 久久人人超碰精品| 欧美成人一区二区三区| 欧美va天堂va视频va在线| 这里只有精品免费| 欧美电影一区二区三区| 欧美二区三区91| 欧美一区二区三级| 91精品国产综合久久蜜臀 | 国产精品久久久久久久久快鸭 | 亚洲va欧美va人人爽| 一区二区久久久久| 亚洲影视在线观看| 亚洲成av人片在线观看| 亚洲第一电影网| 毛片av一区二区三区| 国产综合色在线| 国产一区二区不卡| 成人爱爱电影网址| 99re成人在线| 欧美日韩三级一区| 日韩一区二区三区四区五区六区| 91精品国产一区二区三区香蕉| 欧美一区二区三区在线观看视频| 欧美一区二区三区免费| 久久免费电影网| 亚洲欧美在线视频| 一区二区三区精品| 日产欧产美韩系列久久99| 九九九久久久精品| 97久久精品人人做人人爽| 欧洲一区在线电影| 久久综合色一综合色88| 亚洲丝袜精品丝袜在线| 午夜精品福利一区二区三区蜜桃| 奇米色777欧美一区二区| 国产传媒日韩欧美成人| 欧美在线短视频| 久久影院午夜论| 亚洲国产成人91porn| 久久99国产精品久久| 91免费看视频| 日韩欧美国产精品一区| 亚洲免费看黄网站| 国产在线视频不卡二| 欧美日韩中字一区| 久久精品综合网| 日韩va亚洲va欧美va久久| 丁香一区二区三区| 日韩一级片网址| 亚洲精品自拍动漫在线| 国产精品一区二区三区乱码| 欧美性受xxxx| 亚洲欧洲精品一区二区三区| 日韩国产一区二|