• 0 Posts
  • 4 Comments
Joined 2 years ago
cake
Cake day: July 1st, 2023

help-circle


  • However, Linus’s kernel was more elaborate than GNU Hurd, so it was incorporated.

    Quite the opposite.

    GNU Hurd was a microkernel, using lots of cutting edge research, and necessitating a lot of additional complexity in userspace. This complexity also made it very difficult to get good performance.

    Linux, on the other hand, was just a bog standard Unix monolithic kernel. Once they got a libc working on it, most existing Unix userspace, including the GNU userspace, was easy to port.

    Linux won because it was simple, not elaborate.



  • With pipes/sockets, each program has to coordinate the establishment of the connection with the other program. This is especially problematic if you want to have modular daemons, e.g. to support drop-in replacements with alternative implementations, or if you have multiple programs that you need to communicate with (each with a potentially different protocol).

    To solve this problem, you want to standardize the connection establishment and message delivery, which is what dbus does.

    With dbus, you just write your message to the bus. Dbus will handle delivering the message to the right program. It can even start the receiving daemon if it is not yet running.

    It’s a bit similar to the role of an intermediate representation in compilers.