Comment by lallysingh
7 years ago
The way I see it, VMs already encapsulate this. App --ABI--> VM'd Kernel -> Hypervisor API.
But we can do this much more efficiently. IIRC, Prior variants of this were called "personalities". I think the term's been reused now.
I think we could have the program loader consume the loaded program and act as an API proxy between it and the actual kernel.
It sounds like what Solaris container did. The kernel responsible for handling kernel abi compatibility. And everything includes the system utilities runs inside a container that got given abi simulated by the kernel.
The model is App -- Static ABI --> [Simulated Kernel ABI by actual kernel] -> Actual kernel.
Everything outside of the specified kernel abi version is not existed to the application.
So it can run as much as years old application as long as the kernel is willing to simulate the abi for it.
And it is also how windows 64 runs win32 app and wsl. There is a api proxy inside the kernel and simulate the api for them.