2 ms·
In large part what a modern Unix-like operating system is... is a kind of emulator that makes the very insanely complicated and powerful machines of today look
by cmrdporcupine 3y ago
In large part what a modern Unix-like operating system is... is a kind of emulator that makes the very insanely complicated and powerful machines of today look as simple and understandable as a PDP/11. I think of the Linux kernel (in conjunction with some complicated hardware support) as a giant behemoth of code there to maintain the illusion of a set of relatively understandable clean abstractions: memory, tty, display, network, process, user, file system. None of those things are nearly as simple as the mental model we maintain of them, but the OS makes it look that way.
They're actually insanely complicated underneath because of real world reasons. The code in the kernel is in large part there to hide that.
That code wasn't needed in early operating systems because the underlying hardware system actually was that simple.
... But with hypervisors on the scene now, and virtualization the common way to run applications in the "cloud", it's now entirely conceivable that the "unikernel" type approach could create bespoke software systems out of only the pieces needed for a given application or service on a given platform, and ditch the rest. The win is potentially a more holistically understandable system, in addition to the potential for targeted optimization.
- retrac 3y ago> is a kind of emulator From what I've read I get the impression that for a while in the 1960s and 1970s, the terms "process" and "virtual machine" were interchangeable. I don't feel that was a mistake, and today we make an arbitrary excessive distinction between them. They are the same concept, just implemented in a slightly different way. From both the program's and the programmer's perspective, a process under a Unix-like is a virtual machine. A very nice virtual machine, too. It has approximately infinite memory, can operate in parallel with an arbitrary number of parallel machines, and the kernel API can be thought of as an enriched and very sophisticated instruction set.