summaryrefslogtreecommitdiff
path: root/microkernel
diff options
context:
space:
mode:
Diffstat (limited to 'microkernel')
-rw-r--r--microkernel/for_beginners/discussion.mdwn20
-rw-r--r--microkernel/mach/discussion.mdwn23
-rw-r--r--microkernel/mach/external_pager_mechanism.mdwn16
-rw-r--r--microkernel/mach/gnumach.mdwn9
-rw-r--r--microkernel/mach/gnumach/building.mdwn3
-rw-r--r--microkernel/mach/gnumach/building/example.mdwn54
-rw-r--r--microkernel/mach/gnumach/memory_management.mdwn50
-rw-r--r--microkernel/mach/gnumach/projects.mdwn11
-rw-r--r--microkernel/mach/memory_object.mdwn4
9 files changed, 78 insertions, 112 deletions
diff --git a/microkernel/for_beginners/discussion.mdwn b/microkernel/for_beginners/discussion.mdwn
deleted file mode 100644
index 9831796b..00000000
--- a/microkernel/for_beginners/discussion.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
-
-[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled [[GNU Free Documentation
-License|/fdl]]."]]"""]]
-
-Good day.
-
-I am a developer, have some c knowledge, and in perspective hope to be able to make a contribution in Hurd kernel. At the moment I consider myself as a beginner.
-
-My question is about the second exercise.
-
->Implement your own pager. Write a server that synthesizes content on the fly and have a client map the object into its address space and print out the file.
-
-* The second sentence "Write a server that..." is too long and too difficult for me to understand perhaps because English is not my native language. Could you please explain it in a little bit easier phrases?
-* Am I write that in a given context "pager" means just "memory manager"?
diff --git a/microkernel/mach/discussion.mdwn b/microkernel/mach/discussion.mdwn
deleted file mode 100644
index 589e302d..00000000
--- a/microkernel/mach/discussion.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-## <a name="Maintenance_of_the_Mach_web"> Maintenance of the Mach web </a>
-
-**_Old discussions:_** [[WIKIHOMEURLMachTOPICrev13]]
-
-Interesting, for consistency sake I'll think about making your changes you made on the right hand side to the other web WebHome pages. I guess it's not critical that they are identical, but I was trying to keep them identical if possible. I also wanted it to be "light" enough feature wise that it doesn't overpower the page. You've added back a few of the features, so we obviously differ in how important you and I think these features are. That's OK, I'll think about it some more and we'll see what happens.
-
-Oh, I see you added back [[WebTopicList]] and [[WebPreferences]]. I purposely removed [[WebPreferences]] from the lists on the right because it has nothing to do with navigation. I also didn't think that people actually use topic names to navigate. If they do they could search for them. Keeping the number to four items instead of six and keeping the descriptions concise makes a big difference when I view the page.
-
-(goes off to think more...)
-
-and eat... ;-)
-
--- [[Main/GrantBow]] - 29 Dec 2002
-
-**_Reasons for my change:_**
-
-1. [[WebTopicList]] is a lot quicker than the [[WebIndex]] - brings down the load times and the load of the server
-2. [[WebPreferences]] - users might be curious to see what can be modified. Changes should of course only be made in their home topics, like in %WIKIUSERNAME%. However, the [[WebPreferences]] can serve as an inspiration. Therefore we should perhaps make sure only the [[Main/TWikiAdminGroup]] members can alter the \*Preferences topics.
-3. If you look closely I've also reordered the links. Shorter names first and long ones last, I tried to keep the descriptions brief and in proportional length as well.
-
-I don't know about you, but keeping the number of items to four rather than six doesn't really matter to me. The text is quite small and if it's the space we're after the [[WebStatistics]] does take up more than the navigation links.
-
--- [[Main/JoachimNilsson]] - 29 Dec 2002
diff --git a/microkernel/mach/external_pager_mechanism.mdwn b/microkernel/mach/external_pager_mechanism.mdwn
index d9b6c2c8..05a6cc56 100644
--- a/microkernel/mach/external_pager_mechanism.mdwn
+++ b/microkernel/mach/external_pager_mechanism.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2002, 2007, 2008, 2010 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2002, 2007, 2008, 2010, 2011 Free Software
+Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -181,3 +181,15 @@ fashion. The server is not required to send a response to the kernel.
(D) The manager then transfers the data to the storeio server which
eventually sends it to disk. The device driver consumes the memory
doing the equivalent of a `vm_deallocate`.
+
+
+# Issues
+
+ * [[open_issues/performance/io_system/read-ahead]]
+
+ * [[open_issues/performance/io_system/clustered_page_faults]]
+
+
+# GNU Hurd Usage
+
+Read about the [[Hurd's I/O path|hurd/io_path]].
diff --git a/microkernel/mach/gnumach.mdwn b/microkernel/mach/gnumach.mdwn
index f3d6d5f9..b385ca09 100644
--- a/microkernel/mach/gnumach.mdwn
+++ b/microkernel/mach/gnumach.mdwn
@@ -1,13 +1,13 @@
-[[!meta copyright="Copyright © 2001, 2002, 2007, 2008 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2001, 2002, 2007, 2008, 2011 Free Software
+Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU Free Documentation License|/fdl]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
GNU Mach is the microkernel that the [[GNU_Hurd|hurd]] system is based on.
@@ -75,6 +75,7 @@ GNU/Hurd.
* [[Building]]
* [[Debugging]]
* [[Boot_Trace]]
+ * [[Memory_Management]]
* [[Projects]]
* [[Rules]]
* [[Open Issues|tag/open_issue_gnumach]]
diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn
index 9c075600..99e566bb 100644
--- a/microkernel/mach/gnumach/building.mdwn
+++ b/microkernel/mach/gnumach/building.mdwn
@@ -1,6 +1,3 @@
-Additional to the following text, a further [[example]] has be posted.
-
-
# Building [[GNU_Mach|gnumach]] from Source
If you want to build the [[GNU_Mach|gnumach]] kernel yourself instead of just using a
diff --git a/microkernel/mach/gnumach/building/example.mdwn b/microkernel/mach/gnumach/building/example.mdwn
deleted file mode 100644
index 7db98547..00000000
--- a/microkernel/mach/gnumach/building/example.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-
-[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU Free Documentation License|/fdl]]."]]"""]]
-
-## Compiling GNU Mach microkernel
-
-Host development system is IBM T41 running Debian Sarge 3.1r0a GNU/Linux.
-
-* gcc version: 3.3.5
-* GNU sed version: 4.1.2
-* GNU make version: 3.8
-* mig version: 1.3-4
-
-Obtained gnumach-1-branch sources from cvs:
-
- export CVS_RSH="ssh"
- cvs -z3 -d:ext:anoncvs@ savannah.gnu.org:/cvsroot/hurd co -r gnumach-1-branch gnumach
-
-Obtained mig_1.3-4_i386.deb from
-http://www.hadrons.org/~guillem/debian/pool/main/mig/. Installed it using dpkg:
-
- dpkg -i mig_1.3-4_i386.deb
-
-Entered into the gnumach sources and did the following for compilation:
-
- mkdir build
- cd build
- ../configure --host=i386-unknown-gnu0.2 --build=i586-pc-linux-gnu \
- --enable-kdb --enable-ide
- make
-
-The kernel file is created in the build directory. Move it to /boot on the
-testing x86 system Hurd partition. Rename it as gnumach1 and compress it:
-
- mv kernel gnumach1
- gzip gnumach1
-
-Add a new entry on the testing machine /boot/grub/menu.lst to boot the new
-kernel.
-
- title GNU Hurd K10 Compiled gnumach
- kernel (hd0,3)/boot/gnumach1.gz root=device:hd2s4 -s
- module (hd0,3)/hurd/ext2fs.static--multiboot-command-line=${kernel-command-line} \\
- --host-priv-port=${host-port} --device-master-port=${device-port} \\
- --exec-server-task=${exec-task} -T typed ${root} $(task-create)$(task-resume)
- module (hd0,3)/lib/ld.so.1 /hurd/exec $(exec-task=task-create)
-
-Reboot into the new compiled mygnumach1.gz kernel!
diff --git a/microkernel/mach/gnumach/memory_management.mdwn b/microkernel/mach/gnumach/memory_management.mdwn
new file mode 100644
index 00000000..17dbe46f
--- /dev/null
+++ b/microkernel/mach/gnumach/memory_management.mdwn
@@ -0,0 +1,50 @@
+[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+IRC, freenode, #hurd, 2011-02-15
+
+ <braunr> etenil: originally, mach had its own virtual space (the kernel
+ space)
+ <braunr> etenil: in order to use linux 2.0 drivers, it now directly maps
+ physical memory, as linux does
+ <braunr> etenil: but there is nothing similar to kmap() or vmalloc() in
+ mach, so the kernel is limited to its 1 GiB
+ <braunr> (3 GiB userspace / 1 GiB kernelspace)
+ <braunr> that's the short version, there is a vmalloc() in mach, but this
+ trick made it behave almost like a kmalloc()
+ <antrik> braunr: the direct mapping is *only* for the benefit of Linux
+ drivers?...
+ <braunr> also, the configuration of segments limits the kernel space
+ <braunr> antrik: i'm not sure, as i said, this is the short version
+ <braunr> antrik: but there is a paper which describes the integration of
+ those drivers in mach
+ <etenil> you mean the linux 2.0 drivers?
+ <antrik> braunr: I read it once, but I don't remember anything about the
+ physical mapping in there...
+ <antrik> etenil: well, originally it was 1.3, but essentially that's the
+ same...
+ <braunr> i don't see any other reason why there would be a direct mapping
+ <braunr> except for performance (because you can use larger - even very
+ lage - pages without resetting the mmu often thanks to global pages, but
+ that didn't exist at the time)
+
+IRC, freenode, #hurd, 2011-02-15
+
+ <antrik> however, the kernel won't work in 64 bit mode without some changes
+ to physical memory management
+ <braunr> and mmu management
+ <braunr> (but maybe that's what you meant by physical memory)
+
+IRC, freenode, #hurd, 2011-02-16
+
+ <braunr> antrik: youpi added it for xen, yes
+ <braunr> antrik: but you're right, since mach uses a direct mapped kernel
+ space, the true problem is the lack of linux-like highmem support
+ <braunr> which isn't required if the kernel space is really virtual
diff --git a/microkernel/mach/gnumach/projects.mdwn b/microkernel/mach/gnumach/projects.mdwn
index 47a2756c..f4ef192a 100644
--- a/microkernel/mach/gnumach/projects.mdwn
+++ b/microkernel/mach/gnumach/projects.mdwn
@@ -1,13 +1,13 @@
-[[!meta copyright="Copyright © 2005, 2006, 2007, 2008 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2011 Free Software
+Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU Free Documentation License|/fdl]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
This page is a place to keep track of ideas about things that may be improved
in GNU Mach, so that it'll evolve to a reliable microkernel for The Hurd, both
@@ -58,7 +58,8 @@ so that no duplicate efforts end up.
* Improve the external pagers interface
- * Implement read-ahead (huge I/O improvements expected).
+ * Implement [[open_issues/performance/io_system/read-ahead]] (huge I/O
+ improvements expected).
* Making this interface synchronous should improve I/O performance
significantly, without (almost) any drawbacks (we also get some
diff --git a/microkernel/mach/memory_object.mdwn b/microkernel/mach/memory_object.mdwn
index 2342145c..f32fe778 100644
--- a/microkernel/mach/memory_object.mdwn
+++ b/microkernel/mach/memory_object.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2002, 2003, 2010 Free Software Foundation,
+[[!meta copyright="Copyright © 2002, 2003, 2010, 2011 Free Software Foundation,
Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -29,3 +29,5 @@ last one tried is the *default memory manager* that resides in the microkernel,
in contrast to most of the others. The default memory manager is needed
because the microkernel can't wait infinitely for someone else to free the
memory cache: it just calls the next memory manager hoping it to succeed.
+
+Read about [[GNU Mach's memory management|gnumach/memory_management]].