最后更新2021/12/11
陆陆续续做了几个月的基础工作,拼凑一个个碎块,大概需要的脚垫准备齐全,要填的坑也都有了填坑的办法,准备再增加代码虚拟执行,让AIX应用直接跑在x86 Linux之上,同时也把在虚拟环境下,两套系统接口部分的方案搞清楚,确定下来:
哪个效率更高?
- 跑完整虚拟机,包括硬件设备驱动、BIOS都虚拟化,最终分界在虚拟硬件设备硬件接口部分;
- 跑userspace代码虚拟,接口部分设定在应用程序调用系统调用部分;
- 其实其中还穿插着AIX API与Linux API转换;PowerISA和x86-64 ISA或ARM ISA的指令集转换,有可能细分更复杂;
这个问题和别人讨论过,各有说辞,那么空谈无用,show me the code,性能到底如何,跑一跑就知道了。
============================
研究了第一个问题,qemu在什么地方做的system call分界。目前结果是通过特定的指令或者执行地址trigger返回host的动作。
============================
动手的第二步是借助qemu-linux-user的ELF实现,套成xcoff实现。xcoff搞了差不多1年,基本很熟悉了,elf还不熟,正好两边对照一下,从再走一遍elf加载开始。