Android Artımlı FS

Android'deki sanal dosya sistemi, oyunun çok daha hızlı başlamasına nasıl izin verir?

Google'dan Artımlı Dosya Sistemi

Google, tam bir paket yüklenmeden önce ikili dosyaların yürütülmesine izin veren yeni bir Dosya Sistemi türü üzerinde çalışıyor. Örnek olarak Android uygulamalarının geliştirilmesini ele alırsak, şu anda hata ayıklama için tüm ikili dosyanın öykünücüye veya gerçek test cihazınıza iletilmesini beklemeniz gerekir. Artımlı Dosya Sistemi, tüm paket iletilmeden önce ikili dosyanın yürütülmesine izin vererek bu gecikmeyi önemli ölçüde kısaltır. Bu kulağa son derece karmaşık geliyor ve olan da bu, ancak Android 12 ve sonraki sürümlerde büyük olasılıkla varsayılan bir özelliğin ne olacağını daha iyi anlamak için yine de ona bir göz atabiliriz.

“incfs” adlı bir Sanal Dosya Sistemi

Google'ın ilk yinelemesinde yalnızca Play Store'dan yüklenen APK'ler ve AAB'ler için kullanılacak olan sanal dosya sistemi çözümü, gerçek dosya sisteminin üzerinde yer alan bir katmandır. Mimariyi daha iyi göstermek için, teknik bir konuşma için Google'ın oluşturduğu bazı slaytları kullanıyorum. Bağlantıyı bu sayfanın sonundaki ekte bulabilirsiniz.

Image ee3856bcadf8

Image 8372e503efa4

Konuya geri dönersek, Google'ın Artımlı Dosya Sistemi, oluşturulan varlıkların doğrudan gerçek dosya sistemindeki dosyalara başvurduğu bir önbellek olarak düşünülebilir. Kodun kendisi, genel mimarideki düşük seviyeli yerleşimi nedeniyle mantıklı görünen bir çekirdek modülü olarak işletim sistemine derinlemesine yerleştirilmiştir.

Sanal dosya sisteminin avantajı

Böyle bir sanal FS'nin avantajı, gerçek bir dosya sisteminin sınırlarına bağlı olmamanızdır, burada bir programın okuma ve sonraki yürütmesi genellikle yalnızca paketin tamamı mevcutsa - ilkten son Bayt'a kadar olabilir. “Artımlı Dosya Sistemi” ile bu sınırlama teknik olarak ortadan kaldırılmıştır. Yine de bu kadar güçlü bir özellik, dikkate alınması gereken çok sayıda karmaşık hususu beraberinde getiriyor.

Bunu bir Google mühendisinden alarak, yazma işlemlerinin doğru bir şekilde ele alınması büyük bir zorluktur. Sanal dosya sisteminin bekleyen okumalarla ilgili kendi durumu vardır, ancak yine de yüklenen dosyaların veri bütünlüğünü koruması gerekir.

Image b66896f09bca

Zorluk, “incfs” de özel bir dizin oluşturarak çözülür. Her gerçek dosya, orijinal dosya yeniden adlandırılsa bile, sanal dosya sistemindeki bir varlıkla doğrudan ilişkilidir.

Image f14b7aa11bdd

“ioctl” adında bir kısaltma daha

Bu kısaltma, "giriş/çıkış denetimi" anlamına gelir ve Google'ın Artımlı Dosya Sisteminde böyle bir dizin dosyasının oluşturulmasına yol açar. “ioctl” işletim sisteminden gelmektedir ve teknik açıklaması bu yazının kapsamı dışındadır. Daha fazlasını okumak isterseniz, ekte de bir bağlantı var.

Ayrıca oldukça ilginç: “incfs” yerleşik bir kayıt mekanizmasına sahiptir. Bu özellik, daha fazla geliştirme için uygulamasının gerçek dünyadaki performansını belirlemek için kullanılacaktır.

pratik kullanım

Bu özelliğin başlangıcı, bazı Google mühendislerinin Linux çekirdeğinde değişiklik yapmaya başladığı 2019 yılının Mayıs ayındaydı. AOSP, Linux Çekirdeği üzerine kurulduğundan, onu oraya yerleştirmek, Android'in açık kaynak kısmı ve bu işletim sisteminin ana temeli olan Android Açık Kaynak Projesi'nde (AOSP) basitçe kullanmalarına izin verdi.

FUSE veya OverlayFS gibi bir dosya sistemini geliştirmeye yönelik benzer yaklaşımlar zaten yapıldığından, Linux'a katkıda bulunanlar o kadar da mutlu değildi. Yine de Google'ın bakış açısından, bu uygulamalar düşük kaliteli Android cihazlarda neredeyse yeterince performans göstermiyordu. Bu, Artımlı Dosya Sisteminin geliştirilmesine yol açtı.

İlk yineleme için, oyunun gerçekten başlatılması için gereken süreyi kısaltmak için Android 12'den başlayarak Play Store'dan indirilen oyunlar için kullanılacaktır. Bu gerçekten harika özellik, Artımlı Dosya Sistemini gerektirir, ancak aynı zamanda, bu oyunların nasıl erken başlatılacağını belirlemek için Android'de yerleşik bazı mantık - Google'a göre geliştirici tarafından herhangi bir değişiklik yapılmadan.