Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在execv系统调用后立即运行Linux进程_Linux_Kernel_Schedule_Execv - Fatal编程技术网

如何在execv系统调用后立即运行Linux进程

如何在execv系统调用后立即运行Linux进程,linux,kernel,schedule,execv,Linux,Kernel,Schedule,Execv,进程(androidzygote)从init进程派生出来,然后调用execv加载真正的二进制文件(/system/bin/app_进程)运行。 正如我从日志时间戳检查的,fork和“execv系统调用返回”之间几乎没有延迟,但是“execv系统调用返回”和“app_进程的main()之间有一个显著延迟(大约1s) 看起来该进程在execv系统调用后被调度出去,并在一段时间后被调度,从而导致real main()延迟1秒。(当然,加载.so也会导致该1秒) 我的目标是在execv调用后尽快运行此进

进程(androidzygote)从init进程派生出来,然后调用execv加载真正的二进制文件(/system/bin/app_进程)运行。 正如我从日志时间戳检查的,fork和“execv系统调用返回”之间几乎没有延迟,但是“execv系统调用返回”和“app_进程的main()之间有一个显著延迟(大约1s)

看起来该进程在execv系统调用后被调度出去,并在一段时间后被调度,从而导致real main()延迟1秒。(当然,加载.so也会导致该1秒)

我的目标是在execv调用后尽快运行此进程。我已经尝试为fork之后的进程设置最高优先级-20,延迟减少到1秒,但我仍然希望进一步减少


有没有办法让这个进程计划在execv系统调用返回后立即运行?

之后,我转储了目标进程的计划日志,发现它在execv调用之后就已经计划好了,但由于mm映射页面错误,它很快就退出了CPU,这表明它开始加载二进制文件。它需要加载如此多的库,以至于在转到main()函数之前花了将近一秒钟的时间。所以问题的方向是错误的,正确的方向是如何加速加载,如果可能的话