YAFFS - YAFFS

YAFFS
Geliştirici (ler) Charles Manning
Ad Soyad Yine Başka Bir Flash Dosya Sistemi
Diğer
Desteklenen işletim sistemleri Android , Firefox OS , Linux , Windows CE , pSOS , RTEMS , eCos , ThreadX

Yaffs ( Yine Another Flash File System ), Aleph One şirketi için Charles Manning tarafından tasarlanan ve yazılan bir dosya sistemidir .

Yaffs1, bu dosya sisteminin ilk sürümüydü ve 512 bayt sayfa boyutuna (+ 16 bayt yedek (OOB; Bant Dışı) alan) sahip o zamanki NAND yongaları için tasarlandı . Çalışma 2002'de başladı ve ilk olarak o yıl piyasaya sürüldü. İlk çalışma, Toby Churchill Ltd ve Brightstar Engineering tarafından desteklendi.

Bu eski çipler ayrıca genellikle sayfa başına 2 veya 3 yazma döngüsüne izin verir. YAFFS bundan yararlanır: kirli sayfalar , belirli bir yedek alan baytına yazılarak 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.

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

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ının yerleştirilmesidir. Bu şekilde, eski sayfaların üzerine "bir kez yaz" kuralı ihlal edilmeden mantıksal olarak yazılabilir. 2003 yılının sonlarında piyasaya sürüldü.

YAFFS, veri bütünlüğünü yüksek bir öncelik olarak tutan sağlam bir günlük yapılı dosya sistemidir . İkincil bir YAFFS hedefi yüksek performanstır. YAFFS tipik olarak çoğu alternatiften daha iyi performans gösterir. Ayrıca taşınabilir olması için tasarlanmıştır ve Linux , WinCE , pSOS , RTEMS , eCos , ThreadX ve çeşitli özel amaçlı işletim sistemlerinde kullanılmıştır. İşletim sistemi, gömülü işletim sistemi veya önyükleyicinin olmadığı durumlarda bir 'YAFFS / Direct' çeşidi 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ına daha basit arabirim sağlar.

YAFFS kod tabanı, hem GPL kapsamında hem de Aleph One'dan temin edilebilen ürün bazlı lisanslar kapsamında lisanslanmıştır.

YAFFS1

Flash belleği silmenin ötesinde bir YAFFS dosya sistemini başlatmak için özel bir prosedür yoktur . 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.

Dosya verilerini yazmak için, YAFFS başlangıçta zaman damgaları , ad, yol vb. Gibi dosya meta verilerini tanımlayan bir tam sayfa (YAFFS terminolojisinde yığın) yazar . Yeni dosyaya benzersiz bir nesne kimlik numarası atanır; dosyadaki her veri parçası, yedek alan içinde bu benzersiz nesne kimliğini içerecektir. YAFFS , bu yığınların fiziksel konumunun RAM'de bir ağaç yapısını korur . 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. Bir bloğun tamamı (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 ne zaman bağlar bir NAND flaş cihazı, onun yedek alanını tarayarak geçerli veriler için kontrol etmek için her bloğu ziyaret etmelisiniz. 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.

YAFFS2, her yeni yazılan bloğu monoton olarak artan bir sıra numarasıyla işaretler . 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 daralan başlık 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, o 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 normal bağlantı taramasını atlayarak çok hızlı bağlama sürelerine izin veren denetim noktası desteği ekledi . Performans değişiklik gösterebilir, ancak 2 GB için 3 saniyelik bağlama süreleri bildirilmiştir.

Ayrıca bakınız

Referanslar

Dış bağlantılar