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.