zygote 프로세스는 여전히 Android L에서 무엇을하고 있습니까?


13

Dalvik 및 ART 런타임의 특정 차이점을 파악하려고합니다. ART가 더 이상 Dalvik VM을 사용하지 않는다는 것을 알고 있지만 Android L 미리보기를 설치 한 후 가장 먼저 확인한 것은 zygote 프로세스가 여전히 실행 중이라는 것입니다. 그들이 실제로 Dalvik VM을 제거했다면 zygote 프로세스가 무용지물이되지 않습니까? 또한 AOSP를 통해 릴리스 된 소스 코드를 검사해도 Dalvik의 상당 부분이 여전히 남아 있습니다.


1
알기 힘들지만, 개발자 릴리스와 FAR입니다. Kitkat / Jellybean은 작동하고 부팅하기 위해 많은 시간을 할애했습니다.
RossC

여전히 "개발자 미리보기 " 이기 때문에 실제로 추측하는 것이 의미가 없을 수도 있습니다 (단 Dan의 설명을 따르지만). Dan이 설명했거나 아직 "완전 사용되지 않는" "남은"것일 수 있습니다. 여전히 L-Release에서 실행될 때, 그것은 다른 것입니다.
Izzy

답변:


14

Zygote는 실제로 Dalvik과 연결되어 있지 않으며 단지 init 프로세스입니다. Zygote는 Android가 앱을 시작하는 데 사용하는 방법입니다. 새로운 각 프로세스를 처음부터 시작하지 않고 앱을 시작할 때마다 전체 시스템과 Android 프레임 워크를 새로로드하는 대신 Zygote가 앱 특정 작업을 수행하기 전에 해당 프로세스를 한 번 수행 한 다음 해당 시점에서 중지합니다. . 그런 다음 앱을 시작하려고 할 때 Zygote 프로세스가 분기되고 하위 프로세스는 중단 된 위치에서 계속 진행하여 앱 자체를 VM에로드합니다.

이 방법은 원래 Dalvik 용으로 설계되었지만 ART가 정확히 같은 방식으로 작동하지 않아야하는 이유는 없습니다. 앱이 실행되는 동안 JIT 컴파일 할 필요는 없지만 여전히로드 할 앱 독립적 인 Java 항목이 많이 있으므로 (예 : 전체 Android 프레임 워크), 동일한 포크를 사용하는 것이 좋습니다 새로운 프로세스를 시작하는로드 된 메소드.

Dalvik 이후의 Dalvik 세계에서 여전히 유용한 다른 남은 것들이있을 수있는 큰 프로젝트에서는 당연합니다. 따라서 원래 일부 또는 ART가 여전히 사용하고있는 Dalvik과 협력하십시오.


Zygote (비 개발자)에 대한 나의 이해와 일치합니다. "사용자보기"에서 Zygote를 "응용 프로그램 서버"로 쉽게 생각할 수 있으며, 앱과 OS 사이의 "추상 계층"(HAL이 하드웨어를 추상화하는 것처럼)으로 작용합니다. "아래"(Dalvik 또는 ART)는 무엇입니까? 인터페이스는 "재료"를 처리합니까?
Izzy

1
Zygote를 응용 프로그램 서버로 생각하기가 더 쉬울 지 모르지만 매우 정확한 설명은 아닙니다. 앱을 시작하는 것은 OS의 일부일 뿐이며 앱 -OS 경계의 OS쪽에 있습니다.
Dan Hulme

감사합니다. 최소한 "기본 이해"가 정확했습니다 ( "응용 프로그램 서버"가 정확하지 않지만 "일반 사용자"에 의해 이해하기 쉽다는 것을 알고 있습니다. 따라서 "응용 프로그램 서비스 "로 만들겠습니다 .) OS 쪽;)
Izzy

소스 코드에 존재하는 것은 "남은"것이 아니며, 우리는 달빅 이후 시대에 있지 않습니다! Dalvik 비트 코드는 여전히 사용중인 IR입니다. 가장 높은 설정으로도 모든 것이 AOT를 준수하는 것은 아니며 해석해야 할 사항이 여전히 있습니다. 이를 위해 DalvikVM이 있습니다. 또한 스토리지가 적은 장치는 AOT를 더 많이 해석하지 않습니다. 마지막으로, zygote는 자주 사용되는 클래스의 힙을 초기화하여 여러 응용 프로그램간에 공유 할 수 있으므로 공간을 절약 할 수 있습니다.
Paschalis

@Paschalis는 JIT 컴파일을 DalvikVM과 혼동하고 있습니다. 최신 버전의 ART가 JIT (Just-In-Time) 컴파일을 수행한다고해서 Dalvik이 여전히 존재한다는 의미는 아닙니다. Oracle Java도 JIT 컴파일을 수행한다고해서 Dalvik을 사용하는 것은 아닙니다.
Martin Konecny
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.