Single address space, no context switching… unikernels sound like embedded programming to me.
In part yes, but I see the focus and programming style as pretty different. At least as used in this article, “unikernel” means a design where there’s no hardware isolation, but all software is written in one high-level language with safety guarantees, aiming to provide isolation guarantees at the language level. For example, in MirageOS, all user code is written in Ocaml, and in HaLVM everything is Haskell. The intent being to get MMU-like benefits, but enforced by software rather than hardware.
I think of embedded programming as having a different style, more about no-holds-barred low-level bit-banging, where your software can do literally anything it wants to any part of the device. There’s an assumption that you know exactly what you’re doing, and therefore unsafe-seeming interactions and lack of isolation might even be a feature, useful for various performance hacks.
I think software based process isolation is just as valid as hardware based isolation (MMU). Midori followed the same path.