4 ms·
So if I understand this design doc correctly, a Linux program invokes SYSCALL to call mmap(). The Fuchsia kernel throws an exception to signal a separate starni
by jart 6y ago
So if I understand this design doc correctly, a Linux program invokes SYSCALL to call mmap(). The Fuchsia kernel throws an exception to signal a separate starnix userspace process which peeks into the Linux process to read its arguments and then it issues even more SYSCALLs indirectly via the Fuschia DLL in order to ask the kernel to manipulate the PML4T page table radix trie which controls the Linux process memory, before finally issuing yet another SYSCALL to signal it to resume running.
Since the overhead of each SYSCALL is ~1000 cycles and that this overhead just keeps getting worse thanks to things like Spectre, I'd say that's a real high performance operating system you've got there Google. History shows us that developers never choose microkernels. The only reason people use the things is because big corporations force us to. Like how Intel preinstalled MINIX on its chips without the consent of its customers. Where are the early authentic Google values that technology should be simple fast and stay out of the way? Your o/s is bad and you should feel bad for all the reasons Linus explained to Tannenbaum back in 1992.
If Google was smart they would support something people love which makes perfect technical sense, like Cosmopolitan, which enables normal POSIX programs to boot as unikernels that needn't incur any syscall overhead at all. The Actually Portable Executable format is also a valid disk image that can boot on bare metal in Google's Cloud. This is perfect for our brave new world of cloud services where instances only really need sockets to talk to network services like bigtable and therefore don't care about the overhead of a timesharing system. Google created this new world, yet it fails to understand its own creation if we consider how Fushcia is dragging us into the past by resurrecting designs that were too slow even during the days where multitenancy on a single machine mattered. See https://github.com/jart/cosmopolitan https://github.com/jart/cosmopolitan and https://github.com/jart/cosmopolitan/issues/20#issuecomment-761744274 https://github.com/jart/cosmopolitan/issues/20#issuecomment-... to learn more.
- hortense 6y agoOne of the goal of microkernels is to get rid of a whole class of security issues. In some cases it may trade performance for that. In some cases you can get better performances, but you have to rewrite your software to take into account the microkernel. Regarding Cosmopolitan, one issue is that different executables can't talk to each others efficiently because they are in separate unikernels. If they are running in the same unikernel then you have essentially zero security, unless your unikernel is actually running another kernel! In other words, unikernels aren't great for consumer devices.
- jart 6y agoWhat Google is doing is hobbling anyone who doesn't want to rewrite their app to be locked-in to Fuschia's arbitrarily incompatible system interface. Muh security isn't an argument. You should adopt Windows. It's got real orwellian acl system that's had a lot of impact annoying people.