Thanks, Joshua
>From 27e75cb7d1daea6b43a65303decfbd954bf1656c Mon Sep 17 00:00:00 2001 From: Joshua Branson <jbra...@fastmail.com> 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. <a name="insta-dev-env"></a> ## Instant Development Environment -<!-- I don't like this being here. At least not in this form. This just -duplicates information that is available in other places. (Or should be -available in other places, in more elaborate form.) - +<!-- The idea of a one-stop development environment is not bad (I like that), but I'd do this differently. For example, we should add some Git submodules to the master hurd.git repository (which is currently empty), to branches that are diff --git a/microkernel.mdwn b/microkernel.mdwn index 31044186..46a2ca38 100644 --- a/microkernel.mdwn +++ b/microkernel.mdwn @@ -20,6 +20,18 @@ maximize the flexibility of implementation (by imposing minimal [[policy]]) while allowing the efficient implementation of the remainder of the system. +<!-- +The following file is in the public domain +https://en.wikipedia.org/wiki/Microkernel#/media/File:OS-structure.svg --> + +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 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="750" height="400" id="svg2" sodipodi:version="0.32" inkscape:version="0.46" version="1.0" sodipodi:docname="os-structure.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs id="defs4"> + <marker inkscape:stockid="Arrow2Lstart" orient="auto" refY="0" refX="0" id="Arrow2Lstart" style="overflow: visible;"> + <path id="path3289" style="font-size: 12px; fill-rule: evenodd; stroke-width: 0.625; stroke-linejoin: round;" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z" transform="matrix(1.1, 0, 0, 1.1, 1.1, 0)"/> + </marker> + <marker inkscape:stockid="Arrow2Lend" orient="auto" refY="0" refX="0" id="Arrow2Lend" style="overflow: visible;"> + <path id="path3280" style="font-size: 12px; fill-rule: evenodd; stroke-width: 0.625; stroke-linejoin: round;" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z" transform="matrix(-1.1, 0, 0, -1.1, -1.1, 0)"/> + </marker> + <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective10"/> + <inkscape:perspective id="perspective2447" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 526.18109 : 1" sodipodi:type="inkscape:persp3d"/> + </defs> + <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" gridtolerance="10000" guidetolerance="10" objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="4" inkscape:cx="577.54319" inkscape:cy="121.55261" inkscape:document-units="px" inkscape:current-layer="layer2" showgrid="false" inkscape:window-width="1024" inkscape:window-height="716" inkscape:window-x="0" inkscape:window-y="0"/> + <metadata id="metadata7"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + </cc:Work> + </rdf:RDF> + </metadata> + <g inkscape:groupmode="layer" id="layer2" inkscape:label="scheme" style="display: inline;" transform="translate(0.798097, 82.1464)"> + <rect style="fill: rgb(233, 185, 110); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;" id="rect2453" width="95" height="62" x="118.71684" y="16.93577"/> + <g id="g3207" transform="translate(-393.283, 17.5822)"> + <g transform="translate(392.75, -1.5)" id="g3185"> + <rect style="opacity: 1; fill: rgb(114, 159, 207); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;" id="rect3173" width="273.5" height="177.5" x="30" y="65.5"/> + <path style="fill: none; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" d="M 33.5,108 L 299.5,108" id="path3175" sodipodi:nodetypes="cc"/> + <path style="fill: none; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; display: inline;" d="M 32.5,153 L 298.5,153" id="path3181" sodipodi:nodetypes="cc"/> + <path style="fill: none; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; display: inline;" d="M 32.5,198.5 L 298.5,198.5" id="path3183" sodipodi:nodetypes="cc"/> + </g> + <text sodipodi:linespacing="125%" id="text3191" y="92.5" x="548.109" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" xml:space="preserve"><tspan y="92.5" x="548.109" id="tspan3193" sodipodi:role="line">VFS</tspan></text> + <text sodipodi:linespacing="125%" id="text3195" y="132.667" x="517.649" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" xml:space="preserve"><tspan y="132.667" x="517.649" id="tspan3197" sodipodi:role="line">IPC, File System</tspan></text> + <text sodipodi:linespacing="125%" id="text3199" y="179.333" x="489.826" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" xml:space="preserve"><tspan y="179.333" x="489.826" id="tspan3201" sodipodi:role="line">Scheduler, Virtual Memory</tspan></text> + <text sodipodi:linespacing="125%" id="text3203" y="224" x="482.47" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" xml:space="preserve"><tspan y="224" x="482.47" id="tspan3205" sodipodi:role="line">Device Drivers, Dispatcher, ...</tspan></text> + </g> + <g id="g3261" transform="translate(230.217, 95.5822)"> + <rect y="121.75" x="216.5" height="41.5" width="275" id="rect3255" style="opacity: 1; fill: rgb(114, 159, 207); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"/> + <text sodipodi:linespacing="125%" id="text3257" y="149.605" x="253.277" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" xml:space="preserve"><tspan y="149.605" x="253.277" id="tspan3259" sodipodi:role="line">Basic IPC, Virtual Memory, Scheduling</tspan></text> + </g> + <g id="g4629" transform="translate(24.8629, 16.0822)"> + <g transform="translate(-3.20343, 0.187125)" id="g4595"> + <rect style="opacity: 1; fill: rgb(138, 226, 52); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; display: inline;" id="rect4581" width="53.841358" height="65.5" x="529.39563" y="132.74895"/> + <text xml:space="preserve" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 125%; text-anchor: middle; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" x="555.432" y="156.307" id="text4583" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4585" x="555.432" y="156.307">UNIX</tspan><tspan sodipodi:role="line" x="555.432" y="171.307" id="tspan4587">Server</tspan></text> + </g> + <g transform="translate(-3.32843, 1.37824)" id="g4609"> + <rect style="opacity: 1; fill: rgb(211, 215, 207); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;" id="rect4601" width="53.740116" height="66.114487" x="583.3631" y="131.55783"/> + <text xml:space="preserve" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 125%; text-anchor: middle; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" x="608.819" y="155.599" id="text4603" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4605" x="608.819" y="155.599">Device</tspan><tspan sodipodi:role="line" x="608.819" y="170.599" id="tspan4607">Driver</tspan></text> + </g> + <g transform="translate(-3.45343, 1.37824)" id="g4623"> + <rect style="opacity: 1; fill: rgb(114, 159, 207); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;" id="rect4615" width="53.386562" height="65.407379" x="637.10321" y="131.55783"/> + <text xml:space="preserve" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 125%; text-anchor: middle; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" x="663.266" y="154.892" id="text4617" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4619" x="663.266" y="154.892">File</tspan><tspan sodipodi:role="line" x="663.266" y="169.892" id="tspan4621">Server</tspan></text> + </g> + <g transform="translate(-2.82843, 0.436075)" id="g4589"> + <rect style="opacity: 1; fill: rgb(233, 185, 110); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;" id="rect4573" width="94.5" height="65.5" x="434.5" y="132.5"/> + <text xml:space="preserve" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 125%; text-anchor: middle; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" x="482" y="156.5" id="text4575" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4577" x="482" y="156.5">Application</tspan><tspan sodipodi:role="line" x="482" y="171.5" id="tspan4579">IPC</tspan></text> + </g> + </g> + <path style="fill: none; fill-rule: evenodd; stroke: rgb(239, 41, 41); stroke-width: 3; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" d="M 21.409772,80.464901 L 307.7488,80.464901 L 443.15975,215.87585 L 727.02391,215.87585" id="path2395" sodipodi:nodetypes="cccc"/> + <g id="g2593"> + <path style="fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" d="M 165.6875,62.375 L 165.6875,94.375 L 166.6875,94.375 L 166.6875,62.375 L 165.6875,62.375 z" id="path3254"/> + <path d="M 170.63633,83.684663 L 166.21683,95.703128 L 161.79734,83.684663 C 164.40661,85.604711 167.97654,85.593648 170.63633,83.684663 z" style="font-size: 12px; fill-rule: evenodd; stroke-width: 0.625; stroke-linejoin: round;" id="path2599"/> + </g> + <path style="fill: none; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" d="M 194.16345,66.582217 L 230.16345,52.582217" id="path2391" sodipodi:nodetypes="cc"/> + <text xml:space="preserve" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" x="228.163" y="48.0822" id="text2393" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan2395" x="228.163" y="48.0822">System Call</tspan></text> + <text xml:space="preserve" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" x="137.263" y="40.0822" id="text2391" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan2393" x="137.263" y="40.0822">Application</tspan></text> + <g id="g3230" transform="translate(-187.783, 139.119)"> + <rect y="122.34746" x="216.82129" height="40.305088" width="274.35742" id="rect3224" style="opacity: 1; fill: rgb(46, 52, 54); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"/> + <text sodipodi:linespacing="125%" id="text3226" y="146.725" x="327.721" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(238, 238, 236); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" xml:space="preserve"><tspan y="146.725" x="327.721" id="tspan3228" sodipodi:role="line">Hardware</tspan></text> + </g> + <g style="display: inline;" id="g3235" transform="translate(230.217, 139.119)"> + <rect y="122.34746" x="216.82129" height="40.305088" width="274.35742" id="rect3237" style="opacity: 1; fill: rgb(46, 52, 54); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"/> + <text sodipodi:linespacing="125%" id="text3239" y="146.725" x="327.721" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(238, 238, 236); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" xml:space="preserve"><tspan y="146.725" x="327.721" id="tspan3241" sodipodi:role="line">Hardware</tspan></text> + </g> + <path style="fill: none; fill-rule: evenodd; stroke: rgb(239, 41, 41); stroke-width: 3; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" d="M 21.365355,260.08222 L 727.03845,260.08222" id="path3222" sodipodi:nodetypes="cc"/> + <text xml:space="preserve" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(239, 41, 41); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" x="355.496" y="84.0822" id="text3243" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3245" x="355.496" y="84.0822">user</tspan><tspan sodipodi:role="line" x="355.496" y="99.0822" id="tspan3247">mode</tspan></text> + <text xml:space="preserve" style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: start; line-height: 125%; text-anchor: start; fill: rgb(239, 41, 41); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" x="354.333" y="213.582" id="text3249" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3251" x="354.333" y="213.582">kernel</tspan><tspan sodipodi:role="line" x="354.333" y="228.582" id="tspan3253">mode</tspan></text> + <g id="g2601"> + <path style="fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" d="M 479.5,194.09375 L 479.5,225.59375 L 479.5,226.09375 L 480,226.09375 L 688.5,226.09375 L 689,226.09375 L 689,225.59375 L 689,196.09375 L 688,196.09375 L 688,225.09375 L 480.5,225.09375 L 480.5,194.09375 L 479.5,194.09375 z" id="path3266"/> + <path d="M 475.54734,204.77267 L 479.96684,192.7542 L 484.38633,204.77267 C 481.77706,202.85262 478.20713,202.86368 475.54734,204.77267 z" style="font-size: 12px; fill-rule: evenodd; stroke-width: 0.625; stroke-linejoin: round;" id="path2607"/> + <path d="M 684.04734,206.77267 L 688.46684,194.7542 L 692.88633,206.77267 C 690.27706,204.85262 686.70713,204.86368 684.04734,206.77267 z" style="font-size: 12px; fill-rule: evenodd; stroke-width: 0.625; stroke-linejoin: round;" id="path2609"/> + </g> + <text xml:space="preserve" style="font-size: 19.4158px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 125%; text-anchor: middle; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: Sans;" x="164.244" y="-52.166" id="text4651" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4653" x="164.244" y="-52.166">Monolithic Kernel</tspan><tspan sodipodi:role="line" x="164.244" y="-27.8962" id="tspan2453">based Operating System</tspan></text> + <text xml:space="preserve" style="font-size: 19.4158px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 125%; text-anchor: middle; fill: rgb(0, 0, 0); fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; display: inline; font-family: Sans;" x="588.717" y="-52.166" id="text2449" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan2451" x="588.717" y="-52.166">Microkernel</tspan><tspan sodipodi:role="line" x="588.717" y="-27.8962" id="tspan2455">based Operating System</tspan></text> + </g> +</svg> \ 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 - - <foocraft> 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) - <antrik> 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 - <antrik> relations are a bit tricky - <antrik> Mach is the base layer which implements IPC and memory management - <foocraft> hmm I'll probably allocate time for dependency graph generation, - in the worst case - <antrik> on top of this, the Hurd servers, using the server libraries, - implement various aspects of the system functionality - <antrik> client programs use libc calls to use the servers - <antrik> (servers also use libc to communicate with other servers and/or - Mach though) - <foocraft> so every server depends solely on mach, and no other server? - <foocraft> s/mach/mach and/or libc/ - <antrik> I think these things should be pretty clear one you are somewhat - familiar with the Hurd architecture... nothing really tricky there - <antrik> no - <antrik> 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 <dEhiN> 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