A Google növekményes fájlrendszere
A Google egy újfajta fájlrendszeren dolgozik, amely lehetővé teszi a bináris fájlok futtatását a teljes csomag betöltése előtt. Példaként az Android-alkalmazások fejlesztését véve jelenleg meg kell várni, amíg a teljes bináris verziót továbbítják az emulátorra vagy a valódi tesztelő eszközre a hibakereséshez. Az inkrementális fájlrendszer drámai módon lerövidíti ezt a késleltetést azáltal, hogy lehetővé teszi a bináris fájl futtatását, mielőtt a teljes csomagot továbbítanák. Ez rendkívül bonyolultnak hangzik, és ez az, ami mégis megnézhető, hogy jobban megértsük, mi lesz valószínűleg az alapértelmezett funkció az Android 12 és újabb verzióiban.
„Incfs” nevű virtuális fájlrendszer
A Google virtuális fájlrendszer-megoldása, amelyet első iterációjában kizárólag a Play Store-ból betöltött APK-khoz és AAB-okhoz használnak, egy réteg, amely a valódi fájlrendszer tetején helyezkedik el. Az architektúra jobb szemléltetése érdekében a Google által létrehozott néhány diát használok egy technikai beszélgetéshez. A linket az oldal végén található kiegészítésben találja.
Visszatérve a témához, a Google növekményes fájlrendszerét gyorsítótárnak tekinthetjük, ahol a létrehozott entitások közvetlenül hivatkoznak a fájlokra a valódi fájlrendszerben. Maga a kód mélyen beépül az operációs rendszerbe, mint kernelmodul - ami logikusnak tűnik, mivel alacsony szintű elhelyezése van a teljes architektúrában.
A virtuális fájlrendszer előnye
Az ilyen virtuális FS előnye, hogy nem kötődik egy valódi fájlrendszer határaihoz, ahol a program olvasása és későbbi végrehajtása általában csak akkor történhet meg, ha a teljes csomag rendelkezésre áll - az elsőtől az utolsó bájtig. Az „Inkrementális fájlrendszerrel” ez a korlátozás technikailag törlődik. Pedig egy ilyen nagyszerű funkcióval számos összetett szempontot kell figyelembe venni.
Ha egy Google mérnöktől veszi el, nagy kihívást jelent az írási műveletek helyes kezelése. A virtuális fájlrendszernek saját állapota van a függőben lévő olvasásokkal kapcsolatban, de továbbra is fenn kell tartania a betöltött fájlok adatintegritását.
A kihívást úgy kezeljük, hogy létrehozunk egy egyedi indexet az „incfs” -ben. Minden valódi fájl közvetlenül korrelál egy entitással a virtuális fájlrendszerben, még akkor is, ha az eredeti fájlt átnevezik.
Még egy rövidítés, az úgynevezett „ioctl”
Ez a rövidítés az „input / output control” kifejezést jelenti, és egy ilyen indexfájl létrehozásához vezet a Google növekményes fájlrendszerében. Az „ioctl” az operációs rendszerből származik, és technikai magyarázata nem tartozik a cikk hatálya alá. Ha többet szeretne olvasni, akkor a kiegészítésben is található egy link.
Szintén nagyon érdekes: az „incfs” beépített naplózási mechanizmussal rendelkezik. Ezt a funkciót fogják használni a megvalósítás valós teljesítményének meghatározásához a további fejlesztések érdekében.
Gyakorlati használat
Ennek a szolgáltatásnak a kezdete 2019 májusában volt, amikor a Google egyes mérnökei elkezdték a Linux kernel módosítását. Az elhelyezése lehetővé tette számukra, hogy egyszerűen használják az Android Open Source Projectben (AOSP), amely az Android nyílt forráskódú része és ennek az operációs rendszernek a fő alapja, mivel az AOSP a Linux Kernelre is épül.
A Linux-közreműködők nem voltak annyira boldogok, mivel a fájlrendszer fejlesztésének hasonló megközelítései már történtek, például a FUSE vagy az OverlayFS. A Google szempontjából azonban ezek a megvalósítások közel sem voltak eléggé hatékonyak a csúcskategóriás Android-eszközökön. Ez az inkrementális fájlrendszer fejlesztéséhez vezetett.
Az első iteráció során a Play Store-ból letöltött játékokhoz használják az Android 12-től kezdve, hogy lerövidítsék a játék tényleges elindításához szükséges időt. Ez az igazán nagyszerű funkció feltételezi az Inkrementális fájlrendszert, de az Androidba beépített logikát is, amely meghatározza, hogyan lehet ezeket a játékokat korán elindítani - a fejlesztő változtatásai nélkül - írja a Google.