YAFFS - YAFFS

YAFFS
Geliştirici (ler)Charles Manning
Ad SoyadYine Başka Bir Flash Dosya Sistemi
Diğer
Destekleniyor işletim sistemleriAndroid, Firefox OS, Linux, Windows CE, pSOS, RTEMS, eCos, KonuX

Yafflar (Yine Başka Bir Flash Dosya Sistemi) Aleph One şirketi için Charles Manning tarafından tasarlanmış ve yazılmıştır.

Yaffs1, bu dosya sisteminin ilk sürümüydü ve o zamanlar mevcut olan 512 ile NAND yongaları için tasarlandı bayt sayfa boyutu (+ 16 bayt yedek (OOB; Bant Dışı) alanı). Çalışma 2002'de başladı ve ilk olarak o yıl piyasaya sürüldü. İlk çalışmanın sponsorluğunu Toby Churchill Ltd ve Brightstar Engineering yaptı.

Bunlar daha eski cips ayrıca genellikle sayfa başına 2 veya 3 yazma döngüsüne izin verir.[1] YAFFS bundan faydalanır: kirli sayfalar belirli bir boş alan baytına yazarak işaretlenir. Daha yeni NAND flash yongaları daha büyük sayfalara, ilk 2K sayfaya (+ 64 bayt OOB), daha sonra 4K'ya ve daha katı yazma gereksinimlerine sahiptir. Silme bloğu (128 kilobayt) içindeki her sayfaya sıralı olarak yazılmalı ve her sayfa yalnızca bir kez yazılmalıdır.[kaynak belirtilmeli ]

Bir "bir kez yaz" ("bir kez yazma özelliği") uygulayan bir depolama sistemi tasarlamanın çeşitli avantajları vardır.[2]

YAFFS2, bu yeni çipleri barındıracak şekilde tasarlanmıştır. YAFFS1 kaynak koduna dayanıyordu, en büyük fark, dahili yapıların 512 bayt boyutlandırma varsayacak şekilde sabitlenmemesi ve her yazılı sayfaya bir blok sıra numarası yerleştirilmesidir. Bu şekilde, "bir kez yaz" kuralı ihlal edilmeden daha eski sayfaların üzerine mantıksal olarak yazılabilir. 2003 yılının sonlarında piyasaya sürüldü.

YAFFS sağlam günlük yapılı dosya sistemi Bu tutar veri bütünlüğü öncelikli olarak. İkincil bir YAFFS hedefi yüksek performanstır. YAFFS genellikle çoğu alternatiften daha iyi performans gösterir.[3] Ayrıca taşınabilir olacak şekilde tasarlanmıştır ve Linux, Çekinme, pSOS, RTEMS, eCos, KonuX ve çeşitli özel amaçlı işletim sistemleri. Bir 'YAFFS / Direct' değişkeni, işletim sistemi, yerleşik işletim sistemi veya önyükleyicinin olmadığı durumlarda kullanılır: aynı çekirdek dosya sistemine sahiptir, ancak hem daha yüksek hem de daha düşük seviyeli kod ve NAND flash donanımı için daha basit arayüz.

YAFFS kod tabanı, her ikisi altında lisanslıdır. GPL ve Aleph One'dan temin edilebilen ürün bazlı lisanslar altında.

YAFFS1

İçin özel bir prosedür yoktur. başlatmak Flash belleği silmenin ötesinde bir YAFFS dosya sistemi. Kötü bir blokla karşılaşıldığında, YAFFS, bloğun yedek alanının beşinci baytını işaretlemek için akıllı ortam şemasını izler. Bu şekilde işaretlenmiş bloklar bundan sonra ayrılmamış olarak kalır.[açıklama gerekli ]

Dosya verilerini yazmak için, YAFFS başlangıçta dosyayı tanımlayan tam bir sayfa (YAFFS terminolojisinde yığın) yazar. meta veriler, gibi zaman damgaları, ad, yol, vb. Yeni dosyaya benzersiz bir nesne kimlik numarası atanır; dosyadaki her veri parçası, yedek alanda bu benzersiz nesne kimliğini içerecektir. YAFFS, bir ağaç yapısını korur Veri deposu Bu parçaların fiziksel konumu. Bir yığın artık geçerli olmadığında (dosya silindiğinde veya dosyanın bazı kısımlarının üzerine yazıldığında), YAFFS, yığının yedek alanındaki belirli bir baytı "kirli" olarak işaretler. Tüm bir blok (32 sayfa) kirli olarak işaretlendiğinde, YAFFS bloğu silebilir ve alanı geri alabilir. Dosya sisteminin boş alanı azaldığında, YAFFS bir grup iyi sayfayı yeni bir blokta birleştirir. YAFFS daha sonra orijinal blokların her birinde kirli sayfaların kullandığı alanı geri alır.

Bir YAFFS sistemi bağlar a NAND flaş cihaz, yedek alanını tarayarak geçerli verileri kontrol etmek için her bloğu ziyaret etmelidir. Bu bilgilerle daha sonra bellekte yerleşik ağaç veri yapısını yeniden oluşturur.

YAFFS2

YAFFS2, konsept olarak YAFFS1'e benzer ve aynı kodun çoğunu paylaşır; YAFFS2 kod tabanı, geriye dönük uyumluluk aracılığıyla YAFFS1 veri formatlarını destekler. Temel fark, YAFFS2'nin modern NAND flaşın "bir kez yaz" gereksinimini karşılamak için önemli çemberlerden geçmesi gerektiğidir.[4]

YAFFS2, her yeni yazılan bloğu bir sıra numarasıyla işaretler. monoton olarak artan. Parçaların dizisi, blok sıra numarasından ve blok içindeki öbek ofsetinden çıkarılabilir. Böylece, YAFFS2 flaşı taradığında ve aynı Nesne Kimliği ve Parça Numaralarına sahip birden çok parça tespit ettiğinde, en büyük sıra numarasını alarak hangisinin kullanılacağını seçebilir. Verimlilik nedenlerinden dolayı YAFFS2, aynı zamanda küçültme başlıkları konseptini de sunmaktadır. Örneğin, bir dosya daha küçük bir boyuta yeniden boyutlandırıldığında, YAFFS1 etkilenen tüm parçaları kirli olarak işaretleyecektir - YAFFS2 bunu "bir kez yaz" kuralı nedeniyle yapamaz. YAFFS2 bunun yerine, bu noktadan önceki belirli sayıda sayfanın geçersiz olduğunu belirten bir "başlık küçültme" yazar. Bu, YAFFS2'nin sistem yeniden başlatıldığında dosya sisteminin son durumunu yeniden yapılandırmasını sağlar.

YAFFS2, farklı geometrilere, kötü blok işleme kurallarına vb. Sahip çok çeşitli flaş parçalarıyla kullanılmasına izin veren daha soyut bir NAND flaş tanımı kullanır.

YAFFS2 daha sonra aşağıdakiler için destek ekledi: kontrol noktası belirleme, normal montaj taramasını atlayarak çok hızlı montaj sürelerine izin verir. Performans değişebilir, ancak 2 saniye için 3 saniyelik montaj süreleri GB rapor edildi.[kaynak belirtilmeli ]

Ayrıca bakınız

Referanslar

  1. ^ Bir flaş silme bloğunun silinmesi, tüm bitlerini 1'lere ayarlar ve bir yazma bloğu yazmak (bir silme bloğundan daha küçük, ancak muhtemelen bir dosya sistemi bloğundan daha büyük), seçilen bitleri 0'lara ayarlar. 0'a yazılan bitler daha önce yazma bloğunda 1 ise bloğa bir veya iki daha fazla yazma sürdürülebilir. Zaten 0 olan bir bite 0 yazmak, 0 "yapışma" yapma riskini taşır, yani biti 1'e döndürmek için birden fazla silme gerekebilir.[kaynak belirtilmeli ] Söylemeye gerek yok, bu çoklu yazma uygulaması flash satıcıları tarafından genel olarak test edilmemiş ve garanti edilmemiştir veSLC flash teknolojileri.
  2. ^ Jack B. Dennis; Guang R. Gao; ve Vivek Sarkar."İşbirliğine Dayalı Araştırma: Çok Çekirdekli İşlemcilerle Yüksek Performanslı Hesaplama için Programlama Modelleri ve Depolama Sistemi".p. 4
  3. ^ "Flash dosya sistemi karşılaştırmaları Linux 3.1".
  4. ^ "YAFFS 2 Spesifikasyon ve Geliştirme Notları".

Dış bağlantılar