Eleanore Semaphore: Difference between revisions

[unchecked revision][unchecked revision]
Content deleted Content added
No edit summary
m fixed link
 
(17 intermediate revisions by 15 users not shown)
Line 1:
Eleanore Semaphore works in a darky corner of a small room with listings all around. Her system has much evolved greatly since last year, though all she can show you is still the same: bunches of A and B displayed in no-obvious-order on a text console and that she controls with magic key combos. Hear her talking about how she implemented components programming, auto-dependencies resolving and virtual clock algorithm for her scheduler. Maybe you prefer a [[What order should iI make things in|different style]].
 
== The foundation of a kernel ==
Line 5:
Ok, so you know what a [[Semaphore|semaphore]] is? Or maybe [[Monitor|monitors]] or just plain [[Message Passing|message passing]] would be a better way to synchronize? 'Cos I guess we want to synchronize our processes. You want to write a [[Microkernel|µ-kernel]] don't you, even if you actually wanted to run some tasks in the kernel for performance later?
 
Honestly, if you are like Eleanore, you probably have a pretty good idea of what you want the "big picture" to feel like, but little idea of how to get there. In fact, you'll probably be reading research papers pretty soon, so maybe the real answer hasn't been invented yet? And whether you are going to write just a barebones microkernel with the most simple possible [[Message_Passing|IPC]] system, or a sophisticated distributed [[RPC]] model with [[Garbage CollectorCollection|garbage collected]] components, you are going to need some basics first.
 
And we are going to dive straight into the theory, but I guess that won't scare you, right?
Line 23:
=== Userspace ===
 
Since a µ-kernel is nothing without userspace processes, you probably want to go into userspace relatively early. You could simulate them in kernel ofcourseof course, and you can load them using GRUB or whatever you load your kernel with. But for real userspace you need two things. And you could do them in any otherorder really.
 
And really, if you are like me, then you probably agree that these two are what makes an operating system different.
 
==== Virtual memory management ====
 
You probably need a manager for virtual memory and this is a good moment to design one. You have several options, like always:
Line 38:
If you are going to support some kinds of userspace management (and even if you don't), you should probably consider how your IPC and VMM will interact before you start writing any high-level management code. But then again, most existing systems seem to be quite happy with a "regular" VMM.
 
Existing virtual memory management schemes that you might find useful include those in Unix, including [http://www.google.com/search?ie=utf-8&oe=utf-8&q=linux%20memory%20management Linux], FreeBSD and others, VMS, [http://msdn.microsoft.com/library/en-us/dngenlib/html/msdn_ntvmm.asp WindowsNTWindows NT] (and [http://www.winntmag.com/Windows/Articles/ArticleID/4494/pg/1/1.html VMS and NT similarities]), [http://citeseer.ist.psu.edu/rashid87machineindependent.html Mach] (and [http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming/Mach/chapter_6_section_5.html Darwin]), [http://os.inf.tu-dresden.de/L4/doc.html L4], [http://www.cl.cam.ac.uk/Research/SRG/netos/old-projects/pegasus/publications/osdi99/paper.html Nemesis] ([http://www.usenix.org/publications/library/proceedings/osdi99/full_papers/hand/hand.pdf PDF]).
 
ToDo: should this stuff go to a separate "Virtual Memory" page?
 
==== How can my processes talk to each other? ====
 
For any future processes to be able to talk to each other (and eventually outside world) one needs some facilities for communication. What kind of [[Category:IPC|inter-process communication]] you are going to have, depends on what exactly do you want your system to feel like, but you definitely want something. Some of the alternatives available are
 
* Unix style: [[PipeUnix Pipes|pipes]], [[Socket|sockets]], [[File|files]], [[select]]
* [[Message Passing]], or maybe [[RPC|Remote Procedure Calls]]
* [[Shared Memory]]
Line 54:
 
== Eleanore's Bookshelf ==
Well, most of these aren't books, actually. More likely the proceedings of USENIX or Hot Topics in Operating Systems, stacks of printed articles from various universities ... She also has most of Andy's writings and friendlywill brew him a cup of fresh coffee when Linus comes back for the debates.
 
Well, these aren't books, actually. More likely the proceedings of USENIX or Hot Topics in Operating Systems, stacks of printed articles from various universities ... She also has most of Andy's writings and friendly brew him a cup of fresh coffee when Linus comes back for the debates.
 
== Eleanore Semaphore's opponents position ==
Line 62 ⟶ 61:
 
== People and OSes related to Eleanore Semaphore ==
{{Stub}}
* Brendan (BCOS)?
* Love4Boobies (Simplexity)
* '' "do I qualify, I wrote the original article" -- [[User:Mystran|Mystran]] 12:57, 1 April 2007 (CDT)''
* gravaera
* ethereal (Sydi)
* '' insert your names here ''
 
 
[[Category:Developer Archetype]]
[[Category:IPC]]