Native Execution of Ios Apps on Android
Total Page:16
File Type:pdf, Size:1020Kb
Cider Native Execution of iOS Apps on Android Jeremy Andrus ([email protected]) Alexander Van't Hof, Naser AlDuaij, Christoffer Dall, Nicolas Viennot, Jason Nieh Columbia University In the City of New York March 4, 2014 ASPLOS 2014, Salt Lake City, UT !1 Presentation © 2014, Jeremy C. Andrus Motivation The Goal Presentation © 2014, Jeremy C. Andrus !3 Motivation Virtualization Presentation © 2014, Jeremy C. Andrus !4 Motivation Binary Compatibility Wine API Reimplementation ✤ immense implementation! ✤ 20 years later: still incomplete Presentation © 2014, Jeremy C. Andrus !5 Motivation Overview Binary Compatibility Kernel ABI Compatibility BSD Linux Compatibility ✤ missing kernel subsystem! ✤ opaque driver interfaces Presentation © 2014, Jeremy C. Andrus !6 Motivation Overview Cider : OS Compatibility ✤ Direct execution of unmodified iOS apps" ✤ Reuse existing libraries" ✤ Reuse existing open source kernel code" ✤ iOS apps can use Android libraries Presentation © 2014, Jeremy C. Andrus !7 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Cider : OS Compatibility ✤ Personas" ➡ distinguish iOS and Linux threads" ✤ Duct Tape" ➡ XNU code in the Linux kernel" ✤ Diplomats" ➡ iOS apps use Android libraries Presentation © 2014, Jeremy C. Andrus !8 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Cider : OS Compatibility XNU syscall Linux syscall Interface Interface Cider Linux Kernel Mach-O Loader Presentation © 2014, Jeremy C. Andrus !9 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Per-Thread Personas XNU syscall Linux syscall Interface Interface Cider Linux Kernel Persona Mach-O Management Loader Presentation © 2014, Jeremy C. Andrus !10 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Cider : OS Compatibility XNU Source XNU syscall Linux syscall Interface Interface Mach IPC Cider Linux Kernel Persona Mach-O Management Loader Presentation © 2014, Jeremy C. Andrus !11 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Duct tape XNU Source XNU syscall Linux syscall Interface Interface Mach IPC Cider Linux Kernel Persona Mach-O Duct Tape Management Loader Presentation © 2014, Jeremy C. Andrus !12 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Duct tape XNU Source Foreign Zone Mach IPC Duct Tape Duct Tape Zone Domestic Zone Presentation © 2014, Jeremy C. Andrus !13 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Duct tape lck_mtx_lock() ➡ mutex_lock() lck_mtx_t ➡ struct mutex XNU Source Linux kernel" Mach IPC memory, synch," list management, etc. Synchronization, List Mgmt Duct Tape Mach Semantics kmalloc, Mach IPC syscall stubs spinlock, list… Presentation © 2014, Jeremy C. Andrus !14 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Duct tape XNU Source Cider" Linux" Mach IPC Kernel Synchronization, List Mgmt Mach Semantics kmalloc, spinlock, list… Mach IPC syscall stubs Presentation © 2014, Jeremy C. Andrus !15 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Cider : OS Compatibility iOS OpenGL Apple GPU?! XNU Source XNU syscall Linux syscall Interface Interface Mach IPC Cider Linux Kernel Persona Mach-O Duct Tape Management Loader Presentation © 2014, Jeremy C. Andrus !16 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Cider : OS Compatibility ELF?? Android OpenGL ?? XNU Source XNU syscall Linux syscall Interface Interface Mach IPC Cider Linux Kernel Persona Mach-O Duct Tape Management Loader Presentation © 2014, Jeremy C. Andrus !17 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Cider : OS Compatibility Android ?? OpenGL XNU Source XNU syscall Linux syscall Interface Interface Mach IPC Cider Linux Kernel Persona Mach-O Duct Tape Management Loader Presentation © 2014, Jeremy C. Andrus !18 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Diplomats Android Libraries diplomats XNU Source XNU syscall Linux syscall Interface Interface Mach IPC Cider Linux Kernel Persona Mach-O Duct Tape Management Loader Presentation © 2014, Jeremy C. Andrus !19 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Diplomats iOS App links against diplomats - not iOS symbols! Android diplomats Libraries aFunc() XNU syscall Persona Linux syscall Interface Management Interface Cider Linux Kernel Presentation © 2014, Jeremy C. Andrus !20 Motivation Overview Personas Duct Tape Diplomats Evaluation iOS Android Cider : Architecture iOS Mach" IPC Services launchd configd Android … Libraries diplomats XNU Source XNU syscall Linux syscall Interface Interface Mach IPC Cider Linux Kernel Persona Mach-O Duct Tape Management Loader Presentation © 2014, Jeremy C. Andrus !21 Motivation Overview Personas Duct Tape Diplomats Evaluation Cider: Prototype iOS Apps! ✤ Nexus 7 (Tegra)" ➡ Integrated iOS app launch Android Apps! Presentation © 2014, Jeremy C. Andrus !22 Motivation Overview Personas Duct Tape Diplomats Evaluation Cider: Prototype ✤ Nexus 7 (Tegra)" ➡ Full multi-touch support" ➡ OpenGL for 2D/3D graphics Presentation © 2014, Jeremy C. Andrus !23 Motivation Overview Personas Duct Tape Diplomats Evaluation Cider: Experimental Results ✤ PassMark benchmark application" ✤ Android App" ➡ Stock Nexus 7" ➡ Cider" ✤ iOS App" ➡ Cider" ➡ iPad mini Presentation © 2014, Jeremy C. Andrus !24 Motivation Overview Personas Duct Tape Diplomats Evaluation Cider: Experimental Results PassMark Benchmark 20! Cider Android! Cider iOS! iOS! 15! 10! 5! Performance Normalized Normalized Performance Normalized 0! 4! 3! 2! 1! 0! ! ! ! ! ! ! ! ! ! ! Integer Find Primes Storage Read Floating Point Storage Write Memory WriteMemory Read Data Encryption Data Compression Presentation © 2014, Jeremy C. AndrusRandom String Sort !25 Motivation Overview Personas Duct Tape Diplomats Evaluation Cider: Experimental Results PassMark Benchmark 2.020!! CiderCider AndroidAndroid!! CiderCider iOS iOS! ! iOSiOS! ! 15! 1.510!! 5! 1.00!! 4! 3! 0.5! 2! 1! 0.0! 0! ! ! ! ! ! ! ! ! ! ! !! ! ! ! ! ! Integer Find Primes Solid Vectors Image FiltersStorage Read Floating Point Storage Write Memory WriteMemory Read Data Encryption Simple 3D Test Complex VectorsImageData CompressionRendering Complex 3D Test Presentation © 2014, JeremyTransparent C. AndrusRandom Vectors String Sort 54 Motivation Overview Personas Duct Tape Diplomats Evaluation Cider: Experimental Results PassMark Benchmark 2.0! Cider Android! Cider iOS! iOS! 1.5! 1.0! 0.5! 0.0! ! ! ! ! ! ! ! Solid Vectors Image Filters Simple 3D Test Complex VectorsImage Rendering Complex 3D Test Presentation © 2014, JeremyTransparent C. Andrus Vectors !27 Motivation Overview Personas Duct Tape Diplomats Evaluation Conclusion ✤ Direct execution of unmodified iOS apps" ➡ Per-thread Personas" ➡ Duct Tape" ➡ Diplomats Presentation © 2014, Jeremy C. Andrus !28 Motivation Overview Personas Duct Tape Diplomats Evaluation Thank You Cider http://systems.cs.columbia.edu/projects/cider Logo design by: Steve Lovelace (http://steve-lovelace.com/) Presentation © 2014, Jeremy C. Andrus !29.