【发布时间】:2018-05-25 02:02:05
【问题描述】:
进程(Android zygote)是从init进程fork出来的,然后调用execv加载真正的二进制文件(/system/bin/app_process)运行。 正如我从日志时间戳中检查的那样,fork 和“execv 系统调用返回”之间几乎没有延迟,但“execv 系统调用返回”和“app_process 的 main()”之间存在明显延迟(大约 1 秒) .
看起来进程在 execv 系统调用之后被调度,并在一段时间后被调度,导致真正的 main() 延迟 1 秒。 (当然,.so 的加载也应该有助于 1 秒)。
我的目标是让这个进程在 execv 调用后尽快运行。我已经尝试为fork之后的进程设置最高优先级-20,延迟减少到1秒,但我仍然想进一步减少。
有没有办法让这个进程安排在 execv 系统调用返回后立即运行?
【问题讨论】:
标签: linux kernel schedule execv