>From 27e75cb7d1daea6b43a65303decfbd954bf1656c Mon Sep 17 00:00:00 2001 From: Joshua Branson Date: Fri, 2 Nov 2018 11:08:55 -0400 Subject: [PATCH] I am trying to clean up the anatomy of a hurd system webpage. Deleted an unnecessary comment. I added an image to the microkernel page. --- contributing.mdwn | 5 +- microkernel.mdwn | 12 ++++ microkernel/OS-structure.svg | 86 +++++++++++++++++++++++ open_issues/anatomy_of_a_hurd_system.mdwn | 42 +++++------ 4 files changed, 116 insertions(+), 29 deletions(-) create mode 100644 microkernel/OS-structure.svg diff --git a/contributing.mdwn b/contributing.mdwn index 45460f6f..77d0f9a5 100644 --- a/contributing.mdwn +++ b/contributing.mdwn @@ -158,10 +158,7 @@ reports to open-ended research questions. ## Instant Development Environment - + +To learn about microkernels, it can be helpful to compare microkernels with monolithic +kernels, which the following image does. You can see that the monolithic kernels (linux), +have more things running inside the kernel mode, but microkernels generally only have +IPC, virtual memory, and scheduling inside the kernel. Some microkernels can actually have +the scheduler in userspace! + +[[!img OS-structure.svg]] + The idea of a microkernel as explained above was first explored by Per Brinch-Hansen in 1970 in [The Nucleus of a Multiprogramming System](http://brinch-hansen.net/papers/1970a.pdf). diff --git a/microkernel/OS-structure.svg b/microkernel/OS-structure.svg new file mode 100644 index 00000000..6d362351 --- /dev/null +++ b/microkernel/OS-structure.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + VFS + IPC, File System + Scheduler, Virtual Memory + Device Drivers, Dispatcher, ... + + + + Basic IPC, Virtual Memory, Scheduling + + + + + UNIXServer + + + + DeviceDriver + + + + FileServer + + + + ApplicationIPC + + + + + + + + + System Call + Application + + + Hardware + + + + Hardware + + + usermode + kernelmode + + + + + + Monolithic Kernelbased Operating System + Microkernelbased Operating System + + \ No newline at end of file diff --git a/open_issues/anatomy_of_a_hurd_system.mdwn b/open_issues/anatomy_of_a_hurd_system.mdwn index 5c794a9c..00720fbb 100644 --- a/open_issues/anatomy_of_a_hurd_system.mdwn +++ b/open_issues/anatomy_of_a_hurd_system.mdwn @@ -17,30 +17,15 @@ like Bushnell's Hurd paper. All this should be unfied and streamlined. [[!toc]] -# IRC, freenode, #hurd, 2011-03-08 - - I've a question on what are the "units" in the hurd project, if - you were to divide them into units if they aren't, and what are the - dependency relations between those units(roughly, nothing too pedantic - for now) - there is GNU Mach (the microkernel); there are the server - libraries in the Hurd package; there are the actual servers in the same; - and there is the POSIX implementation layer in glibc - relations are a bit tricky - Mach is the base layer which implements IPC and memory management - hmm I'll probably allocate time for dependency graph generation, - in the worst case - on top of this, the Hurd servers, using the server libraries, - implement various aspects of the system functionality - client programs use libc calls to use the servers - (servers also use libc to communicate with other servers and/or - Mach though) - so every server depends solely on mach, and no other server? - s/mach/mach and/or libc/ - I think these things should be pretty clear one you are somewhat - familiar with the Hurd architecture... nothing really tricky there - no - servers often depend on other servers for certain functionality +# Introduction to the Hurd System + +The lowest base of the GNU/Hurd system is GNU Mach. GNU Mach is a microkernel, +which provides interprocess communication (IPC), memory management, and a scheduler. +The Hurd servers runs on top of GNU Mach to implement various userspace servers that +would ordinarily reside in the kernel, including the filesystem, device drivers, +TCP/IP stack, and others. The GNU/Hurd system implements POSIX with glibc. Many +POSIX calls to glibc are re-routed to the Hurd servers. Some of the Hurd severs +depend on GNU Mach, while other Hurd servers depend on other Hurd servers. The Hurd @@ -70,7 +55,14 @@ like Bushnell's Hurd paper. All this should be unfied and streamlined. ## [[hurd_init]] -## IRC, freenode, #hurd, 2011-03-12 +## Hurd Booting Process + +When grub starts running, it loads the root filesystem, the exec server, and +starts GNU Mach. GNU Mach then starts the servers in turn according to the +multiboot information grub gave it. Additionally the rootfs server +does some bootstrapping work to bring the start the other servers. + +### IRC, freenode, #hurd booting process, 2011-03-12 when mach first starts up, does it have some basic i/o or fs functionality built into it to start up the initial hurd translators? -- 2.19.1