Android 带有 AArch64 和 32 位应用程序的内核
Android kernel with AArch64 and 32bit apps
如何在 Android 设备 运行 AARCH64 内核同时 运行 宁多个(可能几十个)A32 apk 进程?
这是否意味着内核将不断进行数百万次执行状态切换?
或者Android内核在不久的将来不会是AARCH64?
无论如何,内核正在制作那些 "millions of execution state switches";每次需要中断或系统调用,或安排新任务时,它都会在切换到 EL1 时保留 EL0 上下文,然后在 return 上恢复相同或不同的上下文。从那个位置来看,preserving/restoring 32 位 EL0 与 64 位 EL0 之间的区别并不比所涉及的寄存器数量多多少。具体 AArch32/AArch64 细节只是 SPSR 中处理器模式的一部分,由硬件作为异常 entry/return 机制的固有部分进行处理。
arm64 内核中大部分兼容层实际上是 32 位和 64 位系统调用 ABI 之间的转换;其余的只是脱离了架构的设计方式。
至于 "the near future",好吧,Android 具有完整 64 位支持的 L 已经推出一段时间了...
如何在 Android 设备 运行 AARCH64 内核同时 运行 宁多个(可能几十个)A32 apk 进程? 这是否意味着内核将不断进行数百万次执行状态切换?
或者Android内核在不久的将来不会是AARCH64?
无论如何,内核正在制作那些 "millions of execution state switches";每次需要中断或系统调用,或安排新任务时,它都会在切换到 EL1 时保留 EL0 上下文,然后在 return 上恢复相同或不同的上下文。从那个位置来看,preserving/restoring 32 位 EL0 与 64 位 EL0 之间的区别并不比所涉及的寄存器数量多多少。具体 AArch32/AArch64 细节只是 SPSR 中处理器模式的一部分,由硬件作为异常 entry/return 机制的固有部分进行处理。
arm64 内核中大部分兼容层实际上是 32 位和 64 位系统调用 ABI 之间的转换;其余的只是脱离了架构的设计方式。
至于 "the near future",好吧,Android 具有完整 64 位支持的 L 已经推出一段时间了...