利用内核脚本执行引擎优化系统调用过程
2021-04-20夏盛明
电子技术与软件工程 2021年3期
夏盛明
(福州理工学院计算与信息科学学院 福建省福州市 350000)
在Linux 系统,进程访问内核服务,调用系统调用的过程中需要进行用户态和内核态的转换。进程执行系统调用进行状态切换是个耗时的过程,目前在改进Linux 系统调用的性能已有许多研究工作。如multi-call 机制[1],在内核中实现了系统调用代理,通过将用户进程多次执行的系统调用函数进行合并,组成系统调用函数数组,在一次系统调用过程中,由内核系统调用代理执行函数数组中的函数。这种方式减少了用户进程执行系统调用时的状态转换次数,但是,multi-call 机制中的系统调用代理不能够执行进程位于用户空间的代码,如果在执行多个系统调用函数之间必须执行用户空间代码,那么这些系统调用函数将不能进行合并执行。所以,当进程在一个循环中执行多个系统调用时,multi-call 机制可能减少进程状态转换的次数,但是不能实现使进程只经过一次状态变换就能执行完成循环中的所有系统调用。实现内核专门功能模块方式,采用的方法是将用户进程需要访问内核服务的功能实现为一个内核模块,每次用户进程只需要调用内核模块提供的服务即可,去除了多次状态转换,提高了程序运行效率。但是此种方式,灵活度不高,只能满足特定要求,很难具有通用性。二进制重写技术[2]方式,采取的途径是对内核中运行函数代码进行优化处理,如将对内核中函数的调用转换为内联对应函数的代码,去除了函数调用过程,减少了函数执行时间。……
登录APP查看全文
