Co proces Zygote nadal wykonuje w systemie Android L?

13

Próbuję dowiedzieć się, jakie różnice występują w środowiskach wykonawczych Dalvik i ART. Zdaję sobie sprawę, że ART nie korzysta już z Dalvik VM, jednak jedną z pierwszych rzeczy, które zauważyłem po zainstalowaniu wersji zapoznawczej Androida L, było to, że proces zygote nadal działa. Jeśli naprawdę pozbyli się maszyny wirtualnej Dalvik, czy to nie uczyniłoby procesu zygoty bezużytecznym? Co więcej, po sprawdzeniu kodu źródłowego wydanego przez AOSP, nadal pozostaje duża część Dalvik.

Jan
źródło
1
Trudno wiedzieć, jest to wersja dla programistów i FAR od ukończenia. W tej chwili jest do niego przymocowanych wiele KitKat / Jellybean, aby uruchomić i uruchomić.
RossC
Będąc nadal „ zapowiedzią dewelopera ”, spekulowanie może rzeczywiście nie ma większego sensu (chociaż postępuję zgodnie z wyjaśnieniem Dana). Może to być tak, jak opisał Dan, lub może być „resztką”, która nie jest jeszcze „w pełni przestarzała”. Jeśli nadal działa w wersji L, to inna sprawa.
Izzy

Odpowiedzi:

14

Zygote nie jest tak naprawdę związany z Dalvik, to tylko proces inicjacji. Zygote to metoda używana przez system Android do uruchamiania aplikacji. Zamiast zaczynać każdy nowy proces od zera, ładując cały system i system Android od nowa za każdym razem, gdy chcesz uruchomić aplikację, robi to ten proces raz, a następnie zatrzymuje się w tym momencie, zanim Zygote zrobi coś specyficznego dla aplikacji . Następnie, gdy chcesz uruchomić aplikację, proces Zygote rozwidla się, a proces potomny jest kontynuowany tam, gdzie został przerwany, ładując samą aplikację do maszyny wirtualnej.

Chociaż ta metoda została pierwotnie zaprojektowana dla Dalvik, nie ma powodu, dla którego ART nie powinien zachowywać się dokładnie tak samo. Nie musi kompilować aplikacji JIT podczas ich działania, ale nadal ma do załadowania wiele niezależnych od aplikacji rzeczy Java (tj. Całą platformę Android), więc warto używać tego samego widełek załadowana metoda rozpoczęcia nowych procesów.

Jest to naturalne w tak dużym projekcie, że pozostały resztki z Dalvik, które nadal są przydatne w świecie post-Dalvik, więc nie należy się dziwić, że istnieje inny kod, który został pierwotnie napisany jako część lub dla współpracować z Dalvik, który wciąż jest gotowy do użycia ART.

Dan Hulme
źródło
Odpowiada mojemu zrozumieniu Zygote (bycia nie-deweloperem). Z „widoku użytkownika” prawdopodobnie łatwiej jest myśleć o Zygote jako „serwerze aplikacji”, działającym jako „warstwa abstrakcji” między aplikacjami a systemem operacyjnym (jak HAL robi abstrakcyjny sprzęt): to nie ma znaczenia co jest „poniżej” (Dalvik lub ART), interfejs dotyczy „rzeczy”?
Izzy
1
Może to ułatwić myślenie o Zygote jako serwerze aplikacji, ale nie jest to zbyt dokładny opis. To tylko część systemu operacyjnego, która uruchamia aplikacje, i jest bardzo po stronie systemu operacyjnego granica aplikacji.
Dan Hulme
Dzięki, więc przynajmniej moje „podstawowe zrozumienie” było poprawne (wiem, że „serwer aplikacji” nie jest dokładny, ale łatwiejszy do zrozumienia dla „zwykłego użytkownika” - więc zróbmy to „ usługą aplikacji ”, aby dalej to robić strona OS;)
Izzy
To, co istnieje w kodzie źródłowym, nie jest „resztkami” i nie jesteśmy w erze post-dalwickiej! Kod bitowy Dalvik jest nadal używany w podczerwieni. Nawet przy najwyższym ustawieniu, nie wszystko jest zgodne z AOT, a wciąż jest kilka rzeczy, które należy interpretować. Dla nich istnieje DalvikVM . Również urządzenia o małej pojemności będą wykorzystywać mniej AOT więcej interpretacji. Na koniec Zygote wprowadza stosy często używanych klas, które mogą zaoszczędzić miejsce, ponieważ mogą być współużytkowane przez wiele aplikacji.
Paschalis,
@Paschalis mylisz kompilację JIT z DalvikVM. Tylko dlatego, że nowsze wersje kompilacji ART do JIT (just-in-time), nie oznacza, że ​​Dalvik wciąż istnieje. Oracle Java wykonuje również kompilację JIT, co nie znaczy, że używa Dalvik
Martin Konecny