1. containerization is often implemented these days in terms of partial virtualization, because the historical approach that were essentially a bunch of variations of chrooting were not sufficiently isolated to create a sufficient security boundary for a multiuser "cloud" hosting service.
2. virtualization, as my update/comment up the thread said, the definition of virtualization being "host os code runs directly on the cpu" has been pretty much the standard definition for a couple of decades at this point. If you say you offer virtualization, but you implement it using an academically "accurate" definition that allows emulation I would imagine that you would have difficulty finding a user that accepts that definition. Again, as I've stated elsewhere "hardware virtualization support" that CPUs have acquired since the 90s is essentially multi-level page tables and cpu mode options so that a virtual machine runtime doesn't need to rewrite kernel mode code. It has not meaningfully impacted user mode code at all.
It is not reasonable to reject the evolution of language when considering the meaning of a word, nor the context of the environment in which it is discussed. The fact that 30 years ago you could say an emulator was a virtual machine is not relevant today, where the terminology very clearly does not include ISA emulation. This is as true for modern tech terminology like "virtualization" as it is for other tech terminology. For example, no one would accept me presenting a person good at maths as a "computer" either, despite that being what it used to mean.
> containerization is often implemented these days in terms of partial virtualization, because the historical approach that were essentially a bunch of variations of chrooting were not sufficiently isolated to create a sufficient security boundary for a multiuser "cloud" hosting service.
Containerisation has zero virtualisation. There's no virtual environment at all. It's just using kernel primitives to create security boundaries around native processes and syscalls.
You're also talking very Linux specific. Linux was late to the containerisation game. Like decades late. And frankly, I think FreeBSD and Solaris still have superior implementations too. Linux is getting there though.
> 2. virtualization, as my update/comment up the thread said, the definition of virtualization being "host os code runs directly on the cpu" has been pretty much the standard definition for a couple of decades at this point.
The issue that I take with your comment here is that it implies containerisation doesn't run directly on the CPU. Or that some forms of emulation cannot run directly on the CPU either -- sometimes the instruction sets are similar enough that you can dynamically translate the differences in real time.
The actual implementation of these things is, well, complicated. Making sweeping generalisations that one cannot do the other is naturally going to be inaccurate.
> If you say you offer virtualization, but you implement it using an academically "accurate" definition that allows emulation I would imagine that you would have difficulty finding a user that accepts that definition.
What you're talking about now is entirely product marketing. And that's what I take issue with when talking about this topics. Just because something is marketed as "emulation" or "virtualisation" it doesn't mean the disciplines of one cannot be a subset of the other.
> Again, as I've stated elsewhere "hardware virtualization support" that CPUs have acquired since the 90s is essentially multi-level page tables and cpu mode options so that a virtual machine runtime doesn't need to rewrite kernel mode code.
If you're talking about x86 (which I assume is the case because that's when virtualisation became a commodity) then you're out by about a decade. It was around 2006 when Intel and AMD released their x86 virt extensions and before then, VMWare ran like shit on consumer hardware.
I was there, using VMware 1.0 in the late 90s / early 00s. I remember the excitement I had for x86 finally adding hardware assistance.
Sure, there were ways to get virtualised software to run natively on x8 before then. But it didn't work for privileged code. And as we all know swapping memory in and out of ring-0 is expensive. So having that part of the process artificially slowed down killed VMware's performance for a lot of people.
This is also why paravirtualisation was such a popular concept back then. It allowed you to bypass those constraints.
> It is not reasonable to reject the evolution of language when considering the meaning of a word, nor the context of the environment in which it is discussed.
But that's the problem here. The evolution is completely arbitrary. It's based on marketing and PR rather than technology. In technical terms, there are multiple different ways to virtualise hardware (even without discussing emulation). And in technical terms, full virtual environments are still dependant on parts of that machine being emulated. So it's not unreasonable to argue that emulation is a subset of virtualisation. It always used to be considered that way and little has changed aside how companies now market their software to management.
> For example, no one would accept me presenting a person good at maths as a "computer" either, despite that being what it used to mean.
That's probably not the best of examples because even in the 1800s a "computer" wasn't just someone who was good at maths. It was someone who computed mathematical problems. The term was used to define the machine (albeit a fleshy organic one) rather than the skill.
To the end, you do still sometimes see people refer to themselves as a computer if they're manually computing stuff. It's typically said in jest though, but it does demonstrate that the term hasn't actually drifted as far from it's original meaning as you claim.
There definitely are other examples of terms that have evolved and I'm all for languages evolving. Plenty of terms we use in tech are borrowed terms that have evolved. Like `file`, `post`, `terminal`, etc. But they still refer to the same specific properties of computing which have evolved with time.
The problem with this virtualisation vs emulation discussion is that those concepts haven't evolved in the same dramatic way. Methods of virtualisation have diversified but it still relies on elements of emulation too. And modern emulation borrows a lot from principles learned through hardware assisted virtualisation. They're fields that are still heavily entwined. And "virtualisation" itself isn't a single method of implementation (neither is emulation for that matter, but more so for virtualisation). So arguing that emulation isn't a subset of virtualisation is just bullshit marketing.
And that's why I'm unwilling to acknowledge this rebranding of the term. Once you start building virtual machines you end up with a real mix and match of paravirtualisation, hardware assisted virtualisation, emulation and so on and so forth, all components powering the same VM.
2. virtualization, as my update/comment up the thread said, the definition of virtualization being "host os code runs directly on the cpu" has been pretty much the standard definition for a couple of decades at this point. If you say you offer virtualization, but you implement it using an academically "accurate" definition that allows emulation I would imagine that you would have difficulty finding a user that accepts that definition. Again, as I've stated elsewhere "hardware virtualization support" that CPUs have acquired since the 90s is essentially multi-level page tables and cpu mode options so that a virtual machine runtime doesn't need to rewrite kernel mode code. It has not meaningfully impacted user mode code at all.
It is not reasonable to reject the evolution of language when considering the meaning of a word, nor the context of the environment in which it is discussed. The fact that 30 years ago you could say an emulator was a virtual machine is not relevant today, where the terminology very clearly does not include ISA emulation. This is as true for modern tech terminology like "virtualization" as it is for other tech terminology. For example, no one would accept me presenting a person good at maths as a "computer" either, despite that being what it used to mean.