Android inkrementele FS

Hoe 'n virtuele lêerstelsel in Android baie vinniger begin met die spel

Inkrementele lêerstelsel deur Google

Google het gewerk aan 'n nuwe soort lêerstelsel wat die uitvoer van binaries toelaat voordat 'n volledige bundel gelaai is. As u die ontwikkeling van Android-toepassings as voorbeeld neem, moet u tans wag totdat die hele binêre opsie na die emulator of u regte toetsapparaat gestuur word vir foutopsporing. Inkrementele lêerstelsel verkort hierdie vertraging dramaties deur die uitvoer van die binêre toe te laat voordat die hele pakket versend is. Dit klink geweldig kompleks, en dit is wat dit is, maar ons kan dit nog steeds bekyk om beter te verstaan wat waarskynlik 'n standaardfunksie in Android 12 en later sal wees.

'N Virtuele lêerstelsel genaamd' incfs '

Google se oplossing vir virtuele lêerstelsels, wat in sy eerste herhaling uitsluitlik gebruik sal word vir APK's en AAB's wat vanaf die Play Store gelaai word, is 'n laag wat bo-op die regte lêerstelsel sit. Om die argitektuur beter te illustreer, gebruik ek 'n paar skyfies wat Google geskep het vir 'n tegniese gesprek. U kan die skakel in die addendum aan die einde van hierdie bladsy vind.

Image ee3856bcadf8

Image 8372e503efa4

As ons terugkom na die onderwerp, kan Google se inkrementele lêerstelsel beskou word as 'n kas, waar die geskape entiteite direk na lêers in die regte lêerstelsel verwys. Die kode self is diep ingebou in die bedryfstelsel as 'n kernmodule - wat logies lyk as gevolg van die lae vlak in die algemene argitektuur.

Voordeel van 'n virtuele lêerstelsel

Die voordeel van so 'n virtuele FS is dat u nie gebonde is aan die limiete van 'n regte lêerstelsel nie, waar die lees en daaropvolgende uitvoering van 'n program gewoonlik slegs kan gebeur as die volledige bundel beskikbaar is - van die eerste tot die laaste byte. Met die "Inkrementele lêerstelsel" word hierdie beperking tegnies geskrap. Maar met so 'n kragtige funksie kom 'n groot aantal ingewikkelde aspekte saam.

As u dit van 'n Google-ingenieur neem, is die korrekte hantering van skryfbewerkings 'n groot uitdaging. Die virtuele lêerstelsel het sy eie toestand met betrekking tot hangende leeswerk, maar moet steeds die data-integriteit van die gelaaide lêers handhaaf.

Image b66896f09bca

Die uitdaging word aangepak deur 'n aangepaste indeks in die 'incfs' te skep. Elke regte lêer korreleer direk met 'n entiteit in die virtuele lêerstelsel, selfs wanneer die oorspronklike lêer hernoem word.

Image f14b7aa11bdd

Nog een afkorting genaamd “ioctl”

Hierdie afkorting staan vir 'input / output control' en lei tot die skep van so 'n indeks-lêer in Google se Incremental File System. "Ioctl" kom van die bedryfstelsel en die tegniese uiteensetting daarvan is buite die omvang van hierdie artikel. As u meer wil lees, is daar ook 'n skakel in die addendum.

Ook baie interessant: 'incfs' het 'n ingeboude aanmeldmeganisme. Hierdie funksie sal gebruik word om die werklike prestasie van die implementering daarvan vir verdere verbeterings te bepaal.

Praktiese gebruik

Die begin van hierdie funksie was in Mei 2019, toe sommige van Google se ingenieurs veranderinge aan die Linux-kern begin begaan het. Deur dit daar te plaas, kon hulle dit eenvoudig gebruik in die Android Open Source Project (AOSP), die open source-deel van Android en die hoofbasis van hierdie bedryfstelsel, aangesien AOSP ook op die Linux-kern gebou is.

Linux-bydraers was nie so gelukkig nie, want soortgelyke benaderings tot die verbetering van 'n lêerstelsel was al gemaak, soos FUSE of OverlayFS. Vanuit Google se perspektief was die implementasies nog nie naastenby goed genoeg op lae-end Android-toestelle nie. Dit het gelei tot die ontwikkeling van die Incremental File System.

Vir die eerste iterasie sal dit gebruik word vir speletjies wat vanaf die Play Store afgelaai word vanaf Android 12 om die tyd wat dit neem om die spel te begin, te verkort. Hierdie wonderlike funksie veronderstel die Incremental File System, maar ook 'n bietjie logika wat in Android ingebou is om vas te stel hoe u die speletjies vroeg moet begin - sonder enige veranderinge deur die ontwikkelaar, volgens Google.